Hello community, here is the log from the commit of package mutter.14060 for openSUSE:Leap:15.2:Update checked in at 2020-09-20 06:21:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2:Update/mutter.14060 (Old) and /work/SRC/openSUSE:Leap:15.2:Update/.mutter.14060.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mutter.14060" Sun Sep 20 06:21:51 2020 rev:1 rq:835035 version:3.34.6 Changes: -------- New Changes file: --- /dev/null 2020-09-10 00:27:47.435250138 +0200 +++ /work/SRC/openSUSE:Leap:15.2:Update/.mutter.14060.new.4249/mutter.changes 2020-09-20 06:21:58.083297162 +0200 @@ -0,0 +1,4146 @@ +------------------------------------------------------------------- +Thu Aug 20 15:34:43 UTC 2020 - Frederic Crozat <[email protected]> + +- Add mutter-meson_options-Use-libGLESv2.so.2-for-COGL_DRIVER-gle.patch: + don't use libGLESv2.so but libGLESv2.so.2 for COGL driver + (boo#1175559 glgo#GNOME/mutter!1282). + +------------------------------------------------------------------- +Wed May 13 00:06:08 UTC 2020 - [email protected] + +- Update to version 3.34.6: + + Fix various clipboard issues. + + Fix locate-pointer feature interfering with keybindings. + + Fix overview key on X11 when using multiple keyboard layouts. + + Preserve keyboard state on VT switch. + + Fixed crashes. + + Plugged memory leaks. + + Misc. bug fixes and cleanups. + +------------------------------------------------------------------- +Fri May 1 20:33:03 UTC 2020 - Michael Gorse <[email protected]> + +- Enable SLE patches on Leap (jsc#SLE-11897). + +------------------------------------------------------------------- +Wed Apr 01 11:02:28 UTC 2020 - [email protected] + +- Update to version 3.34.5: + + Fix visibility of initially hidden windows. + + Fix hardware cursor on GPU hotplug. + + Fix pasting images from wayland. + + Fixed crashes. + + Updated translations. +- Switch to using explicit released tag in _service. + +------------------------------------------------------------------- +Fri Mar 13 02:17:24 UTC 2020 - Alynx Zhou <[email protected]> + +- Add mutter-wayland-fix-keyboard-move-resize-window.patch: + move some common code out of X11 only code blocks to fix it + (bsc#1159976, glgo#GNOME/mutter!997). + +------------------------------------------------------------------- +Mon Mar 02 10:50:18 UTC 2020 - Antonio Larrosa <[email protected]> + +- Build with pipewire 0.3.0: + * Add 0001-Update-to-PipeWire-0.3-API.patch + +------------------------------------------------------------------- +Tue Feb 25 12:39:26 UTC 2020 - Dominique Leuenberger <[email protected]> + +- Rework mutter-fix-mesa20.patch: base it on mutter upstream commit + a444a4c. + +------------------------------------------------------------------- +Mon Feb 24 15:19:59 UTC 2020 - Stefan Dirsch <[email protected]> + +- Add mutter-fix-mesa20.patch: fixes build against Mesa 20 + (boo#1164688). + +------------------------------------------------------------------- +Sun Feb 16 17:03:28 UTC 2020 - Bjørn Lie <[email protected]> + +- Update to version 3.34.4: + + Handle mode set race conditions more gracefully. + + Fix fallback to GLES2. + + Fix interoperation with wl_data_device_manager v1. + + Fix visual glitches with offscreen effects applied. + + Favor text over images in clipboard manager. + + Fixes crashes. + + Plugged memory leaks. + + Misc. bug fixes. + + Updated translations. + +------------------------------------------------------------------- +Sat Jan 25 14:18:18 UTC 2020 - Dominique Leuenberger <[email protected]> + +- No longer recommend -lang: supplements are in use + +------------------------------------------------------------------- +Sun Jan 05 14:34:37 UTC 2020 - [email protected] + +- Update to version 3.34.3+0: + * Bump version to 3.34.3 + +------------------------------------------------------------------- +Wed Jan 01 20:16:09 UTC 2020 - [email protected] + +- Update to version 3.34.2+2: + * clutter/stage: Fix picking of rectangles with negative + positions. + +------------------------------------------------------------------- +Tue Dec 24 11:32:52 UTC 2019 - [email protected] + +- Update to version 3.34.2+1: + * screen-cast: Fix window recording on HiDPI + +------------------------------------------------------------------- +Fri Dec 13 06:32:34 UTC 2019 - [email protected] + +- Update to version 3.34.2+0: + * Update British English translation + * backends/native: Fix double free of error + * kms-impl/simple: Fix meta_set_fallback_feedback_idle + * kms: Process impl idle callbacks before pre dispatch flush + +------------------------------------------------------------------- +Tue Dec 10 10:26:41 UTC 2019 - Bjørn Lie <[email protected]> + +- Add explicit pkgconfig(fribidi) and pkgconfig(glib-2.0) + BuildRequires: meson checks for it. + +------------------------------------------------------------------- +Mon Dec 2 10:38:04 UTC 2019 - Frederic Crozat <[email protected]> + +- Add mutter-disable-cvt-s390x.patch: do not search cvt on s390x, + it doesn't exist there (bsc#1158128). + +------------------------------------------------------------------- +Mon Dec 02 10:09:22 UTC 2019 - [email protected] + +- Update to version 3.34.1+66: + * stack: Allow promoting transient windows to their parent's layer + * shaped-texture: Do not invalidate content on set_cogl_texture() + * cursor-tracker: Add API to keep the wayland pointer focus while hidden + * device-manager-x11: Ignore events if no source device is set + * clutter/cally-root: Use g_clear_signal_handler and fix a signal leak + * wayland: Move "ownership" of the DnD selection source to the data device + * wayland: Do not cancel data source on offer destruction + * wayland: Avoid redundant cancel() call + * wayland: Drop unused wl_signal structs + +------------------------------------------------------------------- +Tue Nov 19 11:56:58 UTC 2019 - [email protected] + +- Update to version 3.34.1+57: + * cursor-renderer/native: Fix cursor drawing in combination with panel_orientation_transform + * output-kms: Fix "panel orientation" kms-prop being ignored on native outputs + * compositor: Plug cairo_region_t leak + * backends: Plug MetaKmsPageFlipData leak + * input-settings/x11: Add missing clutter_x11_trap_x_errors around XIGetProperty + * plugin-manager: Kill window effects on destroy + * plugins/default: Handle skipped animations + * wayland/surface: Don't double scale when getting absolute coordinates + * window-props: Don't set override redirect windows as top-level parent + * window-props: Don't look for parent multiple times + * window: Assert we only set a NULL workspace when unmanaging + * window: Warn if O-R window workspace state is used + * wayland/actor-surface: Always store away frame callbacks on commit + * ci: Fix checking out gnome-shell on stable branches + * x11-display: Don't unset the X11 focused window after setting one + * tests/monitor-unit-tests: Add another tiling window hot plug test + * window: Reset tile monitor number when untiling + * tests/monitor-unit-tests: Add window tiling hot plug test + * tests/runner: Move window shown synchronization to helper + * tests/monitor-unit-tests: Move test client sanity check into helper + * window: Always update tile monitor number on hot plug + * plugins/default: Clean up tile preview when closing display + * plugin/default: Init quark before using + * display: Add 'closing' signal + * renderer-native: Separate offscreen and shadowfb + * clutter/stage-view: Separate offscreen and shadowfb + +------------------------------------------------------------------- +Wed Oct 30 15:43:16 UTC 2019 - [email protected] + +- Update to version 3.34.1+31: + * wayland: Check stylus serials on meta_wayland_seat_can_popup() + * x11: Limit touch replay pointer events to when replaying + * display: Move finishing of touch sequence to the backend + * x11: Update X11 focus before updating MetaDisplay focus + +------------------------------------------------------------------- +Wed Oct 23 18:14:18 UTC 2019 - [email protected] + +- Update to version 3.34.1+27: + + wayland/surface: Reset buffer_destroy_handler_id. + + window-actor: Add a missing NULL-check. + + monitor-manager: check for underscan setting validity upfront. + + clutter/stage: Actually set key focus to an actor on key focus. + + clutter/actor: Save key-focus state and unset it before + destruction. + + dbus-session-watcher: Chain up to parent finalize(). + +------------------------------------------------------------------- +Thu Oct 17 08:03:06 UTC 2019 - Alynx Zhou <[email protected]> + +- Rebase patches: + + Update mutter-SLE-bell.patch + + Disable mutter-SLE-bsc984738-grab-display.patch + +------------------------------------------------------------------- +Sun Oct 13 17:58:09 UTC 2019 - [email protected] + +- Update to version 3.34.1+21: + + x11: Map mimetypes back to selection atoms ++++ 3949 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:Leap:15.2:Update/.mutter.14060.new.4249/mutter.changes New: ---- 0001-Update-to-PipeWire-0.3-API.patch _service _servicedata mutter-3.34.6.obscpio mutter-Lower-HIDPI_LIMIT-to-144.patch mutter-SLE-bell.patch mutter-SLE-bsc984738-grab-display.patch mutter-SLE-relax-some-constraints-on-CSD-windows.patch mutter-disable-cvt-s390x.patch mutter-fix-mesa20.patch mutter-meson_options-Use-libGLESv2.so.2-for-COGL_DRIVER-gle.patch mutter-wayland-fix-keyboard-move-resize-window.patch mutter.changes mutter.obsinfo mutter.spec ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mutter.spec ++++++ # # spec file for package mutter # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # don't enable sysprof support by default %bcond_with profiler %define api_major 5 %define api_minor 0 %define libmutter libmutter-%{api_major}-%{api_minor} Name: mutter Version: 3.34.6 Release: 0 Summary: Window and compositing manager based on Clutter License: GPL-2.0-or-later Group: System/GUI/GNOME URL: https://www.gnome.org Source: %{name}-%{version}.tar.xz # PATCH-FIX-OPENSUSE mutter-Lower-HIDPI_LIMIT-to-144.patch fate#326682, bsc#1125467 [email protected] -- Lower HIDPI_LIMIT to 144 Patch3: mutter-Lower-HIDPI_LIMIT-to-144.patch # PATCH-FIX-UPSTREAM mutter-disable-cvt-s390x.patch bsc#1158128 [email protected] -- Do not search for cvt on s390x, it doesn't exist there Patch4: mutter-disable-cvt-s390x.patch # PATCH-FIX-UPSTREAM mutter-fix-mesa20.patch [email protected] -- EGL: Include EGL/eglmesaext.h Patch5: mutter-fix-mesa20.patch # PATCH-FIX-UPSTREAM 0001-Update-to-PipeWire-0.3-API.patch [email protected] -- Port mutter to build with pipewire 0.3.0 Patch6: 0001-Update-to-PipeWire-0.3-API.patch # PATCH-FIX-UPSTREAM mutter-wayland-fix-keyboard-move-resize-window.patch bsc#1159976, glgo#GNOME/mutter!997 [email protected] -- Fix window keyboard move/resize mode in wayland Patch7: mutter-wayland-fix-keyboard-move-resize-window.patch # PATCH-FIX-UPSTREAM mutter-meson_options-Use-libGLESv2.so.2-for-COGL_DRIVER-gle.patch boo#1175559 glgo#GNOME/mutter!1282 [email protected] -- Fix loading libGLESv2.so.2 Patch8: mutter-meson_options-Use-libGLESv2.so.2-for-COGL_DRIVER-gle.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-NEEDS-REBASE 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: Mesa-libGLESv3-devel BuildRequires: cmake BuildRequires: fdupes BuildRequires: meson BuildRequires: pkgconfig BuildRequires: translation-update-upstream BuildRequires: xorg-x11-server BuildRequires: xorg-x11-server-wayland BuildRequires: zenity BuildRequires: pkgconfig(cairo) >= 1.10.0 BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(fribidi) BuildRequires: pkgconfig(gbm) >= 17.1 BuildRequires: pkgconfig(gio-unix-2.0) >= 2.61.1 BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(glib-2.0) >= 2.61.1 BuildRequires: pkgconfig(gnome-desktop-3.0) BuildRequires: pkgconfig(gnome-settings-daemon) BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.9.5 BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.33.0 BuildRequires: pkgconfig(gtk+-3.0) >= 3.19.7 BuildRequires: pkgconfig(gudev-1.0) >= 232 BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(libcanberra-gtk3) BuildRequires: pkgconfig(libdrm) >= 2.4.83 BuildRequires: pkgconfig(libinput) BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.0 BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libudev) >= 136 BuildRequires: pkgconfig(libwacom) BuildRequires: pkgconfig(pango) >= 1.2.0 BuildRequires: pkgconfig(sm) %if %{with profiler} BuildRequires: pkgconfig(sysprof-3) BuildRequires: pkgconfig(sysprof-capture-3) %endif BuildRequires: pkgconfig(upower-glib) >= 0.99.0 BuildRequires: pkgconfig(wayland-protocols) >= 1.18 BuildRequires: pkgconfig(wayland-server) >= 1.13.0 BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xau) BuildRequires: pkgconfig(xcb-randr) BuildRequires: pkgconfig(xcomposite) >= 0.2 BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xinerama) BuildRequires: pkgconfig(xkbcommon) >= 0.4.3 BuildRequires: pkgconfig(xkbcommon-x11) BuildRequires: pkgconfig(xkbfile) BuildRequires: pkgconfig(xkeyboard-config) BuildRequires: pkgconfig(xrandr) >= 1.5.0 BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xtst) Requires: zenity Provides: windowmanager # Obsolete the now private typelib. Obsoletes: typelib-1_0-Meta-3_0 %description Mutter is a window and compositing manager based on Clutter, forked from Metacity. %package -n %{libmutter} 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) Group: System/Libraries Requires: %{name}-data >= %{version} # We need to obsolete the old mutter libs, as otherwise upgrading is impossible # This makes me believe we should probably fold libmutter into the main package # with the next update (3.30) Obsoletes: libmutter-1-0 Obsoletes: libmutter0 %description -n %{libmutter} Mutter is a window and compositing manager based on Clutter, forked from Metacity. This package contains a library for shared features. %package data Summary: Data files for mutter, a window and compositing manager based on Clutter Group: System/GUI/GNOME Requires: %{name} = %{version} %description data Mutter is a window and compositing manager based on Clutter, forked from Metacity. This package contains data files needed by mutter and its library. %package devel Summary: Development files for mutter, a window and compositing manager Group: Development/Libraries/GNOME Requires: %{libmutter} = %{version} Requires: %{name} = %{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 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 # SLE-only patches and translations. translation-update-upstream po mutter %if 0%{?sle_version} %patch1000 -p1 %patch1001 -p1 # %patch1002 -p1 %endif %build %define _lto_cflags %{nil} %meson \ -Degl_device=true \ -Dcogl_tests=false \ -Dclutter_tests=false \ -Dtests=false \ -Dinstalled_tests=false \ %if %{with profiler} -Dprofiler=true \ %else -Dprofiler=false \ %endif %{nil} %meson_build #%%check #%%meson_test %install %meson_install %find_lang %{name} %{?no_lang_C} %fdupes %{buildroot}%{_prefix} %post -n %{libmutter} -p /sbin/ldconfig %postun -n %{libmutter} -p /sbin/ldconfig %files %license COPYING %doc NEWS %{_mandir}/man1/mutter.1%{?ext_man} %{_bindir}/mutter %{_libexecdir}/mutter-restart-helper %{_datadir}/applications/mutter.desktop # These so files are not split out since they are private to mutter %{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so.* %{_libdir}/mutter-%{api_major}/libmutter-cogl-pango-%{api_major}.so.* %{_libdir}/mutter-%{api_major}/libmutter-cogl-path-%{api_major}.so.* %{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so.* %{_libdir}/mutter-%{api_major}/plugins/libdefault.so # These typelibs are not split out since they are private to mutter %{_libdir}/mutter-%{api_major}/Cally-%{api_major}.typelib %{_libdir}/mutter-%{api_major}/Clutter-%{api_major}.typelib %{_libdir}/mutter-%{api_major}/ClutterX11-%{api_major}.typelib %{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.typelib %{_libdir}/mutter-%{api_major}/CoglPango-%{api_major}.typelib %{_libdir}/mutter-%{api_major}/Meta-%{api_major}.typelib %files -n %{libmutter} %{_libdir}/libmutter-%{api_major}.so.* %dir %{_libdir}/mutter-%{api_major}/ # users of libmutter need this directory %dir %{_libdir}/mutter-%{api_major}/plugins/ %files data # Do not depend on g-c-c just for a directory %dir %{_datadir}/gnome-control-center %dir %{_datadir}/gnome-control-center/keybindings %{_datadir}/gnome-control-center/keybindings/50-mutter-windows.xml %{_datadir}/gnome-control-center/keybindings/50-mutter-navigation.xml %{_datadir}/gnome-control-center/keybindings/50-mutter-system.xml %{_datadir}/gnome-control-center/keybindings/50-mutter-wayland.xml %{_datadir}/GConf/gsettings/mutter-schemas.convert %{_datadir}/glib-2.0/schemas/org.gnome.mutter.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.mutter.wayland.gschema.xml %files devel %{_includedir}/mutter-%{api_major}/ %{_libdir}/mutter-%{api_major}/Meta-%{api_major}.gir %{_libdir}/mutter-%{api_major}/Cally-%{api_major}.gir %{_libdir}/mutter-%{api_major}/Clutter-%{api_major}.gir %{_libdir}/mutter-%{api_major}/ClutterX11-%{api_major}.gir %{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.gir %{_libdir}/mutter-%{api_major}/CoglPango-%{api_major}.gir %{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so %{_libdir}/mutter-%{api_major}/libmutter-cogl-pango-%{api_major}.so %{_libdir}/mutter-%{api_major}/libmutter-cogl-path-%{api_major}.so %{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so %{_libdir}/libmutter-%{api_major}.so %{_libdir}/pkgconfig/libmutter-%{api_major}.pc %{_libdir}/pkgconfig/mutter-clutter-%{api_major}.pc %{_libdir}/pkgconfig/mutter-clutter-x11-%{api_major}.pc %{_libdir}/pkgconfig/mutter-cogl-%{api_major}.pc %{_libdir}/pkgconfig/mutter-cogl-pango-%{api_major}.pc %{_libdir}/pkgconfig/mutter-cogl-path-%{api_major}.pc %files lang -f %{name}.lang %changelog ++++++ 0001-Update-to-PipeWire-0.3-API.patch ++++++ >From c5d2fc856a28b3a4f26ffffa420cbd9ff92875bb Mon Sep 17 00:00:00 2001 From: Wim Taymans <[email protected]> Date: Tue, 14 Jan 2020 09:44:45 +0100 Subject: [PATCH] screen-cast: Update to PipeWire 0.3 API Update to 0.3 API [jadahl: update Dockerfile to include new enough pipewire] Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/1051 https://gitlab.gnome.org/GNOME/mutter/merge_requests/1062 --- .gitlab-ci/Dockerfile | 3 + meson.build | 4 +- src/backends/meta-screen-cast-stream-src.c | 255 ++++++++------------- 3 files changed, 104 insertions(+), 158 deletions(-) diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile index 9accc9756..393c76394 100644 --- a/.gitlab-ci/Dockerfile +++ b/.gitlab-ci/Dockerfile #@@ -11,6 +11,7 @@ RUN dnf -y update && dnf -y upgrade && \ # dnf install -y 'dnf-command(builddep)' && \ # dnf install -y 'dnf-command(copr)' && \ # dnf copr enable -y fmuellner/gnome-shell-ci && \ #+ dnf copr enable -y jadahl/mutter-ci && \ # dnf -y update && dnf -y upgrade && \ # # dnf builddep -y mutter && \ @@ -27,4 +27,6 @@ RUN dnf -y update && dnf -y upgrade && \ dnf remove -y gnome-bluetooth-libs-devel dbus-glib-devel upower-devel python3-devel && \ dnf remove -y --noautoremove mutter mutter-devel && \ + dnf upgrade -y 'pkgconfig(libpipewire-0.3)' && \ + dnf clean all diff --git a/meson.build b/meson.build index daa6cc6fb..e071a5e40 100644 --- a/meson.build +++ b/meson.build @@ -50,7 +50,7 @@ libinput_req = '>= 1.7' gbm_req = '>= 10.3' # screen cast version requirements -libpipewire_req = '>= 0.2.5' +libpipewire_req = '>= 0.3.0' gnome = import('gnome') pkg = import('pkgconfig') @@ -241,7 +241,7 @@ endif have_remote_desktop = get_option('remote_desktop') if have_remote_desktop - libpipewire_dep = dependency('libpipewire-0.2', version: libpipewire_req) + libpipewire_dep = dependency('libpipewire-0.3', version: libpipewire_req) endif have_introspection = get_option('introspection') diff --git a/src/backends/meta-screen-cast-stream-src.c b/src/backends/meta-screen-cast-stream-src.c index 82c5cba43..ba1ce94a7 100644 --- a/src/backends/meta-screen-cast-stream-src.c +++ b/src/backends/meta-screen-cast-stream-src.c @@ -29,6 +29,7 @@ #include <spa/param/props.h> #include <spa/param/format-utils.h> #include <spa/param/video/format-utils.h> +#include <spa/utils/result.h> #include <stdint.h> #include <sys/mman.h> @@ -62,15 +63,6 @@ enum static guint signals[N_SIGNALS]; -typedef struct _MetaSpaType -{ - struct spa_type_media_type media_type; - struct spa_type_media_subtype media_subtype; - struct spa_type_format_video format_video; - struct spa_type_video_format video_format; - uint32_t meta_cursor; -} MetaSpaType; - typedef struct _MetaPipeWireSource { GSource base; @@ -82,19 +74,19 @@ typedef struct _MetaScreenCastStreamSrcPrivate { MetaScreenCastStream *stream; + struct pw_context *pipewire_context; struct pw_core *pipewire_core; - struct pw_remote *pipewire_remote; - struct pw_type *pipewire_type; MetaPipeWireSource *pipewire_source; - struct spa_hook pipewire_remote_listener; + struct spa_hook pipewire_core_listener; gboolean is_enabled; struct pw_stream *pipewire_stream; struct spa_hook pipewire_stream_listener; + uint32_t node_id; - MetaSpaType spa_type; struct spa_video_info_raw video_format; + int video_stride; uint64_t last_frame_timestamp_us; @@ -112,8 +104,6 @@ G_DEFINE_TYPE_WITH_CODE (MetaScreenCastStreamSrc, meta_screen_cast_stream_src_init_initable_iface) G_ADD_PRIVATE (MetaScreenCastStreamSrc)) -#define PROP_RANGE(min, max) 2, (min), (max) - static void meta_screen_cast_stream_src_get_specs (MetaScreenCastStreamSrc *src, int *width, @@ -286,9 +276,6 @@ meta_screen_cast_stream_src_set_empty_cursor_sprite_metadata (MetaScreenCastStre int x, int y) { - MetaScreenCastStreamSrcPrivate *priv = - meta_screen_cast_stream_src_get_instance_private (src); - MetaSpaType *spa_type = &priv->spa_type; struct spa_meta_bitmap *spa_meta_bitmap; spa_meta_cursor->id = 1; @@ -300,7 +287,7 @@ meta_screen_cast_stream_src_set_empty_cursor_sprite_metadata (MetaScreenCastStre spa_meta_bitmap = SPA_MEMBER (spa_meta_cursor, spa_meta_cursor->bitmap_offset, struct spa_meta_bitmap); - spa_meta_bitmap->format = spa_type->video_format.RGBA; + spa_meta_bitmap->format = SPA_VIDEO_FORMAT_RGBA; spa_meta_bitmap->offset = sizeof (struct spa_meta_bitmap); spa_meta_cursor->hotspot.x = 0; @@ -317,9 +304,6 @@ meta_screen_cast_stream_src_set_cursor_sprite_metadata (MetaScreenCastStreamSrc int y, float scale) { - MetaScreenCastStreamSrcPrivate *priv = - meta_screen_cast_stream_src_get_instance_private (src); - MetaSpaType *spa_type = &priv->spa_type; CoglTexture *cursor_texture; struct spa_meta_bitmap *spa_meta_bitmap; int hotspot_x, hotspot_y; @@ -346,7 +330,7 @@ meta_screen_cast_stream_src_set_cursor_sprite_metadata (MetaScreenCastStreamSrc spa_meta_bitmap = SPA_MEMBER (spa_meta_cursor, spa_meta_cursor->bitmap_offset, struct spa_meta_bitmap); - spa_meta_bitmap->format = spa_type->video_format.RGBA; + spa_meta_bitmap->format = SPA_VIDEO_FORMAT_RGBA; spa_meta_bitmap->offset = sizeof (struct spa_meta_bitmap); meta_cursor_sprite_get_hotspot (cursor_sprite, &hotspot_x, &hotspot_y); @@ -382,12 +366,10 @@ static void add_cursor_metadata (MetaScreenCastStreamSrc *src, struct spa_buffer *spa_buffer) { - MetaScreenCastStreamSrcPrivate *priv = - meta_screen_cast_stream_src_get_instance_private (src); - MetaSpaType *spa_type = &priv->spa_type; struct spa_meta_cursor *spa_meta_cursor; - spa_meta_cursor = spa_buffer_find_meta (spa_buffer, spa_type->meta_cursor); + spa_meta_cursor = spa_buffer_find_meta_data (spa_buffer, SPA_META_Cursor, + sizeof (*spa_meta_cursor)); if (spa_meta_cursor) meta_screen_cast_stream_src_set_cursor_metadata (src, spa_meta_cursor); } @@ -447,14 +429,14 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src) { data = spa_buffer->datas[0].data; } - else if (spa_buffer->datas[0].type == priv->pipewire_type->data.MemFd) + else if (spa_buffer->datas[0].type == SPA_DATA_MemFd) { map = mmap (NULL, spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset, PROT_READ | PROT_WRITE, MAP_SHARED, spa_buffer->datas[0].fd, 0); if (map == MAP_FAILED) { - g_warning ("Failed to mmap pipewire stream buffer: %s\n", + g_warning ("Failed to mmap pipewire stream buffer: %s", strerror (errno)); return; } @@ -469,28 +451,30 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src) if (meta_screen_cast_stream_src_record_frame (src, data)) { - struct spa_meta_video_crop *spa_meta_video_crop; + struct spa_meta_region *spa_meta_video_crop; spa_buffer->datas[0].chunk->size = spa_buffer->datas[0].maxsize; + spa_buffer->datas[0].chunk->stride = priv->video_stride; /* Update VideoCrop if needed */ spa_meta_video_crop = - spa_buffer_find_meta (spa_buffer, priv->pipewire_type->meta.VideoCrop); + spa_buffer_find_meta_data (spa_buffer, SPA_META_VideoCrop, + sizeof (*spa_meta_video_crop)); if (spa_meta_video_crop) { if (meta_screen_cast_stream_src_get_videocrop (src, &crop_rect)) { - spa_meta_video_crop->x = crop_rect.x; - spa_meta_video_crop->y = crop_rect.y; - spa_meta_video_crop->width = crop_rect.width; - spa_meta_video_crop->height = crop_rect.height; + spa_meta_video_crop->region.position.x = crop_rect.x; + spa_meta_video_crop->region.position.y = crop_rect.y; + spa_meta_video_crop->region.size.width = crop_rect.width; + spa_meta_video_crop->region.size.height = crop_rect.height; } else { - spa_meta_video_crop->x = 0; - spa_meta_video_crop->y = 0; - spa_meta_video_crop->width = priv->stream_width; - spa_meta_video_crop->height = priv->stream_height; + spa_meta_video_crop->region.position.x = 0; + spa_meta_video_crop->region.position.y = 0; + spa_meta_video_crop->region.size.width = priv->stream_width; + spa_meta_video_crop->region.size.height = priv->stream_height; } } } @@ -555,7 +539,6 @@ on_stream_state_changed (void *data, MetaScreenCastStreamSrc *src = data; MetaScreenCastStreamSrcPrivate *priv = meta_screen_cast_stream_src_get_instance_private (src); - uint32_t node_id; switch (state) { @@ -563,14 +546,12 @@ on_stream_state_changed (void *data, g_warning ("pipewire stream error: %s", error_message); meta_screen_cast_stream_src_notify_closed (src); break; - case PW_STREAM_STATE_CONFIGURE: - node_id = pw_stream_get_node_id (priv->pipewire_stream); - g_signal_emit (src, signals[READY], 0, (unsigned int) node_id); - break; - case PW_STREAM_STATE_UNCONNECTED: - case PW_STREAM_STATE_CONNECTING: - case PW_STREAM_STATE_READY: case PW_STREAM_STATE_PAUSED: + if (priv->node_id == SPA_ID_INVALID && priv->pipewire_stream) + { + priv->node_id = pw_stream_get_node_id (priv->pipewire_stream); + g_signal_emit (src, signals[READY], 0, (unsigned int) priv->node_id); + } if (meta_screen_cast_stream_src_is_enabled (src)) meta_screen_cast_stream_src_disable (src); break; @@ -578,68 +559,69 @@ on_stream_state_changed (void *data, if (!meta_screen_cast_stream_src_is_enabled (src)) meta_screen_cast_stream_src_enable (src); break; + case PW_STREAM_STATE_UNCONNECTED: + case PW_STREAM_STATE_CONNECTING: + break; } } static void -on_stream_format_changed (void *data, - const struct spa_pod *format) +on_stream_param_changed (void *data, + uint32_t id, + const struct spa_pod *format) { MetaScreenCastStreamSrc *src = data; MetaScreenCastStreamSrcPrivate *priv = meta_screen_cast_stream_src_get_instance_private (src); - struct pw_type *pipewire_type = priv->pipewire_type; uint8_t params_buffer[1024]; int32_t width, height, stride, size; struct spa_pod_builder pod_builder; const struct spa_pod *params[3]; const int bpp = 4; - if (!format) - { - pw_stream_finish_format (priv->pipewire_stream, 0, NULL, 0); - return; - } + if (!format || id != SPA_PARAM_Format) + return; spa_format_video_raw_parse (format, - &priv->video_format, - &priv->spa_type.format_video); + &priv->video_format); width = priv->video_format.size.width; height = priv->video_format.size.height; stride = SPA_ROUND_UP_N (width * bpp, 4); size = height * stride; + priv->video_stride = stride; + pod_builder = SPA_POD_BUILDER_INIT (params_buffer, sizeof (params_buffer)); - params[0] = spa_pod_builder_object ( + params[0] = spa_pod_builder_add_object ( &pod_builder, - pipewire_type->param.idBuffers, pipewire_type->param_buffers.Buffers, - ":", pipewire_type->param_buffers.size, "i", size, - ":", pipewire_type->param_buffers.stride, "i", stride, - ":", pipewire_type->param_buffers.buffers, "iru", 16, PROP_RANGE (2, 16), - ":", pipewire_type->param_buffers.align, "i", 16); - - params[1] = spa_pod_builder_object ( + SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, + SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int (16, 2, 16), + SPA_PARAM_BUFFERS_blocks, SPA_POD_Int (1), + SPA_PARAM_BUFFERS_size, SPA_POD_Int (size), + SPA_PARAM_BUFFERS_stride, SPA_POD_Int (stride), + SPA_PARAM_BUFFERS_align, SPA_POD_Int (16)); + + params[1] = spa_pod_builder_add_object ( &pod_builder, - pipewire_type->param.idMeta, pipewire_type->param_meta.Meta, - ":", pipewire_type->param_meta.type, "I", pipewire_type->meta.VideoCrop, - ":", pipewire_type->param_meta.size, "i", sizeof (struct spa_meta_video_crop)); + SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, + SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop), + SPA_PARAM_META_size, SPA_POD_Int (sizeof (struct spa_meta_region))); - params[2] = spa_pod_builder_object ( + params[2] = spa_pod_builder_add_object ( &pod_builder, - pipewire_type->param.idMeta, pipewire_type->param_meta.Meta, - ":", pipewire_type->param_meta.type, "I", priv->spa_type.meta_cursor, - ":", pipewire_type->param_meta.size, "i", CURSOR_META_SIZE (64, 64)); + SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, + SPA_PARAM_META_type, SPA_POD_Id (SPA_META_Cursor), + SPA_PARAM_META_size, SPA_POD_Int (CURSOR_META_SIZE (64, 64))); - pw_stream_finish_format (priv->pipewire_stream, 0, - params, G_N_ELEMENTS (params)); + pw_stream_update_params (priv->pipewire_stream, params, G_N_ELEMENTS (params)); } static const struct pw_stream_events stream_events = { PW_VERSION_STREAM_EVENTS, .state_changed = on_stream_state_changed, - .format_changed = on_stream_format_changed, + .param_changed = on_stream_param_changed, }; static struct pw_stream * @@ -652,8 +634,6 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src, uint8_t buffer[1024]; struct spa_pod_builder pod_builder = SPA_POD_BUILDER_INIT (buffer, sizeof (buffer)); - MetaSpaType *spa_type = &priv->spa_type; - struct pw_type *pipewire_type = priv->pipewire_type; float frame_rate; MetaFraction frame_rate_fraction; struct spa_fraction max_framerate; @@ -661,7 +641,9 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src, const struct spa_pod *params[1]; int result; - pipewire_stream = pw_stream_new (priv->pipewire_remote, + priv->node_id = SPA_ID_INVALID; + + pipewire_stream = pw_stream_new (priv->pipewire_core, "meta-screen-cast-src", NULL); if (!pipewire_stream) @@ -682,17 +664,17 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src, max_framerate = SPA_FRACTION (frame_rate_fraction.num, frame_rate_fraction.denom); - params[0] = spa_pod_builder_object ( + params[0] = spa_pod_builder_add_object ( &pod_builder, - pipewire_type->param.idEnumFormat, pipewire_type->spa_format, - "I", spa_type->media_type.video, - "I", spa_type->media_subtype.raw, - ":", spa_type->format_video.format, "I", spa_type->video_format.BGRx, - ":", spa_type->format_video.size, "R", &SPA_RECTANGLE (priv->stream_width, - priv->stream_height), - ":", spa_type->format_video.framerate, "F", &SPA_FRACTION (0, 1), - ":", spa_type->format_video.max_framerate, "Fru", &max_framerate, - PROP_RANGE (&min_framerate, + SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, + SPA_FORMAT_mediaType, SPA_POD_Id (SPA_MEDIA_TYPE_video), + SPA_FORMAT_mediaSubtype, SPA_POD_Id (SPA_MEDIA_SUBTYPE_raw), + SPA_FORMAT_VIDEO_format, SPA_POD_Id (SPA_VIDEO_FORMAT_BGRx), + SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle (&SPA_RECTANGLE (priv->stream_width, + priv->stream_height)), + SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)), + SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_CHOICE_RANGE_Fraction (&max_framerate, + &min_framerate, &max_framerate)); pw_stream_add_listener (pipewire_stream, @@ -702,7 +684,7 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src, result = pw_stream_connect (pipewire_stream, PW_DIRECTION_OUTPUT, - NULL, + SPA_ID_INVALID, (PW_STREAM_FLAG_DRIVER | PW_STREAM_FLAG_MAP_BUFFERS), params, G_N_ELEMENTS (params)); @@ -717,40 +699,18 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src, } static void -on_state_changed (void *data, - enum pw_remote_state old, - enum pw_remote_state state, - const char *error_message) +on_core_error (void *data, + uint32_t id, + int seq, + int res, + const char *message) { MetaScreenCastStreamSrc *src = data; - MetaScreenCastStreamSrcPrivate *priv = - meta_screen_cast_stream_src_get_instance_private (src); - struct pw_stream *pipewire_stream; - GError *error = NULL; - switch (state) - { - case PW_REMOTE_STATE_ERROR: - g_warning ("pipewire remote error: %s\n", error_message); - meta_screen_cast_stream_src_notify_closed (src); - break; - case PW_REMOTE_STATE_CONNECTED: - pipewire_stream = create_pipewire_stream (src, &error); - if (!pipewire_stream) - { - g_warning ("Could not create pipewire stream: %s", error->message); - g_error_free (error); - meta_screen_cast_stream_src_notify_closed (src); - } - else - { - priv->pipewire_stream = pipewire_stream; - } - break; - case PW_REMOTE_STATE_UNCONNECTED: - case PW_REMOTE_STATE_CONNECTING: - break; - } + g_warning ("pipewire remote error: id:%u %s", id, message); + + if (id == PW_ID_CORE && res == -EPIPE) + meta_screen_cast_stream_src_notify_closed (src); } static gboolean @@ -793,17 +753,6 @@ static GSourceFuncs pipewire_source_funcs = pipewire_loop_source_finalize }; -static void -init_spa_type (MetaSpaType *type, - struct spa_type_map *map) -{ - spa_type_media_type_map (map, &type->media_type); - spa_type_media_subtype_map (map, &type->media_subtype); - spa_type_format_video_map (map, &type->format_video); - spa_type_video_format_map (map, &type->video_format); - type->meta_cursor = spa_type_map_get_id(map, SPA_TYPE_META__Cursor); -} - static MetaPipeWireSource * create_pipewire_source (void) { @@ -829,9 +778,9 @@ create_pipewire_source (void) return pipewire_source; } -static const struct pw_remote_events remote_events = { - PW_VERSION_REMOTE_EVENTS, - .state_changed = on_state_changed, +static const struct pw_core_events core_events = { + PW_VERSION_CORE_EVENTS, + .error = on_core_error, }; static gboolean @@ -851,37 +800,31 @@ meta_screen_cast_stream_src_initable_init (GInitable *initable, return FALSE; } - priv->pipewire_core = pw_core_new (priv->pipewire_source->pipewire_loop, - NULL); - if (!priv->pipewire_core) + priv->pipewire_context = pw_context_new (priv->pipewire_source->pipewire_loop, + NULL, 0); + if (!priv->pipewire_context) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Failed to create pipewire core"); + "Failed to create pipewire context"); return FALSE; } - priv->pipewire_remote = pw_remote_new (priv->pipewire_core, NULL, 0); - if (!priv->pipewire_remote) + priv->pipewire_core = pw_context_connect (priv->pipewire_context, NULL, 0); + if (!priv->pipewire_core) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Couldn't creat pipewire remote"); + "Couldn't connect pipewire context"); return FALSE; } - pw_remote_add_listener (priv->pipewire_remote, - &priv->pipewire_remote_listener, - &remote_events, - src); + pw_core_add_listener (priv->pipewire_core, + &priv->pipewire_core_listener, + &core_events, + src); - priv->pipewire_type = pw_core_get_type (priv->pipewire_core); - init_spa_type (&priv->spa_type, priv->pipewire_type->map); - - if (pw_remote_connect (priv->pipewire_remote) != 0) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Couldn't connect pipewire remote"); - return FALSE; - } + priv->pipewire_stream = create_pipewire_stream (src, error); + if (!priv->pipewire_stream) + return FALSE; return TRUE; } @@ -912,8 +855,8 @@ meta_screen_cast_stream_src_finalize (GObject *object) meta_screen_cast_stream_src_disable (src); g_clear_pointer (&priv->pipewire_stream, pw_stream_destroy); - g_clear_pointer (&priv->pipewire_remote, pw_remote_destroy); - g_clear_pointer (&priv->pipewire_core, pw_core_destroy); + g_clear_pointer (&priv->pipewire_core, pw_core_disconnect); + g_clear_pointer (&priv->pipewire_context, pw_context_destroy); g_source_destroy (&priv->pipewire_source->base); G_OBJECT_CLASS (meta_screen_cast_stream_src_parent_class)->finalize (object); -- 2.24.1 ++++++ _service ++++++ <services> <service name="obs_scm" mode="disabled"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param> <param name="revision">refs/tags/3.34.6</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> <param name="changesgenerate">enable</param> </service> <service name="tar" mode="buildtime"/> <service name="recompress" mode="buildtime"> <param name="file">*.tar</param> <param name="compression">xz</param> </service> <service name="set_version" mode="disabled" /> </services> ++++++ _servicedata ++++++ <servicedata> <service name="tar_scm"> <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param> <param name="changesrevision">48ffbb582404c1d52196eb6cc5f082c31ca4910c</param></service></servicedata>++++++ mutter-Lower-HIDPI_LIMIT-to-144.patch ++++++ >From 1511039a96d158bcf4b731599ae3af3f98b9b166 Mon Sep 17 00:00:00 2001 From: Chingkai <[email protected]> Date: Thu, 21 Feb 2019 12:39:52 +0800 Subject: [PATCH] monitor: Lower HIDPI_LIMIT to 144 --- src/backends/meta-monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index 60f3674..e0db546 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -1476,7 +1476,7 @@ meta_monitor_calculate_crtc_pos (MetaMonitor *monitor, } /* The minimum resolution at which we turn on a window-scale of 2 */ -#define HIDPI_LIMIT 192 +#define HIDPI_LIMIT 144 /* * The minimum screen height at which we turn on a window-scale of 2; -- 2.16.4 ++++++ mutter-SLE-bell.patch ++++++ Index: mutter-3.34.1+24/src/meta/prefs.h =================================================================== --- mutter-3.34.1+24.orig/src/meta/prefs.h +++ mutter-3.34.1+24/src/meta/prefs.h @@ -91,6 +91,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, @@ -479,6 +480,9 @@ META_EXPORT gboolean meta_prefs_bell_is_audible (void); META_EXPORT +gboolean meta_prefs_bell_force_through_server (void); + +META_EXPORT GDesktopVisualBellType meta_prefs_get_visual_bell_type (void); #endif Index: mutter-3.34.1+24/src/core/prefs.c =================================================================== --- mutter-3.34.1+24.orig/src/core/prefs.c +++ mutter-3.34.1+24/src/core/prefs.c @@ -99,6 +99,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 gboolean locate_pointer_is_enabled = FALSE; @@ -346,6 +347,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, @@ -1654,6 +1662,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"; @@ -1929,6 +1940,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.34.1+24/src/core/bell.c =================================================================== --- mutter-3.34.1+24.orig/src/core/bell.c +++ mutter-3.34.1+24/src/core/bell.c @@ -54,6 +54,11 @@ #include "core/window-private.h" #include "meta/compositor.h" +#include "meta/display.h" +#include "meta/meta-x11-display.h" +#include <X11/Xlib.h> +#include <X11/XKBlib.h> + G_DEFINE_TYPE (MetaBell, meta_bell, G_TYPE_OBJECT) enum @@ -202,6 +207,14 @@ meta_bell_notify (MetaDisplay *display, if (meta_prefs_get_visual_bell ()) bell_visual_notify (display, window); + if (meta_prefs_bell_force_through_server ()) + { + MetaX11Display *x11_display = meta_display_get_x11_display (display); + Display *xdisplay = meta_x11_display_get_xdisplay (x11_display); + XkbForceBell (xdisplay, 100); + return TRUE; + } + if (meta_prefs_bell_is_audible ()) return bell_audible_notify (display, window); Index: mutter-3.34.1+24/data/org.gnome.mutter.gschema.xml.in =================================================================== --- mutter-3.34.1+24.orig/data/org.gnome.mutter.gschema.xml.in +++ mutter-3.34.1+24/data/org.gnome.mutter.gschema.xml.in @@ -137,6 +137,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-disable-cvt-s390x.patch ++++++ Index: mutter-3.34.1+27/src/meson.build =================================================================== --- mutter-3.34.1+27.orig/src/meson.build 2019-10-21 15:03:25.000000000 +0200 +++ mutter-3.34.1+27/src/meson.build 2019-12-02 13:30:20.320685900 +0100 @@ -722,6 +722,7 @@ endif if have_native_backend + if host_machine.cpu_family() != 's390x' cvt = find_program('cvt') gen_default_modes = find_program('backends/native/gen-default-modes.py') @@ -729,6 +730,9 @@ output: 'meta-default-modes.h', command: [gen_default_modes, '@OUTPUT@'] ) + else + default_modes_h = 'backends/native/meta-default-modes.h' + endif mutter_built_sources += default_modes_h gdbus_codegen = find_program('gdbus-codegen') Index: mutter-3.34.1+27/src/backends/native/meta-default-modes.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ mutter-3.34.1+27/src/backends/native/meta-default-modes.h 2019-12-02 13:09:44.832632052 +0100 @@ -0,0 +1,57 @@ +/* Generated by gen-default-modes.py */ + +static const drmModeModeInfo meta_default_landscape_drm_mode_infos[] = { +{ 38250, 800, 832, 912, 1024, 0, 600, 603, 607, 624, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "800x600_60.00" }, +{ 63500, 1024, 1072, 1176, 1328, 0, 768, 771, 775, 798, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1024x768_60.00" }, +{ 81750, 1152, 1216, 1336, 1520, 0, 864, 867, 871, 897, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1152x864_60.00" }, +{ 101250, 1280, 1360, 1488, 1696, 0, 960, 963, 967, 996, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x960_60.00" }, +{ 121750, 1400, 1488, 1632, 1864, 0, 1050, 1053, 1057, 1089, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1400x1050_60.00" }, +{ 129000, 1440, 1528, 1680, 1920, 0, 1080, 1083, 1087, 1120, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x1080_60.00" }, +{ 161000, 1600, 1712, 1880, 2160, 0, 1200, 1203, 1207, 1245, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x1200_60.00" }, +{ 233500, 1920, 2064, 2264, 2608, 0, 1440, 1443, 1447, 1493, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1440_60.00" }, +{ 267250, 2048, 2208, 2424, 2800, 0, 1536, 1539, 1543, 1592, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2048x1536_60.00" }, +{ 83500, 1280, 1352, 1480, 1680, 0, 800, 803, 809, 831, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x800_60.00" }, +{ 106500, 1440, 1528, 1672, 1904, 0, 900, 903, 909, 934, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x900_60.00" }, +{ 146250, 1680, 1784, 1960, 2240, 0, 1050, 1053, 1059, 1089, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1680x1050_60.00" }, +{ 193250, 1920, 2056, 2256, 2592, 0, 1200, 1203, 1209, 1245, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1200_60.00" }, +{ 348500, 2560, 2760, 3032, 3504, 0, 1600, 1603, 1609, 1658, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2560x1600_60.00" }, +{ 74500, 1280, 1344, 1472, 1664, 0, 720, 723, 728, 748, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x720_60.00" }, +{ 85250, 1368, 1440, 1576, 1784, 0, 768, 771, 781, 798, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1368x768_60.00" }, +{ 118250, 1600, 1696, 1856, 2112, 0, 900, 903, 908, 934, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x900_60.00" }, +{ 173000, 1920, 2048, 2248, 2576, 0, 1080, 1083, 1088, 1120, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1080_60.00" }, +{ 197000, 2048, 2184, 2400, 2752, 0, 1152, 1155, 1160, 1195, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2048x1152_60.00" }, +{ 312250, 2560, 2752, 3024, 3488, 0, 1440, 1443, 1448, 1493, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2560x1440_60.00" }, +{ 396250, 2880, 3096, 3408, 3936, 0, 1620, 1623, 1628, 1679, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x1620_60.00" }, +{ 492000, 3200, 3456, 3800, 4400, 0, 1800, 1803, 1808, 1865, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "3200x1800_60.00" }, +{ 712750, 3840, 4160, 4576, 5312, 0, 2160, 2163, 2168, 2237, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "3840x2160_60.00" }, +{ 813000, 4096, 4440, 4888, 5680, 0, 2304, 2307, 2312, 2386, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "4096x2304_60.00" }, +{ 1276500, 5120, 5560, 6128, 7136, 0, 2880, 2883, 2888, 2982, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "5120x2880_60.00" }, +}; + +static const drmModeModeInfo meta_default_portrait_drm_mode_infos[] = { +{ 38250, 600, 603, 607, 624, 0, 800, 832, 912, 1024, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "600x800_60.00" }, +{ 63500, 768, 771, 775, 798, 0, 1024, 1072, 1176, 1328, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "768x1024_60.00" }, +{ 81750, 864, 867, 871, 897, 0, 1152, 1216, 1336, 1520, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "864x1152_60.00" }, +{ 101250, 960, 963, 967, 996, 0, 1280, 1360, 1488, 1696, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "960x1280_60.00" }, +{ 121750, 1050, 1053, 1057, 1089, 0, 1400, 1488, 1632, 1864, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1050x1400_60.00" }, +{ 129000, 1080, 1083, 1087, 1120, 0, 1440, 1528, 1680, 1920, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1080x1440_60.00" }, +{ 161000, 1200, 1203, 1207, 1245, 0, 1600, 1712, 1880, 2160, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1200x1600_60.00" }, +{ 233500, 1440, 1443, 1447, 1493, 0, 1920, 2064, 2264, 2608, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x1920_60.00" }, +{ 267250, 1536, 1539, 1543, 1592, 0, 2048, 2208, 2424, 2800, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1536x2048_60.00" }, +{ 83500, 800, 803, 809, 831, 0, 1280, 1352, 1480, 1680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "800x1280_60.00" }, +{ 106500, 900, 903, 909, 934, 0, 1440, 1528, 1672, 1904, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "900x1440_60.00" }, +{ 146250, 1050, 1053, 1059, 1089, 0, 1680, 1784, 1960, 2240, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1050x1680_60.00" }, +{ 193250, 1200, 1203, 1209, 1245, 0, 1920, 2056, 2256, 2592, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1200x1920_60.00" }, +{ 348500, 1600, 1603, 1609, 1658, 0, 2560, 2760, 3032, 3504, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x2560_60.00" }, +{ 74500, 720, 723, 728, 748, 0, 1280, 1344, 1472, 1664, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "720x1280_60.00" }, +{ 85250, 768, 771, 781, 798, 0, 1368, 1440, 1576, 1784, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "768x1368_60.00" }, +{ 118250, 900, 903, 908, 934, 0, 1600, 1696, 1856, 2112, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "900x1600_60.00" }, +{ 173000, 1080, 1083, 1088, 1120, 0, 1920, 2048, 2248, 2576, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1080x1920_60.00" }, +{ 197000, 1152, 1155, 1160, 1195, 0, 2048, 2184, 2400, 2752, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1152x2048_60.00" }, +{ 312250, 1440, 1443, 1448, 1493, 0, 2560, 2752, 3024, 3488, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x2560_60.00" }, +{ 396250, 1620, 1623, 1628, 1679, 0, 2880, 3096, 3408, 3936, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1620x2880_60.00" }, +{ 492000, 1800, 1803, 1808, 1865, 0, 3200, 3456, 3800, 4400, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1800x3200_60.00" }, +{ 712750, 2160, 2163, 2168, 2237, 0, 3840, 4160, 4576, 5312, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2160x3840_60.00" }, +{ 813000, 2304, 2307, 2312, 2386, 0, 4096, 4440, 4888, 5680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2304x4096_60.00" }, +{ 1276500, 2880, 2883, 2888, 2982, 0, 5120, 5560, 6128, 7136, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x5120_60.00" }, +}; ++++++ mutter-fix-mesa20.patch ++++++ >From a444a4c5f58ea516ad3cd9d6ddc0056c3ca9bc90 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <[email protected]> Date: Sun, 20 Oct 2019 12:04:31 +0200 Subject: [PATCH] EGL: Include EGL/eglmesaext.h The eglext.h shipped by libglvnd does not include the Mesa extensions, unlike the header shipped in Mesa. Fixes https://gitlab.gnome.org/GNOME/mutter/issues/876 --- cogl/cogl/meson.build | 2 +- src/backends/meta-egl-ext.h | 1 + src/backends/meta-egl.c | 1 + src/backends/meta-egl.h | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build index 261955796..b0e66bff3 100644 --- a/cogl/cogl/meson.build +++ b/cogl/cogl/meson.build @@ -48,7 +48,7 @@ cogl_gl_header_h = configure_file( built_headers += [cogl_gl_header_h] if have_egl - cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>' + cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>\n#include <EGL/eglmesaext.h>' else cogl_egl_includes_string = '' endif diff --git a/src/backends/meta-egl-ext.h b/src/backends/meta-egl-ext.h index 8705e7d5b..db0b74f76 100644 --- a/src/backends/meta-egl-ext.h +++ b/src/backends/meta-egl-ext.h @@ -29,6 +29,7 @@ #include <EGL/egl.h> #include <EGL/eglext.h> +#include <EGL/eglmesaext.h> /* * This is a little different to the tests shipped with EGL implementations, diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c index 6554be935..fdeff4f77 100644 --- a/src/backends/meta-egl.c +++ b/src/backends/meta-egl.c @@ -27,6 +27,7 @@ #include <EGL/egl.h> #include <EGL/eglext.h> +#include <EGL/eglmesaext.h> #include <gio/gio.h> #include <glib.h> #include <glib-object.h> diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h index f2a816445..4591e7d85 100644 --- a/src/backends/meta-egl.h +++ b/src/backends/meta-egl.h @@ -28,6 +28,7 @@ #include <EGL/egl.h> #include <EGL/eglext.h> +#include <EGL/eglmesaext.h> #include <glib-object.h> #define META_EGL_ERROR meta_egl_error_quark () -- 2.24.1 ++++++ mutter-meson_options-Use-libGLESv2.so.2-for-COGL_DRIVER-gle.patch ++++++ >From dfe33897db0989635e4a789290dd2a73da39ca5c Mon Sep 17 00:00:00 2001 From: Daniel van Vugt <[email protected]> Date: Tue, 9 Jun 2020 18:25:59 +0800 Subject: [PATCH] meson_options: Use libGLESv2.so.2 for COGL_DRIVER=gles2, not libGLESv2.so The former is present on any system that supports OpenGL|ES 2. The latter is just provided in developer packages. Since we access the library via `g_module_open` it's safe to just rely on `libGLESv2.so.2`. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1282 https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1298 --- meson_options.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson_options.txt b/meson_options.txt index 75a1961e4..655ef433f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -12,7 +12,7 @@ option('opengl_libname', option('gles2_libname', type: 'string', - value: 'libGLESv2.so', + value: 'libGLESv2.so.2', description: 'GLESv2 library file name' ) -- 2.26.2 ++++++ mutter-wayland-fix-keyboard-move-resize-window.patch ++++++ diff --git a/src/core/keybindings.c b/src/core/keybindings.c index b86272541..b995075fb 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -1820,12 +1820,12 @@ meta_window_grab_all_keys (MetaWindow *window, meta_topic (META_DEBUG_KEYBINDINGS, "Grabbing all keys on window %s\n", window->desc); retval = grab_keyboard (grabwindow, timestamp, XIGrabModeAsync); - if (retval) - { - window->keys_grabbed = FALSE; - window->all_keys_grabbed = TRUE; - window->grab_on_frame = window->frame != NULL; - } + } + if (retval) + { + window->keys_grabbed = FALSE; + window->all_keys_grabbed = TRUE; + window->grab_on_frame = window->frame != NULL; } return retval; @@ -1835,9 +1835,10 @@ void meta_window_ungrab_all_keys (MetaWindow *window, guint32 timestamp) { - if (!meta_is_wayland_compositor () && window->all_keys_grabbed) + if (window->all_keys_grabbed) { - ungrab_keyboard (timestamp); + if (!meta_is_wayland_compositor()) + ungrab_keyboard (timestamp); window->grab_on_frame = FALSE; window->all_keys_grabbed = FALSE; ++++++ mutter.obsinfo ++++++ name: mutter version: 3.34.6 mtime: 1588259587 commit: 48ffbb582404c1d52196eb6cc5f082c31ca4910c
