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

galago-commits at freedesktop.org galago-commits at freedesktop.org
Thu Jun 23 01:22:10 PDT 2005


Author: chipx86
Date: 2005-06-23 01:22:03 -0700 (Thu, 23 Jun 2005)
New Revision: 1979

Modified:
   branches/libgalago/glib-port/ChangeLog
   branches/libgalago/glib-port/libgalago/Makefile.am
   branches/libgalago/glib-port/libgalago/galago-dbus.c
   branches/libgalago/glib-port/libgalago/galago-dbus.h
   branches/libgalago/glib-port/libgalago/galago-marshal.list
   branches/libgalago/glib-port/libgalago/galago-presence.c
   branches/libgalago/glib-port/libgalago/galago-presence.h
Log:
GalagoPresence compiles.


Modified: branches/libgalago/glib-port/ChangeLog
===================================================================
--- branches/libgalago/glib-port/ChangeLog	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/ChangeLog	2005-06-23 08:22:03 UTC (rev 1979)
@@ -1,3 +1,13 @@
+Thu Jun 23 01:20:58 PDT 2005  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/Makefile.am:
+	* libgalago/galago-dbus.c:
+	* libgalago/galago-dbus.h:
+	* libgalago/galago-marshal.list:
+	* libgalago/galago-presence.c:
+	* libgalago/galago-presence.h:
+	  - GalagoPresence compiles.
+
 Thu Jun 23 01:10:34 PDT 2005  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/Makefile.am:

Modified: branches/libgalago/glib-port/libgalago/Makefile.am
===================================================================
--- branches/libgalago/glib-port/libgalago/Makefile.am	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/libgalago/Makefile.am	2005-06-23 08:22:03 UTC (rev 1979)
@@ -1,7 +1,14 @@
 galagoincdir = $(includedir)/libgalago
 
+MARSHAL_PREFIX = galago_marshal
+MARSHAL_FILE = galago-marshal
+
 lib_LTLIBRARIES = libgalago.la
 
+$(libgalago_la_SOURCES): \
+	$(MARSHAL_FILE).h \
+	$(MARSHAL_FILE).c
+
 galagoinc_HEADERS = \
 	galago.h \
 	galago-account.h \
@@ -14,7 +21,6 @@
 	galago-dbus-compat.h \
 	galago-image.h \
 	galago-log.h \
-	galago-marshal.h \
 	galago-object.h \
 	galago-person.h \
 	galago-photo.h \
@@ -23,7 +29,11 @@
 	galago-status.h \
 	galago-value.h
 
+noinst_HEADERS = \
+	$(MARSHAL_FILE).h
+
 libgalago_la_SOURCES = \
+	$(MARSHAL_FILE).c \
 	galago-account.c \
 	galago-avatar.c \
 	galago-core.c \
@@ -32,7 +42,6 @@
 	galago-dbus.c \
 	galago-image.c \
 	galago-log.c \
-	galago-marshal.c \
 	galago-object.c \
 	galago-person.c \
 	galago-photo.c \
@@ -48,9 +57,26 @@
 libgalago_la_LDFLAGS = \
 	-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
 
+$(MARSHAL_FILE).h: $(MARSHAL_FILE).list
+	($(GLIB_GENMARSHAL) --prefix=$(MARSHAL_PREFIX) $(MARSHAL_FILE).list \
+		--header > $(MARSHAL_FILE).tmp && \
+	 mv $(MARSHAL_FILE).tmp $(MARSHAL_FILE).h) \
+	|| (rm -f $(MARSHAL_FILE).tmp && exit 1)
+
+$(MARSHAL_FILE).c: $(MARSHAL_FILE).h
+	($(GLIB_GENMARSHAL) --prefix=$(MARSHAL_PREFIX) $(MARSHAL_FILE).list \
+		--body > $(MARSHAL_FILE).tmp && \
+	 mv $(MARSHAL_FILE).tmp $(MARSHAL_FILE).c) \
+	|| (rm -f $(MARSHAL_FILE).tmp && exit 1)
+
+
 INCLUDES = \
 	-I$(top_srcdir) \
 	$(PACKAGE_CFLAGS)
 
