epiphany r8953 - trunk/lib/egg



Author: chpe
Date: Wed Apr  8 21:30:22 2009
New Revision: 8953
URL: http://svn.gnome.org/viewvc/epiphany?rev=8953&view=rev

Log:
Add the diff to smclient upstream also as a separate file, so people other than me can update from libegg

Added:
   trunk/lib/egg/eggsmclient.patch

Added: trunk/lib/egg/eggsmclient.patch
==============================================================================
--- (empty file)
+++ trunk/lib/egg/eggsmclient.patch	Wed Apr  8 21:30:22 2009
@@ -0,0 +1,198 @@
+diff --git a/libegg/smclient/eggdesktopfile.c b/libegg/smclient/eggdesktopfile.c
+index 357e548..c185998 100644
+--- a/libegg/smclient/eggdesktopfile.c
++++ b/libegg/smclient/eggdesktopfile.c
+@@ -1440,6 +1440,7 @@ egg_set_desktop_file (const char *desktop_file_path)
+       g_error_free (error);
+     }
+ 
++#if 0
+   if (egg_desktop_file) {
+     /* Set localized application name and default window icon */
+     if (egg_desktop_file->name)
+@@ -1452,6 +1453,7 @@ egg_set_desktop_file (const char *desktop_file_path)
+           gtk_window_set_default_icon_name (egg_desktop_file->icon);
+       }
+   }
++#endif
+ 
+   G_UNLOCK (egg_desktop_file);
+ }
+diff --git a/libegg/smclient/eggsmclient-xsmp.c b/libegg/smclient/eggsmclient-xsmp.c
+index 1a56156..81af7d2 100644
+--- a/libegg/smclient/eggsmclient-xsmp.c
++++ b/libegg/smclient/eggsmclient-xsmp.c
+@@ -88,6 +88,8 @@ struct _EggSMClientXSMP
+   char **restart_command;
+   gboolean set_restart_command;
+   int restart_style;
++  char **discard_command;
++  gboolean set_discard_command;
+ 
+   guint idle;
+ 
+@@ -117,6 +119,9 @@ static void     sm_client_xsmp_startup (EggSMClient *client,
+ static void     sm_client_xsmp_set_restart_command (EggSMClient  *client,
+ 						    int           argc,
+ 						    const char  **argv);
++static void     sm_client_xsmp_set_discard_command (EggSMClient  *client,
++						    int           argc,
++						    const char  **argv);
+ static void     sm_client_xsmp_will_quit (EggSMClient *client,
+ 					  gboolean     will_quit);
+ static gboolean sm_client_xsmp_end_session (EggSMClient         *client,
+@@ -150,7 +155,7 @@ static SmProp *card8_prop        (const char    *name,
+ static void set_properties         (EggSMClientXSMP *xsmp, ...);
+ static void delete_properties      (EggSMClientXSMP *xsmp, ...);
+ 
+-static GPtrArray *generate_command (char       **restart_command,
++static GPtrArray *generate_command (char       **argv,
+ 				    const char  *client_id,
+ 				    const char  *state_file);
+ 
+@@ -185,6 +190,7 @@ egg_sm_client_xsmp_class_init (EggSMClientXSMPClass *klass)
+ 
+   sm_client_class->startup             = sm_client_xsmp_startup;
+   sm_client_class->set_restart_command = sm_client_xsmp_set_restart_command;
++  sm_client_class->set_discard_command = sm_client_xsmp_set_discard_command;
+   sm_client_class->will_quit           = sm_client_xsmp_will_quit;
+   sm_client_class->end_session         = sm_client_xsmp_end_session;
+ }
+@@ -404,6 +410,24 @@ sm_client_xsmp_set_restart_command (EggSMClient  *client,
+ }
+ 
+ static void
++sm_client_xsmp_set_discard_command (EggSMClient  *client,
++				    int           argc,
++				    const char  **argv)
++{
++  EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;
++  int i;
++
++  g_strfreev (xsmp->discard_command);
++
++  xsmp->discard_command = g_new (char *, argc + 1);
++  for (i = 0; i < argc; i++)
++    xsmp->discard_command[i] = g_strdup (argv[i]);
++  xsmp->discard_command[i] = NULL;
++
++  xsmp->set_discard_command = TRUE;
++}
++
++static void
+ sm_client_xsmp_will_quit (EggSMClient *client,
+ 			  gboolean     will_quit)
+ {
+@@ -771,7 +795,7 @@ save_state (EggSMClientXSMP *xsmp)
+   GKeyFile *state_file;
+   char *state_file_path, *data;
+   EggDesktopFile *desktop_file;
+-  GPtrArray *restart;
++  GPtrArray *restart, *discard;
+   int offset, fd;
+ 
+   /* We set xsmp->state before emitting save_state, but our caller is
+@@ -787,7 +811,18 @@ save_state (EggSMClientXSMP *xsmp)
+ 		      ptrarray_prop (SmRestartCommand, restart),
+ 		      NULL);
+       g_ptr_array_free (restart, TRUE);
+-      delete_properties (xsmp, SmDiscardCommand, NULL);
++
++      if (xsmp->set_discard_command)
++        {
++          discard = generate_command (xsmp->discard_command, NULL, NULL);
++          set_properties (xsmp,
++                          ptrarray_prop (SmDiscardCommand, discard),
++                          NULL);
++          g_ptr_array_free (discard, TRUE);
++        }
++      else
++        delete_properties (xsmp, SmDiscardCommand, NULL);
++
+       return;
+     }
+ 
+@@ -1041,14 +1076,14 @@ xsmp_shutdown_cancelled (SmcConn   smc_conn,
+  * then free the array, but not its contents.
+  */
+ static GPtrArray *
+-generate_command (char **restart_command, const char *client_id,
++generate_command (char **argv, const char *client_id,
+ 		  const char *state_file)
+ {
+   GPtrArray *cmd;
+   int i;
+ 
+   cmd = g_ptr_array_new ();
+-  g_ptr_array_add (cmd, restart_command[0]);
++  g_ptr_array_add (cmd, argv[0]);
+ 
+   if (client_id)
+     {
+@@ -1062,8 +1097,8 @@ generate_command (char **restart_command, const char *client_id,
+       g_ptr_array_add (cmd, (char *)state_file);
+     }
+ 
+-  for (i = 1; restart_command[i]; i++)
+-    g_ptr_array_add (cmd, restart_command[i]);
++  for (i = 1; argv[i]; i++)
++    g_ptr_array_add (cmd, argv[i]);
+ 
+   return cmd;
+ }
+diff --git a/libegg/smclient/eggsmclient.c b/libegg/smclient/eggsmclient.c
+index efa901d..85aaee4 100644
+--- a/libegg/smclient/eggsmclient.c
++++ b/libegg/smclient/eggsmclient.c
+@@ -445,6 +445,27 @@ egg_sm_client_set_restart_command (EggSMClient  *client,
+ }
+ 
+ /**
++ * egg_sm_client_set_discard_command:
++ * @client: the client
++ * @argc: the length of @argv
++ * @argv: argument vector
++ *
++ * Sets the command used to discard a custom state file if using
++ * egg_sm_client_set_restart_command(), which must be called before 
++ * using this function.
++ **/
++void
++egg_sm_client_set_discard_command (EggSMClient  *client,
++				   int           argc,
++				   const char  **argv)
++{
++  g_return_if_fail (EGG_IS_SM_CLIENT (client));
++
++  if (EGG_SM_CLIENT_GET_CLASS (client)->set_discard_command)
++    EGG_SM_CLIENT_GET_CLASS (client)->set_discard_command (client, argc, argv);
++}
++
++/**
+  * egg_sm_client_will_quit:
+  * @client: the client
+  * @will_quit: whether or not the application is willing to quit
+diff --git a/libegg/smclient/eggsmclient.h b/libegg/smclient/eggsmclient.h
+index e620b75..f13bcec 100644
+--- a/libegg/smclient/eggsmclient.h
++++ b/libegg/smclient/eggsmclient.h
+@@ -72,6 +72,9 @@ struct _EggSMClientClass
+   void	   (*set_restart_command) (EggSMClient          *client,
+ 				   int                   argc,
+ 				   const char          **argv);
++  void	   (*set_discard_command) (EggSMClient          *client,
++				   int                   argc,
++				   const char          **argv);
+   void	   (*will_quit)           (EggSMClient          *client,
+ 				   gboolean              will_quit);
+   gboolean (*end_session)         (EggSMClient          *client,
+@@ -102,6 +105,9 @@ GKeyFile        *egg_sm_client_get_state_file      (EggSMClient *client);
+ void             egg_sm_client_set_restart_command (EggSMClient  *client,
+ 						    int           argc,
+ 						    const char  **argv);
++void             egg_sm_client_set_discard_command (EggSMClient  *client,
++						    int           argc,
++						    const char  **argv);
+ 
+ /* Handling "quit_requested" signal */
+ void             egg_sm_client_will_quit           (EggSMClient *client,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]