mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-08 20:07:50 -04:00
69 lines
2.6 KiB
Plaintext
69 lines
2.6 KiB
Plaintext
$NetBSD: patch-ag,v 1.1 2010/12/04 21:15:00 adam Exp $
|
|
|
|
Updated from http://git.gnome.org/browse/libegg/tree/libegg/smclient
|
|
|
|
--- copy-n-paste/eggsmclient.c.orig 2010-07-15 18:45:38.000000000 +0000
|
|
+++ copy-n-paste/eggsmclient.c
|
|
@@ -202,7 +202,8 @@ sm_client_post_parse_func (GOptionContex
|
|
* use the same client id. */
|
|
g_unsetenv ("DESKTOP_AUTOSTART_ID");
|
|
|
|
- if (EGG_SM_CLIENT_GET_CLASS (client)->startup)
|
|
+ if (global_client_mode != EGG_SM_CLIENT_MODE_DISABLED &&
|
|
+ EGG_SM_CLIENT_GET_CLASS (client)->startup)
|
|
EGG_SM_CLIENT_GET_CLASS (client)->startup (client, sm_client_id);
|
|
return TRUE;
|
|
}
|
|
@@ -265,9 +266,9 @@ egg_sm_client_get_option_group (void)
|
|
* Sets the "mode" of #EggSMClient as follows:
|
|
*
|
|
* %EGG_SM_CLIENT_MODE_DISABLED: Session management is completely
|
|
- * disabled. The application will not even connect to the session
|
|
- * manager. (egg_sm_client_get() will still return an #EggSMClient,
|
|
- * but it will just be a dummy object.)
|
|
+ * disabled, until the mode is changed again. The application will
|
|
+ * not even connect to the session manager. (egg_sm_client_get()
|
|
+ * will still return an #EggSMClient object.)
|
|
*
|
|
* %EGG_SM_CLIENT_MODE_NO_RESTART: The application will connect to
|
|
* the session manager (and thus will receive notification when the
|
|
@@ -277,12 +278,27 @@ egg_sm_client_get_option_group (void)
|
|
* %EGG_SM_CLIENT_MODE_NORMAL: The default. #EggSMCLient will
|
|
* function normally.
|
|
*
|
|
- * This must be called before the application's main loop begins.
|
|
+ * This must be called before the application's main loop begins and
|
|
+ * before any call to egg_sm_client_get(), unless the mode was set
|
|
+ * earlier to %EGG_SM_CLIENT_MODE_DISABLED and this call enables
|
|
+ * session management. Note that option parsing will call
|
|
+ * egg_sm_client_get().
|
|
**/
|
|
void
|
|
egg_sm_client_set_mode (EggSMClientMode mode)
|
|
{
|
|
+ EggSMClientMode old_mode = global_client_mode;
|
|
+
|
|
+ g_return_if_fail (global_client == NULL || global_client_mode == EGG_SM_CLIENT_MODE_DISABLED);
|
|
+ g_return_if_fail (!(global_client != NULL && mode == EGG_SM_CLIENT_MODE_DISABLED));
|
|
+
|
|
global_client_mode = mode;
|
|
+
|
|
+ if (global_client != NULL && old_mode == EGG_SM_CLIENT_MODE_DISABLED)
|
|
+ {
|
|
+ if (EGG_SM_CLIENT_GET_CLASS (global_client)->startup)
|
|
+ EGG_SM_CLIENT_GET_CLASS (global_client)->startup (global_client, sm_client_id);
|
|
+ }
|
|
}
|
|
|
|
/**
|
|
@@ -317,8 +333,7 @@ egg_sm_client_get (void)
|
|
{
|
|
if (!global_client)
|
|
{
|
|
- if (global_client_mode != EGG_SM_CLIENT_MODE_DISABLED &&
|
|
- !sm_client_disable)
|
|
+ if (!sm_client_disable)
|
|
{
|
|
#if defined (GDK_WINDOWING_WIN32)
|
|
global_client = egg_sm_client_win32_new ();
|