[maemo-commits] [maemo-commits] r16107 - in projects/haf/branches/hildon-thumbnail/daemonize: . daemon
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Sep 15 17:15:03 EEST 2008
- Previous message: [maemo-commits] r16106 - in projects/haf/branches/hildon-thumbnail/daemonize: . daemon daemon/plugins thumbs
- Next message: [maemo-commits] r16108 - projects/haf/branches/hildon-thumbnail/daemonize/daemon
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: pvanhoof Date: 2008-09-15 17:14:53 +0300 (Mon, 15 Sep 2008) New Revision: 16107 Modified: projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c Log: 2008-09-15 Philip Van Hoof <pvanhoof at gnome.org> * daemon/thumbnailer.c * daemon/manager.c * daemon/manager.h * daemon/manager.xml: Added a method to get the supported mime-types Modified: projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog 2008-09-12 12:34:46 UTC (rev 16106) +++ projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog 2008-09-15 14:14:53 UTC (rev 16107) @@ -1,3 +1,10 @@ +2008-09-15 Philip Van Hoof <pvanhoof at gnome.org> + + * daemon/thumbnailer.c + * daemon/manager.c + * daemon/manager.h + * daemon/manager.xml: Added a method to get the supported mime-types + 2008-09-12 Philip Van Hoof <pvanhoof at gnome.org> * thumbs/hildon-thumbnail-factory.c Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c 2008-09-12 12:34:46 UTC (rev 16106) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c 2008-09-15 14:14:53 UTC (rev 16107) @@ -44,6 +44,7 @@ DBusGConnection *connection; GHashTable *handlers; GMutex *mutex; + GList *thumber_has; } ManagerPrivate; enum { @@ -316,21 +317,6 @@ mime_proxy = g_hash_table_lookup (priv->handlers, mime_type); - /* - Special plugin registrations always override - if (mime_proxy) { - GError *error = NULL; - g_set_error (&error, - DBUS_ERROR, - 0, - "MIME type already registered"); - dbus_g_method_return_error (context, error); - g_error_free (error); - g_mutex_unlock (priv->mutex); - return; - } - */ - sender = dbus_g_method_get_sender (context); manager_add (object, mime_type, sender); @@ -348,12 +334,72 @@ dbus_g_method_return (context); } +void +manager_i_have (Manager *object, const gchar *mime_type) +{ + ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); + g_mutex_lock (priv->mutex); + priv->thumber_has = g_list_prepend (priv->thumber_has, + g_strdup (mime_type)); + g_mutex_unlock (priv->mutex); +} + + +void +manager_get_supported (Manager *object, DBusGMethodInvocation *context) +{ + ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); + GStrv supported; + GHashTable *supported_h; + GHashTableIter iter; + gpointer key, value; + GList *copy; + guint y; + + supported_h = g_hash_table_new_full (g_str_hash, g_str_equal, + (GDestroyNotify) g_free, + (GDestroyNotify) NULL); + + g_mutex_lock (priv->mutex); + copy = priv->thumber_has; + while (copy) { + g_hash_table_replace (supported_h, g_strdup (copy->data), NULL); + copy = g_list_next (copy); + } + + copy = g_hash_table_get_keys (priv->handlers); + while (copy) { + g_hash_table_replace (supported_h, g_strdup (copy->data), NULL); + copy = g_list_next (copy); + } + g_list_free (copy); + + g_mutex_unlock (priv->mutex); + + g_hash_table_iter_init (&iter, supported_h); + + supported = (GStrv) g_malloc0 (sizeof (gchar *) * (g_hash_table_size (supported_h) + 1)); + + y = 0; + while (g_hash_table_iter_next (&iter, &key, &value)) { + supported[y] = g_strdup (key); + y++; + } + + dbus_g_method_return (context, supported); + + g_strfreev (supported); + g_hash_table_unref (supported_h); +} + static void manager_finalize (GObject *object) { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); + if (priv->thumber_has) + g_list_free (priv->thumber_has); g_hash_table_unref (priv->handlers); g_mutex_free (priv->mutex); @@ -430,6 +476,7 @@ ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); priv->mutex = g_mutex_new (); + priv->thumber_has = NULL; priv->handlers = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref); Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h 2008-09-12 12:34:46 UTC (rev 16106) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h 2008-09-15 14:14:53 UTC (rev 16107) @@ -48,7 +48,9 @@ GType manager_get_type (void); void manager_register (Manager *object, gchar *mime_type, DBusGMethodInvocation *context); +void manager_get_supported (Manager *object, DBusGMethodInvocation *context); +void manager_i_have (Manager *object, const gchar *mime_type); DBusGProxy* manager_get_handler (Manager *object, const gchar *mime_type); void manager_do_stop (void); Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml 2008-09-12 12:34:46 UTC (rev 16106) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml 2008-09-15 14:14:53 UTC (rev 16107) @@ -5,5 +5,9 @@ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> <arg type="s" name="mime_type" direction="in" /> </method> + <method name="GetSupported"> + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> + <arg type="as" name="mime_types" direction="out" /> + </method> </interface> </node> Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c 2008-09-12 12:34:46 UTC (rev 16106) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c 2008-09-15 14:14:53 UTC (rev 16107) @@ -73,6 +73,8 @@ g_hash_table_insert (priv->plugins, g_strdup (mime_type), plugin); + manager_i_have (priv->manager, mime_type); + } static gboolean
- Previous message: [maemo-commits] r16106 - in projects/haf/branches/hildon-thumbnail/daemonize: . daemon daemon/plugins thumbs
- Next message: [maemo-commits] r16108 - projects/haf/branches/hildon-thumbnail/daemonize/daemon
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]