summaryrefslogtreecommitdiff
path: root/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c')
-rw-r--r--x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c155
1 files changed, 155 insertions, 0 deletions
diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c
new file mode 100644
index 000000000000..55f6d7ec8bd2
--- /dev/null
+++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c
@@ -0,0 +1,155 @@
+--- gui/simple-greeter/gdm-greeter-login-window.c.orig 2009-10-24 20:05:24.000000000 -0400
++++ gui/simple-greeter/gdm-greeter-login-window.c 2009-10-24 20:11:02.000000000 -0400
+@@ -56,10 +56,6 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+
+-#ifdef HAVE_DEVICEKIT_POWER
+-#include <devkit-power-gobject/devicekit-power.h>
+-#endif
+-
+ #include "gdm-settings-client.h"
+ #include "gdm-settings-keys.h"
+ #include "gdm-profile.h"
+@@ -83,6 +79,10 @@
+ #define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
+ #define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
+
++#define GPM_DBUS_NAME "org.freedesktop.PowerManagement"
++#define GPM_DBUS_PATH "/org/freedesktop/PowerManagement"
++#define GPM_DBUS_INTERFACE "org.freedesktop.PowerManagement"
++
+ #define GLADE_XML_FILE "gdm-greeter-login-window.glade"
+
+ #define KEY_GREETER_DIR "/apps/gdm/simple-greeter"
+@@ -477,22 +477,46 @@ adjust_other_login_visibility(GdmGreeter
+ }
+ }
+
+-#ifdef HAVE_DEVICEKIT_POWER
+ static gboolean
+ can_suspend (GdmGreeterLoginWindow *login_window)
+ {
+- gboolean ret;
+- DkpClient *dkp_client;
++ DBusGConnection *connection;
++ DBusGProxy *proxy;
++ GError *error;
++ gboolean ret;
++ gboolean res;
++
++ error = NULL;
++ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
++ if (error != NULL) {
++ g_warning ("Couldn't connect to power manager: %s", error->message);
++ g_error_free (error);
++ return FALSE;
++ }
++ proxy = dbus_g_proxy_new_for_name (connection,
++ GPM_DBUS_NAME,
++ GPM_DBUS_PATH,
++ GPM_DBUS_INTERFACE);
++
++ ret = FALSE;
++
++ res = dbus_g_proxy_call (proxy, "CanSuspend",
++ &error,
++ G_TYPE_INVALID,
++ G_TYPE_BOOLEAN,
++ &ret,
++ G_TYPE_INVALID);
++ if (!res) {
++ if (error != NULL) {
++ g_warning ("Could not ask power manager if user can suspend: %s",
++ error->message);
++ g_error_free (error);
++ }
++ ret = FALSE;
++ }
+
+- /* use DeviceKit-power to get data */
+- dkp_client = dkp_client_new ();
+- g_object_get (dkp_client,
+- "can-suspend", &ret,
+- NULL);
+- g_object_unref (dkp_client);
+- return ret;
++ return ret;
+ }
+-#endif
+
+ static void
+ remove_sensitize_power_buttons_timeout (GdmGreeterLoginWindow *login_window)
+@@ -544,11 +568,7 @@ switch_mode (GdmGreeterLoginWindow *logi
+
+ show_restart_buttons = get_show_restart_buttons (login_window);
+
+-#ifdef HAVE_DEVICEKIT_POWER
+ show_suspend_button = can_suspend (login_window);
+-#else
+- show_suspend_button = FALSE;
+-#endif
+
+ /* we want to run this even if we're supposed to
+ be in the mode already so that we reset everything
+@@ -634,25 +654,39 @@ do_disconnect (GdmGreeterLoginWindow *lo
+ gtk_main_quit ();
+ }
+
+-#ifdef HAVE_DEVICEKIT_POWER
+ static void
+ do_suspend (GdmGreeterLoginWindow *login_window)
+ {
+- gboolean ret;
+- DkpClient *dkp_client;
+- GError *error = NULL;
+-
+- /* use DeviceKit-power to get data */
+- dkp_client = dkp_client_new ();
+- ret = dkp_client_suspend (dkp_client, &error);
+- if (!ret) {
++ GError *error;
++ DBusGConnection *connection;
++ DBusGProxy *proxy;
++
++ g_debug ("GdmGreeterLoginWindow: Suspend button clicked");
++
++ error = NULL;
++ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
++ if (error != NULL) {
+ g_warning ("Couldn't suspend: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+- g_object_unref (dkp_client);
++ proxy = dbus_g_proxy_new_for_name (connection,
++ GPM_DBUS_NAME,
++ GPM_DBUS_PATH,
++ GPM_DBUS_INTERFACE);
++ error = NULL;
++ dbus_g_proxy_call (proxy,
++ "Suspend",
++ &error,
++ G_TYPE_INVALID,
++ G_TYPE_INVALID);
++ if (error != NULL) {
++ g_warning ("Couldn't suspend: %s", error->message);
++ g_error_free (error);
++ return;
++ }
++ g_object_unref (proxy);
+ }
+-#endif
+
+ static void
+ delete_entry_text (GtkWidget *entry)
+@@ -971,9 +1005,7 @@ static void
+ suspend_button_clicked (GtkButton *button,
+ GdmGreeterLoginWindow *login_window)
+ {
+-#ifdef HAVE_DEVICEKIT_POWER
+ do_suspend (login_window);
+-#endif
+ }
+
+