summaryrefslogtreecommitdiffstats
path: root/redhat/kdelibs/kdelibs-3.5.13-prevent_xdg_autostart_multiple_times.patch
blob: 6a5a8c9d4ec65556c0e832ee151420493bbd82e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
commit e9f29cfb2a76657f150ec585fa6775f372d7e460
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date:   1343238048 -0500

    Prevent XDG autostart files from starting multiple times
    This resolves Bug 1096

diff --git a/kinit/autostart.cpp b/kinit/autostart.cpp
index 4880039..c7feb17 100644
--- a/kinit/autostart.cpp
+++ b/kinit/autostart.cpp
@@ -214,6 +214,32 @@ AutoStart::loadAutoStartList()
        }
        m_startList->append(item);
    }
+
+   // Check for duplicate entries and remove if found
+   TQPtrListIterator<AutoStartItem> it1(*m_startList);
+   TQPtrListIterator<AutoStartItem> it2(*m_startList);
+   AutoStartItem *item1;
+   AutoStartItem *item2;
+   while ((item1 = it1.current()) != 0) {
+       bool dupfound1 = false;
+       it2.toFirst();
+       while ((item2 = it2.current()) != 0) {
+           bool dupfound2 = false;
+           if (item2 != item1) {
+               if (item1->service == item2->service) {
+                   m_startList->removeRef(item2);
+                   dupfound1 = true;
+                   dupfound2 = true;
+               }
+           }
+           if (!dupfound2) {
+               ++it2;
+           }
+       }
+       if (!dupfound1) {
+           ++it1;
+       }
+   }
 }
 
 TQString
@@ -241,7 +267,7 @@ AutoStart::startService()
      }
      m_started.remove(m_started.begin());
    }
-   
+
    // Check for items that don't depend on anything
    AutoStartItem *item;
    for(item = m_startList->first();