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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Sep 2 14:29:13 EEST 2008
Author: pvanhoof
Date: 2008-09-02 14:29:07 +0300 (Tue, 02 Sep 2008)
New Revision: 15940

Added:
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/dbus-utils.c
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/dbus-utils.h
   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
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.h
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.xml
Removed:
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.c
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.h
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.xml
Modified:
   projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/Makefile.am
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/hildon-thumbnail-daemon.c
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/default.c
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/image-png.xml
Log:
2008-09-02  Philip Van Hoof  <philip at codeminded.be>

        daemon/hildon-thumbnail-daemon.c
        daemon/plugins/image-png.xml
        daemon/plugins/default.c
        daemon/dbus-utils.h
        daemon/thumbnailer.c
        daemon/manager.c
        daemon/generic.c
        daemon/thumbnailer.h
        daemon/manager.h
        daemon/generic.h
        daemon/manager.xml
        daemon/thumbnailer.xml
        daemon/Makefile.am
        daemon/generic.xml
        daemon/dbus-utils.c: Some major refactoring and setting up of initial
        infrastructure



Modified: projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog	2008-09-02 11:29:07 UTC (rev 15940)
@@ -1,3 +1,22 @@
+2008-09-02  Philip Van Hoof  <philip at codeminded.be>
+
+	daemon/hildon-thumbnail-daemon.c
+	daemon/plugins/image-png.xml
+	daemon/plugins/default.c
+	daemon/dbus-utils.h
+	daemon/thumbnailer.c
+	daemon/manager.c
+	daemon/generic.c
+	daemon/thumbnailer.h
+	daemon/manager.h
+	daemon/generic.h
+	daemon/manager.xml
+	daemon/thumbnailer.xml
+	daemon/Makefile.am
+	daemon/generic.xml
+	daemon/dbus-utils.c: Some major refactoring and setting up of initial
+	infrastructure
+
 2008-09-01  Philip Van Hoof  <philip at codeminded.be>
 
 	daemon/hildon-thumbnail-daemon.c


Property changes on: projects/haf/branches/hildon-thumbnail/daemonize/daemon
___________________________________________________________________
Name: svn:ignore
   - Makefile.in
hildon-thumbnailerd
.libs
.deps
org.freedesktop.thumbnailer.service
Makefile
generic-glue.h

   + Makefile.in
hildon-thumbnailerd
.libs
.deps
org.freedesktop.thumbnailer.service
Makefile
*-glue.h



Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/Makefile.am
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/Makefile.am	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/Makefile.am	2008-09-02 11:29:07 UTC (rev 15940)
@@ -4,7 +4,7 @@
 	$(DBUS_CFLAGS) \
 	$(GLIB_CFLAGS) \
 	$(GMODULE_CFLAGS) \
-        -DPLUGINS_DIR=\""$(libdir)/hildon-thumbnailer/plugins"\"
+	-DPLUGINS_DIR=\""$(libdir)/hildon-thumbnailer/plugins"\"
 
 
 libexec_PROGRAMS = hildon-thumbnailerd
@@ -15,8 +15,12 @@
 	$(include_HEADERS) \
 	hildon-thumbnail-plugin.c \
 	hildon-thumbnail-daemon.c \
-	generic.c \
-	generic.h
+	thumbnailer.c \
+	thumbnailer.h \
+	manager.c \
+	manager.h \
+	dbus-utils.h \
+	dbus-utils.c
 
 hildon_thumbnailerd_LDADD = \
 	$(DBUS_LIBS) \
@@ -33,9 +37,9 @@
 %-glue.h: $(top_srcdir)/daemon/%.xml
 	$(DBUSBINDINGTOOL) --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
 
-BUILT_SOURCES = generic-glue.h
+BUILT_SOURCES = manager-glue.h thumbnailer-glue.h
 configdir = $(datadir)/hildon-thumbnail
-config_DATA = generic.xml
+config_DATA = manager.xml thumbnailer.xml
 
 EXTRA_DIST = $(BUILT_SOURCES) $(config_DATA) \
 	$(org.freedesktop.thumbnailer_service_DATA)

Added: projects/haf/branches/hildon-thumbnail/daemonize/daemon/dbus-utils.c
===================================================================