+EXTRA_DIST = $(MARSHAL_FILE).list
+
+DISTCLEANFILES = $(MARSHAL_FILE).c $(MARSHAL_FILE).h
+
 pizza:
 	@echo You wish.

Modified: branches/libgalago/glib-port/libgalago/galago-dbus.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-dbus.c	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/libgalago/galago-dbus.c	2005-06-23 08:22:03 UTC (rev 1979)
@@ -165,8 +165,7 @@
 }
 
 GList *
-galago_dbus_message_iter_get_object_list(DBusMessageIter *iter,
-										 const GalagoObjectClass *klass)
+galago_dbus_message_iter_get_object_list(DBusMessageIter *iter, GType type)
 {
 	GList *list = NULL;
 #if 0 && GALAGO_CHECK_DBUS_VERSION(0, 30)
@@ -196,7 +195,7 @@
 		dbus_message_iter_next(iter);
 
 		list = g_list_append(list,
-			galago_dbus_message_iter_get_object(iter, klass));
+			galago_dbus_message_iter_get_object(iter, type));
 	}
 #endif
 

Modified: branches/libgalago/glib-port/libgalago/galago-dbus.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-dbus.h	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/libgalago/galago-dbus.h	2005-06-23 08:22:03 UTC (rev 1979)
@@ -94,13 +94,13 @@
  *
  * The returned list must be destroyed.
  *
- * @param iter  The D-BUS message iterator.
- * @param klass The object class.
+ * @param iter The D-BUS message iterator.
+ * @param type The GType.
  *
  * @return The list.
  */
-GList *galago_dbus_message_iter_get_object_list(
-	DBusMessageIter *iter, const GalagoObjectClass *klass);
+GList *galago_dbus_message_iter_get_object_list(DBusMessageIter *iter,
+												GType type);
 
 /**
  * Creates a D-BUS message to the specified object.

Modified: branches/libgalago/glib-port/libgalago/galago-marshal.list
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-marshal.list	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/libgalago/galago-marshal.list	2005-06-23 08:22:03 UTC (rev 1979)
@@ -1 +1,2 @@
 VOID:BOOLEAN,ULONG
+VOID:POINTER,STRING

Modified: branches/libgalago/glib-port/libgalago/galago-presence.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-presence.c	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/libgalago/galago-presence.c	2005-06-23 08:22:03 UTC (rev 1979)
@@ -19,12 +19,11 @@
  * Boston, MA  02111-1307, USA.
  */
 #include <libgalago/galago-presence.h>
-#include <libgalago/galago-assert.h>
 #include <libgalago/galago-context.h>
 #include <libgalago/galago-core.h>
 #include <libgalago/galago-dbus-compat.h>
+#include <libgalago/galago-log.h>
 #include <libgalago/galago-marshal.h>
-#include <libgalago/galago-object-utils.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -40,6 +39,15 @@
 	GalagoStatus *active_status;
 };
 
+enum
+{
+	IDLE_CHANGED,
+	STATUS_ADDED,
+	STATUS_REMOVED,
+	STATUS_UPDATED,
+	LAST_SIGNAL
+};
+
 static void _galago_presence_remove_status(GalagoPresence *presence,
 										   GalagoStatus *status);
 
@@ -56,17 +64,82 @@
 /**************************************************************************
  * Object/Class support
  **************************************************************************/
-GALAGO_REGISTER_CLASS(galago_presence, GalagoPresence, NULL,
-					  GALAGO_DBUS_PRESENCE_INTERFACE);
+static void galago_presence_finalize(GObject *object);
+static void galago_presence_dbus_message_append(DBusMessageIter *iter,
+											 const GalagoObject *object);
+static void *galago_presence_dbus_message_get(DBusMessageIter *iter);
 
+static GalagoObjectClass *parent_class = NULL;
+static guint signals[LAST_SIGNAL] = {0};
+
+G_DEFINE_TYPE(GalagoPresence, galago_presence, GALAGO_TYPE_OBJECT);
+
 static void
