Hello community, here is the log from the commit of package mutter for openSUSE:Factory checked in at 2017-09-13 21:56:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mutter (Old) and /work/SRC/openSUSE:Factory/.mutter.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mutter" Wed Sep 13 21:56:51 2017 rev:112 rq:523833 version:3.26.0 Changes: -------- --- /work/SRC/openSUSE:Factory/mutter/mutter.changes 2017-08-18 14:58:44.413994565 +0200 +++ /work/SRC/openSUSE:Factory/.mutter.new/mutter.changes 2017-09-13 21:57:00.553016923 +0200 @@ -1,0 +2,59 @@ +Tue Sep 12 19:33:28 UTC 2017 - [email protected] + +- Update to version 3.26.0: + + Updated translations. +- Changes from version 3.25.92: + + Add screencast and remote desktop support (bgo#784199). + + Support running with no attached monitors (bgo#730551). + + Add a vertical gradient effect to background actor (bgo#786618). + + Misc. bug fixes: bgo#786619, bgo#786677, bgo#772218, bgo#786918, + bgo#760670. + + Updated translations. +- Drop mutter-no-mandatory-eglGetPlatformDisplayEXT.patch and + mutter-new-libgudev.patch, fixed upstream. + +------------------------------------------------------------------- +Thu Sep 7 18:09:43 UTC 2017 - [email protected] + +- Add mutter-new-libgudev.patch: Fix build with new libgudev + (bgo#760670). + +------------------------------------------------------------------- +Thu Aug 24 07:59:06 UTC 2017 - [email protected] + +- Add mutter-no-mandatory-eglGetPlatformDisplayEXT.patch: egl: + Don't require eglGetPlatformDisplayEXT. Trying to unilaterally + require eglGetPlatformDisplayEXT causes problems in scenarios + where this method is not available. Besides, this should only be + required on Wayland, so we can stop requiring it always and + simply let the eglGetPlatformDisplay() function error accordingly + when needed (bgo#786619). + +------------------------------------------------------------------- +Tue Aug 22 08:20:16 UTC 2017 - [email protected] + +- Update to version 3.25.91: + + Reduce memory use of suspended instances (bgo#786299). + + Make supported scales determination saner (bgo#786474). + + Fix crash on inhibit-shortcuts dialog reponse (bgo#786385). + + Support libinput's tag-and-drag setting (bgo#775755). + + Avoid overlapping keybindings with multiple layouts + (bgo#786408). + + Fix non-transformed cursor on rotated monitors (bgo#786023). + + Avoid unnecessary work during background painting (bgo#783512). + + Misc. bug fixes: bgo#691611, bgo#786300, bgo#777732, + bgo#786568. + + Updated translations. + +------------------------------------------------------------------- +Mon Aug 21 12:40:17 UTC 2017 - [email protected] + +- Update to version 3.25.90: + + Add zwp_linux_dmabuf_v1 support (bgo#785262). + + Add (x)wayland shortcut inhibitor support (bgo#783342). + + Misc. bug fixes: bgo#785263, bgo#785347, bgo#767805. + + Updated translations. +- Rename libmutter-0-0 subpackage to libmutter-1-0, following + upstreams soname change. + +------------------------------------------------------------------- @@ -5,0 +65,97 @@ + +------------------------------------------------------------------- +Thu Jul 20 13:25:04 UTC 2017 - [email protected] + +- Update to version 3.25.4: + + Do not throttle motion events on tablet tools (bgo#783535). + + Handle left-handed mode on pen/eraser devices (bgo#782027). + + Add wl_surface.damage_buffer() support (bgo#784080). + + Fix crash when moving across on-adjacent monitors (bgo#783630). + + Fix window moving/resizing via tablet tools (bgo#777333). + + Support fractional monitor scaling (bgo#765011). + + Keep override-redirect windows stacked on top (bgo#780485). + + Implement tablet rings/strips configuration (bgo#782033). + + Support tablet wheel events on wayland (bgo#783716). + + Move g-s-d xrandr functionality into mutter (bgo#781906). + + Misc. bug fixes: bgo#783502, bgo#784009, bgo#784223, + bgo#784272, bgo#784402, bgo#784881, bgo#762083, bgo#784867, + bgo#781723. +- Drop desktop_database_post(un) and + glib2_gsettings_schema_post(un) from post(un), no longer needed + as we have file-triggers to take care of this for us now. + +------------------------------------------------------------------- +Thu Jul 20 13:25:04 UTC 2017 - [email protected] + +- Update to version 3.25.3: + + Ignore hotplug-mode-update value on startup (bgo#783073). + + Implement configurable monitor scales on X11 (bgo#777732). + + Fix handling of tiled monitors (bgo#781723). + + Handle multiple keycodes for keysym (bgo#781223). + + Consider subsurfaces when grabbing (bgo#781811). + + Fix logic for HiPDPI scaling of TV outputs (bgo#777347). + + Fix handling of left-handed mode on pen/eraser devices + (bgo#782027). + + Fix output cycling in non-display-attached tablets (bgo#782032). + + Fix wacom cursor offset on wayland (bgo#784009). + + Handle EXIF orientation of backgrounds (bgo#783125). + + Misc. bug fixes: bgo#772218, bgo#783161, bgo#780407, + bgo#783113, bgo#783293, bgo#783505, bgo#781703. + + Updated translations. + +------------------------------------------------------------------- +Thu Jul 20 13:25:03 UTC 2017 - [email protected] + +- Move SLE only patches to patch number 1000 and above. +- Rename mutter-bell.patch to mutter-SLE-bell.patch, + mutter-bsc984738-grab-display.patch to + mutter-SLE-bsc984738-grab-display.patch and + relax-some-constraints-on-CSD-windows-in-sle-classic.patch to + mutter-SLE-relax-some-constraints-on-CSD-windows.patch. + +------------------------------------------------------------------- +Thu Jul 20 13:25:02 UTC 2017 - [email protected] + +- Update to version 3.25.2: + + Fix frame updates on hide-titlebar-when-maximized changes + (bgo#781862). + + Fix accessible screen coordinates on X11 (bgo#781902). + + Use less CPU when rendering fast-updating windows (bgo#782344). + + Compute geometry of clients that don't set one explicitly + (bgo#782213). + + Fix copy+paste of UTF8 strings between X11 and wayland + (bgo#782472). + + Fix non-wayland builds (bgo#780533). + + Add plugin vfunc to implement a custom force-quit dialog + (bgo#711619). + + Fix swapped red and blue channels in CoglTexture data + (bgo#779234). + + Fix build where libtool's link_all_deplibs defaults to 'no' + (bgo#782821). + + Fix glitches when opening a window maximized (bgo#781353, + bgo#782183). + + Fix wrong cursor after window underneath the pointer changed + (bgo#755164). + + Implement support for disable-while-typing option (bgo#764852). + + Emit size-change signal when tiling (bgo#782968). + + Misc. bug fixes: bgo#759085, bgo#780215, bgo#782156, + bgo#782152. + + Updated translations. +- Drop mutter-monitor-fixes.patch and mutter-wayland-fixes.patch: + Fixed upstream. + +------------------------------------------------------------------- +Thu Jul 20 13:25:01 UTC 2017 - [email protected] + +- Update to version 3.25.1: + + Always sync window geometry on state changes (bgo#780292). + + Use EGL instead of GLX when drawing using GLES (bgo#771636). + + Scale relative motion deltas with monitor scale (bgo#778119). + + Use texture fallback when setting hardware cursor fails + (bgo#770020). + + Fix lock-up when using additional theme variants (bgo#780254). + + Rework low-level monitor configuration (bgo#777732). + + Fix building with GLES2 instead of GL (bgo#781398). + + Misc. bug fixes: bgo#780304, bgo#772218, bgo#781242, + bgo#781391. + + Updated translations. Old: ---- mutter-3.24.4.tar.xz mutter-bell.patch mutter-bsc984738-grab-display.patch relax-some-constraints-on-CSD-windows-in-sle-classic.patch New: ---- mutter-3.26.0.tar.xz mutter-SLE-bell.patch mutter-SLE-bsc984738-grab-display.patch mutter-SLE-relax-some-constraints-on-CSD-windows.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mutter.spec ++++++ --- /var/tmp/diff_new_pack.O3AIyY/_old 2017-09-13 21:57:01.172929702 +0200 +++ /var/tmp/diff_new_pack.O3AIyY/_new 2017-09-13 21:57:01.172929702 +0200 @@ -21,45 +21,44 @@ %else %bcond_without wayland %endif - Name: mutter -Version: 3.24.4 +Version: 3.26.0 Release: 0 Summary: Window and compositing manager based on Clutter License: GPL-2.0+ Group: System/GUI/GNOME Url: http://www.gnome.org -Source: http://download.gnome.org/sources/mutter/3.24/%{name}-%{version}.tar.xz -# PATCH-FEATURE-SLE mutter-bell.patch FATE#316042 bnc#889218 [email protected] -- make audible bell work out of the box. -Patch1: mutter-bell.patch -# PATCH-FIX-SLE relax-some-constraints-on-CSD-windows-in-sle-classic.patch bnc#883491 [email protected] -- Relax some constraints on window positioning for CSD windows s.t. they can be placed at the very top of the monitor. -Patch2: relax-some-constraints-on-CSD-windows-in-sle-classic.patch -# PATCH-FIX-UPSTREAM mutter-bsc984738-grab-display.patch bsc#984738 bgo#769387 [email protected] -- Revert a upstream commit to avoid X11 race condition that results in wrong dialog sizes. -Patch3: mutter-bsc984738-grab-display.patch +Source: http://download.gnome.org/sources/mutter/3.26/%{name}-%{version}.tar.xz # PATCH-FIX-UPSTREAM mutter-fix-startup.patch bgo#768531 [email protected] -- Fix slow startup notification on wayland -Patch6: mutter-fix-startup.patch +Patch0: mutter-fix-startup.patch # PATCH-FEATURE-UPSTREAM mutter-iconcache-Support-RGB16_565-format-for-16-bit-color-.patch FATE#323412 bgo#781704 bsc#1024748 [email protected] -- iconcache: Support RGB16_565 format for 16-bit sessions -Patch7: mutter-iconcache-Support-RGB16_565-format-for-16-bit-color-.patch +Patch1: mutter-iconcache-Support-RGB16_565-format-for-16-bit-color-.patch +# SLE only patches start at 1000 +# PATCH-FEATURE-SLE mutter-SLE-bell.patch FATE#316042 bnc#889218 [email protected] -- make audible bell work out of the box. +Patch1000: mutter-SLE-bell.patch +# PATCH-FIX-SLE mutter-SLE-relax-some-constraints-on-CSD-windows.patch bnc#883491 [email protected] -- Relax some constraints on window positioning for CSD windows s.t. they can be placed at the very top of the monitor. +Patch1001: mutter-SLE-relax-some-constraints-on-CSD-windows.patch +# PATCH-FIX-UPSTREAM mutter-SLE-bsc984738-grab-display.patch bsc#984738 bgo#769387 [email protected] -- Revert a upstream commit to avoid X11 race condition that results in wrong dialog sizes. +Patch1002: mutter-SLE-bsc984738-grab-display.patch BuildRequires: fdupes BuildRequires: gobject-introspection-devel >= 0.9.5 BuildRequires: libSM-devel BuildRequires: libX11-devel BuildRequires: libXinerama-devel -%if !0%{?is_opensuse} -BuildRequires: translation-update-upstream -%endif +BuildRequires: pkgconfig BuildRequires: update-desktop-files BuildRequires: zenity BuildRequires: pkgconfig(cairo) >= 1.10.0 BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(gbm) -BuildRequires: pkgconfig(gio-unix-2.0) >= 2.25.10 +BuildRequires: pkgconfig(gio-unix-2.0) >= 2.53.2 BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(gnome-desktop-3.0) BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.19.3 BuildRequires: pkgconfig(gtk+-3.0) >= 3.19.7 BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(libcanberra-gtk3) +BuildRequires: pkgconfig(libinput) BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(libudev) >= 136 BuildRequires: pkgconfig(libwacom) @@ -80,27 +79,28 @@ BuildRequires: pkgconfig(xrandr) >= 1.5.0 BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xtst) -%if %{with wayland} -BuildRequires: pkgconfig(gbm) >= 10.3 -BuildRequires: pkgconfig(gudev-1.0) -BuildRequires: pkgconfig(libdrm) -BuildRequires: pkgconfig(libsystemd) -BuildRequires: pkgconfig(wayland-protocols) >= 1.7 -BuildRequires: pkgconfig(wayland-server) >= 1.1.90 -%endif -BuildRequires: pkgconfig(libinput) Requires: zenity Recommends: %{name}-lang Provides: windowmanager # Obsolete the now private typelib. Obsoletes: typelib-1_0-Meta-3_0 -BuildRoot: %{_tmppath}/%{name}-%{version}-build +%if !0%{?is_opensuse} +BuildRequires: translation-update-upstream +%endif +%if %{with wayland} +BuildRequires: pkgconfig(gbm) >= 10.3 +BuildRequires: pkgconfig(gudev-1.0) >= 232 +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(wayland-protocols) >= 1.9 +BuildRequires: pkgconfig(wayland-server) >= 1.13.0 +%endif %description Mutter is a window and compositing manager based on Clutter, forked from Metacity. -%package -n libmutter-0-0 +%package -n libmutter-1-0 Summary: Window and compositing manager based on Clutter # we need the gsettings schema; hopefully, they'll stay backwards compatible # (since we can't require = version, to not break SLPP) @@ -108,7 +108,7 @@ Requires: %{name}-data >= %{version} Obsoletes: libmutter0 -%description -n libmutter-0-0 +%description -n libmutter-1-0 Mutter is a window and compositing manager based on Clutter, forked from Metacity. @@ -130,23 +130,25 @@ Summary: Development files for mutter, a window and compositing manager Group: Development/Libraries/GNOME Requires: %{name} = %{version} -Requires: libmutter-0-0 = %{version} +Requires: libmutter-1-0 = %{version} %description devel This subpackage contains libraries and header files for developing applications that want to make use of the mutter library. %lang_package + %prep %setup -q +%patch0 -p1 +%patch1 -p1 +# SLE only patches and translations. %if !0%{?is_opensuse} translation-update-upstream -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 +%patch1000 -p1 +%patch1001 -p1 +%patch1002 -p1 %endif -%patch6 -p1 -%patch7 -p1 %build %configure \ @@ -169,50 +171,38 @@ %find_lang %{name} %{?no_lang_C} %fdupes %{buildroot} -%post -%desktop_database_post - -%postun -%desktop_database_postun - -%post -n libmutter-0-0 -p /sbin/ldconfig - -%postun -n libmutter-0-0 -p /sbin/ldconfig - -%post data -%glib2_gsettings_schema_post +%post -n libmutter-1-0 -p /sbin/ldconfig -%postun data -%glib2_gsettings_schema_postun +%postun -n libmutter-1-0 -p /sbin/ldconfig %files %defattr (-, root, root) %doc COPYING NEWS -%doc %{_mandir}/man1/mutter.1%{?ext_man} +%{_mandir}/man1/mutter.1%{?ext_man} %{_bindir}/mutter # These so files are not split out since they are private to mutter -%{_libdir}/mutter/libmutter-clutter-0.so -%{_libdir}/mutter/libmutter-cogl-pango-0.so -%{_libdir}/mutter/libmutter-cogl-path-0.so -%{_libdir}/mutter/libmutter-cogl-0.so +%{_libdir}/mutter/libmutter-clutter-1.so +%{_libdir}/mutter/libmutter-cogl-pango-1.so +%{_libdir}/mutter/libmutter-cogl-path-1.so +%{_libdir}/mutter/libmutter-cogl-1.so %{_libdir}/mutter/plugins/default.so # %{_libexecdir}/mutter-restart-helper %{_datadir}/applications/mutter.desktop # These typelibs are not split out since they are private to mutter -%{_libdir}/mutter/Cally-0.typelib -%{_libdir}/mutter/Clutter-0.typelib -%{_libdir}/mutter/ClutterX11-0.typelib -%{_libdir}/mutter/Cogl-0.typelib +%{_libdir}/mutter/Cally-1.typelib +%{_libdir}/mutter/Clutter-1.typelib +%{_libdir}/mutter/ClutterX11-1.typelib +%{_libdir}/mutter/Cogl-1.typelib #{_libdir}/mutter/Cogl-2.0.typelib -%{_libdir}/mutter/CoglPango-0.typelib +%{_libdir}/mutter/CoglPango-1.typelib #{_libdir}/mutter/CoglPango-2.0.typelib -%{_libdir}/mutter/Meta-0.typelib +%{_libdir}/mutter/Meta-1.typelib # -%files -n libmutter-0-0 +%files -n libmutter-1-0 %defattr(-,root,root) -%{_libdir}/libmutter-0.so.* +%{_libdir}/libmutter-1.so.* %dir %{_libdir}/mutter/ # users of libmutter need this directory %dir %{_libdir}/mutter/plugins/ @@ -234,20 +224,20 @@ %files devel %defattr(-,root,root) %{_includedir}/mutter/ -%{_libdir}/libmutter-0.so -%{_libdir}/mutter/Meta-0.gir -%{_libdir}/mutter/Cally-0.gir -%{_libdir}/mutter/Clutter-0.gir -%{_libdir}/mutter/ClutterX11-0.gir -%{_libdir}/mutter/Cogl-0.gir +%{_libdir}/libmutter-1.so +%{_libdir}/mutter/Meta-1.gir +%{_libdir}/mutter/Cally-1.gir +%{_libdir}/mutter/Clutter-1.gir +%{_libdir}/mutter/ClutterX11-1.gir +%{_libdir}/mutter/Cogl-1.gir #{_libdir}/mutter/Cogl-2.0.gir -%{_libdir}/mutter/CoglPango-0.gir +%{_libdir}/mutter/CoglPango-1.gir #{_libdir}/mutter/CoglPango-2.0.gir -%{_libdir}/pkgconfig/libmutter-0.pc -%{_libdir}/pkgconfig/mutter-clutter-0.pc -%{_libdir}/pkgconfig/mutter-clutter-x11-0.pc -%{_libdir}/pkgconfig/mutter-cogl-0.pc -%{_libdir}/pkgconfig/mutter-cogl-pango-0.pc -%{_libdir}/pkgconfig/mutter-cogl-path-0.pc +%{_libdir}/pkgconfig/libmutter-1.pc +%{_libdir}/pkgconfig/mutter-clutter-1.pc +%{_libdir}/pkgconfig/mutter-clutter-x11-1.pc +%{_libdir}/pkgconfig/mutter-cogl-1.pc +%{_libdir}/pkgconfig/mutter-cogl-pango-1.pc +%{_libdir}/pkgconfig/mutter-cogl-path-1.pc %changelog ++++++ mutter-3.24.4.tar.xz -> mutter-3.26.0.tar.xz ++++++ ++++ 63381 lines of diff (skipped) ++++++ mutter-SLE-bell.patch ++++++ Index: mutter-3.23.2/src/meta/prefs.h =================================================================== --- mutter-3.23.2.orig/src/meta/prefs.h +++ mutter-3.23.2/src/meta/prefs.h @@ -89,6 +89,7 @@ typedef enum META_PREF_WORKSPACE_NAMES, META_PREF_VISUAL_BELL, META_PREF_AUDIBLE_BELL, + META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER, META_PREF_VISUAL_BELL_TYPE, META_PREF_GNOME_ACCESSIBILITY, META_PREF_GNOME_ANIMATIONS, @@ -399,6 +400,7 @@ MetaKeyBindingAction meta_prefs_get_keyb gboolean meta_prefs_get_visual_bell (void); gboolean meta_prefs_bell_is_audible (void); +gboolean meta_prefs_bell_force_through_server (void); GDesktopVisualBellType meta_prefs_get_visual_bell_type (void); #endif Index: mutter-3.23.2/src/core/prefs.c =================================================================== --- mutter-3.23.2.orig/src/core/prefs.c +++ mutter-3.23.2/src/core/prefs.c @@ -93,6 +93,7 @@ static gboolean auto_raise_delay = 500; static gboolean focus_change_on_pointer_rest = FALSE; static gboolean bell_is_visible = FALSE; static gboolean bell_is_audible = TRUE; +static gboolean bell_force_through_server = FALSE; static gboolean gnome_accessibility = FALSE; static gboolean gnome_animations = TRUE; static char *cursor_theme = NULL; @@ -353,6 +354,13 @@ static MetaBoolPreference preferences_bo &bell_is_audible, /* FIXME: change the name: it's confusing */ }, { + { "audible-bell-force-through-server", + SCHEMA_MUTTER, + META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER, + }, + &bell_force_through_server, + }, + { { KEY_GNOME_ACCESSIBILITY, SCHEMA_INTERFACE, META_PREF_GNOME_ACCESSIBILITY, @@ -1813,6 +1821,9 @@ meta_preference_to_string (MetaPreferenc case META_PREF_AUDIBLE_BELL: return "AUDIBLE_BELL"; + case META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER: + return "AUDIBLE_BELL_FORCE_THROUGH_SERVER"; + case META_PREF_VISUAL_BELL_TYPE: return "VISUAL_BELL_TYPE"; @@ -2077,6 +2088,12 @@ meta_prefs_bell_is_audible (void) return bell_is_audible; } +gboolean +meta_prefs_bell_force_through_server (void) +{ + return bell_force_through_server; +} + GDesktopVisualBellType meta_prefs_get_visual_bell_type (void) { Index: mutter-3.23.2/src/core/bell.c =================================================================== --- mutter-3.23.2.orig/src/core/bell.c +++ mutter-3.23.2/src/core/bell.c @@ -220,6 +220,12 @@ meta_bell_notify (MetaDisplay *display, if (meta_prefs_get_visual_bell ()) bell_visual_notify (display, window); + if (meta_prefs_bell_force_through_server ()) + { + XkbForceBell (display->xdisplay, 100); + return TRUE; + } + if (meta_prefs_bell_is_audible ()) return bell_audible_notify (display, window); Index: mutter-3.23.2/data/org.gnome.mutter.gschema.xml.in =================================================================== --- mutter-3.23.2.orig/data/org.gnome.mutter.gschema.xml.in +++ mutter-3.23.2/data/org.gnome.mutter.gschema.xml.in @@ -102,6 +102,16 @@ </description> </key> + <key name="audible-bell-force-through-server" type="b"> + <default>false</default> + <summary>Force the System Bell through the X server only.</summary> + <description> + Force the System Bell through the X server only for systems that + do not want to go through the sound card - for example that don't + have speakers. + </description> + </key> + <child name="keybindings" schema="org.gnome.mutter.keybindings"/> </schema> ++++++ mutter-SLE-bsc984738-grab-display.patch ++++++ diff --git a/src/core/display-private.h b/src/core/display-private.h index 531c6f7..aaa90ec 100644 --- a/src/core/display-private.h +++ b/src/core/display-private.h @@ -174,6 +174,8 @@ struct _MetaDisplay GHashTable *stamps; GHashTable *wayland_windows; + int server_grab_count; + /* serials of leave/unmap events that may * correspond to an enter event we should * ignore @@ -322,6 +324,8 @@ struct _MetaDisplayClass gboolean meta_display_open (void); void meta_display_close (MetaDisplay *display, guint32 timestamp); +void meta_display_grab (MetaDisplay *display); +void meta_display_ungrab (MetaDisplay *display); void meta_display_unmanage_windows_for_screen (MetaDisplay *display, MetaScreen *screen, diff --git a/src/core/display.c b/src/core/display.c index 4c7a00e..87e3307 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -585,6 +585,7 @@ meta_display_open (void) display->focus_serial = 0; display->server_focus_window = None; display->server_focus_serial = 0; + display->server_grab_count = 0; display->mouse_mode = TRUE; /* Only relevant for mouse or sloppy focus */ display->allow_terminal_deactivation = TRUE; /* Only relevant for when a @@ -1130,6 +1131,50 @@ meta_display_close (MetaDisplay *display, meta_quit (META_EXIT_SUCCESS); } +/* Grab/ungrab routines taken from fvwm. + * Calling this function will cause X to ignore all other clients until + * you ungrab. This may not be quite as bad as it sounds, yet there is + * agreement that avoiding server grabs except when they are clearly needed + * is a good thing. + * + * If you do use such grabs, please clearly explain the necessity for their + * usage in a comment. Try to keep their scope extremely limited. In + * particular, try to avoid emitting any signals or notifications while + * a grab is active (if the signal receiver tries to block on an X request + * from another client at this point, you will have a deadlock). + */ +void +meta_display_grab (MetaDisplay *display) +{ + if (display->server_grab_count == 0) + { + XGrabServer (display->xdisplay); + } + display->server_grab_count += 1; + meta_verbose ("Grabbing display, grab count now %d\n", + display->server_grab_count); +} + +void +meta_display_ungrab (MetaDisplay *display) +{ + if (display->server_grab_count == 0) + meta_bug ("Ungrabbed non-grabbed server\n"); + + display->server_grab_count -= 1; + if (display->server_grab_count == 0) + { + /* FIXME we want to purge all pending "queued" stuff + * at this point, such as window hide/show + */ + XUngrabServer (display->xdisplay); + XFlush (display->xdisplay); + } + + meta_verbose ("Ungrabbing display, grab count now %d\n", + display->server_grab_count); +} + /** * meta_display_for_x_display: * @xdisplay: An X display @@ -1516,7 +1561,7 @@ request_xserver_input_focus_change (MetaDisplay *display, * we know which is which by making two requests that the server will * process at the same time. */ - XGrabServer (display->xdisplay); + meta_display_grab (display); serial = XNextRequest (display->xdisplay); @@ -1529,8 +1574,7 @@ request_xserver_input_focus_change (MetaDisplay *display, display->atom__MUTTER_FOCUS_SET, XA_STRING, 8, PropModeAppend, NULL, 0); - XUngrabServer (display->xdisplay); - XFlush (display->xdisplay); + meta_display_ungrab (display); meta_display_update_focus_window (display, meta_window, diff --git a/src/core/keybindings.c b/src/core/keybindings.c index ed34aea..a989200 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -979,6 +979,9 @@ meta_display_grab_window_buttons (MetaDisplay *display, { MetaKeyBindingManager *keys = &display->key_binding_manager; + if (display->server_grab_count > 0) + return; + /* Grab Alt + button1 for moving window. * Grab Alt + button2 for resizing window. * Grab Alt + button3 for popping up window menu. @@ -1015,6 +1018,9 @@ meta_display_ungrab_window_buttons (MetaDisplay *display, { MetaKeyBindingManager *keys = &display->key_binding_manager; + if (display->server_grab_count > 0) + return; + if (keys->window_grab_modifiers == 0) return; @@ -1041,6 +1047,9 @@ meta_display_grab_focus_window_button (MetaDisplay *display, { MetaKeyBindingManager *keys = &display->key_binding_manager; + if (display->server_grab_count > 0) + return; + /* Grab button 1 for activating unfocused windows */ meta_verbose ("Grabbing unfocused window buttons for %s\n", window->desc); @@ -1080,6 +1089,9 @@ meta_display_ungrab_focus_window_button (MetaDisplay *display, { MetaKeyBindingManager *keys = &display->key_binding_manager; + if (display->server_grab_count > 0) + return; + meta_verbose ("Ungrabbing unfocused window buttons for %s\n", window->desc); if (!window->have_focus_click_grab) @@ -1309,6 +1321,9 @@ meta_window_grab_keys (MetaWindow *window) MetaDisplay *display = window->display; MetaKeyBindingManager *keys = &display->key_binding_manager; + if (display->server_grab_count > 0) + return; + if (window->all_keys_grabbed) return; @@ -1348,6 +1363,9 @@ meta_window_ungrab_keys (MetaWindow *window) MetaDisplay *display = window->display; MetaKeyBindingManager *keys = &display->key_binding_manager; + if (display->server_grab_count > 0) + return; + if (window->grab_on_frame && window->frame != NULL) change_window_keygrabs (keys, window->frame->xwindow, FALSE); diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c index 3d47f0d..5ea1213 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c @@ -507,6 +507,8 @@ meta_window_x11_manage (MetaWindow *window) meta_icon_cache_init (&priv->icon_cache); + meta_display_grab (display); + meta_display_register_x_window (display, &window->xwindow, window); /* assign the window to its group, or create a new group if needed */ @@ -565,6 +567,13 @@ meta_window_x11_manage (MetaWindow *window) meta_window_x11_update_shape_region (window); meta_window_x11_update_input_region (window); + + meta_display_ungrab (display); + + /* Perform operations prevented by grab */ + if (window->frame) + meta_display_grab_window_buttons (display, window->frame->xwindow); + meta_window_grab_keys (window); } static void ++++++ mutter-SLE-relax-some-constraints-on-CSD-windows.patch ++++++ Index: mutter-3.23.2/src/core/constraints.c =================================================================== --- mutter-3.23.2.orig/src/core/constraints.c +++ mutter-3.23.2/src/core/constraints.c @@ -1466,6 +1466,12 @@ constrain_to_single_monitor (MetaWindow } static gboolean +constraint_is_sle_classic(void){ + char * session_mode = (char *) g_getenv ("GNOME_SHELL_SESSION_MODE"); + return g_strcmp0("sle-classic", session_mode) == 0; +} + +static gboolean constrain_fully_onscreen (MetaWindow *window, ConstraintInfo *info, ConstraintPriority priority, @@ -1481,6 +1487,11 @@ constrain_fully_onscreen (MetaWindow if (window->type == META_WINDOW_DESKTOP || window->type == META_WINDOW_DOCK || window->fullscreen || + /* in SLE Classic, there is no top bar and to avoid issues like + * bnc#883491, remove some constraints on CSD windows, which tends to have + * invisible wrapper box. Do the same for "constrain_titlebar_visible". + */ + (constraint_is_sle_classic() && !window->decorated) || !window->require_fully_onscreen || info->is_user_action || meta_window_get_placement_rule (window)) @@ -1518,11 +1529,12 @@ constrain_titlebar_visible (MetaWindow * is only meant for normal windows (e.g. we don't want docks to be shoved * "onscreen" by their own strut). */ - if (window->type == META_WINDOW_DESKTOP || - window->type == META_WINDOW_DOCK || - window->fullscreen || - !window->require_titlebar_visible || - unconstrained_user_action || + if (window->type == META_WINDOW_DESKTOP || + window->type == META_WINDOW_DOCK || + window->fullscreen || + (constraint_is_sle_classic() && !window->decorated) || + !window->require_titlebar_visible || + unconstrained_user_action || meta_window_get_placement_rule (window)) return TRUE; ++++++ mutter-iconcache-Support-RGB16_565-format-for-16-bit-color-.patch ++++++ --- /var/tmp/diff_new_pack.O3AIyY/_old 2017-09-13 21:57:02.900686609 +0200 +++ /var/tmp/diff_new_pack.O3AIyY/_new 2017-09-13 21:57:02.900686609 +0200 @@ -12,11 +12,11 @@ src/x11/iconcache.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) -diff --git a/src/x11/iconcache.c b/src/x11/iconcache.c -index 508dd82b1..f77783a05 100644 ---- a/src/x11/iconcache.c -+++ b/src/x11/iconcache.c -@@ -304,10 +304,43 @@ standard_pict_format_for_depth (int depth) +Index: mutter-3.26.0/src/x11/iconcache.c +=================================================================== +--- mutter-3.26.0.orig/src/x11/iconcache.c ++++ mutter-3.26.0/src/x11/iconcache.c +@@ -304,10 +304,43 @@ standard_pict_format_for_depth (int dept } } @@ -61,6 +61,3 @@ } static cairo_surface_t * --- -2.12.0 -
