From 190d50be1a081a1a883fa59826b9d69f1c79da9d Mon Sep 17 00:00:00 2001 From: NP-Hardass Date: Thu, 11 Aug 2016 16:05:29 -0400 Subject: mate-base/mate-session-manager: 1.12.x vbump, add gtk3, import from project repo Package-Manager: portage-2.3.0 --- mate-base/mate-session-manager/Manifest | 1 + ...te-session-manager-1.12.2-save-session-ui.patch | 535 +++++++++++++++++++++ .../mate-session-manager-1.12.2-r1.ebuild | 90 ++++ mate-base/mate-session-manager/metadata.xml | 3 + 4 files changed, 629 insertions(+) create mode 100644 mate-base/mate-session-manager/files/mate-session-manager-1.12.2-save-session-ui.patch create mode 100644 mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild (limited to 'mate-base/mate-session-manager') diff --git a/mate-base/mate-session-manager/Manifest b/mate-base/mate-session-manager/Manifest index 208104e1dd98..817a66331ef1 100644 --- a/mate-base/mate-session-manager/Manifest +++ b/mate-base/mate-session-manager/Manifest @@ -1 +1,2 @@ DIST mate-session-manager-1.10.3.tar.xz 538432 SHA256 c73546a77c7fe0a50f8c8c7da02f654df28fa744abb2a661adaaf6c34b8a5de0 SHA512 9ab341bf0d618e440b9caa0c1a091b5628ab73ff75274b5b62deb0b3bdd3a4a119c1e7312dfa7b2ca17afaeda93d9ae9d4a2e830bdff196b64888baf9f265b89 WHIRLPOOL 5601c1bd25972645d3671fd38a0cacf51edd5ab3de78f401695c3847fcccf64a43463d85c6d951740fe1709cfae9af0cfb382b2ee617664967eb664f589e2561 +DIST mate-session-manager-1.12.2.tar.xz 538832 SHA256 bd4221e654a425f7cf05a8b5073dfa10b2f4f99b6e9c2f0b331e0f82142edf93 SHA512 4b4a3ecb0f7cbb25e17db8c5833f789858c94fb236ed60b9e98f59cffa320ec32c2b1960fdcbb9c2c9f476ed76cb1f37c3e07746c7c90e08a0dbcc62aac9793e WHIRLPOOL c7ed6044f99b639716e84135674d4c7e4b001d1284c07f2f0fda6c70e6e2aa420574020fc6f1a53d96b420d7e5ba98c82ca6aeab2168e9494c78729ab1fcbf98 diff --git a/mate-base/mate-session-manager/files/mate-session-manager-1.12.2-save-session-ui.patch b/mate-base/mate-session-manager/files/mate-session-manager-1.12.2-save-session-ui.patch new file mode 100644 index 000000000000..e7040f47f45a --- /dev/null +++ b/mate-base/mate-session-manager/files/mate-session-manager-1.12.2-save-session-ui.patch @@ -0,0 +1,535 @@ +diff -burN a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c +--- a/capplet/gsm-properties-dialog.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/capplet/gsm-properties-dialog.c 2012-08-08 12:16:37.527332034 +0200 +@@ -26,6 +26,8 @@ + #include + #include + #include ++#include ++#include + + #include + +@@ -36,6 +38,11 @@ + #include "gsp-app.h" + #include "gsp-app-manager.h" + ++ ++#define GSM_SERVICE_DBUS "org.gnome.SessionManager" ++#define GSM_PATH_DBUS "/org.gnome.SessionManager" ++#define GSM_INTERFACE_DBUS "org.gnome.SessionManager" ++ + #define GSM_PROPERTIES_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogPrivate)) + + #define IS_STRING_EMPTY(x) ((x)==NULL||(x)[0]=='\0') +@@ -50,6 +57,7 @@ + #define CAPPLET_DELETE_WIDGET_NAME "session_properties_delete_button" + #define CAPPLET_EDIT_WIDGET_NAME "session_properties_edit_button" + #define CAPPLET_SAVE_WIDGET_NAME "session_properties_save_button" ++#define CAPPLET_SESSION_SAVED_WIDGET_NAME "session_properties_session_saved_label" + #define CAPPLET_REMEMBER_WIDGET_NAME "session_properties_remember_toggle" + + #define STARTUP_APP_ICON "system-run" +@@ -493,10 +501,66 @@ + } + + static void ++session_saved_message (GsmPropertiesDialog *dialog, ++ const char *msg, ++ gboolean is_error) ++{ ++ GtkLabel *label; ++ gchar *markup; ++ ++ label = GTK_LABEL (gtk_builder_get_object (dialog->priv->xml, CAPPLET_SESSION_SAVED_WIDGET_NAME)); ++ if (is_error) ++ markup = g_markup_printf_escaped ("%s", msg); ++ else ++ markup = g_markup_escape_text (msg, -1); ++ ++ gtk_label_set_markup (label, markup); ++ g_free (markup); ++} ++ ++static void ++session_saved_cb (DBusGProxy *proxy, ++ DBusGProxyCall *call_id, ++ void *user_data) ++{ ++ gboolean res; ++ GsmPropertiesDialog *dialog = user_data; ++ ++ res = dbus_g_proxy_end_call (proxy, call_id, NULL, G_TYPE_INVALID); ++ if (res) ++ session_saved_message (dialog, _("Your session has been saved."), FALSE); ++ else ++ session_saved_message (dialog, _("Failed to save session"), TRUE); ++ ++ g_object_unref (proxy); ++} ++ ++static void + on_save_session_clicked (GtkWidget *widget, + GsmPropertiesDialog *dialog) + { +- g_debug ("Session saving is not implemented yet!"); ++ DBusGConnection *conn; ++ DBusGProxy *proxy; ++ DBusGProxyCall *call; ++ ++ conn = dbus_g_bus_get (DBUS_BUS_SESSION, NULL); ++ if (conn == NULL) { ++ session_saved_message (dialog, _("Could not connect to the session bus"), TRUE); ++ return; ++ } ++ ++ proxy = dbus_g_proxy_new_for_name (conn, GSM_SERVICE_DBUS, GSM_PATH_DBUS, GSM_INTERFACE_DBUS); ++ if (proxy == NULL) { ++ session_saved_message (dialog, _("Could not connect to the session manager"), TRUE); ++ return; ++ } ++ ++ call = dbus_g_proxy_begin_call (proxy, "SaveSession", session_saved_cb, dialog, NULL, G_TYPE_INVALID); ++ if (call == NULL) { ++ session_saved_message (dialog, _("Failed to save session"), TRUE); ++ g_object_unref (proxy); ++ return; ++ } + } + + static void +diff -burN a/configure.ac b/configure.ac +--- a/configure.ac 2012-02-29 22:03:09.000000000 +0100 ++++ b/configure.ac 2012-08-08 12:18:58.740336360 +0200 +@@ -75,6 +75,7 @@ + PKG_CHECK_MODULES(SESSION_PROPERTIES, + glib-2.0 >= $GLIB_REQUIRED + gtk+-$GTK_API_VERSION >= $GTK_REQUIRED ++ dbus-glib-1 >= $DBUS_GLIB_REQUIRED + ) + + PKG_CHECK_MODULES(SM, sm) +diff -burN a/data/session-properties.ui b/data/session-properties.ui +--- a/data/session-properties.ui 2012-02-29 22:03:08.000000000 +0100 ++++ b/data/session-properties.ui 2012-08-08 12:22:36.619343035 +0200 +@@ -148,6 +148,7 @@ + True + + ++ True + True + True + +@@ -191,6 +192,17 @@ + 1 + + ++ ++ ++ True ++ True ++ ++ ++ False ++ False ++ 2 ++ ++ + + + 1 +diff -burN a/mate-session/gsm-client.c b/mate-session/gsm-client.c +--- a/mate-session/gsm-client.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gsm-client.c 2012-08-08 12:24:20.120346205 +0200 +@@ -510,6 +510,17 @@ + g_signal_emit (client, signals[DISCONNECTED], 0); + } + ++gboolean ++gsm_client_request_save (GsmClient *client, ++ guint flags, ++ GError **error) ++{ ++ g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); ++ ++ return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, flags, error); ++} ++ ++ + GKeyFile * + gsm_client_save (GsmClient *client, + GError **error) +diff -burN a/mate-session/gsm-client.h b/mate-session/gsm-client.h +--- a/mate-session/gsm-client.h 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-client.h 2012-08-08 12:26:38.848350455 +0200 +@@ -94,6 +94,9 @@ + GError **error); + gboolean (*impl_stop) (GsmClient *client, + GError **error); ++ gboolean (*impl_request_save) (GsmClient *client, ++ guint flags, ++ GError **error); + GKeyFile * (*impl_save) (GsmClient *client, + GError **error); + }; +@@ -139,6 +142,10 @@ + + void gsm_client_disconnected (GsmClient *client); + ++gboolean gsm_client_request_save (GsmClient *client, ++ guint flags, ++ GError **error); ++ + GKeyFile *gsm_client_save (GsmClient *client, + GError **error); + /* exported to bus */ +diff -burN a/mate-session/gsm-dbus-client.c b/mate-session/gsm-dbus-client.c +--- a/mate-session/gsm-dbus-client.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gsm-dbus-client.c 2012-08-08 12:38:15.393371794 +0200 +@@ -413,6 +413,19 @@ + G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object); + } + ++static gboolean ++dbus_client_request_save (GsmClient *client, ++ guint flags, ++ GError **error) ++{ ++ g_debug ("GsmDBusClient: sending save request to client with id %s", ++ gsm_client_peek_id (client)); ++ ++ /* FIXME: The protocol does not support this */ ++ ++ return FALSE; ++} ++ + static GKeyFile * + dbus_client_save (GsmClient *client, + GError **error) +@@ -665,6 +678,7 @@ + object_class->set_property = gsm_dbus_client_set_property; + object_class->dispose = gsm_dbus_client_dispose; + ++ client_class->impl_request_save = dbus_client_request_save; + client_class->impl_save = dbus_client_save; + client_class->impl_stop = dbus_client_stop; + client_class->impl_query_end_session = dbus_client_query_end_session; +diff -burN a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c +--- a/mate-session/gsm-manager.c 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-manager.c 2012-08-08 12:47:24.627388620 +0200 +@@ -68,6 +68,7 @@ + #define GSM_MANAGER_DBUS_NAME "org.gnome.SessionManager" + + #define GSM_MANAGER_PHASE_TIMEOUT 30 /* seconds */ ++#define GSM_MANAGER_SAVE_SESSION_TIMEOUT 2 + + #define MDM_FLEXISERVER_COMMAND "mdmflexiserver" + #define MDM_FLEXISERVER_ARGS "--startnew Standard" +@@ -1176,6 +1177,69 @@ + + } + ++static gboolean ++_client_request_save (GsmClient *client, ++ ClientEndSessionData *data) ++{ ++ gboolean ret; ++ GError *error; ++ ++ error = NULL; ++ ret = gsm_client_request_save (client, data->flags, &error); ++ if (ret) { ++ g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client)); ++ data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients, ++ client); ++ } else if (error) { ++ g_debug ("GsmManager: unable to query client: %s", error->message); ++ g_error_free (error); ++ } ++ ++ return FALSE; ++} ++ ++static gboolean ++_client_request_save_helper (const char *id, ++ GsmClient *client, ++ ClientEndSessionData *data) ++{ ++ return _client_request_save (client, data); ++} ++ ++static void ++query_save_session_complete (GsmManager *manager) ++{ ++ GError *error = NULL; ++ ++ if (g_slist_length (manager->priv->next_query_clients) > 0) { ++ ClientEndSessionData data; ++ ++ data.manager = manager; ++ data.flags = GSM_CLIENT_END_SESSION_FLAG_LAST; ++ ++ g_slist_foreach (manager->priv->next_query_clients, ++ (GFunc)_client_request_save, ++ &data); ++ ++ g_slist_free (manager->priv->next_query_clients); ++ manager->priv->next_query_clients = NULL; ++ ++ return; ++ } ++ ++ if (manager->priv->query_timeout_id > 0) { ++ g_source_remove (manager->priv->query_timeout_id); ++ manager->priv->query_timeout_id = 0; ++ } ++ ++ gsm_session_save (manager->priv->clients, &error); ++ ++ if (error) { ++ g_warning ("Error saving session: %s", error->message); ++ g_error_free (error); ++ } ++} ++ + static guint32 + generate_cookie (void) + { +@@ -1250,6 +1314,21 @@ + return FALSE; + } + ++static gboolean ++_on_query_save_session_timeout (GsmManager *manager) ++{ ++ manager->priv->query_timeout_id = 0; ++ ++ g_debug ("GsmManager: query to save session timed out"); ++ ++ g_slist_free (manager->priv->query_clients); ++ manager->priv->query_clients = NULL; ++ ++ query_save_session_complete (manager); ++ ++ return FALSE; ++} ++ + static void + do_phase_query_end_session (GsmManager *manager) + { +@@ -1886,13 +1965,32 @@ + const char *reason, + GsmManager *manager) + { +- /* just ignore if received outside of shutdown */ +- if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) { ++ /* just ignore if we are not yet running */ ++ if (manager->priv->phase < GSM_MANAGER_PHASE_RUNNING) { + return; + } + + g_debug ("GsmManager: Response from end session request: is-ok=%d do-last=%d cancel=%d reason=%s", is_ok, do_last, cancel, reason ? reason :""); + ++ if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) { ++ /* Ignore responses when no requests were sent */ ++ if (manager->priv->query_clients == NULL) { ++ return; ++ } ++ ++ manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client); ++ ++ if (do_last) { ++ manager->priv->next_query_clients = g_slist_prepend (manager->priv->next_query_clients, ++ client); ++ } ++ ++ if (manager->priv->query_clients == NULL) { ++ query_save_session_complete (manager); ++ } ++ return; ++ } ++ + if (cancel) { + cancel_end_session (manager); + return; +@@ -1991,6 +2089,15 @@ + } + + static void ++on_xsmp_client_save_request (GsmXSMPClient *client, ++ gboolean show_dialog, ++ GsmManager *manager) ++{ ++ g_debug ("GsmManager: save_request"); ++ gsm_manager_save_session (manager, NULL); ++} ++ ++static void + on_store_client_added (GsmStore *store, + const char *id, + GsmManager *manager) +@@ -2011,6 +2118,10 @@ + "logout-request", + G_CALLBACK (on_xsmp_client_logout_request), + manager); ++ g_signal_connect (client, ++ "save-request", ++ G_CALLBACK (on_xsmp_client_save_request), ++ manager); + } + + g_signal_connect (client, +@@ -2968,6 +3079,41 @@ + } + + gboolean ++gsm_manager_save_session (GsmManager *manager, ++ GError **error) ++{ ++ ClientEndSessionData data; ++ ++ g_debug ("GsmManager: SaveSession called"); ++ ++ g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE); ++ ++ if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) { ++ g_set_error (error, ++ GSM_MANAGER_ERROR, ++ GSM_MANAGER_ERROR_NOT_IN_RUNNING, ++ "SaveSession interface is only available during the Running phase"); ++ return FALSE; ++ } ++ ++ data.manager = manager; ++ data.flags = 0; ++ gsm_store_foreach (manager->priv->clients, ++ (GsmStoreFunc)_client_request_save_helper, ++ &data); ++ ++ if (manager->priv->query_clients) { ++ manager->priv->query_timeout_id = g_timeout_add_seconds (GSM_MANAGER_SAVE_SESSION_TIMEOUT, ++ (GSourceFunc)_on_query_save_session_timeout, ++ manager); ++ return TRUE; ++ } else { ++ g_debug ("GsmManager: Nothing to save"); ++ return FALSE; ++ } ++} ++ ++gboolean + gsm_manager_can_shutdown (GsmManager *manager, + gboolean *shutdown_available, + GError **error) +diff -burN a/mate-session/gsm-manager.h b/mate-session/gsm-manager.h +--- a/mate-session/gsm-manager.h 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-manager.h 2012-08-08 12:49:14.262391979 +0200 +@@ -154,6 +154,9 @@ + gboolean gsm_manager_shutdown (GsmManager *manager, + GError **error); + ++gboolean gsm_manager_save_session (GsmManager *manager, ++ GError **error); ++ + gboolean gsm_manager_can_shutdown (GsmManager *manager, + gboolean *shutdown_available, + GError **error); +diff -burN a/mate-session/gsm-xsmp-client.c b/mate-session/gsm-xsmp-client.c +--- a/mate-session/gsm-xsmp-client.c 2012-02-29 22:03:08.000000000 +0100 ++++ b/mate-session/gsm-xsmp-client.c 2012-08-08 12:52:27.719397905 +0200 +@@ -69,6 +69,7 @@ + enum { + REGISTER_REQUEST, + LOGOUT_REQUEST, ++ SAVE_REQUEST, + LAST_SIGNAL + }; + +@@ -502,6 +503,31 @@ + return TRUE; + } + ++static gboolean ++xsmp_request_save (GsmClient *client, ++ guint flags, ++ GError **error) ++{ ++ GsmXSMPClient *xsmp = (GsmXSMPClient *) client; ++ ++ g_debug ("GsmXSMPClient: xsmp_request_save ('%s')", xsmp->priv->description); ++ ++ if (xsmp->priv->conn == NULL) { ++ g_set_error (error, ++ GSM_CLIENT_ERROR, ++ GSM_CLIENT_ERROR_NOT_REGISTERED, ++ "Client is not registered"); ++ return FALSE; ++ } ++ ++ if (flags & GSM_CLIENT_END_SESSION_FLAG_LAST) ++ xsmp_save_yourself_phase2 (client); ++ else ++ do_save_yourself (xsmp, SmSaveLocal, FALSE); ++ ++ return TRUE; ++} ++ + static char * + get_desktop_file_path (GsmXSMPClient *client) + { +@@ -976,6 +1002,8 @@ + object_class->get_property = gsm_xsmp_client_get_property; + object_class->set_property = gsm_xsmp_client_set_property; + ++ ++ client_class->impl_request_save = xsmp_request_save; + client_class->impl_save = xsmp_save; + client_class->impl_stop = xsmp_stop; + client_class->impl_query_end_session = xsmp_query_end_session; +@@ -1003,6 +1031,16 @@ + NULL, + NULL, + g_cclosure_marshal_VOID__BOOLEAN, ++ G_TYPE_NONE, ++ 1, G_TYPE_BOOLEAN); ++ signals[SAVE_REQUEST] = ++ g_signal_new ("save-request", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GsmXSMPClientClass, save_request), ++ NULL, ++ NULL, ++ g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, G_TYPE_BOOLEAN); + +diff -burN a/mate-session/gsm-xsmp-client.h b/mate-session/gsm-xsmp-client.h +--- a/mate-session/gsm-xsmp-client.h 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/gsm-xsmp-client.h 2012-08-08 12:53:39.629400108 +0200 +@@ -57,6 +57,8 @@ + gboolean (*logout_request) (GsmXSMPClient *client, + gboolean prompt); + ++ gboolean (*save_request) (GsmXSMPClient *client, ++ gboolean prompt); + + void (*saved_state) (GsmXSMPClient *client); + +diff -burN a/mate-session/org.gnome.SessionManager.xml b/mate-session/org.gnome.SessionManager.xml +--- a/mate-session/org.gnome.SessionManager.xml 2012-02-29 22:03:09.000000000 +0100 ++++ b/mate-session/org.gnome.SessionManager.xml 2012-08-08 12:57:41.216407509 +0200 +@@ -256,6 +256,14 @@ + + + ++ ++ ++ ++ Request to save session ++ ++ ++ ++ + + + diff --git a/mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild b/mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild new file mode 100644 index 000000000000..59b6a77c1bb1 --- /dev/null +++ b/mate-base/mate-session-manager/mate-session-manager-1.12.2-r1.ebuild @@ -0,0 +1,90 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit mate + +if [[ ${PV} != 9999 ]]; then + KEYWORDS="~amd64 ~arm ~x86" +fi + +DESCRIPTION="MATE session manager" +HOMEPAGE="http://mate-desktop.org/" + +LICENSE="GPL-2 LGPL-2 FDL-1.1" +SLOT="0" + +IUSE="debug elibc_FreeBSD gnome-keyring gtk3 ipv6 systemd upower" + +# x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_DIRs, and +# create .config/user-dirs.dirs which is read by glib to get G_USER_DIRECTORY_* +# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnome below). + +RDEPEND=">=dev-libs/dbus-glib-0.76 + >=dev-libs/glib-2.36:2 + dev-libs/libxslt + sys-apps/dbus + x11-apps/xdpyinfo + x11-libs/gdk-pixbuf:2 + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXau + x11-libs/libXext + x11-libs/libXrender + x11-libs/libXtst + x11-libs/pango + x11-libs/xtrans + x11-misc/xdg-user-dirs + x11-misc/xdg-user-dirs-gtk + virtual/libintl + elibc_FreeBSD? ( dev-libs/libexecinfo ) + gnome-keyring? ( gnome-base/gnome-keyring ) + !gtk3? ( >=x11-libs/gtk+-2.14:2 ) + gtk3? ( >=x11-libs/gtk+-3.0:3 ) + systemd? ( sys-apps/systemd ) + upower? ( || ( >=sys-power/upower-0.9.23 >=sys-power/upower-pm-utils-0.9.23 ) )" + +DEPEND="${RDEPEND} + >=dev-util/intltool-0.40:* + >=dev-lang/perl-5 + >=sys-devel/gettext-0.10.40:* + virtual/pkgconfig:* + !mate@gentoo.org Gentoo MATE Desktop + + Build with GTK+3 instead of GTK+2 + mate-desktop/mate-session-manager -- cgit v1.2.3-65-gdbad