[maemo-commits] [maemo-commits] r16107 - in projects/haf/branches/hildon-thumbnail/daemonize: . daemon

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Sep 15 17:15:03 EEST 2008
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 


More information about the maemo-commits mailing list