[brasero/gnome-2-32] Revert to libunique from GApplication



commit 3029bfa854c8f7c88f986f810735bc9b66b94b15
Author: Luis Medinas <lmedinas gnome org>
Date:   Mon Sep 13 01:45:11 2010 +0100

    Revert to libunique from GApplication
    
    Thanks to Christian Persch <chpe gnome org> for the patch

 configure.in      |    6 +++++
 src/Makefile.am   |    4 ++-
 src/brasero-app.c |   54 ++++++++++++++++++++++++++--------------------------
 src/main.c        |   24 +++++++++++++++++-----
 4 files changed, 54 insertions(+), 34 deletions(-)
---
diff --git a/configure.in b/configure.in
index 9f07a93..d9b7a12 100644
--- a/configure.in
+++ b/configure.in
@@ -147,6 +147,7 @@ GCONF_REQUIRED=2.31.1
 GSTREAMER_REQUIRED=0.10.15
 GSTREAMER_BASE_REQUIRED=0.10.0
 LIBXML2_REQUIRED=2.6.0
+LIBUNIQUE_REQUIRED=1.0.0
 
 dnl ** used by brasero and one plugin
 PKG_CHECK_MODULES(BRASERO_GSTREAMER, 			\
@@ -173,6 +174,11 @@ PKG_CHECK_MODULES(BRASERO_LIBXML, 	\
 AC_SUBST(BRASERO_LIBXML_CFLAGS)
 AC_SUBST(BRASERO_LIBXML_LIBS)
 
+dnl ** used by brasero
+PKG_CHECK_MODULES([BRASERO_LIBUNIQUE],[unique-1.0 >= $LIBUNIQUE_REQUIRED])
+AC_SUBST([BRASERO_LIBUNIQUE_CFLAGS])
+AC_SUBST([BRASERO_LIBUNIQUE_LIBS])
+
 dnl ** used by brasero and both libraries
 PKG_CHECK_MODULES(BRASERO_GTHREAD, 		\
 	gthread-2.0 >= $GTHREAD_REQUIRED)
diff --git a/src/Makefile.am b/src/Makefile.am
index 7f91e6a..a8587b2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -21,6 +21,7 @@ INCLUDES = \
 	$(BRASERO_GTK_CFLAGS)						\
 	$(BRASERO_DBUS_CFLAGS)						\
 	$(BRASERO_LIBXML_CFLAGS)					\
+	$(BRASERO_LIBUNIQUE_CFLAGS) 					\
 	$(BRASERO_SEARCH_CFLAGS)					\
 	$(BRASERO_PL_PARSER_CFLAGS)					\
 	$(BRASERO_SM_CFLAGS)
@@ -167,6 +168,7 @@ brasero_LDADD =						\
 	$(BRASERO_GMODULE_LIBS)		\
 	$(BRASERO_DBUS_LIBS)		\
 	$(BRASERO_LIBXML_LIBS)		\
+	$(BRASERO_LIBUNIQUE_LIBS) 	\
 	$(BRASERO_SEARCH_LIBS)		\
 	$(BRASERO_PL_PARSER_LIBS)	\
 	$(BRASERO_SM_LIBS)
@@ -176,6 +178,6 @@ EXTRA_DIST =			\
 
 CLEANFILES =			\
 	$(RECMARSHALFILES)
-	
+
 
 -include $(top_srcdir)/git.mk
diff --git a/src/brasero-app.c b/src/brasero-app.c
index 3413410..7375afc 100644
--- a/src/brasero-app.c
+++ b/src/brasero-app.c
@@ -67,7 +67,7 @@
 typedef struct _BraseroAppPrivate BraseroAppPrivate;
 struct _BraseroAppPrivate
 {
-	GApplication *gapp;
+	UniqueApp *gapp;
 
 	BraseroSetting *setting;
 
@@ -1999,21 +1999,24 @@ brasero_app_create_mainwin (BraseroApp *app)
 	brasero_app_load_window_state (app);
 }
 
-static void
-brasero_app_prepare_activation (GApplication *gapp,
-                                GVariant *arguments,
-                                GVariant *platform_data,
-                                BraseroApp *app)
+static UniqueResponse
+brasero_app_unique_message (UniqueApp *uapp,
+			    gint command,
+			    UniqueMessageData *message_data,
+			    BraseroApp *app)
 {
 	BraseroAppPrivate *priv;
 
 	priv = BRASERO_APP_PRIVATE (app);
 
-	/* Except if we are supposed to quit show the window */
-	if (priv->mainwin_running) {
-		gtk_widget_show (priv->mainwin);
-		gtk_window_present (GTK_WINDOW (priv->mainwin));
-	}
+	if (command == UNIQUE_ACTIVATE) {
+	       if (priv->mainwin_running) {
+		       gtk_widget_show (priv->mainwin);
+		       gtk_window_present (GTK_WINDOW (priv->mainwin));
+	       }
+ 	}
+
+	return UNIQUE_RESPONSE_OK;
 }
 
 gboolean
@@ -2029,11 +2032,6 @@ brasero_app_run_mainwin (BraseroApp *app)
 	priv->mainwin_running = 1;
 	gtk_widget_show (GTK_WIDGET (priv->mainwin));
 
-	if (priv->gapp)
-		g_signal_connect (priv->gapp,
-				  "prepare-activation",
-				  G_CALLBACK (brasero_app_prepare_activation),
-				  app);
 	gtk_main ();
 	return TRUE;
 }
@@ -2104,16 +2102,17 @@ brasero_app_set_property (GObject *object,
                           const GValue *value,
                           GParamSpec *pspec)
 {
-	BraseroAppPrivate *priv;
-
-	g_return_if_fail (BRASERO_IS_APP (object));
-
-	priv = BRASERO_APP_PRIVATE (object);
+	BraseroApp *app = BRASERO_APP (object);
+	BraseroAppPrivate *priv = BRASERO_APP_PRIVATE (object);
 
 	switch (prop_id)
 	{
 	case PROP_GAPP:
 		priv->gapp = g_value_dup_object (value);
+		g_signal_connect (priv->gapp,
+				  "message-received",
+				  G_CALLBACK (brasero_app_unique_message),
+				  app);
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -2157,15 +2156,16 @@ brasero_app_class_init (BraseroAppClass *klass)
 
 	g_object_class_install_property (object_class,
 	                                 PROP_GAPP,
-	                                 g_param_spec_object("gapp",
-	                                                     "GApplication",
-	                                                     "The GApplication object",
-	                                                     G_TYPE_APPLICATION,
-	                                                     G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+					 g_param_spec_object("gapp",
+	                                 "UniqueApplication",
+					 "The UniqueApp object",
+					 UNIQUE_TYPE_APP,
+					 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
 }
 
 BraseroApp *
-brasero_app_new (GApplication *gapp)
+brasero_app_new (UniqueApp *gapp)
 {
 	return g_object_new (BRASERO_TYPE_APP,
 	                     "gapp", gapp,
diff --git a/src/main.c b/src/main.c
index 6ae4f50..82be5d1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,6 +39,7 @@
 
 #include <gst/gst.h>
 
+#include <unique/unique.h>
 
 #include "eggsmclient.h"
 
@@ -63,7 +64,7 @@ brasero_app_get_default (void)
 int
 main (int argc, char **argv)
 {
-	GApplication *gapp = NULL;
+	UniqueApp *uapp = NULL;
 	GOptionContext *context;
 
 #ifdef ENABLE_NLS
@@ -101,16 +102,27 @@ main (int argc, char **argv)
 	g_option_context_free (context);
 
 	if (cmd_line_options.not_unique == FALSE) {
-		/* Create GApplication and check if there is a process running already */
-		gapp = g_application_new ("org.gnome.Brasero", argc, argv);
-		if (g_application_is_remote (gapp))
-			return 0;
+		/* Create UniqueApp and check if there is a process running already */
+		uapp = unique_app_new ("org.gnome.Brasero", NULL);
+		if (unique_app_is_running (uapp))
+		{
+			UniqueResponse response;
+
+			response = unique_app_send_message (uapp, UNIQUE_ACTIVATE, NULL);
+			g_object_unref (uapp);
+			uapp = NULL;
+
+			/* FIXME: we should tell the user why it did not work. Or is it
+			* handled by libunique? */
+			return (response == UNIQUE_RESPONSE_OK);
+		}
 	}
 
 	brasero_burn_library_start (&argc, &argv);
 	brasero_enable_multi_DND ();
 
-	current_app = brasero_app_new (gapp);
+	current_app = brasero_app_new (uapp);
+	g_object_unref (uapp);
 	if (current_app == NULL)
 		return 1;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]