[Xfce4-commits] <xfce4-panel:devel> * Fix more DBus issues.

Nick Schermer nick at xfce.org
Tue Aug 11 20:22:51 CEST 2009


Updating branch refs/heads/devel
         to 6e6dd036240a2aab463423e3b26cd818a7f7c788 (commit)
       from 9177fcda2d222cbc2130de5129d21ddb7bad0de1 (commit)

commit 6e6dd036240a2aab463423e3b26cd818a7f7c788
Author: Nick Schermer <nick at xfce.org>
Date:   Sat Aug 9 22:01:01 2008 +0200

    * Fix more DBus issues.

 panel/main.c                          |    8 ++--
 panel/panel-dbus-service.c            |   69 +++++++++++++++------------------
 panel/panel-plugin-external.c         |    9 +++-
 plugins/systray/systray.desktop.in.in |    2 +-
 wrapper/main.c                        |   41 ++++++++++++++-----
 wrapper/wrapper-plug.c                |   18 ++++----
 6 files changed, 82 insertions(+), 65 deletions(-)

diff --git a/panel/main.c b/panel/main.c
index 647e616..6ebe009 100644
--- a/panel/main.c
+++ b/panel/main.c
@@ -193,20 +193,20 @@ main (gint argc, gchar **argv)
 
       goto dbus_return;
     }
+  
+  /* create dbus service */
+  dbus_service = panel_dbus_service_get ();
 
   /* create a new application */
   application = panel_application_get ();
 
-  /* create dbus service */
-  dbus_service = panel_dbus_service_get ();
-
   /* setup signal handlers to properly quit the main loop */
   for (i = 0; i < G_N_ELEMENTS (signums); i++)
     signal (signums[i], signal_handler);
 
   /* enter the main loop */
   gtk_main ();
-
+  
   /* release dbus service */
   g_object_unref (G_OBJECT (dbus_service));
 
diff --git a/panel/panel-dbus-service.c b/panel/panel-dbus-service.c
index b1717ca..8d9c847 100644
--- a/panel/panel-dbus-service.c
+++ b/panel/panel-dbus-service.c
@@ -91,7 +91,7 @@ panel_dbus_service_class_init (PanelDBusServiceClass *klass)
   /**
    * Emited when a plugin property changes
    **/
-  dbus_service_signals[PROPERTY_CHANGED] = 
+  dbus_service_signals[PROPERTY_CHANGED] =
     g_signal_new (I_("property-changed"),
                   G_TYPE_FROM_CLASS (gobject_class),
                   G_SIGNAL_RUN_LAST,
@@ -107,24 +107,23 @@ panel_dbus_service_class_init (PanelDBusServiceClass *klass)
 }
 
 