-galago_presence_object_init(GalagoPresence *presence)
+galago_presence_class_init(GalagoPresenceClass *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_PHOTO_INTERFACE;
+
+	object_class->dbus_message_append = galago_presence_dbus_message_append;
+	object_class->dbus_message_get    = galago_presence_dbus_message_get;
+
+	gobject_class->finalize = galago_presence_finalize;
+
+	signals[IDLE_CHANGED] =
+		g_signal_new("idle-changed",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+					 G_STRUCT_OFFSET(GalagoPresenceClass, idle_changed),
+					 NULL, NULL,
+					 galago_marshal_VOID__BOOLEAN_ULONG,
+					 G_TYPE_NONE, 2,
+					 G_TYPE_BOOLEAN,
+					 G_TYPE_ULONG);
+
+	signals[STATUS_ADDED] =
+		g_signal_new("status-added",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+					 G_STRUCT_OFFSET(GalagoPresenceClass, status_added),
+					 NULL, NULL,
+					 g_cclosure_marshal_VOID__POINTER,
+					 G_TYPE_NONE, 1,
+					 G_TYPE_POINTER);
+
+	signals[STATUS_REMOVED] =
+		g_signal_new("status-removed",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+					 G_STRUCT_OFFSET(GalagoPresenceClass, status_removed),
+					 NULL, NULL,
+					 g_cclosure_marshal_VOID__POINTER,
+					 G_TYPE_NONE, 1,
+					 G_TYPE_POINTER);
+
+	signals[STATUS_UPDATED] =
+		g_signal_new("status-updated",
+					 G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+					 G_STRUCT_OFFSET(GalagoPresenceClass, status_updated),
+					 NULL, NULL,
+					 galago_marshal_VOID__POINTER_STRING,
+					 G_TYPE_NONE, 2,
+					 G_TYPE_POINTER,
+					 G_TYPE_STRING);
+}
+
+static void
+galago_presence_init(GalagoPresence *presence)
+{
 	presence->priv = g_new0(GalagoPresencePrivate, 1);
 }
 
 static void
-galago_presence_object_finalize(GalagoObject *object)
+galago_presence_finalize(GObject *object)
 {
 	GalagoPresence *presence = (GalagoPresence *)object;
 	GalagoAccount *account;
@@ -84,6 +157,8 @@
 	}
 
 	g_free(presence->priv);
+
+	G_OBJECT_CLASS(parent_class)->finalize(object);
 }
 
 static void
@@ -137,32 +212,6 @@
 }
 
 
-static void
-galago_presence_class_init(GalagoObjectClass *klass)
-{
-	klass->finalize            = galago_presence_object_finalize;
-	klass->dbus_message_append = galago_presence_dbus_message_append;
-	klass->dbus_message_get    = galago_presence_dbus_message_get;
-
-	galago_signal_register(klass->signal_context, "idle-changed",
-						   galago_marshal_VOID__BOOLEAN_ULONG, 2,
-						   GALAGO_VALUE_TYPE_BOOLEAN,
-						   GALAGO_VALUE_TYPE_ULONG);
-	galago_signal_register(klass->signal_context, "status-added",
-						   galago_marshal_VOID__POINTER, 1,
-						   GALAGO_VALUE_TYPE_OBJECT);
-	galago_signal_register(klass->signal_context, "status-removed",
-						   galago_marshal_VOID__POINTER, 1,
-						   GALAGO_VALUE_TYPE_OBJECT);
-	galago_signal_register(klass->signal_context, "status-updated",
-						   galago_marshal_VOID__POINTER_STRING, 2,
-						   GALAGO_VALUE_TYPE_OBJECT,
-						   GALAGO_VALUE_TYPE_STRING);
-	galago_signal_register(klass->signal_context, "updated",
-						   galago_marshal_VOID, 0);
-}
-
-
 /**************************************************************************
  * GalagoPresence API
  **************************************************************************/
