[arch-commits] Commit in kdebase-workspace/trunk (2 files)

Andrea Scarpino andrea at archlinux.org
Wed Feb 2 23:04:45 UTC 2011


    Date: Wednesday, February 2, 2011 @ 18:04:45
  Author: andrea
Revision: 108772

upgpkg: kdebase-workspace 4.6.0-1
Rebuilt against cln 1.3.1; Patch to fix a plasma crash on exit (FS#22712)

Added:
  kdebase-workspace/trunk/fix-plasma-crash-on-exit.patch
Modified:
  kdebase-workspace/trunk/PKGBUILD

--------------------------------+
 PKGBUILD                       |    7 +-
 fix-plasma-crash-on-exit.patch |  127 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 132 insertions(+), 2 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-02-02 23:03:59 UTC (rev 108771)
+++ PKGBUILD	2011-02-02 23:04:45 UTC (rev 108772)
@@ -28,7 +28,8 @@
         'kdm-zsh-profile.patch' 'kdm' 'kde.pam' 'kde-np.pam' 'kscreensaver.pam'
         'fixpath.patch' 'terminate-server.patch'
         'set-horos-theme.patch'
-        'fix-MALLOC_CHECK.patch')
+        'fix-MALLOC_CHECK.patch'
+        'fix-plasma-crash-on-exit.patch')
 sha1sums=('c192f712d16617e625acc84fcd9e0546df887a70'
           '8c2bdefb23a03b753b78d16944d03fa3939d2d99'
           '5db3a245201bd4a50e65aa2ef583cf5490e4f646'
@@ -38,13 +39,15 @@
           'd7b5883f7e65c6839b1f65f94d58026673dd0226'
           'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee'
           'd1f74ba2c7e2580d32b16ab88b0e6e804951e663'
-          'd8d6ac7f1b25a30fdd0d6a182e2ac6c6f2a28cd7')
+          'd8d6ac7f1b25a30fdd0d6a182e2ac6c6f2a28cd7'
+          '7b7789c3276b67d1c4c462c2d2347db59650aefb')
 
 build() {
 	cd ${srcdir}/${pkgname}-${pkgver}
     # Already fixed upstream
     patch -Np0 -i ${srcdir}/set-horos-theme.patch
     patch -Np0 -i ${srcdir}/fix-MALLOC_CHECK.patch
+    patch -Np1 -i ${srcdir}/fix-plasma-crash-on-exit.patch
 
 	patch -p0 -i ${srcdir}/kdm-zsh-profile.patch
 	patch -p0 -i ${srcdir}/fixpath.patch

Added: fix-plasma-crash-on-exit.patch
===================================================================
--- fix-plasma-crash-on-exit.patch	                        (rev 0)
+++ fix-plasma-crash-on-exit.patch	2011-02-02 23:04:45 UTC (rev 108772)
@@ -0,0 +1,127 @@
+commit 92f71adb8bb6e46d4a3187ab8824c859312e9136
+Author: Aaron Seigo <aseigo at kde.org>
+Date:   Tue Feb 1 12:54:44 2011 -0800
+
+    try to avoid doing any work when we are deleting
+
+diff --git a/plasma/generic/applets/notifications/ui/notificationgroup.cpp b/plasma/generic/applets/notifications/ui/notificationgroup.cpp
+index 1f7c0b8..6bbf43c 100644
+--- a/plasma/generic/applets/notifications/ui/notificationgroup.cpp
++++ b/plasma/generic/applets/notifications/ui/notificationgroup.cpp
+@@ -66,6 +66,8 @@ NotificationGroup::NotificationGroup(Extender *parent, uint groupId)
+ 
+ NotificationGroup::~NotificationGroup()
+ {
++    m_extenderItemsForNotification.clear();
++    m_notificationForExtenderItems.clear();
+     qDeleteAll(m_notifications);
+ }
+ 
+@@ -137,6 +139,11 @@ void NotificationGroup::addNotification(Notification *notification)
+ 
+ void NotificationGroup::extenderItemDestroyed(Plasma::ExtenderItem *object)
+ {
++    if (m_extenderItemsForNotification.isEmpty()) {
++        // either we aren't tracking this notification or else we're being deleted
++        return;
++    }
++
+     Notification *n = m_notificationForExtenderItems.value(object);
+ 
+     if (n) {
+@@ -148,10 +155,16 @@ void NotificationGroup::extenderItemDestroyed(Plasma::ExtenderItem *object)
+ 
+ void NotificationGroup::removeNotification(Notification *notification)
+ {
++    if (m_extenderItemsForNotification.isEmpty()) {
++        // either we aren't tracking this notification or else we're being deleted
++        return;
++    }
++
+     Plasma::ExtenderItem *item = m_extenderItemsForNotification.value(notification);
+     if (item) {
+         m_notificationForExtenderItems.remove(item);
+     }
++
+     m_extenderItemsForNotification.remove(notification);
+     m_notifications.removeAll(notification);
+     QString applicationName = m_appForNotification.value(notification);
+diff --git a/plasma/generic/applets/notifications/ui/notifications.cpp b/plasma/generic/applets/notifications/ui/notifications.cpp
+index 9b1a7c0..c7aa6dd 100644
+--- a/plasma/generic/applets/notifications/ui/notifications.cpp
++++ b/plasma/generic/applets/notifications/ui/notifications.cpp
+@@ -106,6 +106,9 @@ Notifications::~Notifications()
+ {
+     // stop listening to the manager
+     disconnect(m_manager, 0, this, 0);
++    if (m_notificationStackDialog) {
++        disconnect(m_notificationStackDialog, 0, this, 0);
++    }
+ 
+     foreach (Notification *notification, m_manager->notifications()) {
+         // we don't want a destroyed managed after the destruction of manager
+@@ -342,10 +345,10 @@ void Notifications::initExtenderItem(Plasma::ExtenderItem *extenderItem)
+         return;
+     }
+ 
+-    if (extenderItem->config().readEntry("type", "") == "job") {
++    if (extenderItem->config().readEntry("type", QString()) == "job") {
+         extenderItem->setWidget(new JobWidget(0, extenderItem));
+-    //unknown type, this should never happen
+     } else {
++        //unknown type, this should never happen
+         extenderItem->destroy();
+     }
+ 
+commit 1fc6c46a49695ec6ad6cd80a8459c5c083de8e06
+Author: Aaron Seigo <aseigo at kde.org>
+Date:   Tue Feb 1 12:54:25 2011 -0800
+
+    make them all uniqueconnections
+
+diff --git a/plasma/generic/applets/notifications/ui/notificationstack.cpp b/plasma/generic/applets/notifications/ui/notificationstack.cpp
+index 2f68961..3b53559 100644
+--- a/plasma/generic/applets/notifications/ui/notificationstack.cpp
++++ b/plasma/generic/applets/notifications/ui/notificationstack.cpp
+@@ -54,11 +54,9 @@ NotificationStack::~NotificationStack()
+ void NotificationStack::addNotification(Notification *notification)
+ {
+     m_canDismissTimer->start(1000);
+-    connect(notification, SIGNAL(notificationDestroyed(Notification *)), this, SLOT(removeNotification(Notification *)));
+-    connect(notification, SIGNAL(expired(Notification *)), this, SLOT(delayedRemoveNotification(Notification *)));
+-
+-    disconnect(notification, SIGNAL(changed(Notification *)), this, SLOT(notificationChanged(Notification *)));
+-    connect(notification, SIGNAL(changed(Notification *)), this, SLOT(notificationChanged(Notification *)));
++    connect(notification, SIGNAL(notificationDestroyed(Notification *)), this, SLOT(removeNotification(Notification *)), Qt::UniqueConnection);
++    connect(notification, SIGNAL(expired(Notification *)), this, SLOT(delayedRemoveNotification(Notification *)),  Qt::UniqueConnection);
++    connect(notification, SIGNAL(changed(Notification *)), this, SLOT(notificationChanged(Notification *)), Qt::UniqueConnection);
+ 
+     NotificationWidget *notificationWidget = new NotificationWidget(notification, this);
+     notificationWidget->installEventFilter(this);
+commit f0f66f023e6f2896bcc2ea67d7922fc0745ff7b5
+Author: Aaron Seigo <aseigo at kde.org>
+Date:   Tue Feb 1 12:54:10 2011 -0800
+
+    simplification
+
+diff --git a/plasma/generic/applets/notifications/ui/notificationwidget.cpp b/plasma/generic/applets/notifications/ui/notificationwidget.cpp
+index 7764ede..3f87cfe 100644
+--- a/plasma/generic/applets/notifications/ui/notificationwidget.cpp
++++ b/plasma/generic/applets/notifications/ui/notificationwidget.cpp
+@@ -43,7 +43,6 @@
+ 
+ #include <Plasma/Animation>
+ #include <Plasma/Animator>
+-#include <Plasma/Extender>
+ #include <Plasma/Frame>
+ #include <Plasma/IconWidget>
+ #include <Plasma/Label>
+@@ -170,7 +169,7 @@ NotificationWidget::NotificationWidget(Notification *notification, QGraphicsWidg
+     d->notification = notification;
+ 
+     connect(d->signalMapper, SIGNAL(mapped(const QString &)),
+-            d->notification.data(), SLOT(triggerAction(const QString &)));
++            notification, SLOT(triggerAction(const QString &)));
+     connect(notification, SIGNAL(changed()),
+             this, SLOT(updateNotification()));
+     connect(notification, SIGNAL(destroyed()),




More information about the arch-commits mailing list