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);
openSUSE Build Service is sponsored by