metacity r4133 - in trunk: . src/core
- From: tthurman svn gnome org
- To: svn-commits-list gnome org
- Subject: metacity r4133 - in trunk: . src/core
- Date: Wed, 11 Feb 2009 05:26:58 +0000 (UTC)
Author: tthurman
Date: Wed Feb 11 05:26:58 2009
New Revision: 4133
URL: http://svn.gnome.org/viewvc/metacity?rev=4133&view=rev
Log:
Session must be saved before display close, and display
shouldn't close during shutdown if it's already closed.
Can't believe we don't have a bug about this already...
* src/core/display-private.h:
* src/core/display.c:
* src/core/main.c:
* src/core/session.c:
Modified:
trunk/ChangeLog
trunk/src/core/display-private.h
trunk/src/core/display.c
trunk/src/core/main.c
trunk/src/core/session.c
Modified: trunk/src/core/display-private.h
==============================================================================
--- trunk/src/core/display-private.h (original)
+++ trunk/src/core/display-private.h Wed Feb 11 05:26:58 2009
@@ -329,7 +329,7 @@
void meta_display_grab (MetaDisplay *display);
void meta_display_ungrab (MetaDisplay *display);
-void meta_display_unmanage_screen (MetaDisplay *display,
+void meta_display_unmanage_screen (MetaDisplay **display,
MetaScreen *screen,
guint32 timestamp);
Modified: trunk/src/core/display.c
==============================================================================
--- trunk/src/core/display.c (original)
+++ trunk/src/core/display.c Wed Feb 11 05:26:58 2009
@@ -4762,10 +4762,13 @@
meta_verbose ("Got selection clear for screen %d on display %s\n",
screen->number, display->name);
- meta_display_unmanage_screen (display,
+ meta_display_unmanage_screen (&display,
screen,
event->xselectionclear.time);
+ if (!display)
+ the_display = NULL;
+
/* display and screen may both be invalid memory... */
return;
@@ -4787,10 +4790,12 @@
}
void
-meta_display_unmanage_screen (MetaDisplay *display,
+meta_display_unmanage_screen (MetaDisplay **displayp,
MetaScreen *screen,
guint32 timestamp)
{
+ MetaDisplay *display = *displayp;
+
meta_verbose ("Unmanaging screen %d on display %s\n",
screen->number, display->name);
@@ -4800,7 +4805,10 @@
display->screens = g_slist_remove (display->screens, screen);
if (display->screens == NULL)
- meta_display_close (display, timestamp);
+ {
+ meta_display_close (display, timestamp);
+ *displayp = NULL;
+ }
}
void
Modified: trunk/src/core/main.c
==============================================================================
--- trunk/src/core/main.c (original)
+++ trunk/src/core/main.c Wed Feb 11 05:26:58 2009
@@ -353,10 +353,13 @@
static void
meta_finalize (void)
{
- meta_display_close (meta_get_display (),
- CurrentTime); /* I doubt correct timestamps matter here */
+ MetaDisplay *display = meta_get_display();
meta_session_shutdown ();
+
+ if (display)
+ meta_display_close (display,
+ CurrentTime); /* I doubt correct timestamps matter here */
}
static void
Modified: trunk/src/core/session.c
==============================================================================
--- trunk/src/core/session.c (original)
+++ trunk/src/core/session.c Wed Feb 11 05:26:58 2009
@@ -376,6 +376,14 @@
SmProp *props[1];
char hint = SmRestartIfRunning;
+ if (!meta_get_display ())
+ {
+ meta_verbose ("Cannot close session because there is no display");
+ return;
+ }
+
+ warn_about_lame_clients_and_finish_interact (FALSE);
+
if (session_connection == NULL)
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]