gnome-settings-daemon r293 - in trunk: . plugins/media-keys
- From: jensg svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-settings-daemon r293 - in trunk: . plugins/media-keys
- Date: Fri, 11 Apr 2008 18:13:47 +0100 (BST)
Author: jensg
Date: Fri Apr 11 18:13:47 2008
New Revision: 293
URL: http://svn.gnome.org/viewvc/gnome-settings-daemon?rev=293&view=rev
Log:
2008-04-11 Jens Granseuer <jensgr gmx net>
Make media-keys plugin deactivation work
* plugins/media-keys/gsd-media-keys-manager.c: (acme_error),
(dialog_init), (init_kbd), (gsd_media_keys_manager_stop),
(register_manager): clean up properly on stop
* plugins/media-keys/gsd-media-keys-plugin.c: (impl_deactivate):
stop manager on deactivation
Modified:
trunk/ChangeLog
trunk/plugins/media-keys/gsd-media-keys-manager.c
trunk/plugins/media-keys/gsd-media-keys-plugin.c
Modified: trunk/plugins/media-keys/gsd-media-keys-manager.c
==============================================================================
--- trunk/plugins/media-keys/gsd-media-keys-manager.c (original)
+++ trunk/plugins/media-keys/gsd-media-keys-manager.c Fri Apr 11 18:13:47 2008
@@ -88,6 +88,7 @@
GList *media_players;
DBusGConnection *connection;
+ guint notify[HANDLED_KEYS];
};
enum {
@@ -145,11 +146,11 @@
GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
- "%s", msg);
+ msg, NULL);
gtk_dialog_set_default_response (GTK_DIALOG (error_dialog),
GTK_RESPONSE_OK);
gtk_widget_show (error_dialog);
- g_signal_connect (G_OBJECT (error_dialog),
+ g_signal_connect (error_dialog,
"response",
G_CALLBACK (gtk_widget_destroy),
NULL);
@@ -265,7 +266,7 @@
{
if (manager->priv->dialog != NULL
&& !gsd_media_keys_window_is_valid (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog))) {
- g_object_unref (manager->priv->dialog);
+ gtk_widget_destroy (manager->priv->dialog);
manager->priv->dialog = NULL;
}
@@ -430,12 +431,13 @@
char *tmp;
Key *key;
- gconf_client_notify_add (manager->priv->conf_client,
- keys[i].gconf_key,
- (GConfClientNotifyFunc)update_kbd_cb,
- manager,
- NULL,
- NULL);
+ manager->priv->notify[i] =
+ gconf_client_notify_add (manager->priv->conf_client,
+ keys[i].gconf_key,
+ (GConfClientNotifyFunc) update_kbd_cb,
+ manager,
+ NULL,
+ NULL);
tmp = gconf_client_get_string (manager->priv->conf_client,
keys[i].gconf_key,
@@ -1050,21 +1052,64 @@
gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
{
GsdMediaKeysManagerPrivate *priv = manager->priv;
+ GSList *ls;
+ GList *l;
+ int i;
g_debug ("Stopping media_keys manager");
+ for (ls = priv->screens; ls != NULL; ls = ls->next) {
+ gdk_window_remove_filter (gdk_screen_get_root_window (ls->data),
+ (GdkFilterFunc) acme_filter_events,
+ manager);
+ }
+
+ g_slist_free (priv->screens);
+ priv->screens = NULL;
+
if (priv->conf_client) {
+ gconf_client_remove_dir (priv->conf_client,
+ GCONF_BINDING_DIR,
+ NULL);
+
+ for (i = 0; i < HANDLED_KEYS; ++i) {
+ if (priv->notify[i] != 0) {
+ gconf_client_notify_remove (priv->conf_client, priv->notify[i]);
+ priv->notify[i] = 0;
+ }
+ }
+
g_object_unref (priv->conf_client);
priv->conf_client = NULL;
}
+ if (priv->connection != NULL) {
+ dbus_g_connection_unref (priv->connection);
+ priv->connection = NULL;
+ }
+
+ for (i = 0; i < HANDLED_KEYS; ++i) {
+ g_free (keys[i].key);
+ keys[i].key = NULL;
+ }
+
if (priv->volume) {
g_object_unref (priv->volume);
priv->volume = NULL;
}
- g_slist_free (priv->screens);
- priv->screens = NULL;
+ if (priv->dialog != NULL) {
+ gtk_widget_destroy (priv->dialog);
+ priv->dialog = 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;
}
static void
@@ -1184,14 +1229,13 @@
{
GError *error = NULL;
- error = NULL;
manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
if (manager->priv->connection == NULL) {
if (error != NULL) {
- g_critical ("error getting session bus: %s", error->message);
+ g_error ("Error getting session bus: %s", error->message);
g_error_free (error);
}
- exit (1);
+ return FALSE;
}
dbus_g_connection_register_g_object (manager->priv->connection, GSD_MEDIA_KEYS_DBUS_PATH, G_OBJECT (manager));
Modified: trunk/plugins/media-keys/gsd-media-keys-plugin.c
==============================================================================
--- trunk/plugins/media-keys/gsd-media-keys-plugin.c (original)
+++ trunk/plugins/media-keys/gsd-media-keys-plugin.c Fri Apr 11 18:13:47 2008
@@ -86,6 +86,7 @@
impl_deactivate (GnomeSettingsPlugin *plugin)
{
g_debug ("Deactivating media_keys plugin");
+ gsd_media_keys_manager_stop (GSD_MEDIA_KEYS_PLUGIN (plugin)->priv->manager);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]