Updating branch refs/heads/xfce-4.10 to 80b43808cf854d1713e0c00d1760c08e1e09c4c8 (commit) from 07b63a3ed401d0c30862e74abca4139fb8dd9a81 (commit)
commit 80b43808cf854d1713e0c00d1760c08e1e09c4c8 Author: Nick Schermer <n...@xfce.org> Date: Sat Nov 10 18:37:20 2012 +0100 Do not write empty session files. Unlink the session file if no windows have been saves. (cherry picked from commit ddfeba132ff7d53acf93bc065d8e3902d440feda) src/session.c | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/session.c b/src/session.c index 1c75ea5..137c978 100644 --- a/src/session.c +++ b/src/session.c @@ -40,6 +40,7 @@ #include <gtk/gtk.h> #include <glib.h> +#include <glib/gstdio.h> #include <libxfce4ui/libxfce4ui.h> #include "display.h" @@ -263,7 +264,7 @@ getsubstring (gchar * s, gint * length) return ns; } -static void +static gboolean sessionSaveScreen (ScreenInfo *screen_info, FILE *f) { DisplayInfo *display_info; @@ -272,6 +273,7 @@ sessionSaveScreen (ScreenInfo *screen_info, FILE *f) gchar **wm_command; gint wm_command_count; guint client_idx; + gboolean wrote_data = FALSE; display_info = screen_info->display_info; wm_command_count = 0; @@ -296,6 +298,8 @@ sessionSaveScreen (ScreenInfo *screen_info, FILE *f) window_role = NULL; } + wrote_data = TRUE; + fprintf (f, "[CLIENT] 0x%lx\n", c->window); getClientID (display_info, c->window, &client_id); @@ -363,6 +367,8 @@ sessionSaveScreen (ScreenInfo *screen_info, FILE *f) CLIENT_FLAG_SHADED | CLIENT_FLAG_MAXIMIZED | CLIENT_FLAG_NAME_CHANGED)); } + + return wrote_data; } gboolean @@ -370,6 +376,7 @@ sessionSaveWindowStates (DisplayInfo *display_info, const gchar * filename) { FILE *f; GSList *screens; + gboolean wrote_data = FALSE; g_return_val_if_fail (filename != NULL, FALSE); g_return_val_if_fail (display_info != NULL, FALSE); @@ -379,9 +386,15 @@ sessionSaveWindowStates (DisplayInfo *display_info, const gchar * filename) for (screens = display_info->screens; screens; screens = g_slist_next (screens)) { ScreenInfo *screen_info_n = (ScreenInfo *) screens->data; - sessionSaveScreen (screen_info_n, f); + if (sessionSaveScreen (screen_info_n, f)) + wrote_data = TRUE; } fclose (f); + + /* remove the file if nothing has been written */ + if (!wrote_data) + g_unlink (filename); + return TRUE; } return FALSE; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits