diff options
Diffstat (limited to 'community/lightdm/lightdm-use-login1.patch')
-rwxr-xr-x | community/lightdm/lightdm-use-login1.patch | 505 |
1 files changed, 0 insertions, 505 deletions
diff --git a/community/lightdm/lightdm-use-login1.patch b/community/lightdm/lightdm-use-login1.patch deleted file mode 100755 index cc3d5a5fd..000000000 --- a/community/lightdm/lightdm-use-login1.patch +++ /dev/null @@ -1,505 +0,0 @@ -=== modified file 'liblightdm-gobject/power.c' ---- liblightdm-gobject/power.c 2013-01-31 20:56:09 +0000 -+++ liblightdm-gobject/power.c 2013-04-15 02:21:06 +0000 -@@ -17,6 +17,7 @@ - - static GDBusProxy *upower_proxy = NULL; - static GDBusProxy *ck_proxy = NULL; -+static GDBusProxy *login1_proxy = NULL; - - static gboolean - upower_call_function (const gchar *function, gboolean default_result, GError **error) -@@ -109,11 +110,10 @@ - return upower_call_function ("Hibernate", TRUE, error); - } - --static gboolean --ck_call_function (const gchar *function, gboolean default_result, GError **error) -+static GVariant * -+ck_call_function (const gchar *function, GError **error) - { -- GVariant *result; -- gboolean function_result = FALSE; -+ GVariant *r; - - if (!ck_proxy) - { -@@ -129,22 +129,46 @@ - return FALSE; - } - -- result = g_dbus_proxy_call_sync (ck_proxy, -- function, -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- -1, -- NULL, -- error); -- -- if (!result) -- return default_result; -- -- if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)"))) -- g_variant_get (result, "(b)", &function_result); -- -- g_variant_unref (result); -- return function_result; -+ r = g_dbus_proxy_call_sync (ck_proxy, -+ function, -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ -+ return r; -+} -+ -+static GVariant * -+login1_call_function (const gchar *function, GVariant *parameters, GError **error) -+{ -+ GVariant *r; -+ gchar *str_result; -+ -+ if (!login1_proxy) -+ { -+ login1_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.freedesktop.login1", -+ "/org/freedesktop/login1", -+ "org.freedesktop.login1.Manager", -+ NULL, -+ error); -+ if (!login1_proxy) -+ return NULL; -+ } -+ -+ r = g_dbus_proxy_call_sync (login1_proxy, -+ function, -+ parameters, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ -+ return r; - } - - /** -@@ -157,7 +181,29 @@ - gboolean - lightdm_get_can_restart (void) - { -- return ck_call_function ("CanRestart", FALSE, NULL); -+ gboolean can_restart = FALSE; -+ GVariant *r; -+ -+ r = login1_call_function ("CanReboot", NULL, NULL); -+ if (r) -+ { -+ gchar *result; -+ if (g_variant_is_of_type (r, G_VARIANT_TYPE ("(s)"))) -+ { -+ g_variant_get (r, "(&s)", &result); -+ can_restart = g_strcmp0 (result, "yes") == 0; -+ } -+ } -+ else -+ { -+ r = ck_call_function ("CanRestart", NULL); -+ if (r && g_variant_is_of_type (r, G_VARIANT_TYPE ("(b)"))) -+ g_variant_get (r, "(b)", &can_restart); -+ } -+ if (r) -+ g_variant_unref (r); -+ -+ return can_restart; - } - - /** -@@ -171,7 +217,20 @@ - gboolean - lightdm_restart (GError **error) - { -- return ck_call_function ("Restart", TRUE, error); -+ GVariant *r; -+ gboolean restarted; -+ -+ r = login1_call_function ("Reboot", g_variant_new("(b)", FALSE), error); -+ if (!r) -+ { -+ g_clear_error (error); -+ r = ck_call_function ("Restart", error); -+ } -+ restarted = r != NULL; -+ if (r) -+ g_variant_unref (r); -+ -+ return restarted; - } - - /** -@@ -184,7 +243,29 @@ - gboolean - lightdm_get_can_shutdown (void) - { -- return ck_call_function ("CanStop", FALSE, NULL); -+ gboolean can_shutdown = FALSE; -+ GVariant *r; -+ -+ r = login1_call_function ("CanPowerOff", NULL, NULL); -+ if (r) -+ { -+ gchar *result; -+ if (g_variant_is_of_type (r, G_VARIANT_TYPE ("(s)"))) -+ { -+ g_variant_get (r, "(&s)", &result); -+ can_shutdown = g_strcmp0 (result, "yes") == 0; -+ } -+ } -+ else -+ { -+ r = ck_call_function ("CanStop", NULL); -+ if (r && g_variant_is_of_type (r, G_VARIANT_TYPE ("(b)"))) -+ g_variant_get (r, "(b)", &can_shutdown); -+ } -+ if (r) -+ g_variant_unref (r); -+ -+ return can_shutdown; - } - - /** -@@ -198,5 +279,18 @@ - gboolean - lightdm_shutdown (GError **error) - { -- return ck_call_function ("Stop", TRUE, error); -+ GVariant *r; -+ gboolean shutdown; -+ -+ r = login1_call_function ("PowerOff", g_variant_new("(b)", FALSE), error); -+ if (!r) -+ { -+ g_clear_error (error); -+ r = ck_call_function ("Stop", error); -+ } -+ shutdown = r != NULL; -+ if (r) -+ g_variant_unref (r); -+ -+ return shutdown; - } - -=== modified file 'liblightdm-qt/power.cpp' ---- liblightdm-qt/power.cpp 2013-02-06 14:08:25 +0000 -+++ liblightdm-qt/power.cpp 2013-04-14 23:00:34 +0000 -@@ -15,6 +15,7 @@ - #include <QtCore/QVariant> - #include <QtDBus/QDBusInterface> - #include <QtDBus/QDBusReply> -+#include <QDebug> - - #include "config.h" - -@@ -26,11 +27,13 @@ - PowerInterfacePrivate(); - QScopedPointer<QDBusInterface> powerManagementInterface; - QScopedPointer<QDBusInterface> consoleKitInterface; -+ QScopedPointer<QDBusInterface> login1Interface; - }; - - PowerInterface::PowerInterfacePrivate::PowerInterfacePrivate() : - powerManagementInterface(new QDBusInterface("org.freedesktop.UPower","/org/freedesktop/UPower", "org.freedesktop.UPower", QDBusConnection::systemBus())), -- consoleKitInterface(new QDBusInterface("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", QDBusConnection::systemBus())) -+ consoleKitInterface(new QDBusInterface("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", QDBusConnection::systemBus())), -+ login1Interface(new QDBusInterface("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", QDBusConnection::systemBus())) - { - } - -@@ -80,34 +83,54 @@ - - bool PowerInterface::canShutdown() - { -+ if (d->login1Interface->isValid()) { -+ QDBusReply<QString> reply1 = d->login1Interface->call("CanPowerOff"); -+ if (reply1.isValid()) { -+ return reply1.value() == "yes"; -+ } -+ } -+ qWarning() << d->login1Interface->lastError(); -+ - QDBusReply<bool> reply = d->consoleKitInterface->call("CanStop"); - if (reply.isValid()) { - return reply.value(); - } -- else { -- return false; -- } -+ -+ return false; - } - - void PowerInterface::shutdown() - { -- d->consoleKitInterface->call("Stop"); -+ if (d->login1Interface->isValid()) -+ d->login1Interface->call("PowerOff", false); -+ else -+ d->consoleKitInterface->call("Stop"); - } - - bool PowerInterface::canRestart() - { -+ if (d->login1Interface->isValid()) { -+ QDBusReply<QString> reply1 = d->login1Interface->call("CanReboot"); -+ if (reply1.isValid()) { -+ return reply1.value() == "yes"; -+ } -+ } -+ qWarning() << d->login1Interface->lastError(); -+ - QDBusReply<bool> reply = d->consoleKitInterface->call("CanRestart"); - if (reply.isValid()) { - return reply.value(); - } -- else { -- return false; -- } -+ -+ return false; - } - - void PowerInterface::restart() - { -- d->consoleKitInterface->call("Restart"); -+ if (d->login1Interface->isValid()) -+ d->login1Interface->call("Reboot", false); -+ else -+ d->consoleKitInterface->call("Restart"); - } - - #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) - -=== modified file 'tests/Makefile.am' ---- tests/Makefile.am 2013-04-12 03:46:06 +0000 -+++ tests/Makefile.am 2013-04-14 22:54:54 +0000 -@@ -135,6 +135,8 @@ - test-no-accounts-service \ - test-console-kit \ - test-no-console-kit \ -+ test-no-login1 \ -+ test-no-console-kit-or-login1 \ - test-open-file-descriptors \ - test-xdmcp-open-file-descriptors - -@@ -284,8 +286,10 @@ - scripts/no-accounts-service.conf \ - scripts/no-config.conf \ - scripts/no-console-kit.conf \ -+ scripts/no-console-kit-or-login1.conf \ - scripts/no-keyboard-layout.conf \ - scripts/no-language.conf \ -+ scripts/no-login1.conf \ - scripts/open-file-descriptors.conf \ - scripts/pam.conf \ - scripts/plymouth-active-vt.conf \ - -=== added file 'tests/scripts/no-console-kit-or-login1.conf' ---- tests/scripts/no-console-kit-or-login1.conf 1970-01-01 00:00:00 +0000 -+++ tests/scripts/no-console-kit-or-login1.conf 2013-04-14 22:54:54 +0000 -@@ -0,0 +1,34 @@ -+# -+# Check still works when neither ConsoleKit or login1 is available -+# -+ -+[test-runner-config] -+disable-console-kit=true -+disable-login1=true -+ -+[LightDM] -+minimum-display-number=50 -+ -+[SeatDefaults] -+autologin-user=have-password1 -+ -+#?RUNNER DAEMON-START -+ -+# X server starts -+#?XSERVER :50 START -+#?XSERVER :50 INDICATE-READY -+ -+# LightDM connects to X server -+#?XSERVER :50 ACCEPT-CONNECT -+ -+# Session starts -+#?SESSION :50 START USER=have-password1 -+#?XSERVER :50 ACCEPT-CONNECT -+#?SESSION :50 CONNECT-XSERVER -+ -+# Cleanup -+#?*STOP-DAEMON -+# Don't know what order they will terminate -+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) -+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) -+#?RUNNER DAEMON-EXIT STATUS=0 - -=== added file 'tests/scripts/no-login1.conf' ---- tests/scripts/no-login1.conf 1970-01-01 00:00:00 +0000 -+++ tests/scripts/no-login1.conf 2013-04-14 22:54:54 +0000 -@@ -0,0 +1,33 @@ -+# -+# Check still works when login1 is not available -+# -+ -+[test-runner-config] -+disable-login1=true -+ -+[LightDM] -+minimum-display-number=50 -+ -+[SeatDefaults] -+autologin-user=have-password1 -+ -+#?RUNNER DAEMON-START -+ -+# X server starts -+#?XSERVER :50 START -+#?XSERVER :50 INDICATE-READY -+ -+# LightDM connects to X server -+#?XSERVER :50 ACCEPT-CONNECT -+ -+# Session starts -+#?SESSION :50 START USER=have-password1 -+#?XSERVER :50 ACCEPT-CONNECT -+#?SESSION :50 CONNECT-XSERVER -+ -+# Cleanup -+#?*STOP-DAEMON -+# Don't know what order they will terminate -+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) -+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) -+#?RUNNER DAEMON-EXIT STATUS=0 - -=== modified file 'tests/src/test-runner.c' ---- tests/src/test-runner.c 2013-03-27 00:48:48 +0000 -+++ tests/src/test-runner.c 2013-04-14 22:54:54 +0000 -@@ -1464,6 +1464,101 @@ accounts_user_set_hidden (AccountsUser * - } - - static void -+handle_login1_call (GDBusConnection *connection, -+ const gchar *sender, -+ const gchar *object_path, -+ const gchar *interface_name, -+ const gchar *method_name, -+ GVariant *parameters, -+ GDBusMethodInvocation *invocation, -+ gpointer user_data) -+{ -+ if (strcmp (method_name, "CanReboot") == 0) -+ g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "yes")); -+ else if (strcmp (method_name, "Reboot") == 0) -+ { -+ gboolean interactive; -+ g_variant_get (parameters, "(b)", &interactive); -+ g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); -+ } -+ if (strcmp (method_name, "CanPowerOff") == 0) -+ g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "yes")); -+ else if (strcmp (method_name, "PowerOff") == 0) -+ { -+ gboolean interactive; -+ g_variant_get (parameters, "(b)", &interactive); -+ g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); -+ } -+ else -+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No such method: %s", method_name); -+} -+ -+static void -+login1_name_acquired_cb (GDBusConnection *connection, -+ const gchar *name, -+ gpointer user_data) -+{ -+ const gchar *login1_interface = -+ "<node>" -+ " <interface name='org.freedesktop.login1.Manager'>" -+ " <method name='CanReboot'>" -+ " <arg name='result' direction='out' type='s'/>" -+ " </method>" -+ " <method name='Reboot'>" -+ " <arg name='interactive' direction='in' type='b'/>" -+ " </method>" -+ " <method name='CanPowerOff'>" -+ " <arg name='result' direction='out' type='s'/>" -+ " </method>" -+ " <method name='PowerOff'>" -+ " <arg name='interactive' direction='in' type='b'/>" -+ " </method>" -+ " </interface>" -+ "</node>"; -+ static const GDBusInterfaceVTable login1_vtable = -+ { -+ handle_login1_call, -+ }; -+ GDBusNodeInfo *login1_info; -+ GError *error = NULL; -+ -+ login1_info = g_dbus_node_info_new_for_xml (login1_interface, &error); -+ if (error) -+ g_warning ("Failed to parse D-Bus interface: %s", error->message); -+ g_clear_error (&error); -+ if (!login1_info) -+ return; -+ g_dbus_connection_register_object (connection, -+ "/org/freedesktop/login1", -+ login1_info->interfaces[0], -+ &login1_vtable, -+ NULL, NULL, -+ &error); -+ if (error) -+ g_warning ("Failed to register login1 service: %s", error->message); -+ g_clear_error (&error); -+ g_dbus_node_info_unref (login1_info); -+ -+ service_count--; -+ if (service_count == 0) -+ run_lightdm (); -+} -+ -+static void -+start_login1_daemon () -+{ -+ service_count++; -+ g_bus_own_name (G_BUS_TYPE_SYSTEM, -+ "org.freedesktop.login1", -+ G_BUS_NAME_OWNER_FLAGS_NONE, -+ login1_name_acquired_cb, -+ NULL, -+ NULL, -+ NULL, -+ NULL); -+} -+ -+static void - load_passwd_file (void) - { - gchar *path, *data, **lines; - -=== added file 'tests/test-no-console-kit-or-login1' ---- tests/test-no-console-kit-or-login1 1970-01-01 00:00:00 +0000 -+++ tests/test-no-console-kit-or-login1 2013-04-14 22:54:54 +0000 -@@ -0,0 +1,2 @@ -+#!/bin/sh -+./src/dbus-env ./src/test-runner no-console-kit-or-login1 test-gobject-greeter - -=== added file 'tests/test-no-login1' ---- tests/test-no-login1 1970-01-01 00:00:00 +0000 -+++ tests/test-no-login1 2013-04-14 22:54:54 +0000 -@@ -0,0 +1,2 @@ -+#!/bin/sh -+./src/dbus-env ./src/test-runner no-login1 test-gobject-greeter - |