[Galago-commits] r1975 - in branches/libgalago/glib-port: . libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Wed Jun 22 23:19:59 PDT 2005


Author: chipx86
Date: 2005-06-22 23:19:57 -0700 (Wed, 22 Jun 2005)
New Revision: 1975

Modified:
   branches/libgalago/glib-port/ChangeLog
   branches/libgalago/glib-port/libgalago/galago-service.c
   branches/libgalago/glib-port/libgalago/galago-service.h
Log:
Make GalagoService compile. Won't work, though. Not right at least.


Modified: branches/libgalago/glib-port/ChangeLog
===================================================================
--- branches/libgalago/glib-port/ChangeLog	2005-06-23 06:16:24 UTC (rev 1974)
+++ branches/libgalago/glib-port/ChangeLog	2005-06-23 06:19:57 UTC (rev 1975)
@@ -1,3 +1,9 @@
+Wed Jun 22 23:18:51 PDT 2005  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-service.c:
+	* libgalago/galago-service.h:
+	  - Make GalagoService compile. Won't work, though. Not right at least.
+
 Wed Jun 22 23:13:13 PDT 2005  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-value.c:

Modified: branches/libgalago/glib-port/libgalago/galago-service.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-service.c	2005-06-23 06:16:24 UTC (rev 1974)
+++ branches/libgalago/glib-port/libgalago/galago-service.c	2005-06-23 06:19:57 UTC (rev 1975)
@@ -42,6 +42,13 @@
 	GList *accounts;
 };
 
+enum
+{
+	ACCOUNT_ADDED,
+	ACCOUNT_REMOVED,
+	LAST_SIGNAL
+};
+
 static GalagoService *_galago_service_new_common(const char *id,
 												 const char *name,
 												 gboolean native,
@@ -55,12 +62,57 @@
 /**************************************************************************
  * Object/Class support
  **************************************************************************/
-GALAGO_REGISTER_CLASS(galago_service, GalagoService, NULL,
-					  GALAGO_DBUS_SERVICE_INTERFACE);
+static void galago_service_finalize(GObject *gobject);
+static void galago_service_dbus_message_append(DBusMessageIter *iter,
+											   const GalagoObject *object);
+static void *galago_service_dbus_message_get(DBusMessageIter *iter);
+static void galago_service_dbus_push_full(GalagoObject *object);
 
+static GalagoObjectClass *parent_class = NULL;
+static guint signals[LAST_SIGNAL] = {0};
+
+G_DEFINE_TYPE(GalagoService, galago_service, GALAGO_TYPE_OBJECT);
+
 static void
-galago_service_object_init(GalagoService *service)
+galago_service_class_init(GalagoServiceClass *klass)
 {
+	GObjectClass     *gobject_class = G_OBJECT_CLASS(klass);
+	GalagoObjectClass *object_class = GALAGO_OBJECT_CLASS(klass);
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	object_class->dbus_interface = GALAGO_DBUS_SERVICE_INTERFACE;
+
+	gobject_class->finalize = galago_service_finalize;
+
+	object_class->dbus_message_append = galago_service_dbus_message_append;
+	object_class->dbus_message_get    = galago_service_dbus_message_get;
+	object_class->dbus_push_full      = galago_service_dbus_push_full;
+
+	signals[ACCOUNT_ADDED] =
+		g_signal_new("account-added",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+					 G_STRUCT_OFFSET(GalagoServiceClass, account_added),
+					 NULL, NULL,
+					 g_cclosure_marshal_VOID__POINTER,
+					 G_TYPE_NONE, 1,
+					 G_TYPE_POINTER);
+
+	signals[ACCOUNT_REMOVED] =
+		g_signal_new("account-removed",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+					 G_STRUCT_OFFSET(GalagoServiceClass, account_removed),
+					 NULL, NULL,
+					 g_cclosure_marshal_VOID__POINTER,
+					 G_TYPE_NONE, 1,
+					 G_TYPE_POINTER);
+}
+
+static void
+galago_service_init(GalagoService *service)
+{
 	service->priv = g_new0(GalagoServicePrivate, 1);
 
 	service->priv->accounts_table =
@@ -68,7 +120,7 @@
 }
 
 static void
-galago_service_object_finalize(GalagoObject *object)
+galago_service_finalize(GObject *object)
 {
 	GalagoService *service = (GalagoService *)object;
 
@@ -81,7 +133,7 @@
 
 	g_hash_table_destroy(service->priv->accounts_table);
 
-	galago_context_push(galago_object_get_context(service));
+	galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
 	galago_context_remove_service(service);
 	galago_context_pop();
 
@@ -92,6 +144,8 @@
 		g_free(service->priv->name);
 
 	g_free(service->priv);
+
+	G_OBJECT_CLASS(parent_class)->finalize(object);
 }
 
 static void
@@ -102,7 +156,7 @@
 	const char *obj_path, *id, *name;
 	dbus_uint32_t flags;
 
-	obj_path = galago_object_get_dbus_path(service);
+	obj_path = galago_object_get_dbus_path(GALAGO_OBJECT(service));
 	id       = galago_service_get_id(service);
 	name     = galago_service_get_name(service);
 	flags    = galago_service_get_flags(service);
@@ -169,24 +223,7 @@
 	}
 }
 
