[Pkg-xfce-commits] r2309 - in desktop/branches/svn-snapshots/xfce4-session/debian: . patches
corsac at alioth.debian.org
corsac at alioth.debian.org
Fri Sep 19 07:15:16 UTC 2008
Author: corsac
Date: 2008-09-19 07:15:13 +0000 (Fri, 19 Sep 2008)
New Revision: 2309
Added:
desktop/branches/svn-snapshots/xfce4-session/debian/patches/07_parallel-startup.patch
Removed:
desktop/branches/svn-snapshots/xfce4-session/debian/patches/06_rephrase-tip.patch
Modified:
desktop/branches/svn-snapshots/xfce4-session/debian/changelog
desktop/branches/svn-snapshots/xfce4-session/debian/control
desktop/branches/svn-snapshots/xfce4-session/debian/patches/series
Log:
- remove dep on xfce4-mcs-manager and replace it by xfconf,
xfce4-settings.
* debian/patches:
- 06_rephrase-tips removed.
Modified: desktop/branches/svn-snapshots/xfce4-session/debian/changelog
===================================================================
--- desktop/branches/svn-snapshots/xfce4-session/debian/changelog 2008-09-17 06:26:38 UTC (rev 2308)
+++ desktop/branches/svn-snapshots/xfce4-session/debian/changelog 2008-09-19 07:15:13 UTC (rev 2309)
@@ -6,8 +6,12 @@
- update standards version to 3.8.0.
- replace recommends on xbase-clients by x11-xserver-utils.
- swap calls to dh_makeshlibs and dh_installdeb.
+ - remove dep on xfce4-mcs-manager and replace it by xfconf,
+ xfce4-settings.
+ * debian/patches:
+ - 06_rephrase-tips removed.
- -- Yves-Alexis Perez <corsac at debian.org> Sun, 24 Aug 2008 14:13:10 +0200
+ -- Yves-Alexis Perez <corsac at debian.org> Fri, 19 Sep 2008 07:45:32 +0200
xfce4-session (4.4.2-6) unstable; urgency=low
Modified: desktop/branches/svn-snapshots/xfce4-session/debian/control
===================================================================
--- desktop/branches/svn-snapshots/xfce4-session/debian/control 2008-09-17 06:26:38 UTC (rev 2308)
+++ desktop/branches/svn-snapshots/xfce4-session/debian/control 2008-09-19 07:15:13 UTC (rev 2309)
@@ -11,7 +11,7 @@
Package: xfce4-session
Architecture: any
-Depends: ${shlibs:Depends}, fortune-mod, xfce4-mcs-manager
+Depends: ${shlibs:Depends}, fortune-mod, xfce4-settings, xfconf
Recommends: xfwm4, xfce4-utils, xfdesktop4, xfce4-panel, hal, dbus-x11, x11-xserver-utils
Suggests: sudo
Provides: x-session-manager
Deleted: desktop/branches/svn-snapshots/xfce4-session/debian/patches/06_rephrase-tip.patch
===================================================================
--- desktop/branches/svn-snapshots/xfce4-session/debian/patches/06_rephrase-tip.patch 2008-09-17 06:26:38 UTC (rev 2308)
+++ desktop/branches/svn-snapshots/xfce4-session/debian/patches/06_rephrase-tip.patch 2008-09-19 07:15:13 UTC (rev 2309)
@@ -1,24 +0,0 @@
-diff --git a/xfce4-tips/data/tips b/xfce4-tips/data/tips
-index 0eed74f..d0f09fb 100644
---- a/xfce4-tips/data/tips
-+++ b/xfce4-tips/data/tips
-@@ -88,13 +88,13 @@ corresponding workspace
- The Thunar file manager can be driven with the keyboard.
- Have a look at Xfce 4 manual to learn more about its commands.
- %
--xfprint4 provides a graphical frontend for printing. It supports either
--CUPS, BSD-LPR or a file as destination, and printers are retrieved from
--the printing system you choosed.
-+xfprint4 provides a graphical frontend for printing. It supports CUPS,
-+BSD-LPR or a file as the destination, and printers are retrieved from
-+the chosen printing system.
-
--Just configure your printer with the xfprint-manager application, then
--use drag and drop to xfprint4 icon on the panel (or the 'xfprint4 file'
--command) to print.
-+Just configure your printer with the xfprint-manager application, then
-+use drag and drop to the xfprint4 icon on the panel (or the 'xfprint4
-+file' command) to print.
- %
- Select the "Always on top" option in the Xfce Panel settings dialog if
- your want the panel to always stay above all other windows, and keep its
Added: desktop/branches/svn-snapshots/xfce4-session/debian/patches/07_parallel-startup.patch
===================================================================
--- desktop/branches/svn-snapshots/xfce4-session/debian/patches/07_parallel-startup.patch (rev 0)
+++ desktop/branches/svn-snapshots/xfce4-session/debian/patches/07_parallel-startup.patch 2008-09-19 07:15:13 UTC (rev 2309)
@@ -0,0 +1,542 @@
+diff --git a/xfce4-session/xfsm-manager.c b/xfce4-session/xfsm-manager.c
+index c404506..f0827c4 100644
+--- a/xfce4-session/xfsm-manager.c
++++ b/xfce4-session/xfsm-manager.c
+@@ -71,12 +71,10 @@
+ Prototypes
+ */
+ static gboolean xfsm_manager_startup (void);
+-static void xfsm_manager_handle_failed (void);
+-static gboolean xfsm_manager_startup_timedout (gpointer user_data);
+ static void xfsm_manager_load_settings (XfceRc *rc);
+ static gboolean xfsm_manager_load_session (void);
+ static GdkPixbuf *xfsm_manager_load_session_preview (const gchar *name);
+-
++static void xfsm_manager_startup_done (void);
+
+ /*
+ Static data
+@@ -84,7 +82,6 @@ static GdkPixbuf *xfsm_manager_load_session_preview (const gchar *name);
+ static XfsmManagerState state = XFSM_MANAGER_STARTUP;
+ static gboolean session_chooser = FALSE;
+ static guint die_timeout_id = 0;
+-static guint startup_timeout_id = 0;
+
+
+ static gboolean
+@@ -93,7 +90,7 @@ xfsm_manager_startup (void)
+ xfsm_startup_foreign ();
+ pending_properties = g_list_sort (pending_properties,
+ (GCompareFunc) xfsm_properties_compare);
+- xfsm_manager_startup_continue (NULL);
++ xfsm_manager_begin_startup ();
+ return FALSE;
+ }
+
+@@ -127,36 +124,40 @@ xfsm_manager_restore_active_workspace (XfceRc *rc)
+ }
+
+
+-static void
+-xfsm_manager_handle_failed (void)
++void
++xfsm_manager_handle_failed_client (XfsmProperties *properties)
+ {
+- /* Handle apps that failed to start here */
+- XfsmProperties *properties;
+- GList *lp;
++ GList *lp;
+
+- for (lp = starting_properties; lp != NULL; lp = lp->next)
++ if ((lp = g_list_find (starting_properties, properties)) == NULL)
+ {
+- properties = XFSM_PROPERTIES (lp->data);
+-
+- if (properties->discard_command != NULL)
+- {
+- xfsm_verbose ("Client Id = %s failed to start, running discard "
+- "command now.\n\n", properties->client_id);
+-
+- g_spawn_sync (properties->current_directory,
+- properties->discard_command,
+- properties->environment,
+- G_SPAWN_SEARCH_PATH,
+- NULL, NULL,
+- NULL, NULL,
+- NULL, NULL);
+- }
++ xfsm_verbose("Client Id = %s failed to start, but not found in "
++ "startup properties list.\n\n", properties->client_id);
++ return;
++ }
+
+- xfsm_properties_free (properties);
++ if (properties->discard_command != NULL)
++ {
++ xfsm_verbose ("Client Id = %s failed to start, running discard "
++ "command now.\n\n", properties->client_id);
++
++ g_spawn_sync (properties->current_directory,
++ properties->discard_command,
++ properties->environment,
++ G_SPAWN_SEARCH_PATH,
++ NULL, NULL,
++ NULL, NULL,
++ NULL, NULL);
+ }
+
+- g_list_free (starting_properties);
+- starting_properties = NULL;
++ xfsm_properties_free (properties);
++
++ starting_properties = g_list_delete_link (starting_properties, lp);
++
++ if (starting_properties == NULL && state == XFSM_MANAGER_STARTUP)
++ {
++ xfsm_manager_startup_done ();
++ }
+ }
+
+
+@@ -437,71 +438,38 @@ xfsm_manager_restart (void)
+
+
+ void
+-xfsm_manager_startup_continue (const gchar *previous_id)
++xfsm_manager_begin_startup (void)
+ {
+- gboolean startup_done = FALSE;
+- gchar buffer[1024];
+- XfceRc *rc;
+-
+- xfsm_verbose ("Manager startup continues [Previous Id = %s]\n\n",
+- previous_id != NULL ? previous_id : "None");
++ xfsm_startup_begin ();
++}
+
+- if (startup_timeout_id != 0)
+- {
+- g_source_remove (startup_timeout_id);
+- startup_timeout_id = 0;
+
+- /* work around broken clients */
+- if (state != XFSM_MANAGER_STARTUP)
+- return;
+- }
++static void
++xfsm_manager_startup_done (void)
++{
++ gchar buffer[1024];
++ XfceRc *rc;
+
+- startup_done = xfsm_startup_continue (previous_id);
++ xfsm_verbose ("Manager finished startup, entering IDLE mode now\n\n");
++ state = XFSM_MANAGER_IDLE;
+
+- if (startup_done)
++ if (!failsafe_mode)
+ {
+- xfsm_verbose ("Manager finished startup, entering IDLE mode now\n\n");
+- state = XFSM_MANAGER_IDLE;
+-
+- if (!failsafe_mode)
+- {
+- /* handle apps that failed to start */
+- xfsm_manager_handle_failed ();
+-
+- /* restore active workspace, this has to be done after the
+- * window manager is up, so we do it last.
+- */
+- g_snprintf (buffer, 1024, "Session: %s", session_name);
+- rc = xfce_rc_simple_open (session_file, TRUE);
+- xfce_rc_set_group (rc, buffer);
+- xfsm_manager_restore_active_workspace (rc);
+- xfce_rc_close (rc);
++ /* restore active workspace, this has to be done after the
++ * window manager is up, so we do it last.
++ */
++ g_snprintf (buffer, 1024, "Session: %s", session_name);
++ rc = xfce_rc_simple_open (session_file, TRUE);
++ xfce_rc_set_group (rc, buffer);
++ xfsm_manager_restore_active_workspace (rc);
++ xfce_rc_close (rc);
+
+- /* start legacy applications now */
+- xfsm_legacy_startup ();
+- }
+- }
+- else
+- {
+- startup_timeout_id = g_timeout_add (STARTUP_TIMEOUT,
+- xfsm_manager_startup_timedout,
+- NULL);
++ /* start legacy applications now */
++ xfsm_legacy_startup ();
+ }
+ }
+
+
+-static gboolean
+-xfsm_manager_startup_timedout (gpointer user_data)
+-{
+- xfsm_verbose ("Manager startup timed out\n\n");
+-
+- startup_timeout_id = 0; /* will be removed automagically once we return */
+- xfsm_manager_startup_continue (NULL);
+-
+- return FALSE;
+-}
+-
+-
+ gchar*
+ xfsm_manager_generate_client_id (SmsConn sms_conn)
+ {
+@@ -600,6 +568,12 @@ xfsm_manager_register_client (XfsmClient *client,
+ if (properties == NULL)
+ return FALSE;
+
++ if (properties->startup_timeout_id)
++ {
++ g_source_remove (properties->startup_timeout_id);
++ properties->startup_timeout_id = 0;
++ }
++
+ xfsm_client_set_initial_properties (client, properties);
+ }
+ else
+@@ -626,6 +600,7 @@ xfsm_manager_register_client (XfsmClient *client,
+
+ if ((failsafe_mode || previous_id != NULL) && state == XFSM_MANAGER_STARTUP)
+ {
++#if 0
+ /* Only continue the startup if we are either in Failsafe mode (which
+ * means that we don't have any previous_id at all) or the previous_id
+ * matched one of the starting_properties. If there was no match
+@@ -633,6 +608,12 @@ xfsm_manager_register_client (XfsmClient *client,
+ * See http://bugs.xfce.org/view_bug_page.php?f_id=212 for details.
+ */
+ xfsm_manager_startup_continue (previous_id);
++#endif
++
++ if (starting_properties == NULL)
++ {
++ xfsm_manager_startup_done ();
++ }
+ }
+
+ return TRUE;
+diff --git a/xfce4-session/xfsm-manager.h b/xfce4-session/xfsm-manager.h
+index c005a3b..b0ffc7a 100644
+--- a/xfce4-session/xfsm-manager.h
++++ b/xfce4-session/xfsm-manager.h
+@@ -45,7 +45,8 @@ void xfsm_manager_init (XfceRc *rc);
+
+ gboolean xfsm_manager_restart (void);
+
+-void xfsm_manager_startup_continue (const gchar *previous_id);
++void xfsm_manager_begin_startup (void);
++void xfsm_manager_handle_failed_client (XfsmProperties *properties);
+
+ gchar* xfsm_manager_generate_client_id (SmsConn sms_conn) G_GNUC_PURE;
+
+diff --git a/xfce4-session/xfsm-properties.h b/xfce4-session/xfsm-properties.h
+index 62c6e5f..9be0a1c 100644
+--- a/xfce4-session/xfsm-properties.h
++++ b/xfce4-session/xfsm-properties.h
+@@ -49,6 +49,8 @@ struct _XfsmProperties
+ gchar **restart_command;
+ gint restart_style_hint;
+ gchar *user_id;
++
++ guint startup_timeout_id;
+ };
+
+
+diff --git a/xfce4-session/xfsm-startup.c b/xfce4-session/xfsm-startup.c
+index a9eb278..2e3f975 100644
+--- a/xfce4-session/xfsm-startup.c
++++ b/xfce4-session/xfsm-startup.c
+@@ -60,8 +60,8 @@
+ /*
+ Prototypes
+ */
+-static gboolean xfsm_startup_continue_failsafe (void);
+-static gboolean xfsm_startup_continue_session (const gchar *previous_id);
++static void xfsm_startup_begin_failsafe (void);
++static void xfsm_startup_begin_session (void);
+ static void xfsm_startup_child_watch (GPid pid,
+ gint status,
+ gpointer user_data);
+@@ -417,6 +417,13 @@ xfsm_startup_autostart (void)
+ }
+
+
++static gboolean
++xfsm_startup_autostart_idled (gpointer data)
++{
++ xfsm_startup_autostart ();
++ return FALSE;
++}
++
+
+ void
+ xfsm_startup_foreign (void)
+@@ -429,126 +436,146 @@ xfsm_startup_foreign (void)
+ }
+
+
+-/* Returns TRUE if done, else FALSE */
+-gboolean
+-xfsm_startup_continue (const gchar *previous_id)
++void
++xfsm_startup_begin (void)
+ {
+- gboolean startup_done = FALSE;
+-
+ if (failsafe_mode)
+- startup_done = xfsm_startup_continue_failsafe ();
++ xfsm_startup_begin_failsafe ();
+ else
+- startup_done = xfsm_startup_continue_session (previous_id);
++ xfsm_startup_begin_session ();
+
+- /* perform Autostart */
+- if (startup_done)
+- xfsm_startup_autostart ();
+-
+- return startup_done;
++ /* FIXME: not sure if i want to do it this way */
++ g_idle_add (xfsm_startup_autostart_idled, NULL);
+ }
+
+
+ static gboolean
+-xfsm_startup_continue_failsafe (void)
+-{
+- FailsafeClient *fclient;
+-
+- fclient = (FailsafeClient *) g_list_nth_data (failsafe_clients, 0);
+- if (fclient != NULL)
++xfsm_start_failsafe_client_idled (gpointer data)
++{
++ FailsafeClient *fclient = data;
++
++ /* FIXME: SPLASH */
++ /* let the user know whats going on */
++ if (G_LIKELY (splash_screen != NULL))
+ {
+- /* let the user know whats going on */
+- if (G_LIKELY (splash_screen != NULL))
+- {
+- xfsm_splash_screen_next (splash_screen,
+- figure_app_name (fclient->command[0]));
+- }
++ xfsm_splash_screen_next (splash_screen,
++ figure_app_name (fclient->command[0]));
++ }
++
++ /* start the application */
++ xfsm_start_application (fclient->command, NULL, fclient->screen,
++ NULL, NULL, NULL);
++ g_strfreev (fclient->command);
++ g_free (fclient);
++
++ return FALSE;
++}
+
+- /* start the application */
+- xfsm_start_application (fclient->command, NULL, fclient->screen,
+- NULL, NULL, NULL);
+- failsafe_clients = g_list_remove (failsafe_clients, fclient);
+- g_strfreev (fclient->command);
+- g_free (fclient);
+
+- /* there are more to come */
+- return FALSE;
++static void
++xfsm_startup_begin_failsafe (void)
++{
++ GList *lp;
++
++ for(lp = g_list_first (failsafe_clients); lp; lp = g_list_next (lp))
++ {
++ g_idle_add (xfsm_start_failsafe_client_idled, lp->data);
+ }
+
+- return TRUE;
++ g_list_free (failsafe_clients);
++ failsafe_clients = NULL;
+ }
+
+
+ static gboolean
+-xfsm_startup_continue_session (const gchar *previous_id)
++xfsm_startup_client_timedout (gpointer data)
+ {
+- XfsmProperties *properties;
++ XfsmProperties *properties = XFSM_PROPERTIES (data);
++
++ properties->startup_timeout_id = 0;
++ xfsm_manager_handle_failed_client (properties);
++
++ return FALSE;
++}
++
++
++static gboolean
++xfsm_start_client_idled (gpointer data)
++{
++ XfsmProperties *properties = XFSM_PROPERTIES (data);
+ gchar **argv;
+ gint argc;
+ GPid pid;
+ gint n;
+-
+-again:
+- properties = (XfsmProperties *) g_list_nth_data (pending_properties, 0);
+- if (properties != NULL)
+- {
+- if (G_LIKELY (splash_screen != NULL))
+- {
+- xfsm_splash_screen_next (splash_screen,
+- figure_app_name (properties->program));
+- }
+
+- /* drop the properties from the pending list */
+- pending_properties = g_list_remove (pending_properties, properties);
++ /* FIXME: SPLASH */
++ if (G_LIKELY (splash_screen != NULL))
++ {
++ xfsm_splash_screen_next (splash_screen,
++ figure_app_name (properties->program));
++ }
+
+- /* generate the argument vector for the application (expanding variables) */
+- argc = g_strv_length (properties->restart_command);
+- argv = g_new (gchar *, argc + 1);
+- for (n = 0; n < argc; ++n)
+- argv[n] = xfce_expand_variables (properties->restart_command[n], NULL);
+- argv[n] = NULL;
++ /* generate the argument vector for the application (expanding variables) */
++ argc = g_strv_length (properties->restart_command);
++ argv = g_new (gchar *, argc + 1);
++ for (n = 0; n < argc; ++n)
++ argv[n] = xfce_expand_variables (properties->restart_command[n], NULL);
++ argv[n] = NULL;
+
+- /* fork a new process for the application */
++ /* fork a new process for the application */
+ #ifdef HAVE_VFORK
+- pid = vfork ();
++ pid = vfork ();
+ #else
+- pid = fork ();
++ pid = fork ();
+ #endif
+
+- /* handle the child process */
+- if (pid == 0)
+- {
+- /* execute the application here */
+- execvp (argv[0], argv);
+- _exit (127);
+- }
++ /* handle the child process */
++ if (pid == 0)
++ {
++ /* execute the application here */
++ execvp (argv[0], argv);
++ _exit (127);
++ }
+
+- /* check if we failed to fork */
+- if (G_UNLIKELY (pid < 0))
+- {
+- /* tell the user that we failed to fork */
+- perror ("Failed to fork new process");
+- }
+- else
+- {
+- /* watch the child process */
+- g_child_watch_add_full (G_PRIORITY_LOW, pid, xfsm_startup_child_watch, g_strdup (properties->client_id), xfsm_startup_child_watch_destroy);
+- }
++ /* check if we failed to fork */
++ if (G_UNLIKELY (pid < 0))
++ {
++ /* tell the user that we failed to fork */
++ perror ("Failed to fork new process");
++ }
++ else
++ {
++ /* watch the child process */
++ g_child_watch_add_full (G_PRIORITY_LOW, pid, xfsm_startup_child_watch, g_strdup (properties->client_id), xfsm_startup_child_watch_destroy);
++ }
+
+- /* cleanup */
+- g_strfreev (argv);
++ /* cleanup */
++ g_strfreev (argv);
++
++ /* move the properties to the list of starting applications */
++ starting_properties = g_list_append (starting_properties, properties);
+
+- /* move the properties to the list of starting applications */
+- starting_properties = g_list_append (starting_properties, properties);
++ /* set a timeout; client must register with SM before time runs out */
++ properties->startup_timeout_id = g_timeout_add (STARTUP_TIMEOUT,
++ xfsm_startup_client_timedout,
++ properties);
+
+- /* try with the next pending if fork() failed */
+- if (G_UNLIKELY (pid < 0))
+- goto again;
++ return FALSE;
++}
+
+- /* more to come... */
+- return FALSE;
++
++static void
++xfsm_startup_begin_session (void)
++{
++ GList *lp;
++
++ for(lp = g_list_first (pending_properties); lp; lp = g_list_next (lp))
++ {
++ g_idle_add (xfsm_start_client_idled, lp->data);
+ }
+
+- return TRUE;
++ g_list_free (pending_properties);
++ pending_properties = NULL;
+ }
+
+
+@@ -569,7 +596,13 @@ xfsm_startup_child_watch (GPid pid,
+ if (strcmp (properties->client_id, client_id) == 0)
+ {
+ /* continue startup, this client failed most probably */
+- xfsm_manager_startup_continue (NULL);
++ xfsm_verbose ("Client with id %s appears to have failed", client_id);
++ if (properties->startup_timeout_id)
++ {
++ g_source_remove (properties->startup_timeout_id);
++ properties->startup_timeout_id = 0;
++ }
++ xfsm_manager_handle_failed_client (properties);
+ break;
+ }
+ }
+diff --git a/xfce4-session/xfsm-startup.h b/xfce4-session/xfsm-startup.h
+index 1640239..0315ba8 100644
+--- a/xfce4-session/xfsm-startup.h
++++ b/xfce4-session/xfsm-startup.h
+@@ -26,7 +26,7 @@
+
+ void xfsm_startup_init (XfceRc *rc);
+ void xfsm_startup_foreign (void);
+-gboolean xfsm_startup_continue (const gchar *previous_id);
++void xfsm_startup_begin (void);
+
+ #endif /* !__XFSM_STARTUP_H__ */
+
Modified: desktop/branches/svn-snapshots/xfce4-session/debian/patches/series
===================================================================
--- desktop/branches/svn-snapshots/xfce4-session/debian/patches/series 2008-09-17 06:26:38 UTC (rev 2308)
+++ desktop/branches/svn-snapshots/xfce4-session/debian/patches/series 2008-09-19 07:15:13 UTC (rev 2309)
@@ -1,3 +1,4 @@
01_correct_shadows.patch
02_use-mice-as-default-engine.patch
04_xfce4-session-logout-manpage-typo.patch
+07_parallel-startup.patch
More information about the Pkg-xfce-commits
mailing list