1
0
Fork 0

Sync to gnome-46 & Refresh patches

Signed-off-by: Mingi Sung <sungmg@saltyming.net>
This commit is contained in:
Mingi Sung 2024-08-05 12:39:17 +09:00
parent da1363f444
commit a0ae40539e
Signed by: sungmg
GPG key ID: 41BAFD6FFD8036C5
7 changed files with 1081 additions and 318 deletions

View file

@ -1,7 +1,7 @@
pkgbase = mutter-performance
pkgdesc = A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync
pkgver = 46.3.1+r5+g1ccf2cfb5
pkgrel = 2
pkgver = 46.4
pkgrel = 1
epoch = 1
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
@ -73,24 +73,24 @@ pkgbase = mutter-performance
depends = systemd-libs
depends = wayland
depends = xorg-xwayland
source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=1ccf2cfb568d4f9aeee2d23e5ededca21927d133
source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=04995f56641012d71b5b226782e63d82c3ca3081
source = mr1441.patch
source = mr3373.patch
source = mr3567.patch
source = mr3751.patch
source = mr3912.patch
sha256sums = 893c784ff14ab886615e7a58cd37c2409895fd73b8c95cc83fca209fbecbc1aa
sha256sums = 7a5e1bcc90bbab100bf57b0dd052a96f34dd1673a5f43e53acd34ee648fd7b29
sha256sums = 3e1f07b696ad37b1c639a524c092cd9259444bc6156542901ccaec936bea240f
sha256sums = 47885ffe6c0aa06fa798cc0b9b48b4f6acf21b6f250b7003819db3854d52635a
sha256sums = 9d925b810629074285388b5a1a9a88514a6cb45463a98ada6f66c2cba2ad9d2f
sha256sums = 43ea9e96f2bafaa40edc48510b1391a055ee507af82d81721fb76752c9295c6b
b2sums = 3d2fccc192c53d7c80ba7f6d97e6392d8e5d6d884161b4b9d120294cc95627167e45d43737374781a8e52ca64e21caab3a07abb7bc38e3f358e593c43d9e69c6
b2sums = 55bf09c286a361297952dc55670e3974ad35a91d54649892259fe423c422c6580e00e9f194bad97bebe3c53a65858a23d6e332d426c8572bd14cdc8e5cbcbbfb
b2sums = 71f10db4ebe04a787940c7048131eac67cffd3ec8e415cfc961b8041b881f272650581e9df273e2a8da23a50ec9151c790dc2d5ecc0309ab2847a22f8c922c9c
b2sums = 8e57fa09e4742cf350436c5d54f3114495543151df71fbb684199d85ca9b138bcedd1dfb5df5724d0efc74aa786f6b1ebf54f3c260a48a4937a700dcb1d5b178
b2sums = f720718049c1f9d0f338c203a5ae4520b5e7079b57e692ec95d8183705d7b7627ccd7d3d350d0010d0b225226641afccd699b65a81bd044fd32c441d413a0779
b2sums = f7a7ef368d2d15cc7edcb1d2def23ed9a349410620aeebe83d8ca0e612dad868e7a2fe731323bd4382fb4cef71d65a15c849df0b4ff0f8da972261728fdf6f6f
sha256sums = 864cce3adbb04b4213fda77b715f84fe1ed918a58adbc251c4804bbaf6e348ed
sha256sums = 07909ef8fc77f5527e169c31637a3bfdf080bc8040863f059db5541b35ec6ff7
sha256sums = 1292f1dcefa0a3cfff753db942e7c974e39b1265d246634f239aad9437d45609
sha256sums = 2e474a574edad8dc047a53a920fc7cbe005cac0102907eef80a252fc556d0517
sha256sums = 4c15b0e6d0001c8c3feedf05a9140f7f17d52eb36ff7b8039e0281c1373ccdfe
sha256sums = f02f07abc4072118e175e8028d3ee16ff0aa9b238dd2b10155b3ae2a0534a4a0
b2sums = fc21cb8e56728873196fba12ba7a0522aeb9d6e7f6204ac21ade4c632b081fe45e0633d1c072c2416d81faa0f6b63cb69b278ef7b440e2bfccaff775501d3028
b2sums = 0419379cda7871c0b45b7a707948738b5a55fd81083ba325e915928aaa731cd2be23cebddf04b179bc69a26e1f4176b06fabb4d5baffba604a4980f578f5ba4d
b2sums = 38de03d5fbe7c9d1b9c41a4bc6b76b8d3acc270b93f279c5db591d79a689d9ea748f34da08ec584e49bbfc2d35a5bceeaf2f6b3fd91bc620139b4ee8b4ca6a04
b2sums = 65302b1fa24a7aba26915269fb694c7a64b134ee2062ec7e649036a3a41efb2f2f4110cff6194808af34985855ade641c5fb01f0b97536cd3c912892ea3a0d4c
b2sums = f9f2284d7236d6072a818de3784a339c2d934490da8870876f49d4effd59ce807593ce8b8a3c5e06586fd5fd7e81fb31fedca84115acf1e71cfe23d4a5e727b3
b2sums = 14ed5e8fe9844739903150bf69de03b7136e74eb4b080d2e0264ba9bf5f2ba2c826cb45b78f8c38b2e80c223dd7926aa8e756e9bee23b75ced16ba5af45c2d8d
pkgname = mutter-performance
groups = gnome

View file

