summaryrefslogtreecommitdiff
path: root/src/totem-session.c
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2013-07-09 09:47:46 +0200
committerBastien Nocera <hadess@hadess.net>2013-07-09 09:56:25 +0200
commit589a29bb9aa7e4d1650412e9ac5512e517252d5e (patch)
tree3667e2d63de47e80b3a64c74ac384e93de971b1c /src/totem-session.c
parent7f9974d01d2a0a48749f68cbe9a756dfadd15878 (diff)
downloadtotem-589a29bb9aa7e4d1650412e9ac5512e517252d5e.tar.gz
main: Optimise session saving
Diffstat (limited to 'src/totem-session.c')
-rw-r--r--src/totem-session.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/totem-session.c b/src/totem-session.c
index d703b8be7..4664c9483 100644
--- a/src/totem-session.c
+++ b/src/totem-session.c
@@ -27,30 +27,27 @@
#include "totem-session.h"
#include "totem-uri.h"
+static GFile *session_file = NULL;
+
static GFile *
get_session_file (void)
{
- GFile *file;
char *path;
+ if (session_file)
+ return session_file;
+
path = g_build_filename (totem_dot_dir (), "session_state.xspf", NULL);
- file = g_file_new_for_path (path);
+ session_file = g_file_new_for_path (path);
g_free (path);
- return file;
+ return session_file;
}
static char *
get_session_filename (void)
{
- GFile *file;
- char *uri;
-
- file = get_session_file ();
- uri = g_file_get_uri (file);
- g_object_unref (file);
-
- return uri;
+ return g_file_get_uri (get_session_file ());
}
gboolean
@@ -107,5 +104,10 @@ totem_session_save (Totem *totem)
if (!totem_playing_dvd (totem->mrl))
curr = bacon_video_widget_get_current_time (totem->bvw);
totem_playlist_save_session_playlist (totem->playlist, file, curr);
- g_object_unref (file);
+}
+
+void
+totem_session_cleanup (Totem *totem)
+{
+ g_clear_object (&session_file);
}