[Xfce4-commits] <xfwm4:xfce-4.10> Do not write empty session files.
Nick Schermer
noreply at xfce.org
Sun May 5 18:00:02 CEST 2013
Updating branch refs/heads/xfce-4.10
to 80b43808cf854d1713e0c00d1760c08e1e09c4c8 (commit)
from 07b63a3ed401d0c30862e74abca4139fb8dd9a81 (commit)
commit 80b43808cf854d1713e0c00d1760c08e1e09c4c8
Author: Nick Schermer <nick at 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;
More information about the Xfce4-commits
mailing list