if previous client ID was supplied, use it in filename. use --sm-client-id

2007-03-26  Josselin Mouette  <joss@malsain.org>

        * src/session.c (meta_session_init): if previous client ID
        was supplied, use it in filename.
        * src/session.c (set_clone_restart_commands): use --sm-client-id
        in command line to restore session, not original file name.
        * src/session.c (regenerate_save_file): generate filename using
        client ID and not original file name.
        * src/session.c (base_save_file): removed function.
        Closes GNOME 407981, Debian 391287, Debian 315169.


svn path=/trunk/; revision=3125
This commit is contained in:
Josselin Mouette 2007-03-26 21:38:19 +00:00 committed by Thomas James Alexander Thurman
parent 44ef3b3a51
commit 44b86d468e
2 changed files with 30 additions and 20 deletions

View File

@ -1,3 +1,14 @@
2007-03-26 Josselin Mouette <joss@malsain.org>
* src/session.c (meta_session_init): if previous client ID
was supplied, use it in filename.
* src/session.c (set_clone_restart_commands): use --sm-client-id
in command line to restore session, not original file name.
* src/session.c (regenerate_save_file): generate filename using
client ID and not original file name.
* src/session.c (base_save_file): removed function.
Closes GNOME 407981, Debian 391287, Debian 315169.
2007-03-25 Elijah Newren <newren gmail com> 2007-03-25 Elijah Newren <newren gmail com>
* configure.in: bump version to 2.19.1; doesn't make sense to have * configure.in: bump version to 2.19.1; doesn't make sense to have

View File

@ -240,6 +240,12 @@ meta_session_init (const char *previous_client_id,
saved_client_id = load_state (previous_save_file); saved_client_id = load_state (previous_save_file);
previous_client_id = saved_client_id; previous_client_id = saved_client_id;
} }
else if (previous_client_id)
{
char *save_file = g_strconcat (previous_client_id, ".ms", NULL);
saved_client_id = load_state (save_file);
g_free (save_file);
}
else else
{ {
saved_client_id = NULL; saved_client_id = NULL;
@ -588,12 +594,14 @@ set_clone_restart_commands (void)
prop1.name = SmRestartCommand; prop1.name = SmRestartCommand;
prop1.type = SmLISTofARRAY8; prop1.type = SmLISTofARRAY8;
g_return_if_fail (client_id);
i = 0; i = 0;
restartv[i] = "metacity"; restartv[i] = "metacity";
++i; ++i;
restartv[i] = "--sm-save-file"; restartv[i] = "--sm-client-id";
++i; ++i;
restartv[i] = (char*) base_save_file (); restartv[i] = client_id;
++i; ++i;
restartv[i] = NULL; restartv[i] = NULL;
@ -1681,24 +1689,21 @@ session_info_new (void)
return info; return info;
} }
static char* relative_save_path = NULL;
static char* full_save_path = NULL; static char* full_save_path = NULL;
static void static void
regenerate_save_file (void) regenerate_save_file (void)
{ {
g_free (relative_save_path);
g_free (full_save_path); g_free (full_save_path);
relative_save_path = g_strdup_printf ("%d-%d-%u.ms", if (client_id)
(int) time (NULL), full_save_path = g_strconcat (g_get_home_dir (),
(int) getpid (), "/.metacity/sessions/",
g_random_int ()); client_id,
".ms",
full_save_path = g_strconcat (g_get_home_dir (), NULL);
"/.metacity/sessions/", else
relative_save_path, full_save_path = NULL;
NULL);
} }
static const char* static const char*
@ -1707,12 +1712,6 @@ full_save_file (void)
return full_save_path; return full_save_path;
} }
static const char*
base_save_file (void)
{
return relative_save_path;
}
static int static int
windows_cmp_by_title (MetaWindow *a, windows_cmp_by_title (MetaWindow *a,
MetaWindow *b) MetaWindow *b)