@ -12,7 +12,7 @@
### PACKAGE OPTIONS
## MERGE REQUESTS SELECTION
# Merge Requests List: ('579' '1441' '3373' '3567' '3751' '3912')
_merge_requests_to_use=('1441' '3751' '3912')
_merge_requests_to_use=('1441' '3751')
## Disable building the DOCS package (Enabled if not set)
# Remember to unset this variable when producing .SRCINFO
@ -32,8 +32,8 @@ else
pkgname=(mutter-performance mutter-performance-docs)
fi
epoch=1
pkgver=46.3.1+r5+g1ccf2cfb5
pkgrel=2
pkgver=46.4
pkgrel=1
pkgdesc="A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync"
url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64 aarch64)
@ -112,25 +112,25 @@ makedepends=(
if [ -n "$_enable_check" ]; then
checkdepends=(gnome-session xorg-server-xvfb pipewire-session-manager python-dbusmock zenity)
fi
_commit=1ccf2cfb568d4f9aeee2d23e5ededca21927d133 # tags/46.3.1^5
_commit=04995f56641012d71b5b226782e63d82c3ca3081 # tags/46.4^0
source=("git+$url.git#commit=$_commit"
'mr1441.patch'
'mr3373.patch'
'mr3567.patch'
'mr3751.patch'
'mr3912.patch')
sha256sums=('893c784ff14ab886615e7a58cd37c2409895fd73b8c95cc83fca209fbecbc1aa'
'7a5e1bcc90bbab100bf57b0dd052a96f34dd1673a5f43e53acd34ee648fd7b29'
'3e1f07b696ad37b1c639a524c092cd9259444bc6156542901ccaec936bea240f'
'47885ffe6c0aa06fa798cc0b9b48b4f6acf21b6f250b7003819db3854d52635a'
'9d925b810629074285388b5a1a9a88514a6cb45463a98ada6f66c2cba2ad9d2f'
'43ea9e96f2bafaa40edc48510b1391a055ee507af82d81721fb76752c9295c6b')
b2sums=('3d2fccc192c53d7c80ba7f6d97e6392d8e5d6d884161b4b9d120294cc95627167e45d43737374781a8e52ca64e21caab3a07abb7bc38e3f358e593c43d9e69c6'
'55bf09c286a361297952dc55670e3974ad35a91d54649892259fe423c422c6580e00e9f194bad97bebe3c53a65858a23d6e332d426c8572bd14cdc8e5cbcbbfb'
'71f10db4ebe04a787940c7048131eac67cffd3ec8e415cfc961b8041b881f272650581e9df273e2a8da23a50ec9151c790dc2d5ecc0309ab2847a22f8c922c9c'
'8e57fa09e4742cf350436c5d54f3114495543151df71fbb684199d85ca9b138bcedd1dfb5df5724d0efc74aa786f6b1ebf54f3c260a48a4937a700dcb1d5b178'
'f720718049c1f9d0f338c203a5ae4520b5e7079b57e692ec95d8183705d7b7627ccd7d3d350d0010d0b225226641afccd699b65a81bd044fd32c441d413a0779'
'f7a7ef368d2d15cc7edcb1d2def23ed9a349410620aeebe83d8ca0e612dad868e7a2fe731323bd4382fb4cef71d65a15c849df0b4ff0f8da972261728fdf6f6f')
sha256sums=('864cce3adbb04b4213fda77b715f84fe1ed918a58adbc251c4804bbaf6e348ed'
'07909ef8fc77f5527e169c31637a3bfdf080bc8040863f059db5541b35ec6ff7'
'1292f1dcefa0a3cfff753db942e7c974e39b1265d246634f239aad9437d45609'
'2e474a574edad8dc047a53a920fc7cbe005cac0102907eef80a252fc556d0517'
'4c15b0e6d0001c8c3feedf05a9140f7f17d52eb36ff7b8039e0281c1373ccdfe'
'f02f07abc4072118e175e8028d3ee16ff0aa9b238dd2b10155b3ae2a0534a4a0')
b2sums=('fc21cb8e56728873196fba12ba7a0522aeb9d6e7f6204ac21ade4c632b081fe45e0633d1c072c2416d81faa0f6b63cb69b278ef7b440e2bfccaff775501d3028'
'0419379cda7871c0b45b7a707948738b5a55fd81083ba325e915928aaa731cd2be23cebddf04b179bc69a26e1f4176b06fabb4d5baffba604a4980f578f5ba4d'
'38de03d5fbe7c9d1b9c41a4bc6b76b8d3acc270b93f279c5db591d79a689d9ea748f34da08ec584e49bbfc2d35a5bceeaf2f6b3fd91bc620139b4ee8b4ca6a04'
'65302b1fa24a7aba26915269fb694c7a64b134ee2062ec7e649036a3a41efb2f2f4110cff6194808af34985855ade641c5fb01f0b97536cd3c912892ea3a0d4c'
'f9f2284d7236d6072a818de3784a339c2d934490da8870876f49d4effd59ce807593ce8b8a3c5e06586fd5fd7e81fb31fedca84115acf1e71cfe23d4a5e727b3'
'14ed5e8fe9844739903150bf69de03b7136e74eb4b080d2e0264ba9bf5f2ba2c826cb45b78f8c38b2e80c223dd7926aa8e756e9bee23b75ced16ba5af45c2d8d')
for mr in "${_merge_requests_to_use[@]}"; do
if [ '3567' = "$mr" ]; then
@ -250,6 +250,7 @@ prepare() {
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3912
# Type: 1
# Status: 2
# Comment: Cannot be used with mr1441 as it already includes mr3912.
pick_mr '3912' 'mr3912.patch' 'patch'
# Title: Draft: Dynamic triple/double buffering (v4)

File diff suppressed because it is too large Load diff

View file

@ -1,20 +1,25 @@
From d99a0017e66bdd0e1a278e6b08126f5b04cac096 Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue, 7 Nov 2023 16:30:01 +0200
Subject: kms/crtc: Increase default deadline evasion to 1000 microseconds
Subject: [PATCH] kms/crtc: Increase default deadline evasion to 1000
microseconds
This seems to be enough to fix cursor stutter on X1 Carbon 10 (OLED)
where the display is 90Hz and the touchpad ~145Hz.
Bug: https://gitlab.gnome.org/GNOME/mutter/-/issues/3146
Bug-Ubuntu: https://launchpad.net/bugs/2040977
Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3373
Forwarded: yes
Commit: 83de83513cbe6904e744ed4b495d835128f27434
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
---
src/backends/native/meta-kms-crtc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c
index b17e846..d6a8228 100644
index a0872089a0..8fcb2d9495 100644
--- a/src/backends/native/meta-kms-crtc.c
+++ b/src/backends/native/meta-kms-crtc.c
@@ -28,7 +28,7 @@
@ -25,4 +30,7 @@ index b17e846..d6a8228 100644
+#define DEADLINE_EVASION_US 1000
#define DEADLINE_EVASION_WITH_KMS_TOPIC_US 1000
typedef struct _MetaKmsCrtcPropTable
#define MINIMUM_REFRESH_RATE 30.f
--
2.46.0

View file

@ -1,4 +1,4 @@
From e59a419987c8ff7207f0cadd4f59aae9cb0e8f71 Mon Sep 17 00:00:00 2001
From 1a482cbbea109406e48962669a89465f3f8bb98d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Tue, 12 Dec 2023 22:41:20 +0100
Subject: [PATCH 1/5] x11-display: Expose UI scaling factor via D-Bus
@ -18,7 +18,7 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
create mode 100644 data/dbus-interfaces/org.gnome.Mutter.X11.xml
diff --git a/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml b/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml
index b05337d74..7294c57a8 100644
index b05337d74f..7294c57a84 100644
--- a/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml
+++ b/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml
@@ -426,10 +426,6 @@
@ -34,7 +34,7 @@ index b05337d74..7294c57a8 100644
<arg name="serial" direction="out" type="u" />
diff --git a/data/dbus-interfaces/org.gnome.Mutter.X11.xml b/data/dbus-interfaces/org.gnome.Mutter.X11.xml
new file mode 100644
index 000000000..3d3c8a42f
index 0000000000..3d3c8a42f8
--- /dev/null
+++ b/data/dbus-interfaces/org.gnome.Mutter.X11.xml
@@ -0,0 +1,8 @@
@ -47,7 +47,7 @@ index 000000000..3d3c8a42f
+ </interface>
+</node>
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 77743bc72..7f98c2d98 100644
index 77743bc722..7f98c2d983 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -2051,14 +2051,12 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
@ -78,7 +78,7 @@ index 77743bc72..7f98c2d98 100644
&max_screen_width,
&max_screen_height))
diff --git a/src/meson.build b/src/meson.build
index 05df3bfd2..e658f98ca 100644
index 05df3bfd28..e658f98caa 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -949,6 +949,11 @@ dbus_interfaces = [
@ -94,7 +94,7 @@ index 05df3bfd2..e658f98ca 100644
if have_profiler
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
index 3cbf82844..fe152d20b 100644
index 65eb217aaf..8768e14dac 100644
--- a/src/x11/meta-x11-display.c
+++ b/src/x11/meta-x11-display.c
@@ -70,7 +70,7 @@
@ -168,7 +168,7 @@ index 3cbf82844..fe152d20b 100644
g_clear_pointer (&x11_display->alarm_filters, g_ptr_array_unref);
g_clear_list (&x11_display->event_funcs,
@@ -1196,6 +1237,23 @@ meta_x11_display_init_frames_client (MetaX11Display *x11_display)
@@ -1220,6 +1261,23 @@ meta_x11_display_init_frames_client (MetaX11Display *x11_display)
on_frames_client_died, x11_display);
}
@ -192,7 +192,7 @@ index 3cbf82844..fe152d20b 100644
/**
* meta_x11_display_new:
*
@@ -1290,6 +1348,8 @@ meta_x11_display_new (MetaDisplay *display,
@@ -1314,6 +1372,8 @@ meta_x11_display_new (MetaDisplay *display,
x11_display = g_object_new (META_TYPE_X11_DISPLAY, NULL);
x11_display->display = display;
@ -201,7 +201,7 @@ index 3cbf82844..fe152d20b 100644
/* here we use XDisplayName which is what the user
* probably put in, vs. DisplayString(display) which is
* canonicalized by XOpenDisplay()
@@ -1951,6 +2011,8 @@ on_monitors_changed_internal (MetaMonitorManager *monitor_manager,
@@ -1975,6 +2035,8 @@ on_monitors_changed_internal (MetaMonitorManager *monitor_manager,
}
x11_display->has_xinerama_indices = FALSE;
@ -211,10 +211,10 @@ index 3cbf82844..fe152d20b 100644
static Bool
--
2.45.2
2.46.0
From 42ece5f5f528fb44f63772826fe928f88327a7dc Mon Sep 17 00:00:00 2001
From dd50b8639bcab08fceb5d3af206e2c41aa6f2f02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
Date: Tue, 20 Feb 2024 23:51:48 +0100
Subject: [PATCH 2/5] Add an experimental feature for letting Xwayland clients
@ -232,7 +232,7 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
3 files changed, 10 insertions(+)
diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in
index 92c97b12e..6751a8d7a 100644
index 92c97b12e3..6751a8d7a9 100644
--- a/data/org.gnome.mutter.gschema.xml.in
+++ b/data/org.gnome.mutter.gschema.xml.in
@@ -5,6 +5,7 @@
@ -257,7 +257,7 @@ index 92c97b12e..6751a8d7a 100644
</key>
diff --git a/src/backends/meta-settings-private.h b/src/backends/meta-settings-private.h
index afbba054a..2081a81b1 100644
index afbba054af..2081a81b1a 100644
--- a/src/backends/meta-settings-private.h
+++ b/src/backends/meta-settings-private.h
@@ -32,6 +32,7 @@ typedef enum _MetaExperimentalFeature
@ -269,7 +269,7 @@ index afbba054a..2081a81b1 100644
typedef enum _MetaXwaylandExtension
diff --git a/src/backends/meta-settings.c b/src/backends/meta-settings.c
index 3703b23b0..1ae59d636 100644
index 3703b23b07..1ae59d6360 100644
--- a/src/backends/meta-settings.c
+++ b/src/backends/meta-settings.c
@@ -296,6 +296,8 @@ experimental_features_handler (GVariant *features_variant,
@ -282,10 +282,10 @@ index 3703b23b0..1ae59d636 100644
if (feature)
g_message ("Enabling experimental feature '%s'", feature_str);
--
2.45.2
2.46.0
From e518927c779f8498f50fe2087efcd3ee88d75c12 Mon Sep 17 00:00:00 2001
From 398a04f2558877e4876ea1551907719031b5adc1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Tue, 12 Dec 2023 22:42:46 +0100
Subject: [PATCH 3/5] context: Put Wayland compositor getter in the context
@ -299,7 +299,7 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/meta/meta-context.h b/src/meta/meta-context.h
index ef36bd2c3..2adb9b07e 100644
index ef36bd2c30..2adb9b07e0 100644
--- a/src/meta/meta-context.h
+++ b/src/meta/meta-context.h
@@ -101,3 +101,8 @@ gboolean meta_context_raise_rlimit_nofile (MetaContext *context,
@ -312,7 +312,7 @@ index ef36bd2c3..2adb9b07e 100644
+MetaWaylandCompositor * meta_context_get_wayland_compositor (MetaContext *context);
+#endif
diff --git a/src/meta/meta-wayland-compositor.h b/src/meta/meta-wayland-compositor.h
index 7f4a50705..3df92fda5 100644
index 7f4a507057..3df92fda57 100644
--- a/src/meta/meta-wayland-compositor.h
+++ b/src/meta/meta-wayland-compositor.h
@@ -31,9 +31,6 @@ G_DECLARE_FINAL_TYPE (MetaWaylandCompositor,
@ -326,7 +326,7 @@ index 7f4a50705..3df92fda5 100644
struct wl_display *meta_wayland_compositor_get_wayland_display (MetaWaylandCompositor *compositor);
diff --git a/src/meta/types.h b/src/meta/types.h
index cbe2a9a3d..8fba4a839 100644
index cbe2a9a3d7..8fba4a839e 100644
--- a/src/meta/types.h
+++ b/src/meta/types.h
@@ -38,3 +38,7 @@ typedef struct _MetaSettings MetaSettings;
@ -338,10 +338,10 @@ index cbe2a9a3d..8fba4a839 100644
+typedef struct _MetaWaylandCompositor MetaWaylandCompositor;
+#endif
--
2.45.2
2.46.0
From 8f5fe12656db5a0488cbeb73298520b7d859b7fc Mon Sep 17 00:00:00 2001
From 3b799a9250aa0d1df0ab8f611a730c140dfc9017 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Tue, 12 Dec 2023 22:52:44 +0100
Subject: [PATCH 4/5] Add experimental mode to use native scaling of Xwayland
@ -387,7 +387,7 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
18 files changed, 896 insertions(+), 166 deletions(-)
diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h
index 0760a341a..6ed3fc2c3 100644
index 0760a341a8..6ed3fc2c3f 100644
--- a/src/backends/meta-monitor-manager-private.h
+++ b/src/backends/meta-monitor-manager-private.h
@@ -436,3 +436,5 @@ gboolean meta_monitor_manager_apply_monitors_config (MetaMonitorManager *
@ -397,7 +397,7 @@ index 0760a341a..6ed3fc2c3 100644
+
+MetaLogicalMonitorLayoutMode meta_monitor_manager_get_layout_mode (MetaMonitorManager *manager);
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 7f98c2d98..45033d966 100644
index 7f98c2d983..45033d966e 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -4116,3 +4116,9 @@ meta_monitor_manager_get_virtual_monitors (MetaMonitorManager *manager)
@ -411,7 +411,7 @@ index 7f98c2d98..45033d966 100644
+ return manager->layout_mode;
+}
diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c
index 19827af33..7df10e6c1 100644
index 19827af331..7df10e6c15 100644
--- a/src/compositor/meta-window-actor-x11.c
+++ b/src/compositor/meta-window-actor-x11.c
@@ -688,11 +688,23 @@ meta_window_actor_x11_process_damage (MetaWindowActorX11 *actor_x11,
@ -444,7 +444,7 @@ index 19827af33..7df10e6c1 100644
meta_window_actor_notify_damaged (META_WINDOW_ACTOR (actor_x11));
}
diff --git a/src/core/frame.c b/src/core/frame.c
index 7a09f89f1..57daf00ee 100644
index 7a09f89f14..57daf00ee5 100644
--- a/src/core/frame.c
+++ b/src/core/frame.c
@@ -77,6 +77,7 @@ meta_window_x11_set_frame_xwindow (MetaWindow *window,
@ -643,7 +643,7 @@ index 7a09f89f1..57daf00ee 100644
event.xconfigure.above = None;
event.xconfigure.override_redirect = False;
diff --git a/src/wayland/meta-wayland-cursor-surface.c b/src/wayland/meta-wayland-cursor-surface.c
index 87a8895c8..5a16ce7d8 100644
index 87a8895c88..5a16ce7d87 100644
--- a/src/wayland/meta-wayland-cursor-surface.c
+++ b/src/wayland/meta-wayland-cursor-surface.c
@@ -92,37 +92,29 @@ cursor_sprite_prepare_at (MetaCursorSprite *cursor_sprite,
@ -707,7 +707,7 @@ index 87a8895c8..5a16ce7d8 100644
meta_wayland_surface_update_outputs (surface);
diff --git a/src/wayland/meta-wayland-outputs.c b/src/wayland/meta-wayland-outputs.c
index 89ae86445..f957bc339 100644
index 89ae864450..f957bc339d 100644
--- a/src/wayland/meta-wayland-outputs.c
+++ b/src/wayland/meta-wayland-outputs.c
@@ -31,6 +31,10 @@
@ -802,7 +802,7 @@ index 89ae86445..f957bc339 100644
compositor->outputs =
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index cf6008064..b8c49849a 100644
index cf6008064a..b8c49849ad 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -1247,6 +1247,20 @@ pointer_set_cursor (struct wl_client *client,
@ -827,7 +827,7 @@ index cf6008064..b8c49849a 100644
hot_x, hot_y);
diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h
index e8d442c03..834753ffd 100644
index e8d442c039..834753ffdd 100644
--- a/src/wayland/meta-wayland-private.h
+++ b/src/wayland/meta-wayland-private.h
@@ -77,6 +77,8 @@ struct _MetaXWaylandManager
@ -840,7 +840,7 @@ index e8d442c03..834753ffd 100644
struct _MetaWaylandCompositor
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c
index d8b36ff92..4ad95cd9d 100644
index d8b36ff92b..4ad95cd9d5 100644
--- a/src/wayland/meta-wayland-surface.c
+++ b/src/wayland/meta-wayland-surface.c
@@ -782,8 +782,19 @@ meta_wayland_surface_apply_state (MetaWaylandSurface *surface,
@ -895,7 +895,7 @@ index d8b36ff92..4ad95cd9d 100644
void
diff --git a/src/wayland/meta-window-xwayland.c b/src/wayland/meta-window-xwayland.c
index 1299a351c..5fb006962 100644
index 1299a351ca..5fb0069626 100644
--- a/src/wayland/meta-window-xwayland.c
+++ b/src/wayland/meta-window-xwayland.c
@@ -27,8 +27,9 @@
@ -992,7 +992,7 @@ index 1299a351c..5fb006962 100644
gobject_class->get_property = meta_window_xwayland_get_property;
gobject_class->set_property = meta_window_xwayland_set_property;
diff --git a/src/wayland/meta-xwayland-private.h b/src/wayland/meta-xwayland-private.h
index 7a9cb73fd..9e06f0315 100644
index 7a9cb73fdf..9e06f03155 100644
--- a/src/wayland/meta-xwayland-private.h
+++ b/src/wayland/meta-xwayland-private.h
@@ -20,6 +20,7 @@
@ -1004,7 +1004,7 @@ index 7a9cb73fd..9e06f0315 100644
gboolean
meta_xwayland_init (MetaXWaylandManager *manager,
diff --git a/src/wayland/meta-xwayland-surface.c b/src/wayland/meta-xwayland-surface.c
index 8fa1c72a9..c6daf9b26 100644
index 8fa1c72a96..c6daf9b267 100644
--- a/src/wayland/meta-xwayland-surface.c
+++ b/src/wayland/meta-xwayland-surface.c
@@ -163,13 +163,19 @@ meta_xwayland_surface_get_relative_coordinates (MetaWaylandSurfaceRole *surface_
@ -1030,7 +1030,7 @@ index 8fa1c72a9..c6daf9b26 100644
static MetaWaylandSurface *
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
index ea9c27d74..828e6f64e 100644
index 7f2915cfeb..f6f9d01ff4 100644
--- a/src/wayland/meta-xwayland.c
+++ b/src/wayland/meta-xwayland.c
@@ -1051,6 +1051,29 @@ meta_xwayland_shutdown (MetaWaylandCompositor *compositor)
@ -1084,7 +1084,7 @@ index ea9c27d74..828e6f64e 100644
return TRUE;
}
@@ -1312,3 +1342,29 @@ meta_xwayland_set_should_enable_ei_portal (MetaXWaylandManager *manager,
@@ -1313,3 +1343,29 @@ meta_xwayland_set_should_enable_ei_portal (MetaXWaylandManager *manager,
{
manager->should_enable_ei_portal = should_enable_ei_portal;
}
@ -1115,7 +1115,7 @@ index ea9c27d74..828e6f64e 100644
+ return 1;
+}
diff --git a/src/wayland/meta-xwayland.h b/src/wayland/meta-xwayland.h
index daf9d1abb..ae7a06977 100644
index daf9d1abb0..ae7a06977e 100644
--- a/src/wayland/meta-xwayland.h
+++ b/src/wayland/meta-xwayland.h
@@ -48,3 +48,5 @@ META_EXPORT_TEST
@ -1125,7 +1125,7 @@ index daf9d1abb..ae7a06977 100644
+
+int meta_xwayland_get_effective_scale (MetaXWaylandManager *manager);
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
index fe152d20b..602879aac 100644
index 8768e14dac..024374e7ef 100644
--- a/src/x11/meta-x11-display.c
+++ b/src/x11/meta-x11-display.c
@@ -130,6 +130,42 @@ backend_from_x11_display (MetaX11Display *x11_display)
@ -1207,7 +1207,7 @@ index fe152d20b..602879aac 100644
meta_dbus_x11_set_ui_scaling_factor (priv->dbus_api, ui_scaling_factor);
}
@@ -613,6 +671,9 @@ set_desktop_geometry_hint (MetaX11Display *x11_display)
@@ -637,6 +695,9 @@ set_desktop_geometry_hint (MetaX11Display *x11_display)
return;
meta_display_get_size (x11_display->display, &monitor_width, &monitor_height);
@ -1217,7 +1217,7 @@ index fe152d20b..602879aac 100644
data[0] = monitor_width;
data[1] = monitor_height;
@@ -1022,14 +1083,22 @@ set_workspace_work_area_hint (MetaWorkspace *workspace,
@@ -1046,14 +1107,22 @@ set_workspace_work_area_hint (MetaWorkspace *workspace,
for (l = logical_monitors; l; l = l->next)
{
@ -1246,7 +1246,7 @@ index fe152d20b..602879aac 100644
tmp += 4;
}
@@ -1058,7 +1127,6 @@ set_work_area_hint (MetaDisplay *display,
@@ -1082,7 +1151,6 @@ set_work_area_hint (MetaDisplay *display,
int num_workspaces;
GList *l;
unsigned long *data, *tmp;
@ -1254,7 +1254,7 @@ index fe152d20b..602879aac 100644
num_workspaces = meta_workspace_manager_get_n_workspaces (workspace_manager);
data = g_new (unsigned long, num_workspaces * 4);
@@ -1067,14 +1135,22 @@ set_work_area_hint (MetaDisplay *display,
@@ -1091,14 +1159,22 @@ set_work_area_hint (MetaDisplay *display,
for (l = workspace_manager->workspaces; l; l = l->next)
{
MetaWorkspace *workspace = l->data;
@ -1282,7 +1282,7 @@ index fe152d20b..602879aac 100644
tmp += 4;
}
@@ -1254,6 +1330,41 @@ initialize_dbus_interface (MetaX11Display *x11_display)
@@ -1278,6 +1354,41 @@ initialize_dbus_interface (MetaX11Display *x11_display)
update_ui_scaling_factor (x11_display);
}
@ -1324,7 +1324,7 @@ index fe152d20b..602879aac 100644
/**
* meta_x11_display_new:
*
@@ -1272,6 +1383,7 @@ meta_x11_display_new (MetaDisplay *display,
@@ -1296,6 +1407,7 @@ meta_x11_display_new (MetaDisplay *display,
MetaBackend *backend = meta_context_get_backend (context);
MetaMonitorManager *monitor_manager =
meta_backend_get_monitor_manager (backend);
@ -1332,7 +1332,7 @@ index fe152d20b..602879aac 100644
g_autoptr (MetaX11Display) x11_display = NULL;
Display *xdisplay;
Screen *xscreen;
@@ -1442,7 +1554,7 @@ meta_x11_display_new (MetaDisplay *display,
@@ -1466,7 +1578,7 @@ meta_x11_display_new (MetaDisplay *display,
"monitors-changed-internal",
G_CALLBACK (on_monitors_changed_internal),
x11_display,
@ -1341,7 +1341,7 @@ index fe152d20b..602879aac 100644
init_leader_window (x11_display, &timestamp);
x11_display->timestamp = timestamp;
@@ -1535,6 +1647,11 @@ meta_x11_display_new (MetaDisplay *display,
@@ -1559,6 +1671,11 @@ meta_x11_display_new (MetaDisplay *display,
meta_prefs_add_listener (prefs_changed_callback, x11_display);
@ -1353,7 +1353,7 @@ index fe152d20b..602879aac 100644
set_work_area_hint (display, x11_display);
g_signal_connect_object (display, "workareas-changed",
@@ -1748,16 +1865,12 @@ meta_x11_display_reload_cursor (MetaX11Display *x11_display)
@@ -1772,16 +1889,12 @@ meta_x11_display_reload_cursor (MetaX11Display *x11_display)
}
static void
@ -1375,7 +1375,7 @@ index fe152d20b..602879aac 100644
}
static void
@@ -1809,8 +1922,37 @@ static void
@@ -1833,8 +1946,37 @@ static void
update_cursor_theme (MetaX11Display *x11_display)
{
MetaBackend *backend = backend_from_x11_display (x11_display);
@ -1414,7 +1414,7 @@ index fe152d20b..602879aac 100644
schedule_reload_x11_cursor (x11_display);
if (META_IS_BACKEND_X11 (backend))
@@ -1818,7 +1960,7 @@ update_cursor_theme (MetaX11Display *x11_display)
@@ -1842,7 +1984,7 @@ update_cursor_theme (MetaX11Display *x11_display)
MetaBackendX11 *backend_x11 = META_BACKEND_X11 (backend);
Display *xdisplay = meta_backend_x11_get_xdisplay (backend_x11);
@ -1424,7 +1424,7 @@ index fe152d20b..602879aac 100644
}
}
diff --git a/src/x11/window-props.c b/src/x11/window-props.c
index c18b3eab5..494fbe843 100644
index c18b3eab59..494fbe8431 100644
--- a/src/x11/window-props.c
+++ b/src/x11/window-props.c
@@ -305,10 +305,15 @@ reload_icon_geometry (MetaWindow *window,
@ -1566,7 +1566,7 @@ index c18b3eab5..494fbe843 100644
/* Put back saved ConfigureRequest. */
window->size_hints.x = x;
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index 443f40f28..ccbd75d1a 100644
index 443f40f284..ccbd75d1a9 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -110,6 +110,113 @@ meta_window_x11_get_private (MetaWindowX11 *window_x11)
@ -2038,7 +2038,7 @@ index 443f40f28..ccbd75d1a 100644
priv->client_rect = window->rect;
window->buffer_rect = window->rect;
diff --git a/src/x11/window-x11.h b/src/x11/window-x11.h
index 205eaaa63..fa3fbea6a 100644
index 205eaaa632..fa3fbea6a8 100644
--- a/src/x11/window-x11.h
+++ b/src/x11/window-x11.h
@@ -45,6 +45,24 @@ struct _MetaWindowX11Class
@ -2091,10 +2091,10 @@ index 205eaaa63..fa3fbea6a 100644
+ int *stage_width,
+ int *stage_heigth);
--
2.45.2
2.46.0
From 26bac17fc06d840006c86935b6e9486ccf033082 Mon Sep 17 00:00:00 2001
From 6f35aed57a4a98ef878e483958e930840a6667ae Mon Sep 17 00:00:00 2001
From: HydroH <ixlesis@gmail.com>
Date: Tue, 21 May 2024 19:15:36 +0800
Subject: [PATCH 5/5] Correctly set bounding region for undecorated windows
@ -2105,7 +2105,7 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index ccbd75d1a..5f37c634a 100644
index ccbd75d1a9..5f37c634ac 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -2573,8 +2573,13 @@ meta_window_x11_update_input_region (MetaWindow *window)
@ -2125,5 +2125,5 @@ index ccbd75d1a..5f37c634a 100644
if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
--
2.45.2
2.46.0

