Commits:
-
0f6ecbf7
by Mike Gabriel at 2023-08-19T21:31:16+02:00
debian/patches: Add 0001_check-availability-of-compositing-1.patch and 0002_check-availability-of-compositing-2.patch. Check that compositing is not only requested, but also available.
-
7f77ea83
by Mike Gabriel at 2023-08-19T21:35:07+02:00
upload to unstable (debian/1.26.2-2)
4 changed files:
Changes:
debian/changelog
|
1
|
+marco (1.26.2-2) unstable; urgency=medium
|
|
2
|
+
|
|
3
|
+ * debian/patches:
|
|
4
|
+ + Add 0001_check-availability-of-compositing-1.patch and
|
|
5
|
+ 0002_check-availability-of-compositing-2.patch. Check that compositing
|
|
6
|
+ is not only requested, but also available.
|
|
7
|
+
|
|
8
|
+ Enabling code that is supposed to be used in compositing conditions is
|
|
9
|
+ harmful if compositing is not actually available. Just checking the
|
|
10
|
+ preference is not enough to make sure that compositing is available -
|
|
11
|
+ the X server might be missing crucial extensions for compositing to
|
|
12
|
+ work, which in turn correctly disables the internal compositor.
|
|
13
|
+
|
|
14
|
+ The end result is graphical issues like black borders around windows in
|
|
15
|
+ such situations.
|
|
16
|
+
|
|
17
|
+ Make sure that compositing is both requested AND available to fix this
|
|
18
|
+ bug.
|
|
19
|
+
|
|
20
|
+ This resolves an annoying issue when running MATE desktop in X2Go
|
|
21
|
+ sessions with the x2goagent (nx-libs) Xserver backend.
|
|
22
|
+
|
|
23
|
+ -- Mike Gabriel <sunweaver@debian.org> Sat, 19 Aug 2023 21:31:53 +0200
|
|
24
|
+
|
1
|
25
|
marco (1.26.2-1) unstable; urgency=medium
|
2
|
26
|
|
3
|
27
|
* New upstream release.
|
debian/patches/0001_check-availability-of-compositing-1.patch
|
1
|
+From 7db333cd008d9965dacb6490120c74394d1d5590 Mon Sep 17 00:00:00 2001
|
|
2
|
+From: Mihai Moldovan <ionic@ionic.de>
|
|
3
|
+Date: Fri, 28 Jul 2023 20:24:57 +0200
|
|
4
|
+Subject: [PATCH] ui/frames: check that compositing is not only requested, but
|
|
5
|
+ also available.
|
|
6
|
+
|
|
7
|
+Enabling code that is supposed to be used in compositing conditions is
|
|
8
|
+harmful if compositing is not actually available. Just checking the
|
|
9
|
+preference is not enough to make sure that compositing is available -
|
|
10
|
+the X server might be missing crucial extensions for compositing to
|
|
11
|
+work, which in turn correctly disables the internal compositor.
|
|
12
|
+
|
|
13
|
+The end result is graphical issues like black borders around windows in
|
|
14
|
+such situations.
|
|
15
|
+
|
|
16
|
+Make sure that compositing is both requested AND available to fix this
|
|
17
|
+bug.
|
|
18
|
+---
|
|
19
|
+ src/core/frame.c | 2 ++
|
|
20
|
+ src/include/ui.h | 12 +++++++-----
|
|
21
|
+ src/ui/frames.c | 16 ++++++++++------
|
|
22
|
+ src/ui/frames.h | 12 +++++++-----
|
|
23
|
+ src/ui/ui.c | 13 +++++++------
|
|
24
|
+ 5 files changed, 33 insertions(+), 22 deletions(-)
|
|
25
|
+
|
|
26
|
+diff --git a/src/core/frame.c b/src/core/frame.c
|
|
27
|
+index 957f6c762..e1eec2a40 100644
|
|
28
|
+--- a/src/core/frame.c
|
|
29
|
++++ b/src/core/frame.c
|
|
30
|
+@@ -152,6 +152,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
|
31
|
+
|
|
32
|
+ /* Shape mask */
|
|
33
|
+ meta_ui_apply_frame_shape (frame->window->screen->ui,
|
|
34
|
++ frame->window->display,
|
|
35
|
+ frame->xwindow,
|
|
36
|
+ frame->rect.width,
|
|
37
|
+ frame->rect.height,
|
|
38
|
+@@ -325,6 +326,7 @@ update_shape (MetaFrame *frame)
|
|
39
|
+ if (frame->need_reapply_frame_shape)
|
|
40
|
+ {
|
|
41
|
+ meta_ui_apply_frame_shape (frame->window->screen->ui,
|
|
42
|
++ frame->window->display,
|
|
43
|
+ frame->xwindow,
|
|
44
|
+ frame->rect.width,
|
|
45
|
+ frame->rect.height,
|
|
46
|
+diff --git a/src/include/ui.h b/src/include/ui.h
|
|
47
|
+index c02e78a21..9d95e37af 100644
|
|
48
|
+--- a/src/include/ui.h
|
|
49
|
++++ b/src/include/ui.h
|
|
50
|
+@@ -26,6 +26,7 @@
|
|
51
|
+
|
|
52
|
+ /* Don't include gtk.h or gdk.h here */
|
|
53
|
+ #include "common.h"
|
|
54
|
++#include "types.h"
|
|
55
|
+ #include <X11/Xlib.h>
|
|
56
|
+ #include <X11/Xutil.h>
|
|
57
|
+ #include <glib.h>
|
|
58
|
+@@ -91,11 +92,12 @@ void meta_ui_map_frame (MetaUI *ui,
|
|
59
|
+ void meta_ui_unmap_frame (MetaUI *ui,
|
|
60
|
+ Window xwindow);
|
|
61
|
+
|
|
62
|
+-void meta_ui_apply_frame_shape (MetaUI *ui,
|
|
63
|
+- Window xwindow,
|
|
64
|
+- int new_window_width,
|
|
65
|
+- int new_window_height,
|
|
66
|
+- gboolean window_has_shape);
|
|
67
|
++void meta_ui_apply_frame_shape (MetaUI *ui,
|
|
68
|
++ MetaDisplay *display,
|
|
69
|
++ Window xwindow,
|
|
70
|
++ int new_window_width,
|
|
71
|
++ int new_window_height,
|
|
72
|
++ gboolean window_has_shape);
|
|
73
|
+
|
|
74
|
+ cairo_region_t *meta_ui_get_frame_bounds (MetaUI *ui,
|
|
75
|
+ Window xwindow,
|
|
76
|
+diff --git a/src/ui/frames.c b/src/ui/frames.c
|
|
77
|
+index d65dac82d..ad7e10c8f 100644
|
|
78
|
+--- a/src/ui/frames.c
|
|
79
|
++++ b/src/ui/frames.c
|
|
80
|
+@@ -37,6 +37,7 @@
|
|
81
|
+ #include "theme.h"
|
|
82
|
+ #include "prefs.h"
|
|
83
|
+ #include "ui.h"
|
|
84
|
++#include "display.h"
|
|
85
|
+
|
|
86
|
+ #ifdef HAVE_SHAPE
|
|
87
|
+ #include <X11/extensions/shape.h>
|
|
88
|
+@@ -1063,11 +1064,12 @@ get_frame_region (int window_width,
|
|
89
|
+ #endif /* HAVE_SHAPE */
|
|
90
|
+
|
|
91
|
+ void
|
|
92
|
+-meta_frames_apply_shapes (MetaFrames *frames,
|
|
93
|
+- Window xwindow,
|
|
94
|
+- int new_window_width,
|
|
95
|
+- int new_window_height,
|
|
96
|
+- gboolean window_has_shape)
|
|
97
|
++meta_frames_apply_shapes (MetaFrames *frames,
|
|
98
|
++ MetaDisplay *meta_display,
|
|
99
|
++ Window xwindow,
|
|
100
|
++ int new_window_width,
|
|
101
|
++ int new_window_height,
|
|
102
|
++ gboolean window_has_shape)
|
|
103
|
+ {
|
|
104
|
+ #ifdef HAVE_SHAPE
|
|
105
|
+ /* Apply shapes as if window had new_window_width, new_window_height */
|
|
106
|
+@@ -1095,7 +1097,9 @@ meta_frames_apply_shapes (MetaFrames *frames,
|
|
107
|
+
|
|
108
|
+ meta_frames_calc_geometry (frames, frame, &fgeom);
|
|
109
|
+
|
|
110
|
+- compositing_manager = meta_prefs_get_compositing_manager ();
|
|
111
|
++ compositing_manager = meta_prefs_get_compositing_manager () &&
|
|
112
|
++ meta_display &&
|
|
113
|
++ !!(meta_display_get_compositor (meta_display));
|
|
114
|
+
|
|
115
|
+ if (!window_has_shape && compositing_manager)
|
|
116
|
+ return;
|
|
117
|
+diff --git a/src/ui/frames.h b/src/ui/frames.h
|
|
118
|
+index ad86ee44f..f4821e435 100644
|
|
119
|
+--- a/src/ui/frames.h
|
|
120
|
++++ b/src/ui/frames.h
|
|
121
|
+@@ -28,6 +28,7 @@
|
|
122
|
+ #include <gdk/gdkx.h>
|
|
123
|
+ #include "common.h"
|
|
124
|
+ #include "theme.h"
|
|
125
|
++#include "types.h"
|
|
126
|
+
|
|
127
|
+ typedef enum
|
|
128
|
+ {
|
|
129
|
+@@ -135,11 +136,12 @@ void meta_frames_get_borders (MetaFrames *frames,
|
|
130
|
+ Window xwindow,
|
|
131
|
+ MetaFrameBorders *borders);
|
|
132
|
+
|
|
133
|
+-void meta_frames_apply_shapes (MetaFrames *frames,
|
|
134
|
+- Window xwindow,
|
|
135
|
+- int new_window_width,
|
|
136
|
+- int new_window_height,
|
|
137
|
+- gboolean window_has_shape);
|
|
138
|
++void meta_frames_apply_shapes (MetaFrames *frames,
|
|
139
|
++ MetaDisplay *meta_display,
|
|
140
|
++ Window xwindow,
|
|
141
|
++ int new_window_width,
|
|
142
|
++ int new_window_height,
|
|
143
|
++ gboolean window_has_shape);
|
|
144
|
+ cairo_region_t *meta_frames_get_frame_bounds (MetaFrames *frames,
|
|
145
|
+ Window xwindow,
|
|
146
|
+ int window_width,
|
|
147
|
+diff --git a/src/ui/ui.c b/src/ui/ui.c
|
|
148
|
+index 9976c7014..2b15cc82d 100644
|
|
149
|
+--- a/src/ui/ui.c
|
|
150
|
++++ b/src/ui/ui.c
|
|
151
|
+@@ -458,13 +458,14 @@ meta_ui_repaint_frame (MetaUI *ui,
|
|
152
|
+ }
|
|
153
|
+
|
|
154
|
+ void
|
|
155
|
+-meta_ui_apply_frame_shape (MetaUI *ui,
|
|
156
|
+- Window xwindow,
|
|
157
|
+- int new_window_width,
|
|
158
|
+- int new_window_height,
|
|
159
|
+- gboolean window_has_shape)
|
|
160
|
++meta_ui_apply_frame_shape (MetaUI *ui,
|
|
161
|
++ MetaDisplay *display,
|
|
162
|
++ Window xwindow,
|
|
163
|
++ int new_window_width,
|
|
164
|
++ int new_window_height,
|
|
165
|
++ gboolean window_has_shape)
|
|
166
|
+ {
|
|
167
|
+- meta_frames_apply_shapes (ui->frames, xwindow,
|
|
168
|
++ meta_frames_apply_shapes (ui->frames, display, xwindow,
|
|
169
|
+ new_window_width, new_window_height,
|
|
170
|
+ window_has_shape);
|
|
171
|
+ } |
debian/patches/0002_check-availability-of-compositing-2.patch
|
1
|
+From ac2c5fbe18d4a27fa738281ef7ebfaa4a9a131f9 Mon Sep 17 00:00:00 2001
|
|
2
|
+From: Mihai Moldovan <ionic@ionic.de>
|
|
3
|
+Date: Fri, 28 Jul 2023 20:27:28 +0200
|
|
4
|
+Subject: [PATCH] ui/tabpopup: likewise only enable compositing code if
|
|
5
|
+ available.
|
|
6
|
+
|
|
7
|
+---
|
|
8
|
+ src/core/screen.c | 2 ++
|
|
9
|
+ src/include/tabpopup.h | 2 ++
|
|
10
|
+ src/ui/tabpopup.c | 9 +++++++--
|
|
11
|
+ 3 files changed, 11 insertions(+), 2 deletions(-)
|
|
12
|
+
|
|
13
|
+--- a/src/core/screen.c
|
|
14
|
++++ b/src/core/screen.c
|
|
15
|
+@@ -1406,6 +1406,7 @@
|
|
16
|
+ }
|
|
17
|
+
|
|
18
|
+ screen->tab_popup = meta_ui_tab_popup_new (entries,
|
|
19
|
++ screen,
|
|
20
|
+ len,
|
|
21
|
+ meta_prefs_get_alt_tab_max_columns(),
|
|
22
|
+ meta_prefs_get_alt_tab_expand_to_fit_title(),
|
|
23
|
+@@ -1485,6 +1486,7 @@
|
|
24
|
+ }
|
|
25
|
+
|
|
26
|
+ screen->tab_popup = meta_ui_tab_popup_new (entries,
|
|
27
|
++ screen,
|
|
28
|
+ len,
|
|
29
|
+ layout.cols,
|
|
30
|
+ FALSE, /* expand_for_titles */
|
|
31
|
+--- a/src/include/tabpopup.h
|
|
32
|
++++ b/src/include/tabpopup.h
|
|
33
|
+@@ -28,6 +28,7 @@
|
|
34
|
+ /* Don't include gtk.h or gdk.h here */
|
|
35
|
+ #include "common.h"
|
|
36
|
+ #include "boxes.h"
|
|
37
|
++#include "types.h"
|
|
38
|
+ #include <X11/Xlib.h>
|
|
39
|
+ #include <glib.h>
|
|
40
|
+ #include <gdk-pixbuf/gdk-pixbuf.h>
|
|
41
|
+@@ -58,6 +59,7 @@
|
|
42
|
+ };
|
|
43
|
+
|
|
44
|
+ MetaTabPopup* meta_ui_tab_popup_new (const MetaTabEntry *entries,
|
|
45
|
++ MetaScreen *meta_screen,
|
|
46
|
+ int entry_count,
|
|
47
|
+ int width,
|
|
48
|
+ gboolean expand_for_titles,
|
|
49
|
+--- a/src/ui/tabpopup.c
|
|
50
|
++++ b/src/ui/tabpopup.c
|
|
51
|
+@@ -30,6 +30,7 @@
|
|
52
|
+ #include "tabpopup.h"
|
|
53
|
+ #include "theme.h"
|
|
54
|
+ #include "prefs.h"
|
|
55
|
++#include "screen.h"
|
|
56
|
+ /* FIXME these two includes are 100% broken... */
|
|
57
|
+ #include "../core/workspace.h"
|
|
58
|
+ #include "../core/frame-private.h"
|
|
59
|
+@@ -235,6 +236,7 @@
|
|
60
|
+
|
|
61
|
+ MetaTabPopup*
|
|
62
|
+ meta_ui_tab_popup_new (const MetaTabEntry *entries,
|
|
63
|
++ MetaScreen *meta_screen,
|
|
64
|
+ int entry_count,
|
|
65
|
+ int width,
|
|
66
|
+ gboolean expand_for_titles,
|
|
67
|
+@@ -285,7 +287,8 @@
|
|
68
|
+ gtk_window_set_resizable (GTK_WINDOW (popup->window), TRUE);
|
|
69
|
+
|
|
70
|
+ /* This style should only be set for composited mode. */
|
|
71
|
+- if (meta_prefs_get_compositing_manager ())
|
|
72
|
++ if (meta_prefs_get_compositing_manager () && meta_screen &&
|
|
73
|
++ !!(meta_display_get_compositor (meta_screen_get_display (meta_screen))))
|
|
74
|
+ {
|
|
75
|
+ frame_shadow = GTK_SHADOW_NONE;
|
|
76
|
+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (popup->window)),
|
|
77
|
+@@ -1117,13 +1120,15 @@
|
|
78
|
+ {
|
|
79
|
+ GtkStyleContext *context;
|
|
80
|
+ GdkRGBA color;
|
|
81
|
++ MetaScreen *screen = META_SELECT_WORKSPACE (widget)->workspace->screen;
|
|
82
|
+
|
|
83
|
+ context = gtk_widget_get_style_context (widget);
|
|
84
|
+
|
|
85
|
+ gtk_style_context_set_state (context,
|
|
86
|
+ gtk_widget_get_state_flags (widget));
|
|
87
|
+
|
|
88
|
+- if (meta_prefs_get_compositing_manager ())
|
|
89
|
++ if (meta_prefs_get_compositing_manager () && screen &&
|
|
90
|
++ !!(meta_display_get_compositor (meta_screen_get_display (screen))))
|
|
91
|
+ {
|
|
92
|
+ /* compositing manager creates a dark background: show the selection in a light color */
|
|
93
|
+ meta_gtk_style_get_light_color (context, GTK_STATE_FLAG_SELECTED, &color); |
debian/patches/series
1
|
1
|
0000_shadows.patch
|
2
|
2
|
1001_marco-Add-cmdline-option-no-keybindings-for-disablin.patch
|
|
3
|
+0001_check-availability-of-compositing-1.patch
|
|
4
|
+0002_check-availability-of-compositing-2.patch |
|