From 8666c4465431016551707d0d0660b153ab551ef4 Mon Sep 17 00:00:00 2001 From: Mingi Sung Date: Sun, 15 Sep 2024 15:02:11 +0900 Subject: [PATCH] 1:47.0-1: Sync to main Signed-off-by: Mingi Sung --- .SRCINFO | 21 +- PKGBUILD | 50 +--- fix-tray-offscreen-xwindows.patch | 470 ------------------------------ mr3252.patch | 112 ------- 4 files changed, 19 insertions(+), 634 deletions(-) delete mode 100644 fix-tray-offscreen-xwindows.patch delete mode 100644 mr3252.patch diff --git a/.SRCINFO b/.SRCINFO index fc759b0..75c635b 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = gnome-shell-performance pkgdesc = Next generation desktop shell | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync - pkgver = 46.5 + pkgver = 47.0 pkgrel = 1 epoch = 1 url = https://wiki.gnome.org/Projects/GnomeShell @@ -16,6 +16,7 @@ pkgbase = gnome-shell-performance makedepends = gnome-control-center makedepends = gobject-introspection makedepends = meson + makedepends = python-docutils makedepends = sassc depends = accountsservice depends = gcr-4 @@ -36,18 +37,12 @@ pkgbase = gnome-shell-performance depends = mutter depends = unzip depends = upower - source = git+https://gitlab.gnome.org/GNOME/gnome-shell.git#commit=a6b6a58190d648f8a0e38ecb84644ea13d110153 + source = git+https://gitlab.gnome.org/GNOME/gnome-shell.git#commit=957504b1f673cb016e32ccea26bac3a6723d34a1 source = git+https://gitlab.gnome.org/GNOME/libgnome-volume-control.git#commit=5f9768a2eac29c1ed56f1fbb449a77a3523683b6 - source = mr3252.patch - source = fix-tray-offscreen-xwindows.patch - sha256sums = f07f5aae1f0e844e1807af78a9ce69d820417acf9170a1f43b424df69c0a2d70 + sha256sums = 58e67d2a3b0e8dd4074d234d7c67383f5a51c1079c2876eae19c389d423e98b2 sha256sums = 587319b45ff7d989635aed0c3bd9ef834d6e53ae46788cb6ba083d42d7e63855 - sha256sums = 29abd82509db22abb4ce1b3318c9d7bf6cc23ba28d0c222412c273d784eacf1d - sha256sums = 065daaadcb037ebe4a449bc82a74d078243ec9a6f82e2c015d6ebcb7d95ee622 - b2sums = 7fa976e8f61ec2f0a6cb3f52a465a99dd22ae105e692c28a1272f0fae40d35d8ca6660ba6f694405e77bd4f150645316084faf5f345b29324204d1c7ed5773b9 + b2sums = 7c5b48d4ad2c9119bac501dfc99d2e73132a8418dd6d6020778c6a76090faa5489d85bb9ca9bf2908592efba077e14f66a6515e57e1c1b18ba8d22d43ca56d81 b2sums = e31ae379039dfc345e8032f7b9803a59ded075fc52457ba1553276d3031e7025d9304a7f2167a01be2d54c5e121bae00a2824a9c5ccbf926865d0b24520bb053 - b2sums = bacf1db67096ebd3690de2d0a01ee1b0ba1ea3094c7539eff05e398acc230164724b3c872e468ad992409501fb027026bfad35e387be150e4dafd6be81a68841 - b2sums = 2d923a01c48b2ea5c25fe10e40cd81e8ed49c0adc0660211b1211529a5b98040dd0ae1a406e6f250b051e7db6d47e00a1ba7e9540cd5aecc466b92ee3d2aed4e pkgname = gnome-shell-performance groups = gnome @@ -70,7 +65,7 @@ pkgname = gnome-shell-performance depends = mutter depends = unzip depends = upower - depends = libmutter-14.so + depends = libmutter-15.so optdepends = evolution-data-server: Evolution calendar integration optdepends = gnome-bluetooth-3.0: Bluetooth support optdepends = gnome-control-center: System settings @@ -82,6 +77,6 @@ pkgname = gnome-shell-performance optdepends = python-simplejson: gnome-shell-test-tool performance tester optdepends = switcheroo-control: Multi-GPU support provides = gnome-shell - provides = gnome-shell=46.5 - provides = gnome-shell=1:46.5 + provides = gnome-shell=47.0 + provides = gnome-shell=1:47.0 conflicts = gnome-shell diff --git a/PKGBUILD b/PKGBUILD index 8c7111e..1824fcc 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -11,15 +11,15 @@ ### PACKAGE OPTIONS ## MERGE REQUESTS SELECTION -# Merge Requests List: ('3252') -_merge_requests_to_use=('3252') +# Merge Requests List: () +_merge_requests_to_use=() ### IMPORTANT: Do no edit below this line unless you know what you're doing _pkgname=gnome-shell pkgname=gnome-shell-performance -pkgver=46.5 +pkgver=47.0 pkgrel=1 epoch=1 pkgdesc="Next generation desktop shell | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync" @@ -57,30 +57,18 @@ makedepends=( gnome-control-center gobject-introspection meson + python-docutils sassc ) -if [ -n "$_enable_check" ]; then - checkdepends=( - appstream-glib - python-dbusmock - xorg-server-xvfb - ) -fi -_commit=a6b6a58190d648f8a0e38ecb84644ea13d110153 # tags/46.5^0 +_commit=957504b1f673cb016e32ccea26bac3a6723d34a1 # tags/47.0^0 source=( "git+https://gitlab.gnome.org/GNOME/gnome-shell.git#commit=$_commit" "git+https://gitlab.gnome.org/GNOME/libgnome-volume-control.git#commit=5f9768a2eac29c1ed56f1fbb449a77a3523683b6" - 'mr3252.patch' - 'fix-tray-offscreen-xwindows.patch' ) -sha256sums=('f07f5aae1f0e844e1807af78a9ce69d820417acf9170a1f43b424df69c0a2d70' - '587319b45ff7d989635aed0c3bd9ef834d6e53ae46788cb6ba083d42d7e63855' - '29abd82509db22abb4ce1b3318c9d7bf6cc23ba28d0c222412c273d784eacf1d' - '065daaadcb037ebe4a449bc82a74d078243ec9a6f82e2c015d6ebcb7d95ee622') -b2sums=('7fa976e8f61ec2f0a6cb3f52a465a99dd22ae105e692c28a1272f0fae40d35d8ca6660ba6f694405e77bd4f150645316084faf5f345b29324204d1c7ed5773b9' - 'e31ae379039dfc345e8032f7b9803a59ded075fc52457ba1553276d3031e7025d9304a7f2167a01be2d54c5e121bae00a2824a9c5ccbf926865d0b24520bb053' - 'bacf1db67096ebd3690de2d0a01ee1b0ba1ea3094c7539eff05e398acc230164724b3c872e468ad992409501fb027026bfad35e387be150e4dafd6be81a68841' - '2d923a01c48b2ea5c25fe10e40cd81e8ed49c0adc0660211b1211529a5b98040dd0ae1a406e6f250b051e7db6d47e00a1ba7e9540cd5aecc466b92ee3d2aed4e') +sha256sums=('58e67d2a3b0e8dd4074d234d7c67383f5a51c1079c2876eae19c389d423e98b2' + '587319b45ff7d989635aed0c3bd9ef834d6e53ae46788cb6ba083d42d7e63855') +b2sums=('7c5b48d4ad2c9119bac501dfc99d2e73132a8418dd6d6020778c6a76090faa5489d85bb9ca9bf2908592efba077e14f66a6515e57e1c1b18ba8d22d43ca56d81' + 'e31ae379039dfc345e8032f7b9803a59ded075fc52457ba1553276d3031e7025d9304a7f2167a01be2d54c5e121bae00a2824a9c5ccbf926865d0b24520bb053') pkgver() { cd $_pkgname @@ -126,11 +114,6 @@ prepare() { git reset --hard git cherry-pick --abort || true - # https://github.com/ubuntu/gnome-shell-extension-appindicator/issues/439 - # https://bugs.launchpad.net/ubuntu/+source/gnome-shell-extension-appindicator/+bug/2012388 - msg2 "Applying the shell tray icon patches..." - patch -Np1 -i ../fix-tray-offscreen-xwindows.patch - # git remote add verde https://gitlab.gnome.org/verdre/gnome-shell.git || true # git fetch verde # git remote add 3v1n0 https://gitlab.gnome.org/3v1n0/gnome-shell || true @@ -162,23 +145,12 @@ prepare() { # # Generally, a MR status oscillate between 2 and 3 and then becomes 4. - # Title: st/theme-node: Forget properties cache on theme changes - # Author: Daniel van Vugt - # URL: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3252 - # Type: 3 - # Status: 2 - # Comment: Closes: - # https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7339 - # https://github.com/micheleg/dash-to-dock/issues/2243 - # https://github.com/micheleg/dash-to-dock/issues/2179 - pick_mr '3252' 'mr3252.patch' 'patch' - } build() { local meson_options=( -D gtk_doc=false - -D tests=false + -D tests=disabled ) CFLAGS="${CFLAGS/-O2/-O3} -fno-semantic-interposition" @@ -192,7 +164,7 @@ build() { } package() { - depends+=(libmutter-14.so) + depends+=(libmutter-15.so) optdepends=( 'evolution-data-server: Evolution calendar integration' 'gnome-bluetooth-3.0: Bluetooth support' diff --git a/fix-tray-offscreen-xwindows.patch b/fix-tray-offscreen-xwindows.patch deleted file mode 100644 index d1ae1ca..0000000 --- a/fix-tray-offscreen-xwindows.patch +++ /dev/null @@ -1,470 +0,0 @@ -From 5b269c78afa74eabd3dcd9b479c4aa9f7a0f4f2f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= -Date: Wed, 1 May 2024 22:33:43 +0200 -Subject: [PATCH 1/5] build: Add explicit dependency on Xfixes - -We use the xfixes extensions in tray icons but we rely on the dependency -brought to us from other libraries as mutter but let's make it explicit - -(cherry picked from commit f0c5033b3ccd02a081dd18ac21d0b673474fe14f) - -Origin: https://gitlab.gnome.org/3v1n0/gnome-shell/-/commits/tray-offscreen-xwindows -Bug-Ubuntu: https://bugs.launchpad.net/bugs/2012388 -Signed-off-by: Mingi Sung ---- - meson.build | 1 + - src/tray/meson.build | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 923a5228e..a9837fcda 100644 ---- a/meson.build -+++ b/meson.build -@@ -88,6 +88,7 @@ mutter_dep = dependency(libmutter_pc, version: mutter_req) - polkit_dep = dependency('polkit-agent-1', version: polkit_req) - ibus_dep = dependency('ibus-1.0', version: ibus_req) - x11_dep = dependency('x11') -+xfixes_dep = dependency('xfixes') - schemas_dep = dependency('gsettings-desktop-schemas', version: schemas_req) - gnome_desktop_dep = dependency('gnome-desktop-4', version: gnome_desktop_req) - -diff --git a/src/tray/meson.build b/src/tray/meson.build -index 1a86bcbab..2fc73f3a4 100644 ---- a/src/tray/meson.build -+++ b/src/tray/meson.build -@@ -9,6 +9,6 @@ tray_sources = [ - - libtray = static_library('tray', tray_sources, - c_args: ['-DG_LOG_DOMAIN="notification_area"'], -- dependencies: [mutter_dep, mtk_dep], -+ dependencies: [mutter_dep, mtk_dep, xfixes_dep], - include_directories: conf_inc - ) --- -2.45.2 - - -From 7dffc838ea6b137dbd80b0c4a5e0028b7ec59079 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= -Date: Wed, 1 May 2024 04:20:42 +0200 -Subject: [PATCH 2/5] shell-tray-icon: Trigger a relayout when the underneath - xembeded size changes - -(cherry picked from commit 8ebb71d9fdb8990e4e9731cc7662dbf704ce42a8) - -Origin: https://gitlab.gnome.org/3v1n0/gnome-shell/-/commits/tray-offscreen-xwindows -Bug-Ubuntu: https://bugs.launchpad.net/bugs/2012388 -Signed-off-by: Mingi Sung ---- - src/shell-tray-icon.c | 4 ++++ - src/tray/na-xembed.c | 18 ++++++++++++++++++ - src/tray/na-xembed.h | 1 + - 3 files changed, 23 insertions(+) - -diff --git a/src/shell-tray-icon.c b/src/shell-tray-icon.c -index 3eee5f5bf..1ec2239f8 100644 ---- a/src/shell-tray-icon.c -+++ b/src/shell-tray-icon.c -@@ -261,6 +261,10 @@ shell_tray_icon_set_child (ShellTrayIcon *tray_icon, - "window-created", - G_CALLBACK (shell_tray_icon_window_created_cb), - tray_icon); -+ -+ g_signal_connect_object (tray_child, "reconfigured", -+ G_CALLBACK (clutter_actor_queue_relayout), -+ tray_icon, G_CONNECT_SWAPPED); - } - - /* -diff --git a/src/tray/na-xembed.c b/src/tray/na-xembed.c -index 59b1071b8..378a411f9 100644 ---- a/src/tray/na-xembed.c -+++ b/src/tray/na-xembed.c -@@ -88,6 +88,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (NaXembed, na_xembed, G_TYPE_OBJECT) - enum { - PLUG_ADDED, - PLUG_REMOVED, -+ RECONFIGURED, - LAST_SIGNAL - }; - -@@ -524,6 +525,15 @@ xembed_filter_func (MetaX11Display *x11_display, - } - break; - } -+ case ConfigureNotify: -+ { -+ XConfigureEvent *xce = &xevent->xconfigure; -+ -+ if (xce->window == priv->socket_window) -+ g_signal_emit (xembed, signals[RECONFIGURED], 0); -+ -+ break; -+ } - case DestroyNotify: - { - XDestroyWindowEvent *xdwe = &xevent->xdestroywindow; -@@ -718,6 +728,14 @@ na_xembed_class_init (NaXembedClass *klass) - NULL, NULL, NULL, - G_TYPE_NONE, 0); - -+ signals[RECONFIGURED] = -+ g_signal_new ("reconfigured", -+ G_OBJECT_CLASS_TYPE (klass), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET (NaXembedClass, reconfigured), -+ NULL, NULL, NULL, -+ G_TYPE_NONE, 0); -+ - props[PROP_X11_DISPLAY] = - g_param_spec_object ("x11-display", - "x11-display", -diff --git a/src/tray/na-xembed.h b/src/tray/na-xembed.h -index ea8f9f44c..730c2cb3a 100644 ---- a/src/tray/na-xembed.h -+++ b/src/tray/na-xembed.h -@@ -36,6 +36,7 @@ struct _NaXembedClass - - void (* plug_added) (NaXembed *xembed); - void (* plug_removed) (NaXembed *xembed); -+ void (* reconfigured) (NaXembed *xembed); - }; - - MetaX11Display * na_xembed_get_x11_display (NaXembed *xembed); --- -2.45.2 - - -From b4fb27cbdc2be7a9d6e408a4332c8eecbb0c3b9b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= -Date: Wed, 1 May 2024 04:18:50 +0200 -Subject: [PATCH 3/5] shell-tray-icon: Use available space when that's defined - -Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7613 -(cherry picked from commit b10bfe1f9ce2b7794103f54bcf249f935678b5f7) - -Origin: https://gitlab.gnome.org/3v1n0/gnome-shell/-/commits/tray-offscreen-xwindows -Bug-Ubuntu: https://bugs.launchpad.net/bugs/2012388 -Signed-off-by: Mingi Sung ---- - src/shell-tray-icon.c | 4 ++++ - src/tray/na-xembed.c | 29 +++++++++++++++++++++++++++++ - src/tray/na-xembed.h | 4 ++++ - 3 files changed, 37 insertions(+) - -diff --git a/src/shell-tray-icon.c b/src/shell-tray-icon.c -index 1ec2239f8..ddf40dde3 100644 ---- a/src/shell-tray-icon.c -+++ b/src/shell-tray-icon.c -@@ -185,6 +185,10 @@ shell_tray_icon_allocate (ClutterActor *actor, - - CLUTTER_ACTOR_CLASS (shell_tray_icon_parent_class)->allocate (actor, box); - -+ na_xembed_set_available_size (NA_XEMBED (tray_icon->tray_child), -+ roundf (clutter_actor_box_get_width (box)), -+ roundf (clutter_actor_box_get_height (box))); -+ - /* Find the actor's new coordinates in terms of the stage. - */ - clutter_actor_get_transformed_position (actor, &wx, &wy); -diff --git a/src/tray/na-xembed.c b/src/tray/na-xembed.c -index 378a411f9..e7c4b330a 100644 ---- a/src/tray/na-xembed.c -+++ b/src/tray/na-xembed.c -@@ -42,6 +42,8 @@ struct _NaXembedPrivate - int request_height; - int current_width; - int current_height; -+ int available_width; -+ int available_height; - int resize_count; - int xembed_version; - -@@ -141,6 +143,8 @@ na_xembed_end_embedding (NaXembed *xembed) - priv->current_width = 0; - priv->current_height = 0; - priv->resize_count = 0; -+ priv->available_width = -1; -+ priv->available_height = -1; - g_clear_handle_id (&priv->resize_id, g_source_remove); - } - -@@ -186,6 +190,11 @@ na_xembed_synchronize_size (NaXembed *xembed) - width = priv->request_width; - height = priv->request_height; - -+ if (priv->available_width >= 0) -+ width = priv->available_width; -+ if (priv->available_height >= 0) -+ height = priv->available_height; -+ - XMoveResizeWindow (xdisplay, - priv->socket_window, - x, y, -@@ -750,6 +759,10 @@ na_xembed_class_init (NaXembedClass *klass) - static void - na_xembed_init (NaXembed *xembed) - { -+ NaXembedPrivate *priv = na_xembed_get_instance_private (xembed); -+ -+ priv->available_width = -1; -+ priv->available_height = -1; - } - - void -@@ -814,6 +827,22 @@ na_xembed_get_size (NaXembed *xembed, - *height = priv->request_height; - } - -+void -+na_xembed_set_available_size (NaXembed *xembed, -+ int width, -+ int height) -+{ -+ NaXembedPrivate *priv = na_xembed_get_instance_private (xembed); -+ -+ if (priv->available_width == width && priv->available_height == height) -+ return; -+ -+ priv->available_width = width; -+ priv->available_height = height; -+ -+ na_xembed_resize (xembed); -+} -+ - void - na_xembed_get_root_position (NaXembed *xembed, - int *x, -diff --git a/src/tray/na-xembed.h b/src/tray/na-xembed.h -index 730c2cb3a..a5a4faede 100644 ---- a/src/tray/na-xembed.h -+++ b/src/tray/na-xembed.h -@@ -60,6 +60,10 @@ void na_xembed_get_size (NaXembed *xembed, - int *width, - int *height); - -+void na_xembed_set_available_size (NaXembed *xembed, -+ int width, -+ int height); -+ - void na_xembed_set_background_color (NaXembed *xembed, - const ClutterColor *color); - --- -2.45.2 - - -From e6956f9b437156940f0baff6b413f2a2d98fd530 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= -Date: Wed, 1 May 2024 05:56:48 +0200 -Subject: [PATCH 4/5] tray/na-xembed: Destroy socket window when ending the - embedding - -Currently when embedding a tray icon is ended we are leaving the X11 -socket window around as we don't really destroy it, while we're just -listening for its child destruction. - -So, when embedding is ending we need to make sure that: - - If the plug window is still alive, move it back to its old parent - (normally that's the root window, but we query for it, to be sure) - - If the plug window has been already destroyed or reparented (by us or - by something else), we've to just destroy the socket window - -Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7614 -(cherry picked from commit 50a6e1e3ceb18e52f87534507ccd49884d7f53eb) - -Origin: https://gitlab.gnome.org/3v1n0/gnome-shell/-/commits/tray-offscreen-xwindows -Bug-Ubuntu: https://bugs.launchpad.net/bugs/2012388 -Signed-off-by: Mingi Sung ---- - src/tray/na-xembed.c | 35 ++++++++++++++++++++++++++++++++++- - 1 file changed, 34 insertions(+), 1 deletion(-) - -diff --git a/src/tray/na-xembed.c b/src/tray/na-xembed.c -index e7c4b330a..17ce31541 100644 ---- a/src/tray/na-xembed.c -+++ b/src/tray/na-xembed.c -@@ -35,6 +35,7 @@ struct _NaXembedPrivate - MetaX11Display *x11_display; - Window socket_window; - Window plug_window; -+ Window old_parent; - - int root_x; - int root_y; -@@ -139,7 +140,22 @@ na_xembed_end_embedding (NaXembed *xembed) - { - NaXembedPrivate *priv = na_xembed_get_instance_private (xembed); - -+ if (priv->socket_window) -+ { -+ Display *xdisplay = meta_x11_display_get_xdisplay (priv->x11_display); -+ -+ if (priv->plug_window && priv->old_parent) -+ XReparentWindow (xdisplay, -+ priv->plug_window, -+ priv->old_parent, -+ 0, 0); -+ -+ XDestroyWindow (xdisplay, priv->socket_window); -+ priv->socket_window = None; -+ } -+ - priv->plug_window = None; -+ priv->old_parent = None; - priv->current_width = 0; - priv->current_height = 0; - priv->resize_count = 0; -@@ -413,6 +429,18 @@ na_xembed_add_window (NaXembed *xembed, - &socket_attrs); - - XUnmapWindow (xdisplay, priv->plug_window); /* Shouldn't actually be necessary for XEMBED, but just in case */ -+ -+ if (!priv->old_parent) -+ { -+ g_autofree Window *children = NULL; -+ unsigned int n_children; -+ Window root; -+ -+ if (!XQueryTree (xdisplay, priv->plug_window, &root, &priv->old_parent, -+ &children, &n_children)) -+ priv->old_parent = meta_x11_display_get_xroot (priv->x11_display); -+ } -+ - XReparentWindow (xdisplay, - priv->plug_window, - priv->socket_window, -@@ -550,10 +578,14 @@ xembed_filter_func (MetaX11Display *x11_display, - /* Note that we get destroy notifies both from SubstructureNotify on - * our window and StructureNotify on socket->plug_window - */ -+ if (priv->socket_window && xdwe->window == priv->socket_window) -+ priv->socket_window = None; -+ - if (priv->plug_window && (xdwe->window == priv->plug_window)) - { - g_object_ref (xembed); - g_signal_emit (xembed, signals[PLUG_REMOVED], 0); -+ priv->plug_window = None; - na_xembed_end_embedding (xembed); - g_object_unref (xembed); - } -@@ -618,6 +650,7 @@ xembed_filter_func (MetaX11Display *x11_display, - { - g_object_ref (xembed); - g_signal_emit (xembed, signals[PLUG_REMOVED], 0); -+ priv->old_parent = None; - na_xembed_end_embedding (xembed); - g_object_unref (xembed); - } -@@ -683,7 +716,7 @@ na_xembed_finalize (GObject *object) - if (priv->x11_display && priv->event_func_id) - meta_x11_display_remove_event_func (priv->x11_display, priv->event_func_id); - -- if (priv->plug_window) -+ if (priv->plug_window || priv->socket_window) - na_xembed_end_embedding (xembed); - - G_OBJECT_CLASS (na_xembed_parent_class)->finalize (object); --- -2.45.2 - - -From 156b235bd28085739318ec50cc532062206c3a18 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= -Date: Wed, 1 May 2024 22:34:58 +0200 -Subject: [PATCH 5/5] tray/na-xembed: Use XShape to remove input on socket - window - -We don't want this window to take any input as, a part from blocking the -events on the shell representation itself, they may potentially make the -plugged window to do anything with the event is processing (such as -showing tooltips). And we don't want this since we only want to send to -those windows only the synthetic events that we explicitly control. - -This was already the case before of commit ab60902058 but a similar -approach was not replicated, leading to input events being fully -processed from tray icons plugs. - -It requires adding an explicit build dependency on Xext, but this is -something that mutter already depends on so not really a new dependency - -Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7613 -(cherry picked from commit 075f9d72459d08a711feca3dc3c51a14c5f73bdc) - -Origin: https://gitlab.gnome.org/3v1n0/gnome-shell/-/commits/tray-offscreen-xwindows -Bug-Ubuntu: https://bugs.launchpad.net/bugs/2012388 -Signed-off-by: Mingi Sung ---- - meson.build | 1 + - src/tray/meson.build | 2 +- - src/tray/na-xembed.c | 15 +++++++++++++++ - 3 files changed, 17 insertions(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index a9837fcda..3147edaf4 100644 ---- a/meson.build -+++ b/meson.build -@@ -88,6 +88,7 @@ mutter_dep = dependency(libmutter_pc, version: mutter_req) - polkit_dep = dependency('polkit-agent-1', version: polkit_req) - ibus_dep = dependency('ibus-1.0', version: ibus_req) - x11_dep = dependency('x11') -+xext_dep = dependency('xext') - xfixes_dep = dependency('xfixes') - schemas_dep = dependency('gsettings-desktop-schemas', version: schemas_req) - gnome_desktop_dep = dependency('gnome-desktop-4', version: gnome_desktop_req) -diff --git a/src/tray/meson.build b/src/tray/meson.build -index 2fc73f3a4..c91e94044 100644 ---- a/src/tray/meson.build -+++ b/src/tray/meson.build -@@ -9,6 +9,6 @@ tray_sources = [ - - libtray = static_library('tray', tray_sources, - c_args: ['-DG_LOG_DOMAIN="notification_area"'], -- dependencies: [mutter_dep, mtk_dep, xfixes_dep], -+ dependencies: [mutter_dep, mtk_dep, xfixes_dep, xext_dep], - include_directories: conf_inc - ) -diff --git a/src/tray/na-xembed.c b/src/tray/na-xembed.c -index 17ce31541..1d179af87 100644 ---- a/src/tray/na-xembed.c -+++ b/src/tray/na-xembed.c -@@ -24,6 +24,7 @@ - #include "na-xembed.h" - - #include -+#include - #include - #include - #include -@@ -388,6 +389,7 @@ na_xembed_add_window (NaXembed *xembed, - { - XSetWindowAttributes socket_attrs; - XWindowAttributes plug_attrs; -+ int shape_major, shape_minor; - int result; - - result = XGetWindowAttributes (xdisplay, priv->plug_window, &plug_attrs); -@@ -445,6 +447,19 @@ na_xembed_add_window (NaXembed *xembed, - priv->plug_window, - priv->socket_window, - 0, 0); -+ -+ /* Set an empty input shape on the window so that the socket does not -+ * get any input. Without this we the tray may still get events and for -+ * example show tooltips on hover which we don't want. -+ * This is the quickest way to achieve this, without having to deal these -+ * windows with specific code in mutter. -+ */ -+ if (XShapeQueryExtension (xdisplay, &shape_major, &shape_minor)) -+ { -+ XShapeSelectInput (xdisplay, priv->socket_window, NoEventMask); -+ XShapeCombineRectangles (xdisplay, priv->socket_window, ShapeInput, -+ 0, 0, NULL, 0, ShapeSet, 0); -+ } - } - - priv->have_size = FALSE; --- -2.45.2 - diff --git a/mr3252.patch b/mr3252.patch deleted file mode 100644 index 642cfc0..0000000 --- a/mr3252.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 2599c432efdc16a4e4fe04fa7ac7a87ce6df8975 Mon Sep 17 00:00:00 2001 -From: Daniel van Vugt -Date: Thu, 28 Mar 2024 14:45:26 +0800 -Subject: [PATCH 1/2] st/theme-node: Forget properties cache before unref'ing - the theme - -Which the properties point into. - -Signed-off-by: Mingi Sung ---- - src/st/st-theme-node.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c -index 51e6d2174..b471ad72b 100644 ---- a/src/st/st-theme-node.c -+++ b/src/st/st-theme-node.c -@@ -102,6 +102,7 @@ st_theme_node_dispose (GObject *gobject) - - st_theme_node_paint_state_free (&node->cached_state); - -+ maybe_free_properties (node); - g_clear_object (&node->theme); - - G_OBJECT_CLASS (st_theme_node_parent_class)->dispose (gobject); -@@ -117,8 +118,6 @@ st_theme_node_finalize (GObject *object) - g_strfreev (node->pseudo_classes); - g_free (node->inline_style); - -- maybe_free_properties (node); -- - g_clear_pointer (&node->font_desc, pango_font_description_free); - - g_clear_pointer (&node->box_shadow, st_shadow_unref); --- -2.45.2 - - -From ebbebd4af1d6f3c2a2958ddd978220ac7d4c1771 Mon Sep 17 00:00:00 2001 -From: Daniel van Vugt -Date: Thu, 28 Mar 2024 14:58:54 +0800 -Subject: [PATCH 2/2] st/theme-node: Forget properties cache on stylesheet - change - -To avoid `node->properties` pointing to freed memory after each -`st_theme_unload_stylesheet`, flush the cache that is `node->properties`. -They will be reloaded as soon as they are required by `ensure_properties`. - -And yes `node->stylesheets_changed_id` already existed, but was unused. - -Why not just fix Croco? Croco does not use proper reference counting -everywhere it should, and retrofitting it would be difficult due to the -recursive nature of `CRDeclaration`. - -Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7339 -... but mostly reported in -https://github.com/micheleg/dash-to-dock/issues/2179 and its duplicates. - -Signed-off-by: Mingi Sung ---- - src/st/st-theme-node-private.h | 2 +- - src/st/st-theme-node.c | 14 ++++++++++++++ - 2 files changed, 15 insertions(+), 1 deletion(-) - -diff --git a/src/st/st-theme-node-private.h b/src/st/st-theme-node-private.h -index 02eb95e52..b8028925e 100644 ---- a/src/st/st-theme-node-private.h -+++ b/src/st/st-theme-node-private.h -@@ -105,7 +105,7 @@ struct _StThemeNode { - int box_shadow_min_width; - int box_shadow_min_height; - -- guint stylesheets_changed_id; -+ gulong stylesheets_changed_id; - - CoglTexture *border_slices_texture; - CoglPipeline *border_slices_pipeline; -diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c -index b471ad72b..31b27583c 100644 ---- a/src/st/st-theme-node.c -+++ b/src/st/st-theme-node.c -@@ -75,6 +75,10 @@ maybe_free_properties (StThemeNode *node) - cr_declaration_destroy (node->inline_properties); - node->inline_properties = NULL; - } -+ -+ g_clear_signal_handler (&node->stylesheets_changed_id, node->theme); -+ -+ node->properties_computed = FALSE; - } - - static void -@@ -472,6 +476,16 @@ ensure_properties (StThemeNode *node) - node->n_properties = properties->len; - node->properties = (CRDeclaration **)g_ptr_array_free (properties, FALSE); - } -+ -+ if (!node->stylesheets_changed_id) -+ { -+ node->stylesheets_changed_id = -+ g_signal_connect_object (node->theme, -+ "custom-stylesheets-changed", -+ G_CALLBACK (maybe_free_properties), -+ G_OBJECT (node), -+ G_CONNECT_SWAPPED); -+ } - } - } - --- -2.45.2 -