Added: projects/haf/branches/hildon-thumbnail/daemonize/daemon/dbus-utils.h
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/dbus-utils.h	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/dbus-utils.h	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,25 @@
+#ifndef __DBUS_UTILS_H__
+#define __DBUS_UTILS_H__
+
+#define DBUS_ERROR_DOMAIN	"HildonThumbnailer"
+#define DBUS_ERROR		g_quark_from_static_string (DBUS_ERROR_DOMAIN)
+
+#define dbus_async_return_if_fail(expr,context)				\
+	G_STMT_START {							\
+		if G_LIKELY(expr) { } else {				\
+			GError *error = NULL;				\
+									\
+			g_set_error (&error,				\
+				     DBUS_ERROR,			\
+				     0,					\
+				     _("Assertion `%s' failed"),	\
+				     #expr);				\
+									\
+			dbus_g_method_return_error (context, error);	\
+			g_clear_error (&error);				\
+									\
+			return;						\
+		};							\
+	} G_STMT_END
+
+#endif

Deleted: projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.c
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.c	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.c	2008-09-02 11:29:07 UTC (rev 15940)
@@ -1,69 +0,0 @@
-#include <glib.h>
-#include <dbus/dbus-glib-bindings.h>
-
-#include "generic.h"
-#include "generic-glue.h"
-
-#define GENERIC_SERVICE      "org.freedesktop.thumbnailer.generic"
-#define GENERIC_PATH         "/org/freedesktop/thumbnailer/generic"
-#define GENERIC_INTERFACE    "org.freedesktop.thumbnailer.generic"
-
-void
-generic_create (Generic *object, GStrv urls, DBusGMethodInvocation *context)
-{
-}
-
-void
-generic_move (Generic *object, GStrv from_urls, GStrv to_urls, DBusGMethodInvocation *context)
-{
-}
-
-void
-generic_delete (Generic *object, GStrv urls, DBusGMethodInvocation *context)
-{
-}
-
-
-static void
-generic_class_init (GenericClass *klass)
-{
-}
-
-static void
-generic_init (Generic *object)
-{
-}
-
-
-G_DEFINE_TYPE(Generic, generic, G_TYPE_OBJECT)
-
-void 
-generic_do_stop (void)
-{
-}
-
-
-void 
-generic_do_init (DBusGConnection *connection, GError **error)
-{
-	guint result;
-	DBusGProxy *proxy;
-	GObject *object;
-
-	proxy = dbus_g_proxy_new_for_name (connection, 
-					   DBUS_SERVICE_DBUS,
-					   DBUS_PATH_DBUS,
-					   DBUS_INTERFACE_DBUS);
-
-	org_freedesktop_DBus_request_name (proxy, GENERIC_SERVICE,
-					   DBUS_NAME_FLAG_DO_NOT_QUEUE,
-					   &result, error);
-
-	object = g_object_new (generic_get_type (), NULL);
-
-	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
-					 &dbus_glib_generic_object_info);
-
-	dbus_g_connection_register_g_object (connection, GENERIC_PATH, object);
-
-}

Deleted: projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.h
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.h	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.h	2008-09-02 11:29:07 UTC (rev 15940)
@@ -1,22 +0,0 @@
-#ifndef __GENERIC_H__
-#define __GENERIC_H__
-
-typedef struct Generic Generic;
-typedef struct GenericClass GenericClass;
-
-struct Generic {
-	GObject parent;
-};
-
-struct GenericClass {
-	GObjectClass parent;
-};
-
-void generic_create (Generic *object, GStrv urls, DBusGMethodInvocation *context);
-void generic_move (Generic *object, GStrv from_urls, GStrv to_urls, DBusGMethodInvocation *context);
-void generic_delete (Generic *object, GStrv urls, DBusGMethodInvocation *context);
-
-void generic_do_stop (void);
-void generic_do_init (DBusGConnection *connection, GError **error);
-
-#endif

