Hello community,

here is the log from the commit of package mutter for openSUSE:Factory checked 
in at 2013-07-16 15:51:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mutter (Old)
 and      /work/SRC/openSUSE:Factory/.mutter.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mutter"

Changes:
--------
--- /work/SRC/openSUSE:Factory/mutter/mutter.changes    2013-06-29 
19:43:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.mutter.new/mutter.changes       2013-07-16 
15:51:48.000000000 +0200
@@ -1,0 +2,13 @@
+Wed Jul 10 18:56:41 UTC 2013 - [email protected]
+
+- Update to version 3.9.4:
+  + Tweak window shadows (bgo#702141).
+  + Ignore our own focus events for focus prediction (bgo#701017).
+  + Add API to query if the stage is focused (bgo#700735).
+  + Add API to query the monitor for a given position.
+  + Don't force attached dialogs to be border-only (bgo#702764).
+  + Allow slicing of backgrounds to avoid texture size limits
+    (bgo#702283).
+  + Miscellaneous bug fixes and cleanups: (bgo#701224, bgo#702564).
+
+-------------------------------------------------------------------

Old:
----
  mutter-3.9.3.tar.xz

New:
----
  mutter-3.9.4.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mutter.spec ++++++
--- /var/tmp/diff_new_pack.Z1EqO6/_old  2013-07-16 15:51:49.000000000 +0200
+++ /var/tmp/diff_new_pack.Z1EqO6/_new  2013-07-16 15:51:49.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           mutter
-Version:        3.9.3
+Version:        3.9.4
 Release:        0
 Summary:        Window and compositing manager based on Clutter
 License:        GPL-2.0+

++++++ mutter-3.9.3.tar.xz -> mutter-3.9.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/Makefile.in new/mutter-3.9.4/Makefile.in
--- old/mutter-3.9.3/Makefile.in        2013-06-18 16:54:32.000000000 +0200
+++ new/mutter-3.9.4/Makefile.in        2013-07-10 18:36:01.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/NEWS new/mutter-3.9.4/NEWS
--- old/mutter-3.9.3/NEWS       2013-06-18 16:53:45.000000000 +0200
+++ new/mutter-3.9.4/NEWS       2013-07-10 18:35:03.000000000 +0200
@@ -1,3 +1,16 @@
+3.9.4
+=====
+* Tweak window shadows [Allan; #702141]
+* Ignore our own focus events for focus prediction [Jasper; #701017]
+* Add API to query if the stage is focused [Jasper; #700735]
+* Add API to query the monitor for a given position [Adel]
+* Don't force attached dialogs to be border-only [Florian; #702764]
+* Allow slicing of backgrounds to avoid texture size limits [Ray; #702283]
+* Miscellaneous bug fixes and cleanups [Adel; #701224, #702564]
+
+Contributors:
+  Allan Day, Adel Gadllah, Florian Müllner, Jasper St. Pierre, Ray Strode
+
 3.9.3
 =====
 * Ensure events are always reported to the grab window [Rui; #701219]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/aclocal.m4 new/mutter-3.9.4/aclocal.m4
--- old/mutter-3.9.3/aclocal.m4 2013-06-18 16:54:28.000000000 +0200
+++ new/mutter-3.9.4/aclocal.m4 2013-07-10 18:35:57.000000000 +0200
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.13.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
@@ -35,7 +35,7 @@
 [am__api_version='1.13'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.2], [],
+m4_if([$1], [1.13.4], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,7 +51,7 @@
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.2])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/configure new/mutter-3.9.4/configure
--- old/mutter-3.9.3/configure  2013-06-18 16:54:41.000000000 +0200
+++ new/mutter-3.9.4/configure  2013-07-10 18:36:08.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mutter 3.9.3.
+# Generated by GNU Autoconf 2.69 for mutter 3.9.4.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=mutter>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='mutter'
 PACKAGE_TARNAME='mutter'
-PACKAGE_VERSION='3.9.3'
-PACKAGE_STRING='mutter 3.9.3'
+PACKAGE_VERSION='3.9.4'
+PACKAGE_STRING='mutter 3.9.4'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=mutter'
 PACKAGE_URL=''
 
@@ -1465,7 +1465,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mutter 3.9.3 to adapt to many kinds of systems.
+\`configure' configures mutter 3.9.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1539,7 +1539,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mutter 3.9.3:";;
+     short | recursive ) echo "Configuration of mutter 3.9.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1698,7 +1698,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mutter configure 3.9.3
+mutter configure 3.9.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2250,7 +2250,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mutter $as_me 3.9.3, which was
+It was created by mutter $as_me 3.9.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3118,7 +3118,7 @@
 
 # Define the identity of the package.
  PACKAGE='mutter'
- VERSION='3.9.3'
+ VERSION='3.9.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3350,7 +3350,7 @@
 
 MUTTER_MAJOR_VERSION=3
 MUTTER_MINOR_VERSION=9
-MUTTER_MICRO_VERSION=3
+MUTTER_MICRO_VERSION=4
 MUTTER_PLUGIN_API_VERSION=3
 
 
@@ -18167,7 +18167,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mutter $as_me 3.9.3, which was
+This file was extended by mutter $as_me 3.9.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18233,7 +18233,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mutter config.status 3.9.3
+mutter config.status 3.9.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/configure.ac 
new/mutter-3.9.4/configure.ac
--- old/mutter-3.9.3/configure.ac       2013-06-18 16:38:56.000000000 +0200
+++ new/mutter-3.9.4/configure.ac       2013-07-10 18:35:14.000000000 +0200
@@ -2,7 +2,7 @@
 
 m4_define([mutter_major_version], [3])
 m4_define([mutter_minor_version], [9])
-m4_define([mutter_micro_version], [3])
+m4_define([mutter_micro_version], [4])
 
 m4_define([mutter_version],
           [mutter_major_version.mutter_minor_version.mutter_micro_version])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/doc/Makefile.in 
new/mutter-3.9.4/doc/Makefile.in
--- old/mutter-3.9.3/doc/Makefile.in    2013-06-18 16:54:33.000000000 +0200
+++ new/mutter-3.9.4/doc/Makefile.in    2013-07-10 18:36:02.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/doc/man/Makefile.in 
new/mutter-3.9.4/doc/man/Makefile.in
--- old/mutter-3.9.3/doc/man/Makefile.in        2013-06-18 16:54:33.000000000 
+0200
+++ new/mutter-3.9.4/doc/man/Makefile.in        2013-07-10 18:36:02.000000000 
+0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/doc/reference/Makefile.in 
new/mutter-3.9.4/doc/reference/Makefile.in
--- old/mutter-3.9.3/doc/reference/Makefile.in  2013-06-18 16:54:34.000000000 
+0200
+++ new/mutter-3.9.4/doc/reference/Makefile.in  2013-07-10 18:36:03.000000000 
+0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/doc/reference/html/index.html 
new/mutter-3.9.4/doc/reference/html/index.html
--- old/mutter-3.9.3/doc/reference/html/index.html      2013-06-18 
16:56:20.000000000 +0200
+++ new/mutter-3.9.4/doc/reference/html/index.html      2013-07-10 
18:37:48.000000000 +0200
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" 
cellspacing="0"><tr><th valign="middle"><p class="title">Mutter Reference 
Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      This document is for Mutter 3.9.3.
+      This document is for Mutter 3.9.4.
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://developer.gnome.org/meta/"; 
target="_top">http://developer.gnome.org/meta/</a>.
     </p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/doc/reference/meta-docs.sgml 
new/mutter-3.9.4/doc/reference/meta-docs.sgml
--- old/mutter-3.9.3/doc/reference/meta-docs.sgml       2013-06-18 
16:55:04.000000000 +0200
+++ new/mutter-3.9.4/doc/reference/meta-docs.sgml       2013-07-10 
18:36:37.000000000 +0200
@@ -3,7 +3,7 @@
                "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd";
 [
   <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 
'http://www.w3.org/2003/XInclude'">
-  <!ENTITY version "3.9.3">
+  <!ENTITY version "3.9.4">
 ]>
 <book id="index">
   <bookinfo>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/Makefile.in 
new/mutter-3.9.4/src/Makefile.in
--- old/mutter-3.9.3/src/Makefile.in    2013-06-18 16:54:36.000000000 +0200
+++ new/mutter-3.9.4/src/Makefile.in    2013-07-10 18:36:04.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/compositor/compositor.c 
new/mutter-3.9.4/src/compositor/compositor.c
--- old/mutter-3.9.3/src/compositor/compositor.c        2013-06-18 
16:38:40.000000000 +0200
+++ new/mutter-3.9.4/src/compositor/compositor.c        2013-06-24 
14:41:46.000000000 +0200
@@ -392,6 +392,24 @@
 }
 
 gboolean
+meta_stage_is_focused (MetaScreen *screen)
+{
+  ClutterStage *stage;
+  Window window;
+
+  stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen));
+  if (!stage)
+    return FALSE;
+
+  window = clutter_x11_get_stage_window (stage);
+
+  if (window == None)
+    return FALSE;
+
+  return (screen->display->focus_xwindow == window);
+}
+
+gboolean
 meta_begin_modal_for_plugin (MetaScreen       *screen,
                              MetaPlugin       *plugin,
                              Window            grab_window,
@@ -1566,8 +1584,10 @@
 meta_enable_unredirect_for_screen (MetaScreen *screen)
 {
   MetaCompScreen *info = meta_screen_get_compositor_data (screen);
-  if (info != NULL)
-   info->disable_unredirect_count = MAX(0, info->disable_unredirect_count - 1);
+  if (info != NULL && info->disable_unredirect_count == 0)
+    g_warning ("Called enable_unredirect_for_screen while unredirection is 
enabled.");
+  if (info != NULL && info->disable_unredirect_count > 0)
+   info->disable_unredirect_count = info->disable_unredirect_count - 1;
 }
 
 #define FLASH_TIME_MS 50
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/compositor/meta-background.c 
new/mutter-3.9.4/src/compositor/meta-background.c
--- old/mutter-3.9.3/src/compositor/meta-background.c   2013-06-17 
16:52:45.000000000 +0200
+++ new/mutter-3.9.4/src/compositor/meta-background.c   2013-07-02 
09:22:22.000000000 +0200
@@ -1060,7 +1060,7 @@
 
   texture = cogl_texture_new_from_data (width,
                                         height,
-                                        COGL_TEXTURE_NO_SLICING,
+                                        COGL_TEXTURE_NO_ATLAS,
                                         has_alpha ?
                                         COGL_PIXEL_FORMAT_RGBA_8888 :
                                         COGL_PIXEL_FORMAT_RGB_888,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/compositor/meta-shadow-factory.c 
new/mutter-3.9.4/src/compositor/meta-shadow-factory.c
--- old/mutter-3.9.3/src/compositor/meta-shadow-factory.c       2013-06-17 
16:52:45.000000000 +0200
+++ new/mutter-3.9.4/src/compositor/meta-shadow-factory.c       2013-06-18 
18:43:29.000000000 +0200
@@ -123,12 +123,12 @@
 /* The first element in this array also defines the default parameters
  * for newly created classes */
 MetaShadowClassInfo default_shadow_classes[] = {
-  { "normal",       { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } },
-  { "dialog",       { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } },
-  { "modal_dialog", { 6, -1, 0, 1, 255 }, { 3, -1, 0, 3, 128 } },
-  { "utility",      { 3, -1, 0, 1, 255 }, { 3, -1, 0, 1, 128 } },
-  { "border",       { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } },
-  { "menu",         { 6, -1, 0, 3, 255 }, { 3, -1, 0, 0, 128 } },
+  { "normal",       { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } },
+  { "dialog",       { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } },
+  { "modal_dialog", { 6, -1, 0, 1, 128 }, { 3, -1, 0, 3, 32 } },
+  { "utility",      { 3, -1, 0, 1, 128 }, { 3, -1, 0, 1, 32 } },
+  { "border",       { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } },
+  { "menu",         { 6, -1, 0, 3, 128 }, { 3, -1, 0, 0, 32 } },
 
   { "popup-menu",    { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } },
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/compositor/plugins/Makefile.in 
new/mutter-3.9.4/src/compositor/plugins/Makefile.in
--- old/mutter-3.9.3/src/compositor/plugins/Makefile.in 2013-06-18 
16:54:37.000000000 +0200
+++ new/mutter-3.9.4/src/compositor/plugins/Makefile.in 2013-07-10 
18:36:05.000000000 +0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/core/display-private.h 
new/mutter-3.9.4/src/core/display-private.h
--- old/mutter-3.9.3/src/core/display-private.h 2013-06-18 16:38:40.000000000 
+0200
+++ new/mutter-3.9.4/src/core/display-private.h 2013-06-24 14:41:46.000000000 
+0200
@@ -113,6 +113,9 @@
    * or event that caused this.
    */
   MetaWindow *focus_window;
+  /* For windows we've focused that don't necessarily have an X window,
+   * like the no_focus_window or the stage X window. */
+  Window focus_xwindow;
   gulong focus_serial;
 
   /* last timestamp passed to XSetInputFocus */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/core/display.c 
new/mutter-3.9.4/src/core/display.c
--- old/mutter-3.9.3/src/core/display.c 2013-06-18 16:38:40.000000000 +0200
+++ new/mutter-3.9.4/src/core/display.c 2013-06-24 14:41:46.000000000 +0200
@@ -1467,6 +1467,17 @@
   return display->current_time;
 }
 
+static Bool
+find_timestamp_predicate (Display  *xdisplay,
+                          XEvent   *ev,
+                          XPointer  arg)
+{
+  MetaDisplay *display = (MetaDisplay *) arg;
+
+  return (ev->type == PropertyNotify &&
+          ev->xproperty.atom == display->atom__MUTTER_TIMESTAMP_PING);
+}
+
 /* Get a timestamp, even if it means a roundtrip */
 guint32
 meta_display_get_current_time_roundtrip (MetaDisplay *display)
@@ -1478,17 +1489,13 @@
     {
       XEvent property_event;
 
-      /* Using the property XA_PRIMARY because it's safe; nothing
-       * would use it as a property. The type doesn't matter.
-       */
-      XChangeProperty (display->xdisplay,
-                       display->timestamp_pinging_window,
-                       XA_PRIMARY, XA_STRING, 8,
-                       PropModeAppend, NULL, 0);
-      XWindowEvent (display->xdisplay,
-                    display->timestamp_pinging_window,
-                    PropertyChangeMask,
-                    &property_event);
+      XChangeProperty (display->xdisplay, display->timestamp_pinging_window,
+                       display->atom__MUTTER_TIMESTAMP_PING,
+                       XA_STRING, 8, PropModeAppend, NULL, 0);
+      XIfEvent (display->xdisplay,
+                &property_event,
+                find_timestamp_predicate,
+                (XPointer) display);
       timestamp = property_event.xproperty.time;
     }
 
@@ -1876,11 +1883,12 @@
 static void
 update_focus_window (MetaDisplay *display,
                      MetaWindow  *window,
+                     Window       xwindow,
                      gulong       serial)
 {
   display->focus_serial = serial;
 
-  if (window == display->focus_window)
+  if (display->focus_xwindow == xwindow)
     return;
 
   if (display->focus_window)
@@ -1897,11 +1905,13 @@
        */
       previous = display->focus_window;
       display->focus_window = NULL;
+      display->focus_xwindow = None;
 
       meta_window_set_focused_internal (previous, FALSE);
     }
 
   display->focus_window = window;
+  display->focus_xwindow = xwindow;
 
   if (display->focus_window)
     {
@@ -1952,6 +1962,7 @@
                                     guint32      timestamp)
 {
   MetaWindow *meta_window;
+  gulong serial;
 
   if (timestamp_too_old (display, &timestamp))
     return;
@@ -1959,14 +1970,35 @@
   meta_window = meta_display_lookup_x_window (display, xwindow);
 
   meta_error_trap_push (display);
-  update_focus_window (display,
-                       meta_window,
-                       XNextRequest (display->xdisplay));
+
+  /* In order for mutter to know that the focus request succeeded, we track
+   * the serial of the "focus request" we made, but if we take the serial
+   * of the XSetInputFocus request, then there's no way to determine the
+   * difference between focus events as a result of the SetInputFocus and
+   * focus events that other clients send around the same time. Ensure that
+   * we know which is which by making two requests that the server will
+   * process at the same time.
+   */
+  meta_display_grab (display);
+
+  serial = XNextRequest (display->xdisplay);
 
   XSetInputFocus (display->xdisplay,
                   xwindow,
                   RevertToPointerRoot,
                   timestamp);
+
+  XChangeProperty (display->xdisplay, display->timestamp_pinging_window,
+                   display->atom__MUTTER_FOCUS_SET,
+                   XA_STRING, 8, PropModeAppend, NULL, 0);
+
+  meta_display_ungrab (display);
+
+  update_focus_window (display,
+                       meta_window,
+                       xwindow,
+                       serial);
+
   meta_error_trap_pop (display);
 
   display->last_focus_time = timestamp;
@@ -2079,9 +2111,11 @@
   else
     g_return_if_reached ();
 
-  if (display->server_focus_serial >= display->focus_serial)
+  if (display->server_focus_serial > display->focus_serial)
     {
-      update_focus_window (display, focus_window,
+      update_focus_window (display,
+                           focus_window,
+                           focus_window ? focus_window->xwindow : None,
                            display->server_focus_serial);
     }
 }
@@ -2137,6 +2171,7 @@
                   display->focus_window->desc);
       update_focus_window (display,
                            meta_display_lookup_x_window (display, 
display->server_focus_window),
+                           display->server_focus_window,
                            display->server_focus_serial);
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/core/screen-private.h 
new/mutter-3.9.4/src/core/screen-private.h
--- old/mutter-3.9.3/src/core/screen-private.h  2013-06-17 16:52:45.000000000 
+0200
+++ new/mutter-3.9.4/src/core/screen-private.h  2013-06-24 14:41:46.000000000 
+0200
@@ -187,6 +187,9 @@
                                                 MetaWindow                 
*not_this_one);
 
 const MetaMonitorInfo* meta_screen_get_current_monitor_info   (MetaScreen    
*screen);
+const MetaMonitorInfo* meta_screen_get_current_monitor_info_for_pos   
(MetaScreen    *screen,
+                                                                       int x,
+                                                                       int y);
 const MetaMonitorInfo* meta_screen_get_monitor_for_rect   (MetaScreen    
*screen,
                                                            MetaRectangle 
*rect);
 const MetaMonitorInfo* meta_screen_get_monitor_for_window (MetaScreen    
*screen,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/core/screen.c 
new/mutter-3.9.4/src/core/screen.c
--- old/mutter-3.9.3/src/core/screen.c  2013-06-17 16:52:45.000000000 +0200
+++ new/mutter-3.9.4/src/core/screen.c  2013-06-24 18:27:55.000000000 +0200
@@ -2216,6 +2216,65 @@
     return &screen->monitor_infos[monitor_index];
 }
 
+const MetaMonitorInfo*
+meta_screen_get_current_monitor_info_for_pos (MetaScreen *screen,
+                                              int x,
+                                              int y)
+{
+    int monitor_index;
+    monitor_index = meta_screen_get_current_monitor_for_pos (screen, x, y);
+    return &screen->monitor_infos[monitor_index];
+}
+
+
+/**
+ * meta_screen_get_current_monitor_for_pos:
+ * @screen: a #MetaScreen
+ * @x: The x coordinate
+ * @y: The y coordinate
+ *
+ * Gets the index of the monitor that contains the passed coordinates.
+ *
+ * Return value: a monitor index
+ */
+int
+meta_screen_get_current_monitor_for_pos (MetaScreen *screen,
+                                         int x,
+                                         int y)
+{
+  if (screen->n_monitor_infos == 1)
+    return 0;
+  else if (screen->display->monitor_cache_invalidated)
+    {
+      int i;
+      MetaRectangle pointer_position;
+      pointer_position.x = x;
+      pointer_position.y = y;
+      pointer_position.width = pointer_position.height = 1;
+
+      screen->display->monitor_cache_invalidated = FALSE;
+      screen->last_monitor_index = 0;
+
+      for (i = 0; i < screen->n_monitor_infos; i++)
+        {
+          if (meta_rectangle_contains_rect (&screen->monitor_infos[i].rect,
+                                            &pointer_position))
+            {
+              screen->last_monitor_index = i;
+              break;
+            }
+        }
+
+      meta_topic (META_DEBUG_XINERAMA,
+                  "Rechecked current monitor, now %d\n",
+                  screen->last_monitor_index);
+
+    }
+
+    return screen->last_monitor_index;
+}
+
+
 /**
  * meta_screen_get_current_monitor:
  * @screen: a #MetaScreen
@@ -2241,11 +2300,7 @@
       XIButtonState buttons;
       XIModifierState mods;
       XIGroupState group;
-      int i;
-      MetaRectangle pointer_position;
 
-      screen->display->monitor_cache_invalidated = FALSE;
-      
       XIQueryPointer (screen->display->xdisplay,
                       META_VIRTUAL_CORE_POINTER_ID,
                       screen->xroot,
@@ -2260,24 +2315,7 @@
                       &group);
       free (buttons.mask);
 
-      pointer_position.x = root_x_return;
-      pointer_position.y = root_y_return;
-      pointer_position.width = pointer_position.height = 1;
-
-      screen->last_monitor_index = 0;
-      for (i = 0; i < screen->n_monitor_infos; i++)
-        {
-          if (meta_rectangle_contains_rect (&screen->monitor_infos[i].rect,
-                                            &pointer_position))
-            {
-              screen->last_monitor_index = i;
-              break;
-            }
-        }
-      
-      meta_topic (META_DEBUG_XINERAMA,
-                  "Rechecked current monitor, now %d\n",
-                  screen->last_monitor_index);
+      meta_screen_get_current_monitor_for_pos (screen, root_x_return, 
root_y_return);
     }
 
   return screen->last_monitor_index;
@@ -3001,7 +3039,7 @@
 
   /* Fix up monitor for all windows on this screen */
   windows = meta_display_list_windows (screen->display,
-                                       META_LIST_DEFAULT);
+                                       META_LIST_INCLUDE_OVERRIDE_REDIRECT);
   for (tmp = windows; tmp != NULL; tmp = tmp->next)
     {
       MetaWindow *window = tmp->data;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/core/window.c 
new/mutter-3.9.4/src/core/window.c
--- old/mutter-3.9.3/src/core/window.c  2013-06-18 16:38:40.000000000 +0200
+++ new/mutter-3.9.4/src/core/window.c  2013-06-24 20:19:33.000000000 +0200
@@ -145,6 +145,8 @@
 static void unmaximize_window_before_freeing (MetaWindow        *window);
 static void unminimize_window_and_all_transient_parents (MetaWindow *window);
 
+static void meta_window_update_monitor (MetaWindow *window);
+
 /* Idle handlers for the three queues (run with meta_later_add()). The
  * "data" parameter in each case will be a GINT_TO_POINTER of the
  * index into the queue arrays to use.
@@ -4767,6 +4769,12 @@
   if (window->type == META_WINDOW_DESKTOP)
     return;
 
+  if (window->override_redirect)
+    {
+      meta_window_update_monitor (window);
+      return;
+    }
+
   old = window->monitor;
 
   /* Start on primary */
@@ -8243,9 +8251,6 @@
   if (window->type == META_WINDOW_TOOLBAR)
     window->decorated = FALSE;
 
-  if (meta_window_is_attached_dialog (window))
-    window->border_only = TRUE;
-
   if (window->type == META_WINDOW_DESKTOP ||
       window->type == META_WINDOW_DOCK ||
       window->override_redirect)
@@ -8916,7 +8921,7 @@
        * refers to the monitor which contains the largest part of the window,
        * the latter to the one where the pointer is located.
        */
-      monitor = meta_screen_get_current_monitor_info (window->screen);
+      monitor = meta_screen_get_current_monitor_info_for_pos (window->screen, 
x, y);
       meta_window_get_work_area_for_monitor (window,
                                              monitor->number,
                                              &work_area);
@@ -10978,7 +10983,7 @@
       /* can't add border if undecorated */
       return META_FRAME_TYPE_LAST;
     }
-  else if ((window->border_only && base_type != META_FRAME_TYPE_ATTACHED) ||
+  else if (window->border_only ||
            (window->hide_titlebar_when_maximized && META_WINDOW_MAXIMIZED 
(window)) ||
            (window->hide_titlebar_when_maximized && 
META_WINDOW_TILED_SIDE_BY_SIDE (window)))
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/meta/atomnames.h 
new/mutter-3.9.4/src/meta/atomnames.h
--- old/mutter-3.9.3/src/meta/atomnames.h       2013-06-17 16:52:46.000000000 
+0200
+++ new/mutter-3.9.4/src/meta/atomnames.h       2013-06-24 14:41:46.000000000 
+0200
@@ -70,6 +70,8 @@
 item(_GNOME_PANEL_ACTION)
 item(_GNOME_PANEL_ACTION_MAIN_MENU)
 item(_GNOME_PANEL_ACTION_RUN_DIALOG)
+item(_MUTTER_TIMESTAMP_PING)
+item(_MUTTER_FOCUS_SET)
 item(_MUTTER_SENTINEL)
 item(_MUTTER_VERSION)
 item(WM_CLIENT_MACHINE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/meta/compositor-mutter.h 
new/mutter-3.9.4/src/meta/compositor-mutter.h
--- old/mutter-3.9.3/src/meta/compositor-mutter.h       2013-06-18 
16:38:40.000000000 +0200
+++ new/mutter-3.9.4/src/meta/compositor-mutter.h       2013-06-24 
14:41:46.000000000 +0200
@@ -48,5 +48,6 @@
 void meta_empty_stage_input_region   (MetaScreen    *screen);
 void meta_focus_stage_window         (MetaScreen    *screen,
                                       guint32        timestamp);
+gboolean meta_stage_is_focused       (MetaScreen    *screen);
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/meta/screen.h 
new/mutter-3.9.4/src/meta/screen.h
--- old/mutter-3.9.3/src/meta/screen.h  2013-06-17 16:52:46.000000000 +0200
+++ new/mutter-3.9.4/src/meta/screen.h  2013-06-24 14:41:46.000000000 +0200
@@ -78,6 +78,9 @@
 int  meta_screen_get_n_monitors       (MetaScreen    *screen);
 int  meta_screen_get_primary_monitor  (MetaScreen    *screen);
 int  meta_screen_get_current_monitor  (MetaScreen    *screen);
+int  meta_screen_get_current_monitor_for_pos  (MetaScreen    *screen,
+                                               int x,
+                                               int y);
 void meta_screen_get_monitor_geometry (MetaScreen    *screen,
                                        int            monitor,
                                        MetaRectangle *geometry);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/tools/Makefile.in 
new/mutter-3.9.4/src/tools/Makefile.in
--- old/mutter-3.9.3/src/tools/Makefile.in      2013-06-18 16:54:37.000000000 
+0200
+++ new/mutter-3.9.4/src/tools/Makefile.in      2013-07-10 18:36:05.000000000 
+0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-3.9.3/src/wm-tester/Makefile.in 
new/mutter-3.9.4/src/wm-tester/Makefile.in
--- old/mutter-3.9.3/src/wm-tester/Makefile.in  2013-06-18 16:54:38.000000000 
+0200
+++ new/mutter-3.9.4/src/wm-tester/Makefile.in  2013-07-10 18:36:05.000000000 
+0200
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to