[maemo-commits] [maemo-commits] r15975 - projects/haf/branches/hildon-thumbnail/daemonize/daemon
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Sep 2 19:44:02 EEST 2008
- Previous message: [maemo-commits] r15974 - projects/haf/branches/hildon-thumbnail/daemonize/daemon
- Next message: [maemo-commits] r15976 - in projects/haf/trunk/sapwood: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: pvanhoof Date: 2008-09-02 19:44:00 +0300 (Tue, 02 Sep 2008) New Revision: 15975 Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c Log: Making things a bit more thread safe Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c 2008-09-02 16:23:05 UTC (rev 15974) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c 2008-09-02 16:44:00 UTC (rev 15975) @@ -18,6 +18,7 @@ typedef struct { DBusGConnection *connection; GHashTable *handlers; + GMutex *mutex; } ManagerPrivate; enum { @@ -29,9 +30,14 @@ manager_get_handler (Manager *object, const gchar *mime_type) { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); - DBusGProxy *proxy = g_hash_table_lookup (priv->handlers, mime_type); + DBusGProxy *proxy; + + g_mutex_lock (priv->mutex); + proxy = g_hash_table_lookup (priv->handlers, mime_type); if (proxy) g_object_ref (proxy); + g_mutex_unlock (priv->mutex); + return proxy; } @@ -50,10 +56,13 @@ { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); + g_mutex_lock (priv->mutex); + g_hash_table_foreach_remove (priv->handlers, do_remove_or_not, proxy); + g_mutex_unlock (priv->mutex); } void @@ -65,6 +74,8 @@ dbus_async_return_if_fail (mime_type != NULL, context); + g_mutex_lock (priv->mutex); + sender = dbus_g_method_get_sender (context); mime_proxy = dbus_g_proxy_new_for_name (priv->connection, sender, @@ -80,6 +91,8 @@ g_signal_connect (mime_proxy, "destroy", G_CALLBACK (service_gone), object); + + g_mutex_unlock (priv->mutex); } static void @@ -88,6 +101,7 @@ ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); g_hash_table_unref (priv->handlers); + g_mutex_free (priv->mutex); G_OBJECT_CLASS (manager_parent_class)->finalize (object); } @@ -160,7 +174,8 @@ manager_init (Manager *object) { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); - + + priv->mutex = g_mutex_new (); priv->handlers = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref);
- Previous message: [maemo-commits] r15974 - projects/haf/branches/hildon-thumbnail/daemonize/daemon
- Next message: [maemo-commits] r15976 - in projects/haf/trunk/sapwood: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]