vino r1017 - in trunk: . server



Author: jwendell
Date: Sun Dec 14 10:32:23 2008
New Revision: 1017
URL: http://svn.gnome.org/viewvc/vino?rev=1017&view=rev

Log:
2008-11-25  Jorge Pereira  <jorge jorgepereira com br>

	* server/vino-background.c: (vino_background_get_status):
	* server/vino-background.h:
	* server/vino-prefs.c: (vino_prefs_init), (vino_prefs_shutdown),
	(vino_prefs_restore), (vino_prefs_lock), (vino_prefs_unlock):
	Disable wallpaper on connection + restart = wallpaper gone 
	forever. Closes #562281.



Modified:
   trunk/ChangeLog
   trunk/server/vino-background.c
   trunk/server/vino-background.h
   trunk/server/vino-prefs.c

Modified: trunk/server/vino-background.c
==============================================================================
--- trunk/server/vino-background.c	(original)
+++ trunk/server/vino-background.c	Sun Dec 14 10:32:23 2008
@@ -53,3 +53,12 @@
   g_object_unref (client);
 }
 
+gboolean
+vino_background_get_status (void)
+{
+  GConfClient *client = gconf_client_get_default ();
+  gboolean option = gconf_client_get_bool (client, VINO_PREFS_DISABLE_BACKGROUND, NULL);
+  g_object_unref (client);
+  return option;
+}
+

Modified: trunk/server/vino-background.h
==============================================================================
--- trunk/server/vino-background.h	(original)
+++ trunk/server/vino-background.h	Sun Dec 14 10:32:23 2008
@@ -29,6 +29,7 @@
 
 void vino_background_handler (int sig);
 void vino_background_draw (gboolean option);
+gboolean vino_background_get_status (void);
 
 G_END_DECLS
 

Modified: trunk/server/vino-prefs.c
==============================================================================
--- trunk/server/vino-prefs.c	(original)
+++ trunk/server/vino-prefs.c	Sun Dec 14 10:32:23 2008
@@ -21,12 +21,13 @@
  */
 
 #include <config.h>
-
-#include "vino-prefs.h"
-
 #include <string.h>
 #include <gconf/gconf-client.h>
+#include <glib/gstdio.h>
 #include <signal.h>
+#include <fcntl.h>
+
+#include "vino-prefs.h"
 #include "vino-util.h"
 #include "vino-mdns.h"
 #include "vino-status-icon.h"
@@ -49,6 +50,8 @@
 
 #define VINO_N_LISTENERS                  12
 
+#define VINO_PREFS_LOCKFILE               "vino-server.lock"
+
 static GConfClient *vino_client  = NULL;
 static GSList      *vino_servers = NULL;
 static guint        vino_listeners [VINO_N_LISTENERS] = { 0, };
@@ -470,6 +473,78 @@
   vino_status_icon_set_visibility (icon, vino_icon_visibility);
 }
 
+static void
+vino_prefs_restore (void)
+{
+  if (vino_background_get_status ())
+    vino_background_draw (TRUE);
+}
+
+static gchar *
+vino_prefs_lock_filename (void)
+{
+  gchar *dir;
+
+  dir = g_build_filename (g_get_user_data_dir (),
+			 "vino",
+			  NULL);
+  if (!g_file_test (dir, G_FILE_TEST_EXISTS))
+    g_mkdir_with_parents (dir, 0755);
+
+  g_free (dir);
+
+  return g_build_filename (g_get_user_data_dir (),
+			   "vino",
+			    VINO_PREFS_LOCKFILE,
+			    NULL);
+}
+
+static gboolean
+vino_prefs_lock (void)
+{
+  gchar    *lockfile;
+  gboolean  res;
+
+  res = FALSE;
+  lockfile = vino_prefs_lock_filename ();
+
+  if (g_file_test (lockfile, G_FILE_TEST_EXISTS))
+    {
+      dprintf (PREFS, "WARNING: The lock file (%s) already exists\n", lockfile);
+    }
+  else
+    {
+      g_creat (lockfile, 0644);
+      res = TRUE;
+    }
+
+  g_free (lockfile);
+  return res;
+}
+
+static gboolean
+vino_prefs_unlock (void)
+{
+  gchar    *lockfile;
+  gboolean  res;
+
+  res = FALSE;
+  lockfile = vino_prefs_lock_filename ();
+
+  if (!g_file_test (lockfile, G_FILE_TEST_EXISTS))
+    {
+      dprintf (PREFS, "WARNING: Lock file (%s) not found!\n", lockfile);
+    }
+  else
+    {
+      g_unlink (lockfile);
+      res = TRUE;
+    }
+
+  g_free (lockfile);
+  return res;
+}
+
 void
 vino_prefs_init (gboolean view_only)
 {
@@ -488,6 +563,9 @@
 			GCONF_CLIENT_PRELOAD_ONELEVEL,
 			NULL);
 
+  if(!vino_prefs_lock ())
+    vino_prefs_restore ();
+
   vino_enabled = gconf_client_get_bool (vino_client, VINO_PREFS_ENABLED, NULL);
   dprintf (PREFS, "Access enabled: %s\n", vino_enabled ? "(true)" : "(false)");
 
@@ -696,5 +774,6 @@
 
   g_object_unref (vino_client);
   vino_client = NULL;
-}
 
+  vino_prefs_unlock ();
+}



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