[Galago-commits] r2675 - in trunk/libgalago: . libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Wed Apr 5 02:11:31 PDT 2006


Author: chipx86
Date: 2006-04-05 02:11:28 -0700 (Wed, 05 Apr 2006)
New Revision: 2675

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/libgalago/galago-core.c
   trunk/libgalago/libgalago/galago-core.h
Log:
Expose the GalagoCore object. Though Python and C users don't really need this, the Galago# bindings generator wants to see it.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2006-04-05 08:27:08 UTC (rev 2674)
+++ trunk/libgalago/ChangeLog	2006-04-05 09:11:28 UTC (rev 2675)
@@ -1,3 +1,10 @@
+Wed Apr 05 02:10:42 PDT 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-core.c:
+	* libgalago/galago-core.h:
+	  - Expose the GalagoCore object. Though Python and C users don't really
+	    need this, the Galago# bindings generator wants to see it.
+
 Tue Apr 04 23:04:52 PDT 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-core.c:

Modified: trunk/libgalago/libgalago/galago-core.c
===================================================================
--- trunk/libgalago/libgalago/galago-core.c	2006-04-05 08:27:08 UTC (rev 2674)
+++ trunk/libgalago/libgalago/galago-core.c	2006-04-05 09:11:28 UTC (rev 2675)
@@ -34,10 +34,8 @@
 # include <signal.h>
 #endif
 
