[Goodies-commits] r6928 - in xfce4-power-manager/trunk: . libxfpm src
Ali Abdallah
aliov at xfce.org
Mon Mar 16 23:27:10 CET 2009
Author: aliov
Date: 2009-03-16 22:27:10 +0000 (Mon, 16 Mar 2009)
New Revision: 6928
Added:
xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/libxfpm/xfpm-popups.c
xfce4-power-manager/trunk/libxfpm/xfpm-popups.h
xfce4-power-manager/trunk/src/Makefile.am
xfce4-power-manager/trunk/src/xfpm-engine.c
xfce4-power-manager/trunk/src/xfpm-main.c
xfce4-power-manager/trunk/src/xfpm-manager.c
Log:
Added freedesktop.PowerManagement power interfaces and methods
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/ChangeLog 2009-03-16 22:27:10 UTC (rev 6928)
@@ -1,4 +1,7 @@
+2009-03-16 23:27 Ali aliov at xfce.org
+ * : Added freedesktop.PowerManagement power interfaces and methods
+
2009-03-16 19:06 Ali aliov at xfce.org
* : Add a weak reference on the adapter object+remove unused signals
Modified: xfce4-power-manager/trunk/libxfpm/xfpm-popups.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-popups.c 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-popups.c 2009-03-16 22:27:10 UTC (rev 6928)
@@ -1,7 +1,6 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
+/*
+ * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
*
- * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
- *
* Licensed under the GNU General Public License Version 2
*
* This program is free software; you can redistribute it and/or modify
@@ -20,12 +19,11 @@
*/
#include <gtk/gtk.h>
+#include <glib.h>
-void xfpm_popup_message(const gchar *title,
- const gchar *message,
- GtkMessageType message_type)
+static GtkWidget *
+xfpm_message_dialog (const gchar *title, const gchar *message, GtkMessageType message_type)
{
-
GtkWidget *dialog;
dialog = gtk_message_dialog_new_with_markup(NULL,
@@ -35,13 +33,45 @@
"<span size='larger'><b>%s</b></span>",
title);
- gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog),"%s",message);
+ gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "%s", message);
+ return dialog;
+}
+
+void xfpm_popup_message(const gchar *title,
+ const gchar *message,
+ GtkMessageType message_type)
+{
+
+ GtkWidget *dialog;
+
+ dialog = xfpm_message_dialog (title, message, message_type);
+
g_signal_connect(dialog,
"response",
G_CALLBACK(gtk_widget_destroy),
NULL);
gtk_widget_show(dialog);
+}
+
+void xfpm_info (const gchar *title, const gchar *message )
+{
+ GtkWidget *dialog;
-}
+ dialog = xfpm_message_dialog (title, message, GTK_MESSAGE_INFO);
+
+ gtk_dialog_run (GTK_DIALOG(dialog));
+ gtk_widget_destroy (dialog);
+}
+
+void xfpm_error (const gchar *title,
+ const gchar *message)
+{
+ GtkWidget *dialog;
+
+ dialog = xfpm_message_dialog (title, message, GTK_MESSAGE_ERROR);
+
+ gtk_dialog_run (GTK_DIALOG(dialog));
+ gtk_widget_destroy (dialog);
+}
Modified: xfce4-power-manager/trunk/libxfpm/xfpm-popups.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-popups.h 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-popups.h 2009-03-16 22:27:10 UTC (rev 6928)
@@ -1,7 +1,6 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*-
+/*
+ * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
*
- * * Copyright (C) 2008 Ali <ali.slackware at gmail.com>
- *
* Licensed under the GNU General Public License Version 2
*
* This program is free software; you can redistribute it and/or modify
@@ -22,9 +21,15 @@
#ifndef __XFPM_POPUPS_H
#define __XFPM_POPUPS_H
-void xfpm_popup_message(const gchar *title,
- const gchar *message,
- GtkMessageType message_type);
+void xfpm_popup_message (const gchar *title,
+ const gchar *message,
+ GtkMessageType message_type);
+void xfpm_info (const gchar *title,
+ const gchar *message);
+
+void xfpm_error (const gchar *title,
+ const gchar *message);
+
#endif /* __XFPM_POPUPS_H */
Modified: xfce4-power-manager/trunk/src/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/src/Makefile.am 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/Makefile.am 2009-03-16 22:27:10 UTC (rev 6928)
@@ -5,6 +5,7 @@
xfpm-enum-types.h \
xfpm-marshal.c \
xfpm-marshal.h \
+ org.freedestop.PowerManagement-server.h \
xfce-power-manager-dbus-server.h \
xfce-power-manager-dbus-client.h \
xfpm-main.c \
@@ -81,6 +82,7 @@
BUILT_SOURCES = \
xfce-power-manager-dbus-server.h \
xfce-power-manager-dbus-client.h \
+ org.freedesktop.PowerManagement-server.h\
xfpm-marshal.c \
xfpm-marshal.h \
xfpm-enum-types.c \
@@ -123,9 +125,12 @@
xfce-power-manager-dbus-server.h: $(srcdir)/org.xfce.Power.Manager.xml
dbus-binding-tool --mode=glib-server --prefix=xfpm_manager $< >$@
-xfce-power-manager-dbus-client.h: $(srdir)org.xfce.Power.Manager.xml
+xfce-power-manager-dbus-client.h: $(srcdir)/org.xfce.Power.Manager.xml
dbus-binding-tool --mode=glib-client --prefix=xfpm_manager $< >$@
+org.freedesktop.PowerManagement-server.h: $(srcdir)/org.freedesktop.PowerManagement.xml
+ dbus-binding-tool --mode=glib-server --prefix=xfpm_engine $< >$@
+
endif
@INTLTOOL_DESKTOP_RULE@
Added: xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml
===================================================================
--- xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml (rev 0)
+++ xfce4-power-manager/trunk/src/org.freedesktop.PowerManagement.xml 2009-03-16 22:27:10 UTC (rev 6928)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<node name="/org/freedesktop/PowerManagement">
+ <interface name="org.freedesktop.PowerManagement">
+ <annotation name="org.freedesktop.DBus.GLib.CSymbol"
+ value="xfpm_engine_dbus"/>
+ <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
+ value="xfpm_engine_dbus_client"/>
+
+ <method name="Hibernate">
+ </method>
+
+ <method name="Suspend">
+ </method>
+
+ <method name="CanSuspend">
+ <arg type="b" name="can_suspend" direction="out"/>
+ </method>
+
+ <method name="CanHibernate">
+ <arg type="b" name="can_hibernate" direction="out"/>
+ </method>
+
+ </interface>
+</node>
Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-16 22:27:10 UTC (rev 6928)
@@ -67,29 +67,32 @@
static void xfpm_engine_init (XfpmEngine *engine);
static void xfpm_engine_finalize (GObject *object);
+static void xfpm_engine_dbus_class_init (XfpmEngineClass *klass);
+static void xfpm_engine_dbus_init (XfpmEngine *engine);
+
#define XFPM_ENGINE_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), XFPM_TYPE_ENGINE, XfpmEnginePrivate))
struct XfpmEnginePrivate
{
- XfpmXfconf *conf;
- XfpmSupply *supply;
- XfpmCpu *cpu;
- XfpmButtonXf86 *xf86_button;
- XfpmLidHal *lid;
- XfpmBrightnessHal *brg_hal;
- XfpmAdapter *adapter;
- HalIface *iface;
+ XfpmXfconf *conf;
+ XfpmSupply *supply;
+ XfpmCpu *cpu;
+ XfpmButtonXf86 *xf86_button;
+ XfpmLidHal *lid;
+ XfpmBrightnessHal *brg_hal;
+ XfpmAdapter *adapter;
+ HalIface *iface;
#ifdef HAVE_DPMS
- XfpmDpms *dpms;
+ XfpmDpms *dpms;
#endif
- GTimer *button_timer;
+ GTimer *button_timer;
- guint8 power_management;
- gboolean on_battery;
+ guint8 power_management;
+ gboolean on_battery;
- gboolean block_shutdown;
+ gboolean block_shutdown;
/*Configuration */
XfpmShutdownRequest sleep_button;
@@ -108,6 +111,8 @@
object_class->finalize = xfpm_engine_finalize;
g_type_class_add_private(klass,sizeof(XfpmEnginePrivate));
+
+ xfpm_engine_dbus_class_init (klass);
}
static void
@@ -130,6 +135,8 @@
engine->priv->brg_hal = NULL;
engine->priv->power_management = 0;
+
+ xfpm_engine_dbus_init (engine);
}
static void
@@ -454,3 +461,96 @@
return engine;
}
+
+/*
+ *
+ * DBus server implementation for org.freedesktop.PowerManagement
+ *
+ */
+
+static gboolean xfpm_engine_dbus_hibernate (XfpmEngine *engine,
+ GError **error);
+
+static gboolean xfpm_engine_dbus_suspend (XfpmEngine *engine,
+ GError **error);
+
+static gboolean xfpm_engine_dbus_can_hibernate (XfpmEngine *engine,
+ gboolean *OUT_can_hibernate,
+ GError **error);
+
+static gboolean xfpm_engine_dbus_can_suspend (XfpmEngine *engine,
+ gboolean *OUT_can_suspend,
+ GError **error);
+
+#include "org.freedesktop.PowerManagement-server.h"
+
+static void
+xfpm_engine_dbus_class_init(XfpmEngineClass *klass)
+{
+ dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(klass),
+ &dbus_glib_xfpm_engine_object_info);
+}
+
+static void
+xfpm_engine_dbus_init (XfpmEngine *engine)
+{
+ DBusGConnection *bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+
+ dbus_g_connection_register_g_object (bus,
+ "/org/freedesktop/PowerManagement",
+ G_OBJECT(engine));
+}
+
+static gboolean xfpm_engine_dbus_hibernate (XfpmEngine *engine,
+ GError **error)
+{
+ gboolean caller_privilege, can_hibernate;
+
+ g_object_get (G_OBJECT(engine->priv->iface),
+ "caller-privilege", &caller_privilege,
+ "can-hibernate", &can_hibernate,
+ NULL);
+
+ if ( caller_privilege && can_hibernate )
+ xfpm_engine_shutdown_request (engine, XFPM_DO_HIBERNATE);
+
+ return TRUE;
+}
+
+static gboolean xfpm_engine_dbus_suspend (XfpmEngine *engine,
+ GError **error)
+{
+ gboolean caller_privilege, can_suspend;
+
+ g_object_get (G_OBJECT(engine->priv->iface),
+ "caller-privilege", &caller_privilege,
+ "can-suspend", &can_suspend,
+ NULL);
+
+ if ( caller_privilege && can_suspend )
+ xfpm_engine_shutdown_request (engine, XFPM_DO_SUSPEND);
+
+ return TRUE;
+}
+
+static gboolean xfpm_engine_dbus_can_hibernate (XfpmEngine *engine,
+ gboolean *OUT_can_hibernate,
+ GError **error)
+{
+ g_object_get (G_OBJECT(engine->priv->iface),
+ "can-hibernate", OUT_can_hibernate,
+ NULL);
+
+ return TRUE;
+}
+
+static gboolean xfpm_engine_dbus_can_suspend (XfpmEngine *engine,
+ gboolean *OUT_can_suspend,
+ GError **error)
+{
+ g_object_get (G_OBJECT(engine->priv->iface),
+ "can-suspend", OUT_can_suspend,
+ NULL);
+
+ return TRUE;
+}
Modified: xfce4-power-manager/trunk/src/xfpm-main.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-main.c 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/xfpm-main.c 2009-03-16 22:27:10 UTC (rev 6928)
@@ -107,11 +107,12 @@
if ( error )
{
- gchar *message = g_strdup(_("Unable to connection to the message bus session"));
+ gchar *message = g_strdup(_("Unable to get connection to the message bus session"));
message = g_strdup_printf("%s: ",error->message);
- xfpm_popup_message(_("Xfce power manager"),
- message,
- GTK_MESSAGE_ERROR);
+
+ xfpm_error (_("Xfce Power Manager"),
+ message );
+
g_error("%s: \n",message);
g_print("\n");
g_error_free(error);
@@ -166,8 +167,13 @@
return EXIT_SUCCESS;
}
-
- if (xfpm_dbus_name_has_owner(dbus_g_connection_get_connection(bus),
+ if (xfpm_dbus_name_has_owner (dbus_g_connection_get_connection(bus), "org.freedesktop.PowerManagement") )
+ {
+
+ xfpm_info(_("Xfce Power Manager"),
+ _("Another power manager is already running"));
+ }
+ else if (xfpm_dbus_name_has_owner(dbus_g_connection_get_connection(bus),
"org.xfce.PowerManager"))
{
g_print (_("Xfce power manager is already running"));
@@ -180,7 +186,7 @@
XfpmManager *manager;
manager = xfpm_manager_new(bus);
xfpm_manager_start(manager);
+ gtk_main();
}
-
return EXIT_SUCCESS;
}
Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c 2009-03-16 21:27:02 UTC (rev 6927)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c 2009-03-16 22:27:10 UTC (rev 6928)
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <string.h>
+#include <gtk/gtk.h>
#include <glib.h>
#include <libxfce4util/libxfce4util.h>
@@ -56,8 +57,6 @@
XfpmEngine *engine;
DBusGConnection *session_bus;
-
- GMainLoop *loop;
};
G_DEFINE_TYPE(XfpmManager, xfpm_manager, G_TYPE_OBJECT)
@@ -78,7 +77,6 @@
manager->priv = XFPM_MANAGER_GET_PRIVATE(manager);
manager->priv->session_bus = NULL;
- manager->priv->loop = g_main_loop_new(NULL, FALSE);
}
static void
@@ -91,9 +89,6 @@
if ( manager->priv->session_bus )
dbus_g_connection_unref(manager->priv->session_bus);
- if ( manager->priv->loop )
- g_main_loop_unref(manager->priv->loop);
-
if ( manager->priv->engine )
g_object_unref (manager->priv->engine);
@@ -103,11 +98,14 @@
static gboolean
xfpm_manager_quit (XfpmManager *manager)
{
- g_main_loop_quit(manager->priv->loop);
xfpm_dbus_release_name(dbus_g_connection_get_connection(manager->priv->session_bus),
"org.xfce.PowerManager");
-
+
+ xfpm_dbus_release_name (dbus_g_connection_get_connection(manager->priv->session_bus),
+ "org.freedesktop.PowerManagement");
+
g_object_unref(G_OBJECT(manager));
+ gtk_main_quit ();
return TRUE;
}
@@ -127,15 +125,21 @@
void xfpm_manager_start (XfpmManager *manager)
{
- if ( !xfpm_dbus_register_name(dbus_g_connection_get_connection(manager->priv->session_bus),
+ if ( !xfpm_dbus_register_name (dbus_g_connection_get_connection(manager->priv->session_bus),
"org.xfce.PowerManager") )
{
g_critical("Unable to reserve bus name\n");
}
+ if (!xfpm_dbus_register_name (dbus_g_connection_get_connection(manager->priv->session_bus),
+ "org.freedesktop.PowerManagement") )
+ {
+
+ g_critical ("Unable to reserve bus name\n");
+ }
+
manager->priv->engine = xfpm_engine_new ();
- g_main_loop_run(manager->priv->loop);
}
/*
More information about the Goodies-commits
mailing list