Accepting request 19732 from GNOME:Factory
Copy from GNOME:Factory/gnome-session based on submit request 19732 from user vuntz OBS-URL: https://build.opensuse.org/request/show/19732 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gnome-session?expand=0&rev=81
This commit is contained in:
parent
ed1b3ed8a6
commit
278927aed1
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:9089a1959aae16eb7a9116d5d50e83b798495724e358e92ae2600c6a79575284
|
|
||||||
size 817564
|
|
3
gnome-session-2.27.91.tar.bz2
Normal file
3
gnome-session-2.27.91.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:182f59dd97625ee982bc338ad9273d7769674708780d43cd8fc0ba3a579c4781
|
||||||
|
size 816532
|
@ -421,7 +421,7 @@ Index: gnome-session/gsm-logout-dialog.c
|
|||||||
|
|
||||||
if (logout_dialog->priv->timeout_id != 0) {
|
if (logout_dialog->priv->timeout_id != 0) {
|
||||||
g_source_remove (logout_dialog->priv->timeout_id);
|
g_source_remove (logout_dialog->priv->timeout_id);
|
||||||
@@ -350,13 +341,118 @@ gsm_logout_dialog_set_timeout (GsmLogout
|
@@ -350,14 +341,118 @@ gsm_logout_dialog_set_timeout (GsmLogout
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *
|
static GtkWidget *
|
||||||
@ -533,6 +533,7 @@ Index: gnome-session/gsm-logout-dialog.c
|
|||||||
guint32 activate_time)
|
guint32 activate_time)
|
||||||
{
|
{
|
||||||
GsmLogoutDialog *logout_dialog;
|
GsmLogoutDialog *logout_dialog;
|
||||||
|
- GtkWidget *dialog_image;
|
||||||
- const char *primary_text;
|
- const char *primary_text;
|
||||||
+ GtkWidget *vbox;
|
+ GtkWidget *vbox;
|
||||||
+ GtkWidget *tile;
|
+ GtkWidget *tile;
|
||||||
@ -541,7 +542,7 @@ Index: gnome-session/gsm-logout-dialog.c
|
|||||||
|
|
||||||
if (current_dialog != NULL) {
|
if (current_dialog != NULL) {
|
||||||
gtk_widget_destroy (GTK_WIDGET (current_dialog));
|
gtk_widget_destroy (GTK_WIDGET (current_dialog));
|
||||||
@@ -366,82 +462,119 @@ gsm_get_dialog (GsmDialogLogoutType type
|
@@ -367,84 +462,119 @@ gsm_get_dialog (GsmDialogLogoutType type
|
||||||
|
|
||||||
current_dialog = logout_dialog;
|
current_dialog = logout_dialog;
|
||||||
|
|
||||||
@ -676,7 +677,9 @@ Index: gnome-session/gsm-logout-dialog.c
|
|||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
- gtk_image_set_from_icon_name (GTK_IMAGE (GTK_MESSAGE_DIALOG (logout_dialog)->image),
|
- dialog_image = gtk_message_dialog_get_image (GTK_MESSAGE_DIALOG (logout_dialog));
|
||||||
|
-
|
||||||
|
- gtk_image_set_from_icon_name (GTK_IMAGE (dialog_image),
|
||||||
- icon_name, GTK_ICON_SIZE_DIALOG);
|
- icon_name, GTK_ICON_SIZE_DIALOG);
|
||||||
+ logout_dialog->priv->info_label = gtk_label_new ("");
|
+ logout_dialog->priv->info_label = gtk_label_new ("");
|
||||||
+ gtk_label_set_line_wrap (GTK_LABEL (logout_dialog->priv->info_label),
|
+ gtk_label_set_line_wrap (GTK_LABEL (logout_dialog->priv->info_label),
|
||||||
|
@ -1,688 +0,0 @@
|
|||||||
Index: gnome-session-2.27.5/configure.in
|
|
||||||
===================================================================
|
|
||||||
--- gnome-session-2.27.5.orig/configure.in
|
|
||||||
+++ gnome-session-2.27.5/configure.in
|
|
||||||
@@ -49,7 +49,6 @@ GLIB_REQUIRED=2.16.0
|
|
||||||
LIBGNOMEUI_REQUIRED=2.2.0
|
|
||||||
GTK_REQUIRED=2.12.0
|
|
||||||
DBUS_GLIB_REQUIRED=0.76
|
|
||||||
-POLKIT_GNOME_REQUIRED=0.7
|
|
||||||
DEVKIT_POWER_REQUIRED=008
|
|
||||||
|
|
||||||
dnl ====================================================================
|
|
||||||
@@ -89,21 +88,6 @@ PKG_CHECK_MODULES(GCONF, gconf-2.0)
|
|
||||||
|
|
||||||
PKG_CHECK_MODULES(EGG_SMCLIENT, gtk+-2.0)
|
|
||||||
|
|
||||||
-have_polkit=no
|
|
||||||
-AC_ARG_ENABLE([polkit],
|
|
||||||
- AC_HELP_STRING([--enable-polkit], [Enable PolicyKit support (default auto)]),
|
|
||||||
- enable_polkit=$enableval,
|
|
||||||
- enable_polkit=auto)
|
|
||||||
-if test "x$enable_polkit" != "xno"; then
|
|
||||||
- PKG_CHECK_MODULES(POLKIT_GNOME, polkit-gnome >= $POLKIT_GNOME_REQUIRED, have_polkit=yes, have_polkit=no)
|
|
||||||
- if test "x$enable_polkit" = "xyes" -a "x$have_polkit" = "xno"; then
|
|
||||||
- AC_MSG_ERROR([PolicyKit support explicitly requested but dependencies not found])
|
|
||||||
- fi
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-if test "x$have_polkit" = "xyes"; then
|
|
||||||
- AC_DEFINE(HAVE_POLKIT_GNOME, [1], [whether PolKit GNOME was found])
|
|
||||||
-fi
|
|
||||||
|
|
||||||
dnl ====================================================================
|
|
||||||
dnl Option to set the default window manager
|
|
||||||
Index: gnome-session-2.27.5/gnome-session/gsm-consolekit.c
|
|
||||||
===================================================================
|
|
||||||
--- gnome-session-2.27.5.orig/gnome-session/gsm-consolekit.c
|
|
||||||
+++ gnome-session-2.27.5/gnome-session/gsm-consolekit.c
|
|
||||||
@@ -31,10 +31,6 @@
|
|
||||||
#include <dbus/dbus-glib.h>
|
|
||||||
#include <dbus/dbus-glib-lowlevel.h>
|
|
||||||
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
-#include <polkit-gnome/polkit-gnome.h>
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
#include "gsm-marshal.h"
|
|
||||||
#include "gsm-consolekit.h"
|
|
||||||
|
|
||||||
@@ -465,177 +461,6 @@ emit_stop_complete (GsmConsolekit *manag
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
-static void
|
|
||||||
-system_restart_auth_cb (PolKitAction *action,
|
|
||||||
- gboolean gained_privilege,
|
|
||||||
- GError *error,
|
|
||||||
- GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
- GError *local_error;
|
|
||||||
- gboolean res;
|
|
||||||
-
|
|
||||||
- if (!gained_privilege) {
|
|
||||||
- if (error != NULL) {
|
|
||||||
- emit_restart_complete (manager, error);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- local_error = NULL;
|
|
||||||
-
|
|
||||||
- res = try_system_restart (manager->priv->dbus_connection, &local_error);
|
|
||||||
-
|
|
||||||
- if (!res) {
|
|
||||||
- g_warning ("Unable to restart system: %s", local_error->message);
|
|
||||||
- emit_restart_complete (manager, local_error);
|
|
||||||
- g_error_free (local_error);
|
|
||||||
- } else {
|
|
||||||
- emit_restart_complete (manager, NULL);
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static void
|
|
||||||
-system_stop_auth_cb (PolKitAction *action,
|
|
||||||
- gboolean gained_privilege,
|
|
||||||
- GError *error,
|
|
||||||
- GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
- GError *local_error;
|
|
||||||
- gboolean res;
|
|
||||||
-
|
|
||||||
- if (!gained_privilege) {
|
|
||||||
- if (error != NULL) {
|
|
||||||
- emit_stop_complete (manager, error);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- local_error = NULL;
|
|
||||||
-
|
|
||||||
- res = try_system_stop (manager->priv->dbus_connection, &local_error);
|
|
||||||
-
|
|
||||||
- if (!res) {
|
|
||||||
- g_warning ("Unable to stop system: %s", local_error->message);
|
|
||||||
- emit_stop_complete (manager, local_error);
|
|
||||||
- g_error_free (local_error);
|
|
||||||
- } else {
|
|
||||||
- emit_stop_complete (manager, NULL);
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static PolKitAction *
|
|
||||||
-get_action_from_error (GError *error)
|
|
||||||
-{
|
|
||||||
- PolKitAction *action;
|
|
||||||
- char *paction;
|
|
||||||
-
|
|
||||||
- action = polkit_action_new ();
|
|
||||||
-
|
|
||||||
- paction = NULL;
|
|
||||||
- if (g_str_has_prefix (error->message, "Not privileged for action: ")) {
|
|
||||||
- paction = g_strdup (error->message + strlen ("Not privileged for action: "));
|
|
||||||
- if (paction != NULL) {
|
|
||||||
- char *p;
|
|
||||||
-
|
|
||||||
- /* after 0.2.10 the error also includes the PK results */
|
|
||||||
- p = strchr (paction, ' ');
|
|
||||||
- if (p != NULL) {
|
|
||||||
- *p = '\0';
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- polkit_action_set_action_id (action, paction);
|
|
||||||
-
|
|
||||||
- g_free (paction);
|
|
||||||
-
|
|
||||||
- return action;
|
|
||||||
-}
|
|
||||||
-#endif /* HAVE_POLKIT_GNOME */
|
|
||||||
-
|
|
||||||
-static void
|
|
||||||
-request_restart_priv (GsmConsolekit *manager,
|
|
||||||
- GError *error)
|
|
||||||
-{
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
- PolKitAction *action;
|
|
||||||
- pid_t pid;
|
|
||||||
- gboolean res = FALSE;
|
|
||||||
- guint xid;
|
|
||||||
- GError *local_error;
|
|
||||||
-
|
|
||||||
- action = get_action_from_error (error);
|
|
||||||
-
|
|
||||||
- xid = 0;
|
|
||||||
- pid = getpid ();
|
|
||||||
-
|
|
||||||
- local_error = NULL;
|
|
||||||
- res = polkit_gnome_auth_obtain (action,
|
|
||||||
- xid,
|
|
||||||
- pid,
|
|
||||||
- (PolKitGnomeAuthCB) system_restart_auth_cb,
|
|
||||||
- manager,
|
|
||||||
- &local_error);
|
|
||||||
-
|
|
||||||
- polkit_action_unref (action);
|
|
||||||
-
|
|
||||||
- if (!res) {
|
|
||||||
- if (local_error != NULL) {
|
|
||||||
- g_warning ("Unable to obtain auth to restart system: %s",
|
|
||||||
- local_error->message);
|
|
||||||
-
|
|
||||||
- emit_restart_complete (manager, local_error);
|
|
||||||
- g_error_free (local_error);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-#else
|
|
||||||
- g_assert_not_reached ();
|
|
||||||
-#endif /* HAVE POLKIT */
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static void
|
|
||||||
-request_stop_priv (GsmConsolekit *manager,
|
|
||||||
- GError *error)
|
|
||||||
-{
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
- PolKitAction *action;
|
|
||||||
- pid_t pid;
|
|
||||||
- gboolean res = FALSE;
|
|
||||||
- guint xid;
|
|
||||||
- GError *local_error;
|
|
||||||
-
|
|
||||||
- action = get_action_from_error (error);
|
|
||||||
-
|
|
||||||
- xid = 0;
|
|
||||||
- pid = getpid ();
|
|
||||||
-
|
|
||||||
- local_error = NULL;
|
|
||||||
- res = polkit_gnome_auth_obtain (action,
|
|
||||||
- xid,
|
|
||||||
- pid,
|
|
||||||
- (PolKitGnomeAuthCB) system_stop_auth_cb,
|
|
||||||
- manager,
|
|
||||||
- &local_error);
|
|
||||||
-
|
|
||||||
- polkit_action_unref (action);
|
|
||||||
-
|
|
||||||
- if (!res) {
|
|
||||||
- if (local_error != NULL) {
|
|
||||||
- g_warning ("Unable to obtain auth to stop system: %s",
|
|
||||||
- local_error->message);
|
|
||||||
-
|
|
||||||
- emit_stop_complete (manager, local_error);
|
|
||||||
- g_error_free (local_error);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-#else
|
|
||||||
- g_assert_not_reached ();
|
|
||||||
-#endif /* HAVE POLKIT */
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void
|
|
||||||
gsm_consolekit_attempt_restart (GsmConsolekit *manager)
|
|
||||||
{
|
|
||||||
@@ -652,16 +477,16 @@ gsm_consolekit_attempt_restart (GsmConso
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- res = try_system_restart (manager->priv->dbus_connection, &error);
|
|
||||||
+ res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
|
|
||||||
+ "Restart",
|
|
||||||
+ INT_MAX,
|
|
||||||
+ error,
|
|
||||||
+ G_TYPE_INVALID,
|
|
||||||
+ G_TYPE_INVALID);
|
|
||||||
|
|
||||||
if (!res) {
|
|
||||||
- if (dbus_g_error_has_name (error, "org.freedesktop.ConsoleKit.Manager.NotPrivileged")) {
|
|
||||||
- request_restart_priv (manager, error);
|
|
||||||
- } else {
|
|
||||||
- g_warning ("Unable to restart system: %s", error->message);
|
|
||||||
- emit_restart_complete (manager, error);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
+ g_warning ("Unable to restart system: %s", error->message);
|
|
||||||
+ emit_restart_complete (manager, error);
|
|
||||||
g_error_free (error);
|
|
||||||
} else {
|
|
||||||
emit_restart_complete (manager, NULL);
|
|
||||||
@@ -684,16 +509,16 @@ gsm_consolekit_attempt_stop (GsmConsolek
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- res = try_system_stop (manager->priv->dbus_connection, &error);
|
|
||||||
+ res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
|
|
||||||
+ "Stop",
|
|
||||||
+ INT_MAX,
|
|
||||||
+ error,
|
|
||||||
+ G_TYPE_INVALID,
|
|
||||||
+ G_TYPE_INVALID);
|
|
||||||
|
|
||||||
if (!res) {
|
|
||||||
- if (dbus_g_error_has_name (error, "org.freedesktop.ConsoleKit.Manager.NotPrivileged")) {
|
|
||||||
- request_stop_priv (manager, error);
|
|
||||||
- } else {
|
|
||||||
- g_warning ("Unable to stop system: %s", error->message);
|
|
||||||
- emit_stop_complete (manager, error);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
+ g_warning ("Unable to stop system: %s", error->message);
|
|
||||||
+ emit_stop_complete (manager, error);
|
|
||||||
g_error_free (error);
|
|
||||||
} else {
|
|
||||||
emit_stop_complete (manager, NULL);
|
|
||||||
@@ -969,347 +794,78 @@ gsm_consolekit_can_switch_user (GsmConso
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
-static PolKitResult
|
|
||||||
-gsm_consolekit_get_result_for_action (GsmConsolekit *manager,
|
|
||||||
- const char *action_id)
|
|
||||||
-{
|
|
||||||
- PolKitGnomeContext *gnome_context;
|
|
||||||
- PolKitAction *action;
|
|
||||||
- PolKitCaller *caller;
|
|
||||||
- DBusError dbus_error;
|
|
||||||
- PolKitError *error;
|
|
||||||
- PolKitResult result;
|
|
||||||
-
|
|
||||||
- gnome_context = polkit_gnome_context_get (NULL);
|
|
||||||
-
|
|
||||||
- if (gnome_context == NULL) {
|
|
||||||
- return POLKIT_RESULT_UNKNOWN;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (gnome_context->pk_tracker == NULL) {
|
|
||||||
- return POLKIT_RESULT_UNKNOWN;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- dbus_error_init (&dbus_error);
|
|
||||||
- caller = polkit_tracker_get_caller_from_pid (gnome_context->pk_tracker,
|
|
||||||
- getpid (),
|
|
||||||
- &dbus_error);
|
|
||||||
- dbus_error_free (&dbus_error);
|
|
||||||
-
|
|
||||||
- if (caller == NULL) {
|
|
||||||
- return POLKIT_RESULT_UNKNOWN;
|
|
||||||
- }
|
|
||||||
+gboolean
|
|
||||||
+gsm_consolekit_get_restart_privileges (GsmConsolekit *manager)
|
|
||||||
+{
|
|
||||||
+ g_signal_emit (G_OBJECT (manager),
|
|
||||||
+ signals [PRIVILEGES_COMPLETED],
|
|
||||||
+ 0, TRUE, TRUE, NULL);
|
|
||||||
|
|
||||||
- action = polkit_action_new ();
|
|
||||||
- if (!polkit_action_set_action_id (action, action_id)) {
|
|
||||||
- polkit_action_unref (action);
|
|
||||||
- polkit_caller_unref (caller);
|
|
||||||
- return POLKIT_RESULT_UNKNOWN;
|
|
||||||
- }
|
|
||||||
+ return TRUE;
|
|
||||||
+}
|
|
||||||
|
|
||||||
- error = NULL;
|
|
||||||
- result = polkit_context_is_caller_authorized (gnome_context->pk_context,
|
|
||||||
- action, caller, FALSE,
|
|
||||||
- &error);
|
|
||||||
- if (polkit_error_is_set (error)) {
|
|
||||||
- polkit_error_free (error);
|
|
||||||
- }
|
|
||||||
- polkit_action_unref (action);
|
|
||||||
- polkit_caller_unref (caller);
|
|
||||||
+gboolean
|
|
||||||
+gsm_consolekit_get_stop_privileges (GsmConsolekit *manager)
|
|
||||||
+{
|
|
||||||
+ g_signal_emit (G_OBJECT (manager),
|
|
||||||
+ signals [PRIVILEGES_COMPLETED],
|
|
||||||
+ 0, TRUE, TRUE, NULL);
|
|
||||||
|
|
||||||
- return result;
|
|
||||||
+ return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static gboolean
|
|
||||||
-gsm_consolekit_can_do_action (GsmConsolekit *manager,
|
|
||||||
- const char *action_id)
|
|
||||||
+gboolean
|
|
||||||
+gsm_consolekit_can_restart (GsmConsolekit *manager)
|
|
||||||
{
|
|
||||||
- PolKitResult result;
|
|
||||||
- gboolean res;
|
|
||||||
- GError *error;
|
|
||||||
+ gboolean res;
|
|
||||||
+ gboolean can_restart;
|
|
||||||
+ GError *error;
|
|
||||||
|
|
||||||
error = NULL;
|
|
||||||
- res = gsm_consolekit_ensure_ck_connection (manager, &error);
|
|
||||||
- if (!res) {
|
|
||||||
+
|
|
||||||
+ if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {
|
|
||||||
g_warning ("Could not connect to ConsoleKit: %s",
|
|
||||||
error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
- return FALSE;
|
|
||||||
+ return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- result = gsm_consolekit_get_result_for_action (manager, action_id);
|
|
||||||
-
|
|
||||||
- return result != POLKIT_RESULT_NO && result != POLKIT_RESULT_UNKNOWN;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static gboolean
|
|
||||||
-gsm_consolekit_is_session_for_other_user (GsmConsolekit *manager,
|
|
||||||
- const char *object_path,
|
|
||||||
- unsigned int current_uid)
|
|
||||||
-{
|
|
||||||
- DBusGProxy *proxy;
|
|
||||||
- gboolean res;
|
|
||||||
- char *type;
|
|
||||||
- unsigned int uid;
|
|
||||||
-
|
|
||||||
- proxy = dbus_g_proxy_new_for_name (manager->priv->dbus_connection,
|
|
||||||
- CK_NAME,
|
|
||||||
- object_path,
|
|
||||||
- CK_SESSION_INTERFACE);
|
|
||||||
-
|
|
||||||
- res = dbus_g_proxy_call_with_timeout (proxy,
|
|
||||||
- "GetUnixUser",
|
|
||||||
- INT_MAX,
|
|
||||||
- NULL,
|
|
||||||
- /* parameters: */
|
|
||||||
- G_TYPE_INVALID,
|
|
||||||
- /* return values: */
|
|
||||||
- G_TYPE_UINT, &uid,
|
|
||||||
- G_TYPE_INVALID);
|
|
||||||
-
|
|
||||||
- /* error is bad: we consider there's another user */
|
|
||||||
- if (!res)
|
|
||||||
- return TRUE;
|
|
||||||
-
|
|
||||||
- if (uid == current_uid)
|
|
||||||
- return FALSE;
|
|
||||||
-
|
|
||||||
- /* filter out login sessions */
|
|
||||||
- res = dbus_g_proxy_call_with_timeout (proxy,
|
|
||||||
- "GetSessionType",
|
|
||||||
+ res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
|
|
||||||
+ "CanRestart",
|
|
||||||
INT_MAX,
|
|
||||||
- NULL,
|
|
||||||
- /* parameters: */
|
|
||||||
+ error,
|
|
||||||
G_TYPE_INVALID,
|
|
||||||
- /* return values: */
|
|
||||||
- G_TYPE_STRING, &type,
|
|
||||||
+ G_TYPE_BOOLEAN, &can_restart,
|
|
||||||
G_TYPE_INVALID);
|
|
||||||
|
|
||||||
- /* error is bad: we consider there's another user */
|
|
||||||
- if (!res)
|
|
||||||
- return TRUE;
|
|
||||||
-
|
|
||||||
- if (g_strcmp0 (type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW) == 0) {
|
|
||||||
- g_free (type);
|
|
||||||
- return FALSE;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- g_free (type);
|
|
||||||
-
|
|
||||||
- return TRUE;
|
|
||||||
+ return can_restart;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static gboolean
|
|
||||||
-gsm_consolekit_is_single_user (GsmConsolekit *manager)
|
|
||||||
+gboolean
|
|
||||||
+gsm_consolekit_can_stop (GsmConsolekit *manager)
|
|
||||||
{
|
|
||||||
- DBusGProxy *proxy;
|
|
||||||
- GError *error;
|
|
||||||
- gboolean res;
|
|
||||||
- gboolean single;
|
|
||||||
- GPtrArray *array;
|
|
||||||
- unsigned int current_uid;
|
|
||||||
- int i;
|
|
||||||
-
|
|
||||||
- /* We use the same logic than the one used by ConsoleKit here -- it'd
|
|
||||||
- * be nice to have a ConsoleKit API to help us, but well...
|
|
||||||
- * If there's any error, we just assume it's multiple users. */
|
|
||||||
-
|
|
||||||
- proxy = dbus_g_proxy_new_for_name (manager->priv->dbus_connection,
|
|
||||||
- CK_NAME,
|
|
||||||
- CK_MANAGER_PATH,
|
|
||||||
- CK_MANAGER_INTERFACE);
|
|
||||||
+ gboolean res;
|
|
||||||
+ gboolean can_stop;
|
|
||||||
+ GError *error;
|
|
||||||
|
|
||||||
error = NULL;
|
|
||||||
- res = dbus_g_proxy_call_with_timeout (proxy,
|
|
||||||
- "GetSessions",
|
|
||||||
- INT_MAX,
|
|
||||||
- &error,
|
|
||||||
- /* parameters: */
|
|
||||||
- G_TYPE_INVALID,
|
|
||||||
- /* return values: */
|
|
||||||
- dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH), &array,
|
|
||||||
- G_TYPE_INVALID);
|
|
||||||
-
|
|
||||||
- if (!res) {
|
|
||||||
- g_warning ("Unable to list sessions: %s", error->message);
|
|
||||||
- g_error_free (error);
|
|
||||||
- return FALSE;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- single = TRUE;
|
|
||||||
- current_uid = getuid ();
|
|
||||||
-
|
|
||||||
- for (i = 0; i < array->len; i++) {
|
|
||||||
- char *object_path;
|
|
||||||
-
|
|
||||||
- object_path = g_ptr_array_index (array, i);
|
|
||||||
-
|
|
||||||
- if (gsm_consolekit_is_session_for_other_user (manager,
|
|
||||||
- object_path,
|
|
||||||
- current_uid)) {
|
|
||||||
- single = FALSE;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- g_ptr_array_foreach (array, (GFunc) g_free, NULL);
|
|
||||||
- g_ptr_array_free (array, TRUE);
|
|
||||||
-
|
|
||||||
- return single;
|
|
||||||
-}
|
|
||||||
|
|
||||||
-static void
|
|
||||||
-obtain_privileges_cb (PolKitAction *action,
|
|
||||||
- gboolean gained_privilege,
|
|
||||||
- GError *error,
|
|
||||||
- GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
- g_signal_emit (G_OBJECT (manager),
|
|
||||||
- signals [PRIVILEGES_COMPLETED],
|
|
||||||
- 0, gained_privilege, FALSE, error);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static gboolean
|
|
||||||
-gsm_consolekit_obtain_privileges_for_action (GsmConsolekit *manager,
|
|
||||||
- const char *action_id)
|
|
||||||
-{
|
|
||||||
- PolKitAction *action;
|
|
||||||
- pid_t pid;
|
|
||||||
- guint xid;
|
|
||||||
- gboolean res;
|
|
||||||
-
|
|
||||||
- action = polkit_action_new ();
|
|
||||||
- polkit_action_set_action_id (action, action_id);
|
|
||||||
-
|
|
||||||
- xid = 0;
|
|
||||||
- pid = getpid ();
|
|
||||||
-
|
|
||||||
- res = polkit_gnome_auth_obtain (action,
|
|
||||||
- xid,
|
|
||||||
- pid,
|
|
||||||
- (PolKitGnomeAuthCB) obtain_privileges_cb,
|
|
||||||
- manager,
|
|
||||||
- NULL);
|
|
||||||
-
|
|
||||||
- polkit_action_unref (action);
|
|
||||||
-
|
|
||||||
- return res;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static gboolean
|
|
||||||
-gsm_consolekit_get_privileges_for_actions (GsmConsolekit *manager,
|
|
||||||
- const char *single_action_id,
|
|
||||||
- const char *multiple_action_id)
|
|
||||||
-{
|
|
||||||
- PolKitResult result;
|
|
||||||
- gboolean res;
|
|
||||||
- GError *error;
|
|
||||||
- const char *action_id;
|
|
||||||
-
|
|
||||||
- error = NULL;
|
|
||||||
- res = gsm_consolekit_ensure_ck_connection (manager, &error);
|
|
||||||
- if (!res) {
|
|
||||||
+ if (!gsm_consolekit_ensure_ck_connection (manager, &error)) {
|
|
||||||
g_warning ("Could not connect to ConsoleKit: %s",
|
|
||||||
error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
- return FALSE;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (gsm_consolekit_is_single_user (manager)) {
|
|
||||||
- action_id = single_action_id;
|
|
||||||
- } else {
|
|
||||||
- action_id = multiple_action_id;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- result = gsm_consolekit_get_result_for_action (manager, action_id);
|
|
||||||
-
|
|
||||||
- switch (result) {
|
|
||||||
- case POLKIT_RESULT_UNKNOWN:
|
|
||||||
- case POLKIT_RESULT_NO:
|
|
||||||
- return FALSE;
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH:
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_SESSION:
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_ALWAYS:
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_SELF_AUTH:
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_SESSION:
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_ALWAYS:
|
|
||||||
- if (!gsm_consolekit_obtain_privileges_for_action (manager,
|
|
||||||
- action_id)) {
|
|
||||||
- /* if the call doesn't work, then we were not even able
|
|
||||||
- * to do the call requesting the privileges: the setup
|
|
||||||
- * is likely broken */
|
|
||||||
- return FALSE;
|
|
||||||
- }
|
|
||||||
- break;
|
|
||||||
- case POLKIT_RESULT_YES:
|
|
||||||
- g_signal_emit (G_OBJECT (manager),
|
|
||||||
- signals [PRIVILEGES_COMPLETED],
|
|
||||||
- 0, TRUE, FALSE, NULL);
|
|
||||||
- break;
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_ONE_SHOT:
|
|
||||||
- case POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT:
|
|
||||||
- g_signal_emit (G_OBJECT (manager),
|
|
||||||
- signals [PRIVILEGES_COMPLETED],
|
|
||||||
- 0, TRUE, TRUE, NULL);
|
|
||||||
- break;
|
|
||||||
- default:
|
|
||||||
- g_assert_not_reached ();
|
|
||||||
- break;
|
|
||||||
+ return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- return TRUE;
|
|
||||||
-}
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-gboolean
|
|
||||||
-gsm_consolekit_get_restart_privileges (GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
- return gsm_consolekit_get_privileges_for_actions (manager,
|
|
||||||
- "org.freedesktop.consolekit.system.restart",
|
|
||||||
- "org.freedesktop.consolekit.system.restart-multiple-users");
|
|
||||||
-#else
|
|
||||||
- g_debug ("GsmConsolekit: built without PolicyKit-gnome support");
|
|
||||||
- return FALSE;
|
|
||||||
-#endif
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-gboolean
|
|
||||||
-gsm_consolekit_get_stop_privileges (GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
- return gsm_consolekit_get_privileges_for_actions (manager,
|
|
||||||
- "org.freedesktop.consolekit.system.stop",
|
|
||||||
- "org.freedesktop.consolekit.system.stop-multiple-users");
|
|
||||||
-#else
|
|
||||||
- g_debug ("GsmConsolekit: built without PolicyKit-gnome support");
|
|
||||||
- return FALSE;
|
|
||||||
-#endif
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-gboolean
|
|
||||||
-gsm_consolekit_can_restart (GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
- return gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.restart") ||
|
|
||||||
- gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.restart-multiple-users");
|
|
||||||
-#else
|
|
||||||
- g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot restart system");
|
|
||||||
- return FALSE;
|
|
||||||
-#endif
|
|
||||||
-}
|
|
||||||
+ res = dbus_g_proxy_call_with_timeout (manager->priv->ck_proxy,
|
|
||||||
+ "CanStop",
|
|
||||||
+ INT_MAX,
|
|
||||||
+ error,
|
|
||||||
+ G_TYPE_INVALID,
|
|
||||||
+ G_TYPE_BOOLEAN, &can_stop,
|
|
||||||
+ G_TYPE_INVALID);
|
|
||||||
|
|
||||||
-gboolean
|
|
||||||
-gsm_consolekit_can_stop (GsmConsolekit *manager)
|
|
||||||
-{
|
|
||||||
-#ifdef HAVE_POLKIT_GNOME
|
|
||||||
- return gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.stop") ||
|
|
||||||
- gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.stop-multiple-users");
|
|
||||||
-#else
|
|
||||||
- g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot stop system");
|
|
||||||
- return FALSE;
|
|
||||||
-#endif
|
|
||||||
+ return can_stop;
|
|
||||||
}
|
|
||||||
|
|
||||||
gchar *
|
|
||||||
Index: gnome-session-2.27.5/gnome-session/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- gnome-session-2.27.5.orig/gnome-session/Makefile.am
|
|
||||||
+++ gnome-session-2.27.5/gnome-session/Makefile.am
|
|
||||||
@@ -16,7 +16,6 @@ INCLUDES = \
|
|
||||||
$(ICE_CFLAGS) \
|
|
||||||
$(GNOME_SESSION_CFLAGS) \
|
|
||||||
$(GCONF_CFLAGS) \
|
|
||||||
- $(POLKIT_GNOME_CFLAGS) \
|
|
||||||
-I$(top_srcdir)/egg \
|
|
||||||
-DLOCALE_DIR=\""$(datadir)/locale"\" \
|
|
||||||
-DDATA_DIR=\""$(datadir)/gnome-session"\" \
|
|
||||||
@@ -51,7 +50,6 @@ gnome_session_LDADD = \
|
|
||||||
$(ICE_LIBS) \
|
|
||||||
$(GNOME_SESSION_LIBS) \
|
|
||||||
$(GCONF_LIBS) \
|
|
||||||
- $(POLKIT_GNOME_LIBS) \
|
|
||||||
$(XRENDER_LIBS) \
|
|
||||||
$(XTEST_LIBS) \
|
|
||||||
$(EXECINFO_LIBS) \
|
|
@ -1,3 +1,26 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 26 09:45:21 CEST 2009 - vuntz@novell.com
|
||||||
|
|
||||||
|
- Update to version 2.27.91:
|
||||||
|
+ Install splash desktop file in $(sysconfdir)/xdg/autostart
|
||||||
|
+ Do not install gnome-splash.png unless --enable-splash is used
|
||||||
|
+ Fix idle watch not working
|
||||||
|
+ Fix typo in debug message
|
||||||
|
+ Use GTK+ accessor functions instead direct access
|
||||||
|
+ Remove deprecated Encoding key from desktop file
|
||||||
|
+ Port to PolicyKit 1
|
||||||
|
+ Remove dependency on PolicyKit libraries
|
||||||
|
+ Updated translations.
|
||||||
|
- Drop gnome-session-polkit1.patch: fixed upstream.
|
||||||
|
- Respin gnome-session-bgo507101-tile-ui.patch.
|
||||||
|
- Use spec-cleaner to reorder lines in preamble.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 19 23:13:34 CEST 2009 - vuntz@novell.com
|
||||||
|
|
||||||
|
- Add Requires on ConsoleKit: it's needed to have gnome-session
|
||||||
|
work properly.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Aug 6 17:20:06 CEST 2009 - vuntz@novell.com
|
Thu Aug 6 17:20:06 CEST 2009 - vuntz@novell.com
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package gnome-session (Version 2.27.5)
|
# spec file for package gnome-session (Version 2.27.91)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -15,26 +15,15 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
# norootforbuild
|
|
||||||
|
|
||||||
|
|
||||||
Name: gnome-session
|
Name: gnome-session
|
||||||
BuildRequires: DeviceKit-power-devel
|
Version: 2.27.91
|
||||||
BuildRequires: gnome-common
|
Release: 1
|
||||||
BuildRequires: fdupes
|
|
||||||
BuildRequires: gconf2-devel
|
|
||||||
BuildRequires: gnome-patch-translation
|
|
||||||
BuildRequires: gnome-settings-daemon-devel
|
|
||||||
BuildRequires: hicolor-icon-theme
|
|
||||||
BuildRequires: intltool
|
|
||||||
BuildRequires: tcpd-devel
|
|
||||||
BuildRequires: update-desktop-files
|
|
||||||
License: GPL v2 or later ; LGPL v2.1 or later
|
License: GPL v2 or later ; LGPL v2.1 or later
|
||||||
Group: System/GUI/GNOME
|
|
||||||
Version: 2.27.5
|
|
||||||
Release: 3
|
|
||||||
Summary: Session Tools for the GNOME 2.x Desktop
|
Summary: Session Tools for the GNOME 2.x Desktop
|
||||||
Url: http://www.gnome.org
|
Url: http://www.gnome.org
|
||||||
|
Group: System/GUI/GNOME
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Source1: gnome
|
Source1: gnome
|
||||||
Source2: gnome.desktop
|
Source2: gnome.desktop
|
||||||
@ -50,10 +39,18 @@ Patch2: gnome-session-wm-switch.patch
|
|||||||
Patch3: gnome-session-bgo507101-tile-ui.patch
|
Patch3: gnome-session-bgo507101-tile-ui.patch
|
||||||
# PATCH-FEATURE-OPENSUSE gnome-session-enable-disable-compiz.patch vuntz@novell.com -- Integration with enable-compiz/disable-compiz files generated by ccsm
|
# PATCH-FEATURE-OPENSUSE gnome-session-enable-disable-compiz.patch vuntz@novell.com -- Integration with enable-compiz/disable-compiz files generated by ccsm
|
||||||
Patch4: gnome-session-enable-disable-compiz.patch
|
Patch4: gnome-session-enable-disable-compiz.patch
|
||||||
# PATCH-FIX-UPSTREAM gnome-session-polkit1.patch bgo585614 vuntz@novell.com -- Port to polkit1
|
BuildRequires: DeviceKit-power-devel
|
||||||
Patch5: gnome-session-polkit1.patch
|
BuildRequires: fdupes
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRequires: gconf2-devel
|
||||||
Obsoletes: gnome-core
|
BuildRequires: gnome-common
|
||||||
|
BuildRequires: gnome-patch-translation
|
||||||
|
BuildRequires: gnome-settings-daemon-devel
|
||||||
|
BuildRequires: hicolor-icon-theme
|
||||||
|
BuildRequires: intltool
|
||||||
|
BuildRequires: tcpd-devel
|
||||||
|
BuildRequires: update-desktop-files
|
||||||
|
Requires: %{name}-lang = %{version}
|
||||||
|
Requires: ConsoleKit
|
||||||
Requires: dbus-1-x11
|
Requires: dbus-1-x11
|
||||||
Requires: hicolor-icon-theme
|
Requires: hicolor-icon-theme
|
||||||
# Programs that are in the default session (we use Requires since Recommends
|
# Programs that are in the default session (we use Requires since Recommends
|
||||||
@ -63,25 +60,17 @@ Requires: gnome-panel
|
|||||||
Requires: gnome-settings-daemon
|
Requires: gnome-settings-daemon
|
||||||
Requires: metacity
|
Requires: metacity
|
||||||
Requires: nautilus
|
Requires: nautilus
|
||||||
Requires: %{name}-lang = %{version}
|
Obsoletes: gnome-core
|
||||||
# There's no splash anymore, so no branding package.
|
# There's no splash anymore, so no branding package.
|
||||||
Provides: %{name}-branding = %{version}
|
Provides: %{name}-branding = %{version}
|
||||||
Obsoletes: %{name}-branding <= %{version}
|
Obsoletes: %{name}-branding <= %{version}
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
%gconf_schemas_prereq
|
%gconf_schemas_prereq
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package provides the basic session tools, like session management
|
This package provides the basic session tools, like session management
|
||||||
functionality, for the GNOME 2.x Desktop.
|
functionality, for the GNOME 2.x Desktop.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Authors:
|
|
||||||
--------
|
|
||||||
Tom Tromey <tromey@cygnus.com>
|
|
||||||
Felix Bellaby <felix@pooh.u-net.com>
|
|
||||||
Ralph Mor, X Consortium
|
|
||||||
|
|
||||||
|
|
||||||
%lang_package
|
%lang_package
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
@ -92,7 +81,6 @@ gnome-patch-translation-prepare
|
|||||||
#%patch2 -p1
|
#%patch2 -p1
|
||||||
%patch3 -p0
|
%patch3 -p0
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
|
||||||
gnome-patch-translation-update
|
gnome-patch-translation-update
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -106,25 +94,25 @@ NOCONFIGURE=1 gnome-autogen.sh
|
|||||||
%makeinstall
|
%makeinstall
|
||||||
#
|
#
|
||||||
# install startup script and xsession file
|
# install startup script and xsession file
|
||||||
install -d -m755 $RPM_BUILD_ROOT%{_bindir}
|
install -d -m755 %{buildroot}%{_bindir}
|
||||||
install -m755 %SOURCE1 $RPM_BUILD_ROOT%{_bindir}/gnome
|
install -m755 %SOURCE1 %{buildroot}%{_bindir}/gnome
|
||||||
install -d -m755 $RPM_BUILD_ROOT%{_datadir}/xsessions
|
install -d -m755 %{buildroot}%{_datadir}/xsessions
|
||||||
install -m644 %SOURCE2 $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome.desktop
|
install -m644 %SOURCE2 %{buildroot}%{_datadir}/xsessions/gnome.desktop
|
||||||
install -m644 %{S:7} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps/
|
install -m644 %{S:7} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
|
||||||
%suse_update_desktop_file at-spi-registryd-wrapper
|
%suse_update_desktop_file at-spi-registryd-wrapper
|
||||||
%suse_update_desktop_file gnome-settings-daemon-helper
|
%suse_update_desktop_file gnome-settings-daemon-helper
|
||||||
%suse_update_desktop_file gnome-wm
|
%suse_update_desktop_file gnome-wm
|
||||||
%suse_update_desktop_file session-properties X-SuSE-ControlCenter-System
|
%suse_update_desktop_file session-properties X-SuSE-ControlCenter-System
|
||||||
%suse_update_desktop_file $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome.desktop
|
%suse_update_desktop_file %{buildroot}%{_datadir}/xsessions/gnome.desktop
|
||||||
%find_lang %{name}-2.0
|
%find_lang %{name}-2.0
|
||||||
%find_gconf_schemas
|
%find_gconf_schemas
|
||||||
cat %{name}.schemas_list >%{name}.lst
|
cat %{name}.schemas_list >%{name}.lst
|
||||||
# Temporary workaround: still installed by the package
|
# Temporary workaround: still installed by the package
|
||||||
rm -f %{buildroot}%{_datadir}/pixmaps/splash/gnome-splash.png
|
rm -f %{buildroot}%{_datadir}/pixmaps/splash/gnome-splash.png
|
||||||
%fdupes $RPM_BUILD_ROOT
|
%fdupes %{buildroot}
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
%pre -f %{name}.schemas_pre
|
%pre -f %{name}.schemas_pre
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user