[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