gnome-settings-daemon r295 - in trunk: . plugins/mouse
- From: jensg svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-settings-daemon r295 - in trunk: . plugins/mouse
- Date: Fri, 11 Apr 2008 18:47:23 +0100 (BST)
Author: jensg
Date: Fri Apr 11 18:47:22 2008
New Revision: 295
URL: http://svn.gnome.org/viewvc/gnome-settings-daemon?rev=295&view=rev
Log:
2008-04-11 Jens Granseuer <jensgr gmx net>
Make mouse plugin deactivation work
* plugins/mouse/gsd-mouse-manager.c: (register_config_callback),
(gsd_mouse_manager_init), (gsd_mouse_manager_start),
(gsd_mouse_manager_stop): clean up properly on stop
* plugins/mouse/gsd-mouse-plugin.c: (impl_deactivate): stop manager on
deactivation
Modified:
trunk/ChangeLog
trunk/plugins/mouse/gsd-mouse-manager.c
trunk/plugins/mouse/gsd-mouse-plugin.c
Modified: trunk/plugins/mouse/gsd-mouse-manager.c
==============================================================================
--- trunk/plugins/mouse/gsd-mouse-manager.c (original)
+++ trunk/plugins/mouse/gsd-mouse-manager.c Fri Apr 11 18:47:22 2008
@@ -52,6 +52,9 @@
#define GSD_MOUSE_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_MOUSE_MANAGER, GsdMouseManagerPrivate))
+#define GCONF_MOUSE_DIR "/desktop/gnome/peripherals/mouse"
+#define GCONF_MOUSE_A11Y_DIR "/desktop/gnome/accessibility/mouse"
+
#define KEY_LEFT_HANDED "/desktop/gnome/peripherals/mouse/left_handed"
#define KEY_MOTION_ACCELERATION "/desktop/gnome/peripherals/mouse/motion_acceleration"
#define KEY_MOTION_THRESHOLD "/desktop/gnome/peripherals/mouse/motion_threshold"
@@ -61,11 +64,8 @@
struct GsdMouseManagerPrivate
{
- gboolean dummy;
-};
-
-enum {
- PROP_0,
+ guint notify;
+ guint notify_a11y;
};
static void gsd_mouse_manager_class_init (GsdMouseManagerClass *klass);
@@ -76,12 +76,6 @@
static gpointer manager_object = NULL;
-void
-gsd_mouse_manager_stop (GsdMouseManager *manager)
-{
- g_debug ("Stopping mouse manager");
-}
-
static void
gsd_mouse_manager_set_property (GObject *object,
guint prop_id,
@@ -627,32 +621,20 @@
}
}
-static void
+static guint
register_config_callback (GsdMouseManager *manager,
+ GConfClient *client,
const char *path,
GConfClientNotifyFunc func)
{
- GConfClient *client;
-
- client = gconf_client_get_default ();
-
gconf_client_add_dir (client, path, GCONF_CLIENT_PRELOAD_NONE, NULL);
- gconf_client_notify_add (client, path, func, manager, NULL, NULL);
-
- g_object_unref (client);
+ return gconf_client_notify_add (client, path, func, manager, NULL, NULL);
}
static void
gsd_mouse_manager_init (GsdMouseManager *manager)
{
manager->priv = GSD_MOUSE_MANAGER_GET_PRIVATE (manager);
-
- register_config_callback (manager,
- "/desktop/gnome/peripherals/mouse",
- (GConfClientNotifyFunc)mouse_callback);
- register_config_callback (manager,
- "/desktop/gnome/accessibility/mouse",
- (GConfClientNotifyFunc)mouse_callback);
}
gboolean
@@ -666,6 +648,17 @@
client = gconf_client_get_default ();
+ manager->priv->notify =
+ register_config_callback (manager,
+ client,
+ GCONF_MOUSE_DIR,
+ (GConfClientNotifyFunc) mouse_callback);
+ manager->priv->notify_a11y =
+ register_config_callback (manager,
+ client,
+ GCONF_MOUSE_A11Y_DIR,
+ (GConfClientNotifyFunc) mouse_callback);
+
set_left_handed (manager, gconf_client_get_bool (client, KEY_LEFT_HANDED, NULL));
set_motion_acceleration (manager, gconf_client_get_float (client, KEY_MOTION_ACCELERATION , NULL));
set_motion_threshold (manager, gconf_client_get_int (client, KEY_MOTION_THRESHOLD, NULL));
@@ -681,6 +674,33 @@
return TRUE;
}
+void
+gsd_mouse_manager_stop (GsdMouseManager *manager)
+{
+ GsdMouseManagerPrivate *p = manager->priv;
+ GConfClient *client;
+
+ g_debug ("Stopping mouse manager");
+
+ client = gconf_client_get_default ();
+
+ if (p->notify != 0) {
+ gconf_client_remove_dir (client, GCONF_MOUSE_DIR, NULL);
+ gconf_client_notify_remove (client, p->notify);
+ p->notify = 0;
+ }
+
+ if (p->notify_a11y != 0) {
+ gconf_client_remove_dir (client, GCONF_MOUSE_A11Y_DIR, NULL);
+ gconf_client_notify_remove (client, p->notify_a11y);
+ p->notify_a11y = 0;
+ }
+
+ g_object_unref (client);
+
+ set_locate_pointer (manager, FALSE);
+}
+
static void
gsd_mouse_manager_finalize (GObject *object)
{
Modified: trunk/plugins/mouse/gsd-mouse-plugin.c
==============================================================================
--- trunk/plugins/mouse/gsd-mouse-plugin.c (original)
+++ trunk/plugins/mouse/gsd-mouse-plugin.c Fri Apr 11 18:47:22 2008
@@ -86,6 +86,7 @@
impl_deactivate (GnomeSettingsPlugin *plugin)
{
g_debug ("Deactivating mouse plugin");
+ gsd_mouse_manager_stop (GSD_MOUSE_PLUGIN (plugin)->priv->manager);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]