[Goodies-commits] r6604 - xfce4-power-manager/trunk/src
Ali Abdallah
aliov at xfce.org
Fri Jan 30 11:41:32 CET 2009
Author: aliov
Date: 2009-01-30 10:41:32 +0000 (Fri, 30 Jan 2009)
New Revision: 6604
Modified:
xfce4-power-manager/trunk/src/xfpm-dbus-messages.c
xfce4-power-manager/trunk/src/xfpm-dbus-messages.h
xfce4-power-manager/trunk/src/xfpm-driver.c
xfce4-power-manager/trunk/src/xfpm-main.c
Log:
Reserve a bus name in the dbus session so we can easily detect if XFPM is running or not
Modified: xfce4-power-manager/trunk/src/xfpm-dbus-messages.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dbus-messages.c 2009-01-30 09:43:19 UTC (rev 6603)
+++ xfce4-power-manager/trunk/src/xfpm-dbus-messages.c 2009-01-30 10:41:32 UTC (rev 6604)
@@ -270,3 +270,48 @@
return;
}
}
+
+gboolean xfpm_dbus_register_name(DBusConnection *connection)
+{
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ int ret =
+ dbus_bus_request_name(connection,XFPM_PM_IFACE,0,&error);
+
+ if ( dbus_error_is_set(&error) )
+ {
+ printf("Error: %s\n",error.message);
+ dbus_error_free(&error);
+ return FALSE;
+ }
+
+ if ( ret == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER )
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+gboolean xfpm_dbus_release_name(DBusConnection *connection)
+{
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ int ret =
+ dbus_bus_release_name(connection,XFPM_PM_IFACE,&error);
+
+ if ( dbus_error_is_set(&error) )
+ {
+ printf("Error: %s\n",error.message);
+ dbus_error_free(&error);
+ return FALSE;
+ }
+
+ if ( ret == -1 ) return FALSE;
+
+ return TRUE;
+}
Modified: xfce4-power-manager/trunk/src/xfpm-dbus-messages.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dbus-messages.h 2009-01-30 09:43:19 UTC (rev 6603)
+++ xfce4-power-manager/trunk/src/xfpm-dbus-messages.h 2009-01-30 10:41:32 UTC (rev 6604)
@@ -38,5 +38,7 @@
gboolean xfpm_dbus_send_message_with_reply (const gchar *signal,gint *get_reply);
gboolean xfpm_dbus_send_customize_message (guint32 socket_id);
void xfpm_dbus_send_nm_message (const gchar *signal);
+gboolean xfpm_dbus_register_name(DBusConnection *connection);
+gboolean xfpm_dbus_release_name();
#endif /* __XFPM_DBUS_MESSAGES */
Modified: xfce4-power-manager/trunk/src/xfpm-driver.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-driver.c 2009-01-30 09:43:19 UTC (rev 6603)
+++ xfce4-power-manager/trunk/src/xfpm-driver.c 2009-01-30 10:41:32 UTC (rev 6604)
@@ -1246,6 +1246,8 @@
}
+ xfpm_dbus_register_name(priv->conn);
+
xfpm_driver_load_config(drv);
_get_system_form_factor(priv);
@@ -1254,8 +1256,12 @@
xfpm_driver_load_all(drv);
g_main_loop_run(priv->loop);
+
+ xfpm_dbus_release_name(priv->conn);
+
+ dbus_connection_remove_filter(priv->conn,xfpm_driver_signal_filter,NULL);
- dbus_connection_remove_filter(priv->conn,xfpm_driver_signal_filter,NULL);
+
xfconf_shutdown();
return TRUE;
Modified: xfce4-power-manager/trunk/src/xfpm-main.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-main.c 2009-01-30 09:43:19 UTC (rev 6603)
+++ xfce4-power-manager/trunk/src/xfpm-main.c 2009-01-30 10:41:32 UTC (rev 6604)
@@ -185,15 +185,30 @@
return EXIT_FAILURE;
}
+ DBusConnection *connection;
+ DBusError derror;
+
+ dbus_error_init(&derror);
+
+ connection = dbus_bus_get(DBUS_BUS_SESSION, &derror);
+
+ if ( dbus_error_is_set(&derror) )
+ {
+ xfpm_popup_message(_("Xfce power manager"),
+ _("Unable to run Xfce4 power manager, " \
+ "make sure the hardware abstract layer and the message bus daemon "\
+ "are running"),
+ GTK_MESSAGE_ERROR);
+ g_error(_("Unable to load xfce4 power manager"));
+ g_print("\n");
+ dbus_error_free(&derror);
+ return EXIT_FAILURE;
+ }
+
if ( config )
{
- int reply;
- if (!xfpm_dbus_send_message_with_reply("Running",&reply))
- {
- return EXIT_FAILURE;
- }
- if ( reply != 1 )
- {
+ if (!xfpm_dbus_name_has_owner(connection,XFPM_PM_IFACE))
+ {
g_print(_("Xfce power manager is not running"));
g_print("\n");
gboolean ret =
@@ -205,56 +220,56 @@
g_spawn_command_line_async("xfce4-power-manager -r",NULL);
}
return EXIT_SUCCESS;
- }
- xfpm_dbus_send_customize_message(socket_id);
- return EXIT_SUCCESS;
- }
-
+ }
+ else
+ {
+ xfpm_dbus_send_customize_message(socket_id);
+ return EXIT_SUCCESS;
+ }
+ }
+
if ( run )
{
- int reply;
- if (!xfpm_dbus_send_message_with_reply("Running",&reply))
- {
- return EXIT_FAILURE;
- }
-
- if ( reply == 1 )
- {
+ if (!xfpm_dbus_name_has_owner(connection,XFPM_PM_IFACE))
+ {
+
+ XfpmDriver *driver = xfpm_driver_new();
+ autostart();
+ if (!xfpm_driver_monitor(driver))
+ {
+ xfpm_popup_message(_("Xfce power manager"),
+ _("Unable to run Xfce4 power manager, " \
+ "make sure the hardware abstract layer and the message bus daemon "\
+ "are running"),
+ GTK_MESSAGE_ERROR);
+ g_error(_("Unable to load xfce4 power manager"));
+ g_print("\n");
+ g_object_unref(driver);
+ return EXIT_FAILURE;
+ }
+ }
+ else
+ {
g_print(_("Xfce power manager is already running"));
g_print("\n");
return EXIT_SUCCESS;
- }
- XfpmDriver *driver = xfpm_driver_new();
- autostart();
- if (!xfpm_driver_monitor(driver))
- {
- xfpm_popup_message(_("Xfce power manager"),
- _("Unable to run Xfce4 power manager, " \
- "make sure the hardware abstract layer and the message bus daemon "\
- "are running"),
- GTK_MESSAGE_ERROR);
- g_error(_("Unable to load xfce4 power manager"));
- g_print("\n");
- g_object_unref(driver);
- return EXIT_FAILURE;
- }
- }
-
+ }
+
+ }
+
if ( quit )
{
- int reply;
- if (!xfpm_dbus_send_message_with_reply("Quit",&reply))
+ if (!xfpm_dbus_name_has_owner(connection,XFPM_PM_IFACE))
{
- return EXIT_FAILURE;
- }
-
- if ( reply == 0 )
- {
g_print(_("Xfce power manager is not running"));
g_print("\n");
return EXIT_SUCCESS;
}
- return EXIT_SUCCESS;
+ else
+ {
+ xfpm_dbus_send_message("Quit");
+ }
+
}
return EXIT_SUCCESS;
More information about the Goodies-commits
mailing list