gnome-settings-daemon r804 - in trunk: . plugins/a11y-keyboard



Author: jensg
Date: Fri Mar 27 21:32:02 2009
New Revision: 804
URL: http://svn.gnome.org/viewvc/gnome-settings-daemon?rev=804&view=rev

Log:
2009-03-27  Jens Granseuer  <jensgr gmx net>

	* plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c:
	(on_notification_closed), (on_slow_keys_action),
	(on_sticky_keys_action), (ax_slowkeys_warning_post_bubble),
	(ax_stickykeys_warning_post_bubble),
	(gsd_a11y_keyboard_manager_stop): fix crash when closing the a11y
	notification bubble caused by incompatible changes in libnotify API
	(bug #576535). Also remove workarounds for bugs in libnotify < 0.4.4


Modified:
   trunk/ChangeLog
   trunk/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c

Modified: trunk/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
==============================================================================
--- trunk/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c	(original)
+++ trunk/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c	Fri Mar 27 21:32:02 2009
@@ -445,10 +445,9 @@
 #ifdef HAVE_LIBNOTIFY
 static void
 on_notification_closed (NotifyNotification     *notification,
-                        int                     reason,
                         GsdA11yKeyboardManager *manager)
 {
-        /* seems to crash if we unref */
+        g_object_unref (manager->priv->notification);
         manager->priv->notification = NULL;
 }
 
@@ -474,10 +473,7 @@
                                     response_id, XkbSlowKeysMask,
                                     manager->priv->slowkeys_shortcut_val);
         if (res) {
-                g_signal_handlers_disconnect_by_func (manager->priv->notification, on_notification_closed, manager);
                 notify_notification_close (manager->priv->notification, NULL);
-                g_object_unref (manager->priv->notification);
-                manager->priv->notification = NULL;
         }
 }
 
@@ -503,10 +499,7 @@
                                     response_id, XkbStickyKeysMask,
                                     manager->priv->stickykeys_shortcut_val);
         if (res) {
-                g_signal_handlers_disconnect_by_func (manager->priv->notification, on_notification_closed, manager);
                 notify_notification_close (manager->priv->notification, NULL);
-                g_object_unref (manager->priv->notification);
-                manager->priv->notification = NULL;
         }
 }
 
@@ -537,10 +530,7 @@
         }
 
         if (manager->priv->notification != NULL) {
-                g_signal_handlers_disconnect_by_func (manager->priv->notification, on_notification_closed, manager);
                 notify_notification_close (manager->priv->notification, NULL);
-                g_object_unref (manager->priv->notification);
-                manager->priv->notification = NULL;
         }
 
         gsd_a11y_keyboard_manager_ensure_status_icon (manager);
@@ -574,10 +564,7 @@
         if (! res) {
                 g_warning ("GsdA11yKeyboardManager: unable to show notification: %s", error->message);
                 g_error_free (error);
-                g_signal_handlers_disconnect_by_func (manager->priv->notification, on_notification_closed, manager);
                 notify_notification_close (manager->priv->notification, NULL);
-                g_object_unref (manager->priv->notification);
-                manager->priv->notification = NULL;
         }
 
         return res;
@@ -682,10 +669,7 @@
         }
 
         if (manager->priv->notification != NULL) {
-                g_signal_handlers_disconnect_by_func (manager->priv->notification, on_notification_closed, manager);
                 notify_notification_close (manager->priv->notification, NULL);
-                g_object_unref (manager->priv->notification);
-                manager->priv->notification = NULL;
         }
 
         gsd_a11y_keyboard_manager_ensure_status_icon (manager);
@@ -719,10 +703,7 @@
         if (! res) {
                 g_warning ("GsdA11yKeyboardManager: unable to show notification: %s", error->message);
                 g_error_free (error);
-                g_signal_handlers_disconnect_by_func (manager->priv->notification, on_notification_closed, manager);
                 notify_notification_close (manager->priv->notification, NULL);
-                g_object_unref (manager->priv->notification);
-                manager->priv->notification = NULL;
         }
 
         return res;
@@ -1091,8 +1072,8 @@
 
         g_debug ("Stopping a11y_keyboard manager");
 
-        if (manager->priv->status_icon)
-                gtk_status_icon_set_visible (manager->priv->status_icon, FALSE);
+        if (p->status_icon)
+                gtk_status_icon_set_visible (p->status_icon, FALSE);
 
         if (p->gconf_notify != 0) {
                 GConfClient *client = gconf_client_get_default ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]