[gnome-settings-daemon] various: more fixing of the _stop() path
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] various: more fixing of the _stop() path
- Date: Tue, 23 Nov 2010 04:38:44 +0000 (UTC)
commit bf92d44a2bae61e59dc57c875f335f378b5b4ce6
Author: William Jon McCann <jmccann redhat com>
Date: Mon Nov 22 23:38:21 2010 -0500
various: more fixing of the _stop() path
plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c | 15 ++++++++--
plugins/clipboard/gsd-clipboard-manager.c | 29 +++++++++++++-------
plugins/keybindings/gsd-keybindings-manager.c | 20 +++++++-------
plugins/keyboard/gsd-keyboard-xkb.c | 3 ++
plugins/media-keys/gsd-media-keys-manager.c | 30 ++++++++++++---------
5 files changed, 61 insertions(+), 36 deletions(-)
---
diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
index 733efd2..da211d5 100644
--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
@@ -984,6 +984,9 @@ gsd_a11y_keyboard_manager_start (GsdA11yKeyboardManager *manager,
static void
restore_server_xkb_config (GsdA11yKeyboardManager *manager)
{
+ if (manager->priv->original_xkb_desc == NULL) {
+ return;
+ }
gdk_error_trap_push ();
XkbSetControls (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
XkbSlowKeysMask |
@@ -1018,8 +1021,10 @@ gsd_a11y_keyboard_manager_stop (GsdA11yKeyboardManager *manager)
p->device_manager = NULL;
}
- if (p->status_icon)
+ if (p->status_icon) {
gtk_status_icon_set_visible (p->status_icon, FALSE);
+ p->status_icon = NULL;
+ }
if (p->settings != NULL) {
g_object_unref (p->settings);
@@ -1034,11 +1039,15 @@ gsd_a11y_keyboard_manager_stop (GsdA11yKeyboardManager *manager)
*/
restore_server_xkb_config (manager);
- if (p->slowkeys_alert != NULL)
+ if (p->slowkeys_alert != NULL) {
gtk_widget_destroy (p->slowkeys_alert);
+ p->slowkeys_alert = NULL;
+ }
- if (p->stickykeys_alert != NULL)
+ if (p->stickykeys_alert != NULL) {
gtk_widget_destroy (p->stickykeys_alert);
+ p->stickykeys_alert = NULL;
+ }
p->slowkeys_shortcut_val = FALSE;
p->stickykeys_shortcut_val = FALSE;
diff --git a/plugins/clipboard/gsd-clipboard-manager.c b/plugins/clipboard/gsd-clipboard-manager.c
index d0d28c3..2e0c76e 100644
--- a/plugins/clipboard/gsd-clipboard-manager.c
+++ b/plugins/clipboard/gsd-clipboard-manager.c
@@ -941,18 +941,27 @@ gsd_clipboard_manager_stop (GsdClipboardManager *manager)
{
g_debug ("Stopping clipboard manager");
- clipboard_manager_watch_cb (manager,
- manager->priv->window,
- FALSE,
- 0,
- NULL);
- XDestroyWindow (manager->priv->display, manager->priv->window);
+ if (manager->priv->window != None) {
+ clipboard_manager_watch_cb (manager,
+ manager->priv->window,
+ FALSE,
+ 0,
+ NULL);
+ XDestroyWindow (manager->priv->display, manager->priv->window);
+ manager->priv->window = None;
+ }
- list_foreach (manager->priv->conversions, (Callback) conversion_free, NULL);
- list_free (manager->priv->conversions);
+ if (manager->priv->conversions != NULL) {
+ list_foreach (manager->priv->conversions, (Callback) conversion_free, NULL);
+ list_free (manager->priv->conversions);
+ manager->priv->conversions = NULL;
+ }
- list_foreach (manager->priv->contents, (Callback) target_data_unref, NULL);
- list_free (manager->priv->contents);
+ if (manager->priv->contents != NULL) {
+ list_foreach (manager->priv->contents, (Callback) target_data_unref, NULL);
+ list_free (manager->priv->contents);
+ manager->priv->contents = NULL;
+ }
}
static void
diff --git a/plugins/keybindings/gsd-keybindings-manager.c b/plugins/keybindings/gsd-keybindings-manager.c
index 3d5435e..a5f7007 100644
--- a/plugins/keybindings/gsd-keybindings-manager.c
+++ b/plugins/keybindings/gsd-keybindings-manager.c
@@ -635,17 +635,17 @@ gsd_keybindings_manager_stop (GsdKeybindingsManager *manager)
p->screens = NULL;
}
- for (l = p->binding_list; l; l = l->next) {
- Binding *b = l->data;
- g_free (b->binding_str);
- g_free (b->action);
- g_free (b->gconf_key);
- g_free (b->previous_key.keycodes);
- g_free (b->key.keycodes);
- g_free (b);
- }
-
if (p->binding_list != NULL) {
+ for (l = p->binding_list; l; l = l->next) {
+ Binding *b = l->data;
+ g_free (b->binding_str);
+ g_free (b->action);
+ g_free (b->gconf_key);
+ g_free (b->previous_key.keycodes);
+ g_free (b->key.keycodes);
+ g_free (b);
+ }
+
g_slist_free (p->binding_list);
p->binding_list = NULL;
}
diff --git a/plugins/keyboard/gsd-keyboard-xkb.c b/plugins/keyboard/gsd-keyboard-xkb.c
index f8ff618..6f0e3d7 100644
--- a/plugins/keyboard/gsd-keyboard-xkb.c
+++ b/plugins/keyboard/gsd-keyboard-xkb.c
@@ -715,6 +715,9 @@ gsd_keyboard_xkb_shutdown (void)
{
guint i;
+ if (!inited_ok)
+ return;
+
pa_callback = NULL;
pa_callback_user_data = NULL;
manager = NULL;
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 5d5ebd4..bf305c4 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -1344,11 +1344,11 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
priv->volume_monitor = NULL;
}
- if (priv->cancellable != NULL) {
- g_cancellable_cancel (priv->cancellable);
- g_object_unref (priv->cancellable);
- priv->cancellable = NULL;
- }
+ if (priv->cancellable != NULL) {
+ g_cancellable_cancel (priv->cancellable);
+ g_object_unref (priv->cancellable);
+ priv->cancellable = NULL;
+ }
if (priv->owner_id > 0) {
g_bus_unown_name (priv->owner_id);
@@ -1380,8 +1380,10 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
gdk_flush ();
gdk_error_trap_pop ();
- g_slist_free (priv->screens);
- priv->screens = NULL;
+ if (priv->screens != NULL) {
+ g_slist_free (priv->screens);
+ priv->screens = NULL;
+ }
#ifdef HAVE_PULSE
if (priv->stream) {
@@ -1400,13 +1402,15 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
priv->dialog = NULL;
}
- for (l = priv->media_players; l; l = l->next) {
- MediaPlayer *mp = l->data;
- g_free (mp->application);
- g_free (mp);
+ if (priv->media_players != NULL) {
+ for (l = priv->media_players; l; l = l->next) {
+ MediaPlayer *mp = l->data;
+ g_free (mp->application);
+ g_free (mp);
+ }
+ g_list_free (priv->media_players);
+ priv->media_players = NULL;
}
- g_list_free (priv->media_players);
- priv->media_players = NULL;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]