-
+/* TODO wh can do better with error handling below */
 static void
 panel_dbus_service_init (PanelDBusService *service)
 {
   GError *error = NULL;
-  gint    result;
 
   /* try to connect to the session bus */
   service->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
 
   if (G_LIKELY (service->connection != NULL))
     {
+      /* request the org.xfce.Panel name */
+      dbus_bus_request_name (dbus_g_connection_get_connection (service->connection),
+                             PANEL_DBUS_SERVICE_INTERFACE, 0, NULL);
+
       /* register the /org/xfce/Panel object */
       dbus_g_connection_register_g_object (service->connection, PANEL_DBUS_SERVICE_PATH, G_OBJECT (service));
-
-      /* request the org.xfce.Panel name */
-      result = dbus_bus_request_name (dbus_g_connection_get_connection (service->connection),
-                                      PANEL_DBUS_SERVICE_INTERFACE, 0, NULL);
     }
   else
     {
@@ -264,11 +263,11 @@ static gboolean
 panel_dbus_service_get_property (PanelDBusService *service,
                                  const gchar      *plugin_id,
                                  const gchar      *property,
-                                 const GValue     *value,
+                                 GValue           *value,
                                  GError           *error)
 {
   g_message ("Plugin '%s' requested property '%s'", plugin_id, property);
-  
+
   return TRUE;
 }
 
@@ -278,41 +277,35 @@ static gboolean
 panel_dbus_service_set_property (PanelDBusService *service,
                                  const gchar      *plugin_id,
                                  const gchar      *property,
-                                 GValue           *value,
+                                 const GValue     *value,
                                  GError           *error)
 {
   PanelModuleFactory      *factory;
   XfcePanelPluginProvider *provider;
-  
+
   panel_return_val_if_fail (PANEL_IS_DBUS_SERVICE (service), FALSE);
   panel_return_val_if_fail (plugin_id != NULL, FALSE);
   panel_return_val_if_fail (property != NULL, FALSE);
-  
-  if (strcmp (plugin_id, "XfcePanel") == 0)
-    {
-      g_message ("Panel message: %s", property);
-    }
-  else
+  panel_return_val_if_fail (value && G_TYPE_CHECK_VALUE (value), FALSE);
+
+  /* get the module factory */
+  factory = panel_module_factory_get ();
+
+  /* get the plugin */
+  provider = panel_module_factory_get_plugin (factory, plugin_id);
+  if (G_LIKELY (provider))
     {
-      /* get the module factory */
-      factory = panel_module_factory_get ();
-      
-      /* get the plugin */
-      provider = panel_module_factory_get_plugin (factory, plugin_id);
-      if (G_LIKELY (provider))
-        {
-          if (strcmp ("Expand", property) == 0)
-            g_signal_emit_by_name (G_OBJECT (provider), "expand-changed", g_value_get_boolean (value));
-          else if (strcmp ("MoveItem", property) == 0)
-            g_signal_emit_by_name (G_OBJECT (provider), "move-item", 0);
-          else if (strcmp ("Remove", property) == 0)
-            gtk_widget_destroy (GTK_WIDGET (provider));
-        }
-      
-      /* release the factory */
-      g_object_unref (G_OBJECT (factory));
+      if (strcmp ("Expand", property) == 0)
+        g_signal_emit_by_name (G_OBJECT (provider), "expand-changed", g_value_get_boolean (value));
+      else if (strcmp ("MoveItem", property) == 0)
+        g_signal_emit_by_name (G_OBJECT (provider), "move-item", 0);
+      else if (strcmp ("Remove", property) == 0)
+        gtk_widget_destroy (GTK_WIDGET (provider));
     }
-  
+
+  /* release the factory */
+  g_object_unref (G_OBJECT (factory));
+
   return TRUE;
 }
 
@@ -344,11 +337,11 @@ panel_dbus_service_set_plugin_property (const gchar  *plugin_id,
                                         const GValue *value)
 {
   PanelDBusService *service;
-  
+
   panel_return_if_fail (plugin_id && *plugin_id != '\0');
   panel_return_if_fail (property && *property != '\0');
   panel_return_if_fail (value && G_TYPE_CHECK_VALUE (value));
-  
+
   /* get the dbus service */
   service = panel_dbus_service_get ();
 
@@ -359,7 +352,7 @@ panel_dbus_service_set_plugin_property (const gchar  *plugin_id,
   /* release */
   g_object_unref (G_OBJECT (service));
 }
-                                        
+
 
 
 /* include the dbus glue generated by dbus-binding-tool */
diff --git a/panel/panel-plugin-external.c b/panel/panel-plugin-external.c
index 5dd50b8..8b41b0f 100644
--- a/panel/panel-plugin-external.c
+++ b/panel/panel-plugin-external.c
@@ -252,9 +252,14 @@ static void
 panel_plugin_external_unrealize (GtkWidget *widget)
 {
   //PanelPluginExternal *external = PANEL_PLUGIN_EXTERNAL (widget);
+  //GValue               value = { 0, };
 
-  /* send message to quit the wrapper */
-  /* TODO quit */
+  /* create dummy value */
+  //g_value_init (&value, G_TYPE_BOOLEAN);
+  //g_value_set_boolean (&value, FALSE);
+  
+  /* send */
+  //panel_dbus_service_set_plugin_property (external->id, 
 
   return (*GTK_WIDGET_CLASS (panel_plugin_external_parent_class)->unrealize) (widget);
 }
diff --git a/plugins/systray/systray.desktop.in.in b/plugins/systray/systray.desktop.in.in
index e4cdc7d..32b7dc4 100644
--- a/plugins/systray/systray.desktop.in.in
+++ b/plugins/systray/systray.desktop.in.in
@@ -6,4 +6,4 @@ _Comment=Area where notification icons appear
 Icon=applications-system
 X-XFCE-Module=systray
 X-XFCE-Module-Path=@libdir@/xfce4/panel-plugins
-X-XFCE-External=FALSE
+X-XFCE-External=TRUE
diff --git a/wrapper/main.c b/wrapper/main.c
index c16bb67..24391e6 100644
--- a/wrapper/main.c
+++ b/wrapper/main.c
@@ -118,7 +118,8 @@ dbus_proxy_provider_expand_changed (XfcePanelPluginProvider *provider,
                                     gboolean                 expand,
                                     DBusGProxy              *dbus_proxy)
 {
-  GValue value = { 0, };
+  GValue  value = { 0, };
+  GError *error = NULL;
 
   panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
 
@@ -127,9 +128,12 @@ dbus_proxy_provider_expand_changed (XfcePanelPluginProvider *provider,
   g_value_set_boolean (&value, expand);
 
   /* call */
-  wrapper_dbus_client_set_property (dbus_proxy,
-                                    xfce_panel_plugin_provider_get_id (provider),
-                                    "Expand", &value, NULL);
+  if (!wrapper_dbus_client_set_property (dbus_proxy, xfce_panel_plugin_provider_get_id (provider),
+                                         "Expand", &value, &error))
+    {
+      g_critical ("DBus error: %s", error->message);
+      g_error_free (error);
+    }
 
   /* unset */
   g_value_unset (&value);
@@ -141,12 +145,17 @@ static void
 dbus_proxy_provider_move_item (XfcePanelPluginProvider *provider,
                                DBusGProxy              *dbus_proxy)
 {
+  GError *error = NULL;
+  
   panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
 
   /* call */
-  wrapper_dbus_client_set_property (dbus_proxy,
-                                    xfce_panel_plugin_provider_get_id (provider),
-                                    "MoveItem", NULL, NULL);
+  if (!wrapper_dbus_client_set_property (dbus_proxy, xfce_panel_plugin_provider_get_id (provider),
+                                         "MoveItem", NULL, NULL))
+    {
+      g_critical ("DBus error: %s", error->message);
+      g_error_free (error);
+    }
 }
 
 
@@ -155,7 +164,8 @@ static void
 dbus_proxy_provider_add_new_items (XfcePanelPluginProvider *provider,
                                    DBusGProxy              *dbus_proxy)
 {
-  gchar *name;
+  gchar  *name;
+  GError *error = NULL;
 
   panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
 
@@ -163,7 +173,11 @@ dbus_proxy_provider_add_new_items (XfcePanelPluginProvider *provider,
   name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (provider)));
 
   /* call */
-  wrapper_dbus_client_display_items_dialog (dbus_proxy, name, NULL);
+  if (!wrapper_dbus_client_display_items_dialog (dbus_proxy, name, NULL))
+    {
+      g_critical ("DBus error: %s", error->message);
+      g_error_free (error);
+    }
 
   /* cleanup */
   g_free (name);
@@ -175,7 +189,8 @@ static void
 dbus_proxy_provider_panel_preferences (XfcePanelPluginProvider *provider,
                                        DBusGProxy              *dbus_proxy)
 {
-  gchar *name;
+  gchar  *name;
+  GError *error = NULL;
 
   panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (provider));
 
@@ -183,7 +198,11 @@ dbus_proxy_provider_panel_preferences (XfcePanelPluginProvider *provider,
   name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (provider)));
 
   /* call */
-  wrapper_dbus_client_display_preferences_dialog (dbus_proxy, name, NULL);
+  if (!wrapper_dbus_client_display_preferences_dialog (dbus_proxy, name, &error))
+    {
+      g_critical ("DBus error: %s", error->message);
+      g_error_free (error);
+    }
 
   /* cleanup */
   g_free (name);
diff --git a/wrapper/wrapper-plug.c b/wrapper/wrapper-plug.c
index 3a33dd2..30fe467 100644
--- a/wrapper/wrapper-plug.c
+++ b/wrapper/wrapper-plug.c
@@ -62,7 +62,7 @@ static void
 wrapper_plug_class_init (WrapperPlugClass *klass)
 {
   GtkWidgetClass *gtkwidget_class;
-  
+
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
   gtkwidget_class->expose_event = wrapper_plug_expose_event;
 }
@@ -76,8 +76,8 @@ wrapper_plug_init (WrapperPlug *plug)
   plug->background_alpha = 1.00;
   plug->is_selected = FALSE;
   plug->is_composited = FALSE;
-  
-  /* allow painting, else compositing won't work */                                        
+
+  /* allow painting, else compositing won't work */
   gtk_widget_set_app_paintable (GTK_WIDGET (plug), TRUE);
 
   /* connect signal to monitor the compositor changes */
@@ -212,16 +212,16 @@ wrapper_plug_new (GdkNativeWindow socket_id)
 
 
 
-void         
+void
 wrapper_plug_set_background_alpha (WrapperPlug *plug,
                                    gdouble      alpha)
 {
   panel_return_if_fail (WRAPPER_IS_PLUG (plug));
   panel_return_if_fail (GTK_IS_WIDGET (plug));
-  
+
   /* set the alpha */
   plug->background_alpha = CLAMP (alpha, 0.00, 1.00);
-  
+
   /* redraw */
   if (plug->is_composited)
     gtk_widget_queue_draw (GTK_WIDGET (plug));
@@ -229,16 +229,16 @@ wrapper_plug_set_background_alpha (WrapperPlug *plug,
 
 
 
-void         
+void
 wrapper_plug_set_selected (WrapperPlug *plug,
                            gboolean     selected)
 {
   panel_return_if_fail (WRAPPER_IS_PLUG (plug));
   panel_return_if_fail (GTK_IS_WIDGET (plug));
-  
+
   /* set value */
   plug->is_selected = !!selected;
-  
+
   /* redraw */
   gtk_widget_queue_draw (GTK_WIDGET (plug));
 }



More information about the Xfce4-commits mailing list