-static void
-galago_service_class_init(GalagoObjectClass *klass)
-{
-	klass->finalize            = galago_service_object_finalize;
-	klass->dbus_message_append = galago_service_dbus_message_append;
-	klass->dbus_message_get    = galago_service_dbus_message_get;
-	klass->dbus_push_full      = galago_service_dbus_push_full;
 
-	galago_signal_register(klass->signal_context, "account-added",
-						   galago_marshal_VOID__BOXED, 1,
-						   GALAGO_VALUE_TYPE_OBJECT);
-	galago_signal_register(klass->signal_context, "account-removed",
-						   galago_marshal_VOID__BOXED, 1,
-						   GALAGO_VALUE_TYPE_OBJECT);
-	galago_signal_register(klass->signal_context, "updated",
-						   galago_marshal_VOID, 0);
-}
-
 /**************************************************************************
  * GalagoService API
  **************************************************************************/
@@ -288,7 +325,7 @@
 	{
 		const char *obj_prefix;
 
-		service = galago_object_new(GALAGO_TYPE_SERVICE);
+		service = g_object_new(GALAGO_TYPE_SERVICE, NULL);
 
 		service->priv->id     = g_strdup(id);
 		service->priv->name   = g_strdup(name);
@@ -298,7 +335,7 @@
 		if (obj_path != NULL)
 		{
 			/* Assumes an escaped path already */
-			galago_object_set_dbus_path(service, obj_path);
+			galago_object_set_dbus_path(GALAGO_OBJECT(service), obj_path);
 		}
 		else if ((obj_prefix = galago_context_get_obj_path_prefix()) != NULL)
 		{
@@ -313,7 +350,7 @@
 			snprintf(new_obj_path, len, "%s/services/%s", obj_prefix,
 					 escaped_id);
 
-			galago_object_set_dbus_path(service, new_obj_path);
+			galago_object_set_dbus_path(GALAGO_OBJECT(service), new_obj_path);
 
 			g_free(new_obj_path);
 		}
@@ -388,17 +425,16 @@
 		!galago_service_is_native(service) && !galago_is_daemon() &&
 		galago_is_connected())
 	{
-		GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(service);
+		galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
 
-		galago_context_push(galago_object_get_context(service));
-		galago_signal_context_freeze(signal_context);
+		/* TODO: Freeze signals */
 
 		account = galago_dbus_send_message_with_reply(service, "GetAccount",
-			galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_ACCOUNT),
+			galago_value_new_object(GALAGO_TYPE_ACCOUNT, NULL),
 			galago_value_new(GALAGO_VALUE_TYPE_STRING, &username, NULL),
 			NULL);
 
-		galago_signal_context_thaw(signal_context);
+		/* TODO: Thaw signals */
 		galago_context_pop();
 	}
 