-typedef struct _GalagoCore
+struct _GalagoCorePrivate
 {
-	GalagoObject parent_object;
-
 	/*
 	 * We don't want to risk a caller reffing the core, so we keep a
 	 * separate init ref count here.
@@ -64,25 +62,8 @@
 	gboolean registering_connection;
 
 	guint block_signals;
+};
 
-} GalagoCore;
-
-typedef struct
-{
-	GalagoObjectClass parent_class;
-
-	/* Signals */
-	void (*registered)(GalagoCore *core);
-	void (*unregistered)(GalagoCore *core);
-	void (*service_added)(GalagoCore *core, GalagoService *service);
-	void (*service_removed)(GalagoCore *core, GalagoService *service);
-	void (*person_added)(GalagoCore *core, GalagoPerson *person);
-	void (*person_removed)(GalagoCore *core, GalagoPerson *person);
-	GalagoAccount *(*calc_priority_account)(GalagoCore *core,
-											GalagoPerson *person);
-
-} GalagoCoreClass;
-
 enum
 {
 	REGISTERED,
@@ -240,39 +221,36 @@
 static void
 galago_core_init(GalagoCore *core)
 {
-	core->init_ref_count = 0;
-	core->app_name = NULL;
-	core->conn_obj_path = NULL;
-	core->uid = NULL;
-	core->dbus_conn = NULL;
-	core->flags = GALAGO_INIT_CLIENT;
-	core->daemon = FALSE;
-	core->registered = FALSE;
-	core->daemon_active = FALSE;
-	core->exit_with_daemon = FALSE;
-	core->registering_connection = FALSE;
-	core->block_signals = 0;
+	core->priv = g_new0(GalagoCorePrivate, 1);
 }
 
 static void
 galago_core_destroy(GalagoObject *object)
 {
-	GalagoContext *context;
+	GalagoCore *core = (GalagoCore *)object;
 
-	_galago_core_disconnect();
+	if (core->priv != NULL)
+	{
+		GalagoContext *context;
 
-	/*
-	 * Prevent this object from being removed from the soon-to-be
-	 * destroyed context after this function ends.
-	 */
-	galago_object_set_dbus_path(GALAGO_OBJECT(object), NULL);
+		_galago_core_disconnect();
 
-	context = galago_context_get();
-	galago_context_pop();
-	g_object_unref(context);
+		/*
+		 * Prevent this object from being removed from the soon-to-be
+		 * destroyed context after this function ends.
+		 */
+		galago_object_set_dbus_path(GALAGO_OBJECT(object), NULL);
 
-	g_free(_core->app_name);
+		context = galago_context_get();
+		galago_context_pop();
+		g_object_unref(context);
 
+		g_free(core->priv->app_name);
+
+		g_free(core->priv);
+		core->priv = NULL;
+	}
+
 	G_LOCK(_core_lock);
 	_core = NULL;
 	G_UNLOCK(_core_lock);
@@ -331,13 +309,13 @@
 			_galago_dbus_unregister_connection_finish();
 		}
 
-		if (!(_core->flags & GALAGO_INIT_NO_ACTIVATION))
+		if (!(_core->priv->flags & GALAGO_INIT_NO_ACTIVATION))
 		{
 			DBusError error;
 
 			dbus_error_init(&error);
 
-			if (!dbus_bus_start_service_by_name(_core->dbus_conn,
+			if (!dbus_bus_start_service_by_name(_core->priv->dbus_conn,
 												GALAGO_DBUS_SERVICE,
 												0, NULL, &error))
 			{
@@ -710,9 +688,9 @@
 
 	dbus_error_init(&error);
 
-	_core->dbus_conn = dbus_bus_get(DBUS_BUS_SESSION, &error);
+	_core->priv->dbus_conn = dbus_bus_get(DBUS_BUS_SESSION, &error);
 
-	if (_core->dbus_conn == NULL)
+	if (_core->priv->dbus_conn == NULL)
 	{
 		g_error("Unable to connect to session bus: %s", error.message);
 		dbus_error_free(&error);
@@ -720,19 +698,19 @@
 		return FALSE;
 	}
 
-	dbus_connection_setup_with_g_main(_core->dbus_conn, NULL);
-	dbus_connection_set_exit_on_disconnect(_core->dbus_conn, FALSE);
+	dbus_connection_setup_with_g_main(_core->priv->dbus_conn, NULL);
+	dbus_connection_set_exit_on_disconnect(_core->priv->dbus_conn, FALSE);
 
-	if (_core->daemon)
+	if (_core->priv->daemon)
 	{
 		dbus_error_free(&error);
 
 		return TRUE;
 	}
 
-	if (!(_core->flags & GALAGO_INIT_NO_ACTIVATION))
+	if (!(_core->priv->flags & GALAGO_INIT_NO_ACTIVATION))
 	{
-		if (!dbus_bus_start_service_by_name(_core->dbus_conn,
+		if (!dbus_bus_start_service_by_name(_core->priv->dbus_conn,
 											GALAGO_DBUS_SERVICE,
 											0, NULL, &error))
 		{
@@ -742,7 +720,7 @@
 		}
 	}
 
-	if (!dbus_connection_add_filter(_core->dbus_conn,
+	if (!dbus_connection_add_filter(_core->priv->dbus_conn,
 									filter_func, NULL, NULL))
 	{
 		g_error("Unable to create core D-BUS handler");
@@ -751,7 +729,7 @@
 		return FALSE;
 	}
 
-	dbus_bus_add_match(_core->dbus_conn,
+	dbus_bus_add_match(_core->priv->dbus_conn,
 					   "type='signal',"
 					   "interface='" DBUS_INTERFACE_DBUS "',"
 					   "sender='" DBUS_SERVICE_DBUS "'",
@@ -768,7 +746,7 @@
 
 	dbus_error_free(&error);
 
-	_core->filters_added = TRUE;
+	_core->priv->filters_added = TRUE;
 
 	_galago_dbus_register_connection();
 
@@ -780,24 +758,24 @@
 {
 	gboolean unregistered_emitted = FALSE;
 
-	if (_core->dbus_conn != NULL)
+	if (_core->priv->dbus_conn != NULL)
 	{
-		if (!_core->daemon && galago_is_registered())
+		if (!_core->priv->daemon && galago_is_registered())
 		{
 			_galago_dbus_unregister_connection();
 
 			unregistered_emitted = TRUE;
 		}
 
-		if (_core->dbus_conn != NULL)
+		if (_core->priv->dbus_conn != NULL)
 		{
-			if (_core->filters_added)
+			if (_core->priv->filters_added)
 			{
-				dbus_connection_remove_filter(_core->dbus_conn,
+				dbus_connection_remove_filter(_core->priv->dbus_conn,
 											  filter_func, NULL);
 			}
 
-			dbus_connection_dispatch(_core->dbus_conn);
+			dbus_connection_dispatch(_core->priv->dbus_conn);
 
 			/*
 			 * NOTE: There seems to be a big problem when uninitting and
@@ -810,15 +788,15 @@
 			 *       See bug #36.
 			 */
 #if 0
-			dbus_connection_close(_core->dbus_conn);
-			dbus_connection_unref(_core->dbus_conn);
+			dbus_connection_close(_core->priv->dbus_conn);
+			dbus_connection_unref(_core->priv->dbus_conn);
 #endif
-			_core->dbus_conn = NULL;
+			_core->priv->dbus_conn = NULL;
 		}
 	}
 
-	_core->filters_added = FALSE;
-	_core->registered    = FALSE;
+	_core->priv->filters_added = FALSE;
+	_core->priv->registered    = FALSE;
 
 	if (!unregistered_emitted)
 		g_signal_emit(_core, signals[UNREGISTERED], 0);
@@ -878,7 +856,7 @@
 
 	if (_core != NULL)
 	{
-		_core->init_ref_count++;
+		_core->priv->init_ref_count++;
 
 		return TRUE;
 	}
@@ -892,15 +870,15 @@
 
 	G_LOCK(_core_lock);
 	_core = g_object_new(GALAGO_TYPE_CORE, NULL);
-	_core->init_ref_count = 1;
+	_core->priv->init_ref_count = 1;
 	G_UNLOCK(_core_lock);
 
 	galago_object_set_dbus_path(GALAGO_OBJECT(_core), GALAGO_DBUS_CORE_OBJECT);
-	_core->app_name = g_strdup(name);
-	_core->flags = flags;
+	_core->priv->app_name = g_strdup(name);
+	_core->priv->flags = flags;
 
 	if (!strcmp(name, GALAGO_DAEMON_ID))
-		_core->daemon = TRUE;
+		_core->priv->daemon = TRUE;
 
 	if (!_galago_core_connect())
 		_galago_core_disconnect();
@@ -916,9 +894,9 @@
 	if (!galago_is_initted())
 		return;
 
-	_core->init_ref_count--;
+	_core->priv->init_ref_count--;
 
-	if (_core->init_ref_count == 0)
+	if (_core->priv->init_ref_count == 0)
 		galago_object_destroy(GALAGO_OBJECT(_core));
 }
 
@@ -931,28 +909,28 @@
 gboolean
 galago_is_connected(void)
 {
-	return (galago_is_initted() && _core->dbus_conn != NULL &&
-			(_core->registering_connection || _core->uid != NULL ||
+	return (galago_is_initted() && _core->priv->dbus_conn != NULL &&
+			(_core->priv->registering_connection || _core->priv->uid != NULL ||
 			 galago_is_daemon()) &&
-			dbus_connection_get_is_connected(_core->dbus_conn));
+			dbus_connection_get_is_connected(_core->priv->dbus_conn));
 }
 
 gboolean
 galago_is_registered(void)
 {
-	return _core->registered;
+	return _core->priv->registered;
 }
 
 gboolean
 galago_is_daemon_active(void)
 {
-	return (galago_is_daemon() || _core->daemon_active);
+	return (galago_is_daemon() || _core->priv->daemon_active);
 }
 
 gboolean
 galago_is_daemon(void)
 {
-	return (_core->daemon);
+	return (_core->priv->daemon);
 }
 
 DBusConnection *
@@ -960,7 +938,7 @@
 {
 	g_return_val_if_fail(galago_is_initted(), NULL);
 
-	return _core->dbus_conn;
+	return _core->priv->dbus_conn;
 }
 
 const char *
@@ -969,7 +947,7 @@
 	g_return_val_if_fail(galago_is_initted(),   NULL);
 	g_return_val_if_fail(galago_is_connected(), NULL);
 
-	return _core->uid;
+	return _core->priv->uid;
 }
 
 const char *
@@ -978,7 +956,7 @@
 	g_return_val_if_fail(galago_is_initted(),   NULL);
 	g_return_val_if_fail(galago_is_connected(), NULL);
 
-	return _core->conn_obj_path;
+	return _core->priv->conn_obj_path;
 }
 
 gboolean
@@ -987,7 +965,7 @@
 	g_return_val_if_fail(galago_is_initted(),   FALSE);
 	g_return_val_if_fail(galago_is_connected(), FALSE);
 
-	return (_core->flags & GALAGO_INIT_FEED);
+	return (_core->priv->flags & GALAGO_INIT_FEED);
 }
 
 #define ADD_SIGNAL_MATCH(iface) \
@@ -1023,7 +1001,7 @@
 
 	g_return_if_fail(galago_is_initted());
 
-	if (_core->watch_all == watch_all)
+	if (_core->priv->watch_all == watch_all)
 		return;
 
 	if (!galago_is_connected())
@@ -1031,7 +1009,7 @@
 
 	dbus_conn = galago_get_dbus_conn();
 
-	_core->watch_all = watch_all;
+	_core->priv->watch_all = watch_all;
 
 	dbus_error_init(&error);
 
@@ -1065,7 +1043,7 @@
 	g_return_val_if_fail(galago_is_initted(),   FALSE);
 	g_return_val_if_fail(galago_is_connected(), FALSE);
 
-	return _core->watch_all;
+	return _core->priv->watch_all;
 }
 
 void
@@ -1073,7 +1051,7 @@
 {
 	g_return_if_fail(galago_is_initted());
 
-	_core->exit_with_daemon = exit_with_daemon;
+	_core->priv->exit_with_daemon = exit_with_daemon;
 }
 
 gboolean
@@ -1081,7 +1059,7 @@
 {
 	g_return_val_if_fail(galago_is_initted(), FALSE);
 
-	return _core->exit_with_daemon;
+	return _core->priv->exit_with_daemon;
 }
 
 GalagoService *
@@ -1254,17 +1232,17 @@
 	return_list = g_list_append(return_list,
 		galago_value_new(GALAGO_VALUE_TYPE_STRING, NULL, NULL));
 
-	_core->registering_connection = TRUE;
+	_core->priv->registering_connection = TRUE;
 
 	is_feed = galago_is_feed();
 
 	list = galago_dbus_send_message_with_reply_list(
 		GALAGO_OBJECT(_core), "Register", return_list,
-		galago_value_new(GALAGO_VALUE_TYPE_STRING,  &_core->app_name, NULL),
+		galago_value_new(GALAGO_VALUE_TYPE_STRING,  &_core->priv->app_name, NULL),
 		galago_value_new(GALAGO_VALUE_TYPE_BOOLEAN, &is_feed,         NULL),
 		NULL);
 
-	_core->registering_connection = FALSE;
+	_core->priv->registering_connection = FALSE;
 
 	if (list == NULL)
 	{
@@ -1274,15 +1252,15 @@
 	}
 
 	/* TODO: Do safety checks. */
-	_core->uid           = g_strdup((char *)list->data);
-	_core->conn_obj_path = g_strdup((char *)list->next->data);
-	galago_context_set_obj_path_prefix(_core->conn_obj_path);
+	_core->priv->uid           = g_strdup((char *)list->data);
+	_core->priv->conn_obj_path = g_strdup((char *)list->next->data);
+	galago_context_set_obj_path_prefix(_core->priv->conn_obj_path);
 
 	g_list_free(list);
 
-	_core->daemon_active = TRUE;
+	_core->priv->daemon_active = TRUE;
 	galago_set_watch_all(TRUE);
-	_core->registered = TRUE;
+	_core->priv->registered = TRUE;
 
 	g_signal_emit(_core, signals[REGISTERED], 0);
 
@@ -1301,7 +1279,7 @@
 		galago_value_new(GALAGO_VALUE_TYPE_STRING, &obj_path, NULL),
 		NULL);
 
-	dbus_connection_flush(_core->dbus_conn); /* Keep this here! */
+	dbus_connection_flush(_core->priv->dbus_conn); /* Keep this here! */
 
 	_galago_dbus_unregister_connection_finish();
 }
@@ -1312,13 +1290,13 @@
 	galago_context_clear_objects(GALAGO_REMOTE);
 	galago_set_watch_all(FALSE);
 
-	g_free(_core->uid);
-	g_free(_core->conn_obj_path);
+	g_free(_core->priv->uid);
+	g_free(_core->priv->conn_obj_path);
 
-	_core->uid = NULL;
-	_core->conn_obj_path = NULL;
-	_core->daemon_active = FALSE;
-	_core->registered = FALSE;
+	_core->priv->uid = NULL;
+	_core->priv->conn_obj_path = NULL;
+	_core->priv->daemon_active = FALSE;
+	_core->priv->registered = FALSE;
 
 	g_signal_emit(_core, signals[UNREGISTERED], 0);
 }

Modified: trunk/libgalago/libgalago/galago-core.h
===================================================================
--- trunk/libgalago/libgalago/galago-core.h	2006-04-05 08:27:08 UTC (rev 2674)
+++ trunk/libgalago/libgalago/galago-core.h	2006-04-05 09:11:28 UTC (rev 2675)
@@ -39,6 +39,33 @@
 /** @name Core API                                                      */
 /**************************************************************************/
 
+#define GALAGO_TYPE_CORE (galago_core_get_type())
+
+/** Cast @c obj to a GalagoCore. */
+#define GALAGO_CORE(obj) \
+		(G_TYPE_CHECK_INSTANCE_CAST((obj), GALAGO_TYPE_CORE, \
+									GalagoCore))
+
+/** Cast @c klass to a GalagoCore. */
+#define GALAGO_CORE_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_CAST((klass), GALAGO_TYPE_CORE, \
+								 GalagoCoreClass))
+
+/** Check if @c obj is a GalagoCore. */
+#define GALAGO_IS_CORE(obj) \
+		(G_TYPE_CHECK_INSTANCE_TYPE((obj), GALAGO_TYPE_CORE))
+
+/** Check if @c klass is a GalagoCoreClass. */
+#define GALAGO_IS_CORE_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_TYPE((klass), GALAGO_TYPE_CORE))
+
+/** Get the class for the GalagoCore @c obj. */
+#define GALAGO_CORE_GET_CLASS(obj) \
+		(G_TYPE_INSTANCE_GET_CLASS((obj), GALAGO_TYPE_CORE, \
+								   GalagoCoreClass))
+
+typedef struct _GalagoCorePrivate GalagoCorePrivate;
+
 /**
  * Initialization flags
  */
@@ -58,7 +85,38 @@
 
 } GalagoInitFlags;
 
+typedef struct _GalagoCore
+{
+	GalagoObject parent_object;
+
+	GalagoCorePrivate *priv;
+
+} GalagoCore;
+
+typedef struct
+{
+	GalagoObjectClass parent_class;
+
+	/* Signals */
+	void (*registered)(GalagoCore *core);
+	void (*unregistered)(GalagoCore *core);
+	void (*service_added)(GalagoCore *core, GalagoService *service);
+	void (*service_removed)(GalagoCore *core, GalagoService *service);
+	void (*person_added)(GalagoCore *core, GalagoPerson *person);
+	void (*person_removed)(GalagoCore *core, GalagoPerson *person);
+	GalagoAccount *(*calc_priority_account)(GalagoCore *core,
+											GalagoPerson *person);
+
+} GalagoCoreClass;
+
 /**
+ * Returns GalagoCore's GType.
+ *
+ * @return The GType.
+ */
+GType galago_core_get_type(void);
+
+/**
  * Initializes Galago.
  *
  * @param name  The ID name used for this connection. It's often the



More information about the galago-commits mailing list