Index: ChangeLog =================================================================== --- ChangeLog (revision 1002) +++ ChangeLog (working copy) @@ -1,4 +1,15 @@ +2008-10-28 Jorge Pereira + + * 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): + * server/vino-prefs.h: + Disable wallpaper on connection + restart = wallpaper gone + forever (See: Ubuntu #289034) + 2008-10-22 Jorge Pereira + * tools/vino-passwd.c: (vino_passwd_read): Do not show "Core Dumped" when receive "Ctrl+C". Closes #557454. Index: server/vino-background.c =================================================================== --- server/vino-background.c (revision 1002) +++ server/vino-background.c (working copy) @@ -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; +} + Index: server/vino-prefs.c =================================================================== --- server/vino-prefs.c (revision 1002) +++ server/vino-prefs.c (working copy) @@ -25,7 +25,9 @@ #include "vino-prefs.h" #include +#include #include +#include #include #include "vino-util.h" #include "vino-mdns.h" @@ -48,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, }; @@ -479,6 +483,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)"); @@ -675,5 +682,59 @@ g_object_unref (vino_client); vino_client = NULL; + + vino_prefs_unlock (); } +void +vino_prefs_restore (void) +{ + if (vino_background_get_status ()) + vino_background_draw (TRUE); +} + +gboolean +vino_prefs_lock (void) +{ + gchar *lockfile = g_strdup_printf ("%s/%s", g_get_home_dir (), VINO_PREFS_LOCKFILE); + gboolean res = FALSE; + + if (g_file_test (lockfile, G_FILE_TEST_EXISTS)) + { + dprintf (PREFS, "WARNING: The lockfile (%s) already exist, shutdown system?\n", + lockfile); + } + else + { + dprintf (PREFS, "Created the (%s) lockfile\n", lockfile); + g_creat (lockfile, 0644); + res = TRUE; + } + + g_free (lockfile); + + return res; +} + +gboolean +vino_prefs_unlock (void) +{ + gchar *lockfile = g_strdup_printf ("%s/%s", g_get_home_dir (), VINO_PREFS_LOCKFILE); + gboolean res = FALSE; + + if (!g_file_test (lockfile, G_FILE_TEST_EXISTS)) + { + dprintf (PREFS, "WARNING: The (%s) lockfile not found!\n", lockfile); + } + else + { + dprintf (PREFS, "Removing (%s) lockfile\n", lockfile); + g_unlink (lockfile); + res = TRUE; + } + + g_free (lockfile); + + return res; +} + Index: server/vino-background.h =================================================================== --- server/vino-background.h (revision 1002) +++ server/vino-background.h (working copy) @@ -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 Index: server/vino-prefs.h =================================================================== --- server/vino-prefs.h (revision 1002) +++ server/vino-prefs.h (working copy) @@ -31,6 +31,9 @@ void vino_prefs_init (gboolean view_only); void vino_prefs_create_server (GdkScreen *screen); void vino_prefs_shutdown (void); +void vino_prefs_restore (void); +gboolean vino_prefs_lock (void); +gboolean vino_prefs_unlock (void); G_END_DECLS