File mutter-grab-display.patch of Package mutter
diff -Npur mutter-3.10.4/src/core/window.c mutter-3.10.4-new/src/core/window.c
--- mutter-3.10.4/src/core/window.c 2014-02-20 02:20:26.000000000 +0800
+++ mutter-3.10.4-new/src/core/window.c 2014-04-28 07:45:37.395210286 +0800
@@ -861,6 +861,8 @@ meta_window_new (MetaDisplay *display,
goto error;
}
+ /* Grab server */
+ meta_display_grab (display);
meta_verbose ("must_be_viewable = %d attrs.map_state = %d (%s)\n",
must_be_viewable,
attrs.map_state,
@@ -886,6 +888,7 @@ meta_window_new (MetaDisplay *display,
(state == IconicState || state == NormalState)))
{
meta_verbose ("Deciding not to manage unmapped or unviewable window 0x%lx\n", xwindow);
+ meta_display_ungrab (display);
goto error;
}
@@ -955,6 +958,7 @@ meta_window_new (MetaDisplay *display,
{
meta_verbose ("Window 0x%lx disappeared just as we tried to manage it\n",
xwindow);
+ meta_display_ungrab (display);
goto error;
}
@@ -1449,7 +1453,7 @@ meta_window_new (MetaDisplay *display,
unminimize_window_and_all_transient_parents (window);
meta_error_trap_pop (display); /* pop the XSync()-reducing trap */
-
+ meta_display_ungrab (display);
window->constructing = FALSE;
meta_display_notify_window_created (display, window);