Deleted: projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.xml
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.xml	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.xml	2008-09-02 11:29:07 UTC (rev 15940)
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<node name="/">
-  <interface name="org.freedesktop.Thumbnailer.generic">  
-    <method name="Create">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="as" name="uris" direction="in" />
-    </method>
-    <method name="Move">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="as" name="from_uris" direction="in" />
-      <arg type="as" name="to_uris" direction="in" />
-    </method>
-    <method name="Delete">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="as" name="uris" direction="in" />
-    </method>
-  </interface>
-</node>

Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/hildon-thumbnail-daemon.c
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/hildon-thumbnail-daemon.c	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/hildon-thumbnail-daemon.c	2008-09-02 11:29:07 UTC (rev 15940)
@@ -27,7 +27,8 @@
 
 #include "hildon-thumbnail-plugin.h"
 
-#include "generic.h"
+#include "thumbnailer.h"
+#include "manager.h"
 
 int 
 main (int argc, char **argv) 
@@ -49,12 +50,14 @@
 	else {
 		GMainLoop *main_loop;
 		GError *error = NULL;
+		Manager *manager;
 
 		/* TODO: dynamically load plugins, and detect when new ones get
 		 * dropped, and removed ones get removed (and therefore must
 		 * shut down) */
 
-		generic_do_init (connection, &error);
+		manager_do_init (connection, &manager, &error);
+		thumbnailer_do_init (connection, manager, &error);
 
 		module = hildon_thumbnail_plugin_load ("default");
 		hildon_thumbnail_plugin_do_init (module, connection, &error);
@@ -64,7 +67,8 @@
 
 		hildon_thumbnail_plugin_do_stop (module);
 
-		generic_do_stop ();
+		manager_do_stop ();
+		thumbnailer_do_stop ();
 
 		g_main_loop_unref (main_loop);
 	}