@@ -181,13 +230,15 @@
 	{
 		const char *obj_prefix;
 
-		galago_context_push(galago_object_get_context(account));
-		presence = galago_object_new(GALAGO_TYPE_PRESENCE);
+		galago_context_push(galago_object_get_context(GALAGO_OBJECT(account)));
+		presence = g_object_new(GALAGO_TYPE_PRESENCE, NULL);
 		galago_context_pop();
 
 		presence->priv->account = account;
 
-		if ((obj_prefix = galago_object_get_dbus_path(account)) != NULL)
+		obj_prefix = galago_object_get_dbus_path(GALAGO_OBJECT(account));
+
+		if (obj_prefix != NULL)
 		{
 			size_t len;
 			char *obj_path;
@@ -197,7 +248,7 @@
 			obj_path = g_new(char, len);
 			snprintf(obj_path, len, "%s/presence", obj_prefix);
 
-			galago_object_set_dbus_path(presence, obj_path);
+			galago_object_set_dbus_path(GALAGO_OBJECT(presence), obj_path);
 
 			g_free(obj_path);
 		}
@@ -240,8 +291,7 @@
 			NULL);
 	}
 
-	galago_signal_emit(presence, "idle-changed", idle, idle_time);
-	galago_signal_emit(presence, "updated");
+	g_signal_emit(presence, signals[IDLE_CHANGED], 0, idle, idle_time);
 }
 
 void
@@ -262,7 +312,7 @@
 		{
 			GalagoStatus *status = (GalagoStatus *)l->data;
 
-			galago_signal_emit(presence, "status-removed", status);
+			g_signal_emit(presence, signals[STATUS_REMOVED], 0, status);
 
 			g_object_unref(status);
 		}
@@ -282,14 +332,12 @@
 		galago_dbus_send_message(presence, "SetStatuses",
 			galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT,
 								  galago_presence_get_statuses(presence),
-								  GALAGO_TYPE_STATUS),
+								  (void *)GALAGO_TYPE_STATUS),
 			NULL);
 	}
 
 	for (l = statuses; l != NULL; l = l->next)
-		galago_signal_emit(presence, "status-added", l->data);
-
-	galago_signal_emit(presence, "updated");
+		g_signal_emit(presence, signals[STATUS_ADDED], 0, l->data);
 }
 
 void
@@ -327,14 +375,15 @@
 		char *obj_path;
 		size_t len;
 
-		len = strlen(galago_object_get_dbus_path(presence)) +
+		len = strlen(galago_object_get_dbus_path(GALAGO_OBJECT(presence))) +
 		      strlen(status_id) + 2;
 
 		obj_path = g_new(char, len);
 		snprintf(obj_path, len, "%s/%s",
-				 galago_object_get_dbus_path(presence), status_id);
+				 galago_object_get_dbus_path(GALAGO_OBJECT(presence)),
+				 status_id);
 
-		galago_object_set_dbus_path(status, obj_path);
+		galago_object_set_dbus_path(GALAGO_OBJECT(status), obj_path);
 
 		g_free(obj_path);
 	}
@@ -359,12 +408,11 @@
 		galago_core_is_feed())
 	{
 		galago_dbus_send_message(presence, "AddStatus",
-			galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &status, GALAGO_TYPE_STATUS),
+			galago_value_new_object(GALAGO_TYPE_STATUS, G_OBJECT(status)),
 			NULL);
 	}
 
-	galago_signal_emit(presence, "status-added", status);
-	galago_signal_emit(presence, "updated");
+	g_signal_emit(presence, signals[STATUS_ADDED], 0, status);
 }
 
 static void
@@ -392,8 +440,7 @@
 			NULL);
 	}
 
-	galago_signal_emit(presence, "status-removed", status);
-	galago_signal_emit(presence, "updated");
+	g_signal_emit(presence, signals[STATUS_REMOVED], 0, status);
 
 	g_object_unref(status);
 }
