[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 ]