Copied: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c (from rev 15936, projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.c)
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.c	2008-09-01 13:34:04 UTC (rev 15936)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,261 @@
+#include <string.h>
+#include <glib.h>
+#include <dbus/dbus-glib-bindings.h>
+
+#include "manager.h"
+#include "manager-glue.h"
+
+#define MANAGER_SERVICE      "org.freedesktop.thumbnailer.manager"
+#define MANAGER_PATH         "/org/freedesktop/thumbnailer/manager"
+#define MANAGER_INTERFACE    "org.freedesktop.thumbnailer.manager"
+
+
+#define TYPE_MANAGER             (manager_get_type())
+#define MANAGER(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_MANAGER, Manager))
+#define MANAGER_CLASS(c)         (G_TYPE_CHECK_CLASS_CAST ((c), TYPE_MANAGER, ManagerClass))
+#define MANAGER_GET_CLASS(o)     (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_MANAGER, ManagerClass))
+#define MANAGER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_MANAGER, ManagerPrivate))
+
+G_DEFINE_TYPE (Manager, manager, G_TYPE_OBJECT)
+
+#ifndef dbus_g_method_get_sender
+gchar* dbus_g_method_get_sender (DBusGMethodInvocation *context);
+#endif
+
+typedef struct {
+	DBusGProxy *proxy;
+	DBusGConnection *connection;
+	GHashTable *handlers;
+} ManagerPrivate;
+
+enum {
+	PROP_0,
+	PROP_PROXY,
+	PROP_CONNECTION
+};
+
+GHashTable* 
+manager_get_handlers (Manager *object)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+	return g_hash_table_ref (priv->handlers);
+}
+
+/*
+static void
+on_proxy_name_owner_changed (DBusGProxy *proxy,
+			     const gchar *name_owner,
+			     const gchar *name_lost,
+			     const gchar *name_aquired,
+			     Manager *object)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+
+	if (name_lost && strlen (name_lost) > 0)
+		g_hash_table_remove (priv->handlers, name_lost);
+}
+*/
+
+static gboolean 
+do_remove_or_not (gpointer key, gpointer value, gpointer user_data)
+{
+	if (user_data == value)
+		return TRUE;
+	return FALSE;
+}
+
+static void
+service_gone (DBusGProxy *proxy,
+	      Manager *object)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+
+	g_hash_table_foreach_remove (priv->handlers, 
+				     do_remove_or_not,
+				     proxy);
+
+}
+
+void
+manager_register (Manager *object, gchar *mime_type, DBusGMethodInvocation *context)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+	DBusGProxy *mime_proxy;
+	gchar *sender = dbus_g_method_get_sender (context);
+
+	mime_proxy = dbus_g_proxy_new_for_name (priv->connection, sender, 
+						MANAGER_PATH,
+						MANAGER_INTERFACE);
+
+	g_hash_table_insert (priv->handlers, 
+			     mime_type,
+			     mime_proxy);
+
+	g_signal_connect (mime_proxy, "destroy",
+			  G_CALLBACK (service_gone),
+			  object);
+/*
+	dbus_g_proxy_add_signal (mime_proxy, "NameOwnerChanged",
+				 G_TYPE_STRING, G_TYPE_STRING,
+				 G_TYPE_STRING, G_TYPE_INVALID);
+
+	dbus_g_proxy_connect_signal (mime_proxy, "NameOwnerChanged", 
+				     G_CALLBACK (on_proxy_name_owner_changed), 
+				     object,
+				     NULL);
+*/
+}
+
+static void
+manager_finalize (GObject *object)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+
+	g_hash_table_unref (priv->handlers);
+	g_object_unref (priv->proxy);
+	g_object_unref (priv->connection);
+
+	G_OBJECT_CLASS (manager_parent_class)->finalize (object);
+}
+
+static void 
+manager_set_connection (Manager *object, DBusGConnection *connection)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+	if (priv->connection)
+		g_object_unref (priv->connection);
+	priv->connection = g_object_ref (connection);
+}
+
+static void 
+manager_set_proxy (Manager *object, DBusGProxy *proxy)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+
+	if (priv->proxy)
+		g_object_unref (priv->proxy);
+	priv->proxy = g_object_ref (proxy);
+}
+
+static void
+manager_set_property (GObject      *object,
+		      guint         prop_id,
+		      const GValue *value,
+		      GParamSpec   *pspec)
+{
+	switch (prop_id) {
+	case PROP_PROXY:
+		manager_set_proxy (MANAGER (object),
+				   g_value_get_object (value));
+		break;
+	case PROP_CONNECTION:
+		manager_set_connection (MANAGER (object),
+					g_value_get_object (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+
+static void
+manager_get_property (GObject    *object,
+		      guint       prop_id,
+		      GValue     *value,
+		      GParamSpec *pspec)
+{
+	ManagerPrivate *priv;
+
+	priv = MANAGER_GET_PRIVATE (object);
+
+	switch (prop_id) {
+	case PROP_PROXY:
+		g_value_set_object (value, priv->proxy);
+		break;
+	case PROP_CONNECTION:
+		g_value_set_object (value, priv->connection);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+static void
+manager_class_init (ManagerClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = manager_finalize;
+	object_class->set_property = manager_set_property;
+	object_class->get_property = manager_get_property;
+
+	g_object_class_install_property (object_class,
+					 PROP_PROXY,
+					 g_param_spec_object ("proxy",
+							      "DBus proxy",
+							      "DBus proxy",
+							      DBUS_TYPE_G_PROXY,
+							      G_PARAM_READWRITE |
+							      G_PARAM_CONSTRUCT));
+
+	g_object_class_install_property (object_class,
+					 PROP_CONNECTION,
+					 g_param_spec_object ("connection",
+							      "DBus connection",
+							      "DBus connection",
+							      DBUS_TYPE_G_CONNECTION,
+							      G_PARAM_READWRITE |
+							      G_PARAM_CONSTRUCT));
+
+	g_type_class_add_private (object_class, sizeof (ManagerPrivate));
+}
+
+static void
+manager_init (Manager *object)
+{
+	ManagerPrivate *priv = MANAGER_GET_PRIVATE (object);
+	
+	priv->handlers = g_hash_table_new_full (g_str_hash, g_str_equal,
+						(GDestroyNotify) g_free, 
+						(GDestroyNotify) g_object_unref);
+
+}
+
+
+
+void 
+manager_do_stop (void)
+{
+}
+
+
+void 
+manager_do_init (DBusGConnection *connection, Manager **manager, GError **error)
+{
+	guint result;
+	DBusGProxy *proxy;
+	GObject *object;
+
+	proxy = dbus_g_proxy_new_for_name (connection, 
+					   DBUS_SERVICE_DBUS,
+					   DBUS_PATH_DBUS,
+					   DBUS_INTERFACE_DBUS);
+
+	org_freedesktop_DBus_request_name (proxy, MANAGER_SERVICE,
+					   DBUS_NAME_FLAG_DO_NOT_QUEUE,
+					   &result, error);
+
+	object = g_object_new (TYPE_MANAGER, 
+			       "proxy", proxy, 
+			       "connection", connection,
+			       NULL);
+
+	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
+					 &dbus_glib_manager_object_info);
+
+	dbus_g_connection_register_g_object (connection, 
+					     MANAGER_PATH, 
+					     object);
+
+	*manager = MANAGER (object);
+}

Copied: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h (from rev 15936, projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.h)
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.h	2008-09-01 13:34:04 UTC (rev 15936)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,22 @@
+#ifndef __MANAGER_H__
+#define __MANAGER_H__
+
+typedef struct Manager Manager;
+typedef struct ManagerClass ManagerClass;
+
+struct Manager {
+	GObject parent;
+};
+
+struct ManagerClass {
+	GObjectClass parent;
+};
+
+void manager_register (Manager *object, gchar *mime_type, DBusGMethodInvocation *context);
+
+GHashTable* manager_get_handlers (Manager *object);
+
+void manager_do_stop (void);
+void manager_do_init (DBusGConnection *connection, Manager **manager, GError **error);
+
+#endif

Added: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.xml	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/">
+  <interface name="org.freedesktop.thumbnailer.manager">  
+    <method name="Register">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+      <arg type="s" name="mime_type" direction="in" />
+    </method>
+  </interface>
+</node>

Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/default.c
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/default.c	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/default.c	2008-09-02 11:29:07 UTC (rev 15940)
@@ -6,6 +6,8 @@
 #include "image-png-glue.h"
 #include "hildon-thumbnail-plugin.h"
 
+G_DEFINE_TYPE (ImagePng, image_png, G_TYPE_OBJECT)
+
 #define DEFAULT_PNG_SERVICE      "org.freedesktop.thumbnailer.image-png"
 #define DEFAULT_PNG_PATH         "/org/freedesktop/thumbnailer/image-png"
 #define DEFAULT_PNG_INTERFACE    "org.freedesktop.thumbnailer.image-png"
@@ -15,17 +17,6 @@
 {
 }
 
-void
-image_png_move (ImagePng *object, GStrv from_urls, GStrv to_urls, DBusGMethodInvocation *context)
-{
-}
-
-void
-image_png_delete (ImagePng *object, GStrv urls, DBusGMethodInvocation *context)
-{
-}
-
-
 static void
 image_png_class_init (ImagePngClass *klass)
 {
@@ -37,8 +28,6 @@
 }
 
 
-G_DEFINE_TYPE(ImagePng, image_png, G_TYPE_OBJECT)
-
 void 
 hildon_thumbnail_plugin_stop (void)
 {
@@ -63,7 +52,11 @@
 
 	object = g_object_new (image_png_get_type (), NULL);
 
-	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), &dbus_glib_image_png_object_info);
-	dbus_g_connection_register_g_object (connection, DEFAULT_PNG_PATH, object);
+	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
+					 &dbus_glib_image_png_object_info);
 
+	dbus_g_connection_register_g_object (connection, 
+					     DEFAULT_PNG_PATH, 
+					     object);
+
 }

Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/image-png.xml
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/image-png.xml	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/image-png.xml	2008-09-02 11:29:07 UTC (rev 15940)
@@ -1,18 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node name="/">
-  <interface name="org.freedesktop.Thumbnailer.image-png">  
+  <interface name="org.freedesktop.thumbnailer.image-png">  
     <method name="Create">
       <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
       <arg type="as" name="uris" direction="in" />
     </method>
-    <method name="Move">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="as" name="from_uris" direction="in" />
-      <arg type="as" name="to_uris" direction="in" />
-    </method>
-    <method name="Delete">
-      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
-      <arg type="as" name="uris" direction="in" />
-    </method>
   </interface>
 </node>

Added: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,220 @@
+#include <glib.h>
+#include <dbus/dbus-glib-bindings.h>
+
+#include "manager.h"
+#include "thumbnailer.h"
+#include "thumbnailer-glue.h"
+
+#define THUMBNAILER_SERVICE      "org.freedesktop.thumbnailer"
+#define THUMBNAILER_PATH         "/org/freedesktop/thumbnailer"
+#define THUMBNAILER_INTERFACE    "org.freedesktop.thumbnailer"
+
+
+#define TYPE_THUMBNAILER             (thumbnailer_get_type())
+#define THUMBNAILER(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_THUMBNAILER, Thumbnailer))
+#define THUMBNAILER_CLASS(c)         (G_TYPE_CHECK_CLASS_CAST ((c), TYPE_THUMBNAILER, ThumbnailerClass))
+#define THUMBNAILER_GET_CLASS(o)     (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_THUMBNAILER, ThumbnailerClass))
+#define THUMBNAILER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_THUMBNAILER, ThumbnailerPrivate))
+
+G_DEFINE_TYPE (Thumbnailer, thumbnailer, G_TYPE_OBJECT)
+
+typedef struct {
+	DBusGProxy *proxy;
+	DBusGConnection *connection;
+	Manager *manager;
+} ThumbnailerPrivate;
+
+enum {
+	PROP_0,
+	PROP_PROXY,
+	PROP_CONNECTION,
+	PROP_MANAGER
+};
+
+
+void
+thumbnailer_create (Thumbnailer *object, GStrv urls, DBusGMethodInvocation *context)
+{
+}
+
+void
+thumbnailer_move (Thumbnailer *object, GStrv from_urls, GStrv to_urls, DBusGMethodInvocation *context)
+{
+}
+
+void
+thumbnailer_delete (Thumbnailer *object, GStrv urls, DBusGMethodInvocation *context)
+{
+}
+
+static void
+thumbnailer_finalize (GObject *object)
+{
+	ThumbnailerPrivate *priv = THUMBNAILER_GET_PRIVATE (object);
+
+	g_object_unref (priv->manager);
+	g_object_unref (priv->proxy);
+	g_object_unref (priv->connection);
+
+	G_OBJECT_CLASS (thumbnailer_parent_class)->finalize (object);
+}
+
+static void 
+thumbnailer_set_connection (Thumbnailer *object, DBusGConnection *connection)
+{
+	ThumbnailerPrivate *priv = THUMBNAILER_GET_PRIVATE (object);
+	if (priv->connection)
+		g_object_unref (priv->connection);
+	priv->connection = g_object_ref (connection);
+}
+
+static void 
+thumbnailer_set_manager (Thumbnailer *object, Manager *manager)
+{
+	ThumbnailerPrivate *priv = THUMBNAILER_GET_PRIVATE (object);
+	if (priv->manager)
+		g_object_unref (priv->manager);
+	priv->manager = g_object_ref (manager);
+}
+
+static void 
+thumbnailer_set_proxy (Thumbnailer *object, DBusGProxy *proxy)
+{
+	ThumbnailerPrivate *priv = THUMBNAILER_GET_PRIVATE (object);
+
+	if (priv->proxy)
+		g_object_unref (priv->proxy);
+	priv->proxy = g_object_ref (proxy);
+}
+
+static void
+thumbnailer_set_property (GObject      *object,
+		      guint         prop_id,
+		      const GValue *value,
+		      GParamSpec   *pspec)
+{
+	switch (prop_id) {
+	case PROP_PROXY:
+		thumbnailer_set_proxy (THUMBNAILER (object),
+				   g_value_get_object (value));
+		break;
+	case PROP_CONNECTION:
+		thumbnailer_set_connection (THUMBNAILER (object),
+					    g_value_get_object (value));
+		break;
+	case PROP_MANAGER:
+		thumbnailer_set_manager (THUMBNAILER (object),
+					 g_value_get_object (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+
+static void
+thumbnailer_get_property (GObject    *object,
+		      guint       prop_id,
+		      GValue     *value,
+		      GParamSpec *pspec)
+{
+	ThumbnailerPrivate *priv;
+
+	priv = THUMBNAILER_GET_PRIVATE (object);
+
+	switch (prop_id) {
+	case PROP_PROXY:
+		g_value_set_object (value, priv->proxy);
+		break;
+	case PROP_CONNECTION:
+		g_value_set_object (value, priv->connection);
+		break;
+	case PROP_MANAGER:
+		g_value_set_object (value, priv->manager);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+static void
+thumbnailer_class_init (ThumbnailerClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = thumbnailer_finalize;
+	object_class->set_property = thumbnailer_set_property;
+	object_class->get_property = thumbnailer_get_property;
+
+	g_object_class_install_property (object_class,
+					 PROP_PROXY,
+					 g_param_spec_object ("proxy",
+							      "DBus proxy",
+							      "DBus proxy",
+							      DBUS_TYPE_G_PROXY,
+							      G_PARAM_READWRITE |
+							      G_PARAM_CONSTRUCT));
+
+	g_object_class_install_property (object_class,
+					 PROP_CONNECTION,
+					 g_param_spec_object ("connection",
+							      "DBus connection",
+							      "DBus connection",
+							      DBUS_TYPE_G_CONNECTION,
+							      G_PARAM_READWRITE |
+							      G_PARAM_CONSTRUCT));
+
+	g_object_class_install_property (object_class,
+					 PROP_MANAGER,
+					 g_param_spec_object ("manager",
+							      "Manager",
+							      "Manager",
+							      DBUS_TYPE_G_PROXY,
+							      G_PARAM_READWRITE |
+							      G_PARAM_CONSTRUCT));
+
+	g_type_class_add_private (object_class, sizeof (ThumbnailerPrivate));
+}
+
+static void
+thumbnailer_init (Thumbnailer *object)
+{
+
+}
+
+
+
+void 
+thumbnailer_do_stop (void)
+{
+}
+
+
+void 
+thumbnailer_do_init (DBusGConnection *connection, Manager *manager, GError **error)
+{
+	guint result;
+	DBusGProxy *proxy;
+	GObject *object;
+
+	proxy = dbus_g_proxy_new_for_name (connection, 
+					   DBUS_SERVICE_DBUS,
+					   DBUS_PATH_DBUS,
+					   DBUS_INTERFACE_DBUS);
+
+	org_freedesktop_DBus_request_name (proxy, THUMBNAILER_SERVICE,
+					   DBUS_NAME_FLAG_DO_NOT_QUEUE,
+					   &result, error);
+
+	object = g_object_new (TYPE_THUMBNAILER, 
+			       "proxy", proxy, 
+			       "connection", connection,
+			       "manager", manager,
+			       NULL);
+
+	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
+					 &dbus_glib_thumbnailer_object_info);
+
+	dbus_g_connection_register_g_object (connection, THUMBNAILER_PATH, object);
+
+}

Added: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.h
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.h	2008-09-02 11:29:03 UTC (rev 15939)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.h	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,24 @@
+#ifndef __THUMBNAILER_H__
+#define __THUMBNAILER_H__
+
+#include "manager.h"
+
+typedef struct Thumbnailer Thumbnailer;
+typedef struct ThumbnailerClass ThumbnailerClass;
+
+struct Thumbnailer {
+	GObject parent;
+};
+
+struct ThumbnailerClass {
+	GObjectClass parent;
+};
+
+void thumbnailer_create (Thumbnailer *object, GStrv urls, DBusGMethodInvocation *context);
+void thumbnailer_move (Thumbnailer *object, GStrv from_urls, GStrv to_urls, DBusGMethodInvocation *context);
+void thumbnailer_delete (Thumbnailer *object, GStrv urls, DBusGMethodInvocation *context);
+
+void thumbnailer_do_stop (void);
+void thumbnailer_do_init (DBusGConnection *connection, Manager *manager, GError **error);
+
+#endif

Copied: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.xml (from rev 15936, projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.xml)
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/generic.xml	2008-09-01 13:34:04 UTC (rev 15936)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.xml	2008-09-02 11:29:07 UTC (rev 15940)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/">
+  <interface name="org.freedesktop.thumbnailer">  
+    <method name="Create">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+      <arg type="as" name="uris" direction="in" />
+    </method>
+    <method name="Move">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+      <arg type="as" name="from_uris" direction="in" />
+      <arg type="as" name="to_uris" direction="in" />
+    </method>
+    <method name="Delete">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+      <arg type="as" name="uris" direction="in" />
+    </method>
+  </interface>
+</node>


More information about the maemo-commits mailing list