@@ -570,7 +617,7 @@
 	{
 		GalagoStatus *status = (GalagoStatus *)l->data;
 
-		if (galago_status_get_type(status) == type)
+		if (galago_status_get_primitive(status) == type)
 			return TRUE;
 	}
 
@@ -600,14 +647,14 @@
 	for (l = galago_presence_get_statuses(presence1); l != NULL; l = l->next)
 	{
 		GalagoStatus *status = (GalagoStatus *)l->data;
-		score1 += status_type_scores[galago_status_get_type(status)];
+		score1 += status_type_scores[galago_status_get_primitive(status)];
 	}
 
 	/* Compute the score of the second set of statuses. */
 	for (l = galago_presence_get_statuses(presence2); l != NULL; l = l->next)
 	{
 		GalagoStatus *status = (GalagoStatus *)l->data;
-		score2 += status_type_scores[galago_status_get_type(status)];
+		score2 += status_type_scores[galago_status_get_primitive(status)];
 	}
 
 	if (score1 > score2)

Modified: branches/libgalago/glib-port/libgalago/galago-presence.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-presence.h	2005-06-23 08:14:39 UTC (rev 1978)
+++ branches/libgalago/glib-port/libgalago/galago-presence.h	2005-06-23 08:22:03 UTC (rev 1979)
@@ -55,15 +55,33 @@
 {
 	GalagoObjectClass parent_class;
 
+	/* Signals */
+	void (*idle_changed)(GalagoPresence *presence, gboolean idle,
+						 time_t idle_time);
+	void (*status_added)(GalagoPresence *presence, GalagoStatus *status);
+	void (*status_removed)(GalagoPresence *presence, GalagoStatus *status);
+	void (*status_updated)(GalagoPresence *presence, GalagoStatus *status,
+						   const char *attr_id);
+
 	void (*reserved_1)(void);
 	void (*reserved_2)(void);
 	void (*reserved_3)(void);
 	void (*reserved_4)(void);
 };
 
-#define GALAGO_TYPE_PRESENCE (galago_presence_get_class())
+#define GALAGO_TYPE_PRESENCE (galago_presence_get_type())
+#define GALAGO_PRESENCE(obj) \
+		(G_TYPE_CHECK_INSTANCE_CAST((obj), GALAGO_TYPE_PRESENCE, GalagoPresence))
+#define GALAGO_PRESENCE_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_CAST((klass), GALAGO_TYPE_PRESENCE, GalagoPresenceClass))
+#define GALAGO_IS_PRESENCE(obj) \
+		(G_TYPE_CHECK_INSTANCE_TYPE((obj), GALAGO_TYPE_PRESENCE))
+#define GALAGO_IS_PRESENCE_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_TYPE((klass), GALAGO_TYPE_PRESENCE))
+#define GALAGO_PRESENCE_GET_CLASS(obj) \
+		(G_TYPE_INSTANCE_GET_CLASS((obj), GALAGO_TYPE_PRESENCE, GalagoPresenceClass))
+
 #define GALAGO_DBUS_PRESENCE_INTERFACE "org.freedesktop.Galago.Presence"
-#define GALAGO_IS_PRESENCE(obj) (GALAGO_IS_OBJECT(obj) && galago_object_check_cast((obj), GALAGO_TYPE_PRESENCE))
 
 #ifdef __cplusplus
 extern "C" {
@@ -75,11 +93,11 @@
 /*@{*/
 
 /**
- * Returns the class for a GalagoPresence.
+ * Returns GalagoPresence's GType.
  *
- * @return The GalagoPresence class.
+ * @return The GType.
  */
-GalagoObjectClass *galago_presence_get_class(void);
+GType galago_presence_get_type(void);
 
 /**
  * Creates a new presence.
@@ -109,8 +127,7 @@
  * @param presence The presence.
  * @param statuses The list of statuses.
  */
-void galago_presence_set_statuses(GalagoPresence *presence,
-								  GList *statuses);
+void galago_presence_set_statuses(GalagoPresence *presence, GList *statuses);
 
 /**
  * Adds a single status to a presence.



More information about the galago-commits mailing list