@@ -414,19 +450,18 @@
 	if (query && !galago_service_is_native(service) && !galago_is_daemon() &&
 		galago_is_connected())
 	{
-		GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(service);
 		GList *temp;
 
-		galago_context_push(galago_object_get_context(service));
-		galago_signal_context_freeze(signal_context);
+		galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
+		/* TODO: Freeze signals. */
 
 		temp = galago_dbus_send_message_with_reply(service, "GetAccounts",
 			galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT, NULL,
-								  GALAGO_TYPE_ACCOUNT),
+								  (void *)GALAGO_TYPE_ACCOUNT),
 			NULL);
 		g_list_free(temp);
 
-		galago_signal_context_thaw(signal_context);
+		/* TODO: Thaw signals. */
 		galago_context_pop();
 	}
 
@@ -462,8 +497,7 @@
 	if (galago_service_is_native(service))
 		_galago_dbus_service_add_account(service, account);
 
-	galago_signal_emit(service, "account-added", account);
-	galago_signal_emit(service, "updated");
+	g_signal_emit(service, signals[ACCOUNT_ADDED], 0, account);
 }
 
 void
@@ -488,12 +522,11 @@
 	{
 		galago_dbus_send_message(service, "RemoveAccount",
 			galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &account,
-							 GALAGO_TYPE_ACCOUNT),
+							 (void *)GALAGO_TYPE_ACCOUNT),
 			NULL);
 	}
 
-	galago_signal_emit(service, "account-removed", account);
-	galago_signal_emit(service, "updated");
+	g_signal_emit(service, signals[ACCOUNT_REMOVED], 0, account);
 }
 
 const char *
@@ -550,6 +583,6 @@
 		return;
 
 	galago_dbus_send_message(service, "AddAccount",
-		galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &account, GALAGO_TYPE_ACCOUNT),
+		galago_value_new_object(GALAGO_TYPE_ACCOUNT, G_OBJECT(account)),
 		NULL);
 }

Modified: branches/libgalago/glib-port/libgalago/galago-service.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-service.h	2005-06-23 06:16:24 UTC (rev 1974)
+++ branches/libgalago/glib-port/libgalago/galago-service.h	2005-06-23 06:19:57 UTC (rev 1975)
@@ -61,15 +61,29 @@
 {
 	GalagoObjectClass parent_class;
 
+	/* Signals */
+	void (*account_added)(GalagoService *service, GalagoAccount *account);
+	void (*account_removed)(GalagoService *service, GalagoAccount *account);
+
 	void (*reserved_1)(void);
 	void (*reserved_2)(void);
 	void (*reserved_3)(void);
 	void (*reserved_4)(void);
 };
 
-#define GALAGO_TYPE_SERVICE (galago_service_get_class())
+#define GALAGO_TYPE_SERVICE (galago_service_get_type())
+#define GALAGO_SERVICE(obj) \
+		(G_TYPE_CHECK_INSTANCE_CAST((obj), GALAGO_TYPE_SERVICE, GalagoService))
+#define GALAGO_SERVICE_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_CAST((klass), GALAGO_TYPE_SERVICE, GalagoServiceClass))
+#define GALAGO_IS_SERVICE(obj) \
+		(G_TYPE_CHECK_INSTANCE_TYPE((obj), GALAGO_TYPE_SERVICE))
+#define GALAGO_IS_SERVICE_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_TYPE((klass), GALAGO_TYPE_SERVICE))
+#define GALAGO_SERVICE_GET_CLASS(obj) \
+		(G_TYPE_INSTANCE_GET_CLASS((obj), GALAGO_TYPE_SERVICE, GalagoServiceClass))
+
 #define GALAGO_DBUS_SERVICE_INTERFACE "org.freedesktop.Galago.Service"
-#define GALAGO_IS_SERVICE(obj) (GALAGO_IS_OBJECT(obj) && galago_object_check_cast((obj), GALAGO_TYPE_SERVICE))
 
 #ifdef __cplusplus
 extern "C" {
@@ -101,11 +115,11 @@
 /*@{*/
 
 /**
- * Returns the class for a GalagoService.
+ * Returns GalagoService's GType.
  *
- * @return The GalagoService class.
+ * @return The GType.
  */
-GalagoObjectClass *galago_service_get_class(void);
+GType galago_service_get_type(void);
 
 /**
  * Creates a service.



More information about the galago-commits mailing list