View file

@ -1,4 +1,4 @@
From 033b1b83a8484247519bc98eee70add380d1e3fc Mon Sep 17 00:00:00 2001
From 0bcbfa0ae68bac604b6922c236a2dc42e535e994 Mon Sep 17 00:00:00 2001
From: Alynx Zhou <alynx.zhou@gmail.com>
Date: Wed, 15 May 2024 00:07:41 +0800
Subject: [PATCH] wayland/text-input-v1: Implement basic text-input-v1 support
@ -10,6 +10,9 @@ Japanese or Korean.
Closes <https://gitlab.gnome.org/GNOME/mutter/-/issues/3200>.
Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3751
Commit: 2a94e19b00434fe4d7ab858a6cdcff6364f6e408
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
---
clutter/clutter/clutter-enums.h | 3 +
@ -27,7 +30,7 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
create mode 100644 src/wayland/meta-wayland-text-input-v1.h
diff --git a/clutter/clutter/clutter-enums.h b/clutter/clutter/clutter-enums.h
index 45956bf57..8198e7351 100644
index 45956bf57b..8198e73516 100644
--- a/clutter/clutter/clutter-enums.h
+++ b/clutter/clutter/clutter-enums.h
@@ -1183,6 +1183,9 @@ typedef enum
@ -41,7 +44,7 @@ index 45956bf57..8198e7351 100644
typedef enum
diff --git a/src/core/events.c b/src/core/events.c
index 1f36d2feb..a1874d673 100644
index 1f36d2feb6..a1874d6737 100644
--- a/src/core/events.c
+++ b/src/core/events.c
@@ -238,6 +238,7 @@ meta_display_handle_event (MetaDisplay *display,
@ -77,7 +80,7 @@ index 1f36d2feb..a1874d673 100644
if (wayland_compositor)
diff --git a/src/meson.build b/src/meson.build
index 05df3bfd2..fad08706a 100644
index 05df3bfd28..fad08706a6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -688,6 +688,8 @@ if have_wayland
@ -98,7 +101,7 @@ index 05df3bfd2..fad08706a 100644
['xdg-activation', 'staging', 'v1', ],
['xdg-foreign', 'unstable', 'v1', ],
diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c
index 2301e0068..d0f888084 100644
index 2301e00685..d0f8880840 100644
--- a/src/wayland/meta-wayland-seat.c
+++ b/src/wayland/meta-wayland-seat.c
@@ -229,6 +229,7 @@ default_focus (MetaWaylandEventHandler *handler,
@ -149,7 +152,7 @@ index 2301e0068..d0f888084 100644
break;
diff --git a/src/wayland/meta-wayland-seat.h b/src/wayland/meta-wayland-seat.h
index 83fd7de1e..37704cf5a 100644
index 83fd7de1ed..37704cf5a1 100644
--- a/src/wayland/meta-wayland-seat.h
+++ b/src/wayland/meta-wayland-seat.h
@@ -30,6 +30,7 @@
@ -170,7 +173,7 @@ index 83fd7de1e..37704cf5a 100644
MetaWaylandEventHandler *default_handler;
diff --git a/src/wayland/meta-wayland-text-input-v1.c b/src/wayland/meta-wayland-text-input-v1.c
new file mode 100644
index 000000000..1826a4ff4
index 0000000000..1826a4ff43
--- /dev/null
+++ b/src/wayland/meta-wayland-text-input-v1.c
@@ -0,0 +1,859 @@
@ -1035,7 +1038,7 @@ index 000000000..1826a4ff4
+}
diff --git a/src/wayland/meta-wayland-text-input-v1.h b/src/wayland/meta-wayland-text-input-v1.h
new file mode 100644
index 000000000..79b1c0a54
index 0000000000..79b1c0a541
--- /dev/null
+++ b/src/wayland/meta-wayland-text-input-v1.h
@@ -0,0 +1,38 @@
@ -1078,7 +1081,7 @@ index 000000000..79b1c0a54
+gboolean meta_wayland_text_input_v1_handle_event (MetaWaylandTextInputV1 *text_input,
+ const ClutterEvent *event);
diff --git a/src/wayland/meta-wayland-versions.h b/src/wayland/meta-wayland-versions.h
index 900f30d78..a77b81461 100644
index 900f30d788..a77b81461b 100644
--- a/src/wayland/meta-wayland-versions.h
+++ b/src/wayland/meta-wayland-versions.h
@@ -49,6 +49,7 @@
@ -1090,7 +1093,7 @@ index 900f30d78..a77b81461 100644
#define META_ZWP_PRIMARY_SELECTION_V1_VERSION 1
#define META_WP_PRESENTATION_VERSION 1
diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c
index 501b69a91..0114823c1 100644
index 501b69a91c..0114823c14 100644
--- a/src/wayland/meta-wayland.c
+++ b/src/wayland/meta-wayland.c
@@ -865,6 +865,7 @@ meta_wayland_compositor_new (MetaContext *context)
@ -1115,7 +1118,7 @@ index 501b69a91..0114823c1 100644
meta_wayland_compositor_update_focus (MetaWaylandCompositor *compositor,
MetaWindow *window)
diff --git a/src/wayland/meta-wayland.h b/src/wayland/meta-wayland.h
index 0a0476eba..c23e82cdc 100644
index 0a0476eba0..c23e82cdca 100644
--- a/src/wayland/meta-wayland.h
+++ b/src/wayland/meta-wayland.h
@@ -26,6 +26,7 @@
@ -1135,5 +1138,5 @@ index 0a0476eba..c23e82cdc 100644
#ifdef HAVE_XWAYLAND
void meta_wayland_compositor_notify_surface_id (MetaWaylandCompositor *compositor,
--
2.45.2
2.46.0

View file

@ -1,4 +1,4 @@
From cd9e973930c5a93c7dc752a9b041a4ab649165ee Mon Sep 17 00:00:00 2001
From 9cc50ce03e29614740a1e524866f113dbf7fe27c Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Mon, 29 Jul 2024 17:44:53 +0800
Subject: [PATCH] backends/native: Avoid duplicating or losing KMS property
@ -15,24 +15,63 @@ meant that property updates signalled between the swap and presentation
wouldn't get attached to a KMS update, and would be forgotten when
`notify_view_crtc_presented` resets the flags to FALSE.
To solve these we now keep a separate flag and counter per property,
tracking invalidation and pending updates respectively. The latter is a
counter rather than a boolean in support of triple buffering where two
updates may be pending concurrently (next and posted).
Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3912
Commit: f7b59445e437aa84ec00b372cd26f3b35ece7c8b
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
---
src/backends/native/meta-onscreen-native.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
src/backends/native/meta-onscreen-native.c | 104 +++++++++++++--------
1 file changed, 67 insertions(+), 37 deletions(-)
diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c
index 1a31f04a16..43a7d186a4 100644
index 1a31f04a16..60b7d877a5 100644
--- a/src/backends/native/meta-onscreen-native.c
+++ b/src/backends/native/meta-onscreen-native.c
@@ -225,7 +225,6 @@ notify_view_crtc_presented (MetaRendererView *view,
CoglFramebuffer *framebuffer =
clutter_stage_view_get_onscreen (stage_view);
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
- MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
CoglFrameInfo *frame_info;
MetaCrtc *crtc;
@@ -84,6 +84,13 @@ typedef struct _MetaOnscreenNativeSecondaryGpuState
MetaSharedFramebufferImportStatus import_status;
} MetaOnscreenNativeSecondaryGpuState;
@@ -233,11 +232,6 @@ notify_view_crtc_presented (MetaRendererView *view,
+typedef struct _KmsProperty
+{
+ gboolean invalidated;
+ int updates_pending;
+ gulong signal_handler_id;
+} KmsProperty;
+
struct _MetaOnscreenNative
{
CoglOnscreenEgl parent;
@@ -116,15 +123,15 @@ struct _MetaOnscreenNative
MetaRendererView *view;
- gboolean is_gamma_lut_invalid;
- gboolean is_privacy_screen_invalid;
- gboolean is_color_space_invalid;
- gboolean is_hdr_metadata_invalid;
-
- gulong gamma_lut_changed_handler_id;
- gulong privacy_screen_changed_handler_id;
- gulong color_space_changed_handler_id;
- gulong hdr_metadata_changed_handler_id;
+ union {
+ struct {
+ KmsProperty gamma_lut;
+ KmsProperty privacy_screen;
+ KmsProperty color_space;
+ KmsProperty hdr_metadata;
+ } property;
+ KmsProperty properties[4];
+ };
};
G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native,
@@ -233,10 +240,13 @@ notify_view_crtc_presented (MetaRendererView *view,
g_return_if_fail (frame_info != NULL);
@ -40,42 +79,217 @@ index 1a31f04a16..43a7d186a4 100644
- onscreen_native->is_privacy_screen_invalid = FALSE;
- onscreen_native->is_color_space_invalid = FALSE;
- onscreen_native->is_hdr_metadata_invalid = FALSE;
-
+ for (int i = 0; i < G_N_ELEMENTS (onscreen_native->properties); i++)
+ {
+ KmsProperty *prop = &onscreen_native->properties[i];
+
+ if (prop->updates_pending > 0)
+ prop->updates_pending--;
+ }
crtc = META_CRTC (meta_crtc_kms_from_kms_crtc (kms_crtc));
maybe_update_frame_info (crtc, frame_info, time_us, flags, sequence);
@@ -333,6 +343,7 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
CoglFramebuffer *framebuffer =
clutter_stage_view_get_onscreen (CLUTTER_STAGE_VIEW (view));
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
+ MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
CoglFrameInfo *frame_info;
@@ -1786,6 +1780,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
/*
@@ -346,6 +357,17 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
G_IO_ERROR_PERMISSION_DENIED))
g_warning ("Page flip discarded: %s", error->message);
+ for (int i = 0; i < G_N_ELEMENTS (onscreen_native->properties); i++)
+ {
+ KmsProperty *prop = &onscreen_native->properties[i];
+
+ if (prop->updates_pending > 0)
+ {
+ prop->invalidated = TRUE;
+ prop->updates_pending--;
+ }
+ }
+
frame_info = cogl_onscreen_peek_head_frame_info (onscreen);
frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC;
@@ -1776,7 +1798,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc);;
MetaFrameNative *frame_native = meta_frame_native_from_frame (frame);
- if (onscreen_native->is_gamma_lut_invalid)
+ if (onscreen_native->property.gamma_lut.invalidated)
{
const MetaGammaLut *gamma;
MetaKmsUpdate *kms_update;
@@ -1786,9 +1808,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
gamma = meta_crtc_kms_peek_gamma_lut (crtc_kms);
meta_kms_update_set_crtc_gamma (kms_update, kms_crtc, gamma);
+ onscreen_native->is_gamma_lut_invalid = FALSE;
+ onscreen_native->property.gamma_lut.invalidated = FALSE;
+ onscreen_native->property.gamma_lut.updates_pending++;
}
if (onscreen_native->is_privacy_screen_invalid)
@@ -1800,6 +1795,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
- if (onscreen_native->is_privacy_screen_invalid)
+ if (onscreen_native->property.privacy_screen.invalidated)
{
MetaKmsConnector *kms_connector =
meta_output_kms_get_kms_connector (output_kms);
@@ -1800,9 +1824,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
enabled = meta_output_is_privacy_screen_enabled (onscreen_native->output);
meta_kms_update_set_privacy_screen (kms_update, kms_connector, enabled);
+ onscreen_native->is_privacy_screen_invalid = FALSE;
+ onscreen_native->property.privacy_screen.invalidated = FALSE;
+ onscreen_native->property.privacy_screen.updates_pending++;
}
if (onscreen_native->is_color_space_invalid)
@@ -1814,6 +1810,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
- if (onscreen_native->is_color_space_invalid)
+ if (onscreen_native->property.color_space.invalidated)
{
MetaKmsConnector *kms_connector =
meta_output_kms_get_kms_connector (output_kms);
@@ -1814,9 +1840,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
color_space = meta_output_peek_color_space (onscreen_native->output);
meta_kms_update_set_color_space (kms_update, kms_connector, color_space);
+ onscreen_native->is_color_space_invalid = FALSE;
+ onscreen_native->property.color_space.invalidated = FALSE;
+ onscreen_native->property.color_space.updates_pending++;
}
if (onscreen_native->is_hdr_metadata_invalid)
@@ -1828,6 +1825,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
- if (onscreen_native->is_hdr_metadata_invalid)
+ if (onscreen_native->property.hdr_metadata.invalidated)
{
MetaKmsConnector *kms_connector =
meta_output_kms_get_kms_connector (output_kms);
@@ -1828,6 +1856,8 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
metadata = meta_output_peek_hdr_metadata (onscreen_native->output);
meta_kms_update_set_hdr_metadata (kms_update, kms_connector, metadata);
+ onscreen_native->is_hdr_metadata_invalid = FALSE;
+ onscreen_native->property.hdr_metadata.invalidated = FALSE;
+ onscreen_native->property.hdr_metadata.updates_pending++;
}
}
--
2.45.2
@@ -2677,15 +2707,15 @@ meta_onscreen_native_invalidate (MetaOnscreenNative *onscreen_native)
meta_output_get_info (onscreen_native->output);
if (meta_crtc_get_gamma_lut_size (onscreen_native->crtc) > 0)
- onscreen_native->is_gamma_lut_invalid = TRUE;
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
if (output_info->supports_privacy_screen)
- onscreen_native->is_privacy_screen_invalid = TRUE;
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
if (output_info->supported_color_spaces &
(1 << META_OUTPUT_COLORSPACE_DEFAULT))
- onscreen_native->is_color_space_invalid = TRUE;
+ onscreen_native->property.color_space.invalidated = TRUE;
if (output_info->supported_hdr_eotfs &
(1 << META_OUTPUT_HDR_METADATA_EOTF_TRADITIONAL_GAMMA_SDR))
- onscreen_native->is_hdr_metadata_invalid = TRUE;
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
}
static void
@@ -2694,7 +2724,7 @@ on_gamma_lut_changed (MetaCrtc *crtc,
{
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
- onscreen_native->is_gamma_lut_invalid = TRUE;
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
clutter_stage_view_schedule_update (stage_view);
}
@@ -2705,7 +2735,7 @@ on_privacy_screen_enabled_changed (MetaOutput *output,
{
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
- onscreen_native->is_privacy_screen_invalid = TRUE;
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
clutter_stage_view_schedule_update (stage_view);
}
@@ -2715,7 +2745,7 @@ on_color_space_changed (MetaOutput *output,
{
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
- onscreen_native->is_color_space_invalid = TRUE;
+ onscreen_native->property.color_space.invalidated = TRUE;
clutter_stage_view_schedule_update (stage_view);
}
@@ -2725,7 +2755,7 @@ on_hdr_metadata_changed (MetaOutput *output,
{
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
- onscreen_native->is_hdr_metadata_invalid = TRUE;
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
clutter_stage_view_schedule_update (stage_view);
}
@@ -2760,8 +2790,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
if (meta_crtc_get_gamma_lut_size (crtc) > 0)
{
- onscreen_native->is_gamma_lut_invalid = TRUE;
- onscreen_native->gamma_lut_changed_handler_id =
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
+ onscreen_native->property.gamma_lut.signal_handler_id =
g_signal_connect (crtc, "gamma-lut-changed",
G_CALLBACK (on_gamma_lut_changed),
onscreen_native);
@@ -2769,8 +2799,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
if (output_info->supports_privacy_screen)
{
- onscreen_native->is_privacy_screen_invalid = TRUE;
- onscreen_native->privacy_screen_changed_handler_id =
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
+ onscreen_native->property.privacy_screen.signal_handler_id =
g_signal_connect (output, "notify::is-privacy-screen-enabled",
G_CALLBACK (on_privacy_screen_enabled_changed),
onscreen_native);
@@ -2779,8 +2809,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
if (output_info->supported_color_spaces &
(1 << META_OUTPUT_COLORSPACE_DEFAULT))
{
- onscreen_native->is_color_space_invalid = TRUE;
- onscreen_native->color_space_changed_handler_id =
+ onscreen_native->property.color_space.invalidated = TRUE;
+ onscreen_native->property.color_space.signal_handler_id =
g_signal_connect (output, "color-space-changed",
G_CALLBACK (on_color_space_changed),
onscreen_native);
@@ -2789,8 +2819,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
if (output_info->supported_hdr_eotfs &
(1 << META_OUTPUT_HDR_METADATA_EOTF_TRADITIONAL_GAMMA_SDR))
{
- onscreen_native->is_hdr_metadata_invalid = TRUE;
- onscreen_native->hdr_metadata_changed_handler_id =
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
+ onscreen_native->property.hdr_metadata.signal_handler_id =
g_signal_connect (output, "hdr-metadata-changed",
G_CALLBACK (on_hdr_metadata_changed),
onscreen_native);
@@ -2802,13 +2832,13 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
static void
clear_invalidation_handlers (MetaOnscreenNative *onscreen_native)
{
- g_clear_signal_handler (&onscreen_native->gamma_lut_changed_handler_id,
+ g_clear_signal_handler (&onscreen_native->property.gamma_lut.signal_handler_id,
onscreen_native->crtc);
- g_clear_signal_handler (&onscreen_native->privacy_screen_changed_handler_id,
+ g_clear_signal_handler (&onscreen_native->property.privacy_screen.signal_handler_id,
onscreen_native->output);
- g_clear_signal_handler (&onscreen_native->color_space_changed_handler_id,
+ g_clear_signal_handler (&onscreen_native->property.color_space.signal_handler_id,
onscreen_native->output);
- g_clear_signal_handler (&onscreen_native->hdr_metadata_changed_handler_id,
+ g_clear_signal_handler (&onscreen_native->property.hdr_metadata.signal_handler_id,
onscreen_native->output);
}
--
2.46.0