Merge ~3v1n0/ubuntu/+source/mutter:ubuntu/master into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/master

Proposed by Marco Trevisan (Treviño)
Status: Merged
Merged at revision: e1a4496c528d27a83abb54973e4035f7b69252d6
Proposed branch: ~3v1n0/ubuntu/+source/mutter:ubuntu/master
Merge into: ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/master
Diff against target: 6306 lines (+1538/-1078)
77 files modified
clutter/clutter/clutter-actor.c (+1/-1)
clutter/clutter/clutter-device-manager-private.h (+0/-4)
clutter/clutter/clutter-input-device.c (+0/-12)
clutter/clutter/clutter-input-device.h (+0/-4)
clutter/clutter/evdev/clutter-input-device-evdev.c (+8/-24)
clutter/clutter/meson.build (+5/-4)
clutter/clutter/x11/clutter-input-device-xi2.c (+0/-51)
clutter/meson.build (+2/-1)
cogl/cogl-gles2/meson.build (+2/-2)
cogl/cogl-pango/meson.build (+2/-2)
cogl/cogl-path/meson.build (+2/-1)
cogl/cogl/cogl-texture-2d-sliced.h (+3/-3)
cogl/cogl/cogl-texture-2d.h (+9/-3)
cogl/cogl/cogl-texture-driver.h (+0/-9)
cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c (+0/-14)
cogl/cogl/driver/gl/gles/cogl-driver-gles.c (+7/-1)
cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c (+0/-10)
cogl/cogl/meson.build (+6/-5)
cogl/meson.build (+2/-1)
debian/changelog (+40/-0)
debian/control (+3/-1)
debian/control.in (+3/-1)
debian/libmutter-4-0.symbols (+1/-2)
debian/patches/meson-add-back-default_driver-option.patch (+3/-3)
debian/patches/series (+0/-12)
debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch (+74/-77)
debian/rules (+1/-1)
dev/null (+0/-29)
meson.build (+1/-1)
po/ar.po (+538/-279)
po/es.po (+18/-18)
po/hr.po (+48/-41)
src/backends/meta-backend-private.h (+4/-0)
src/backends/meta-backend.c (+19/-1)
src/backends/meta-input-mapper.c (+46/-1)
src/backends/meta-input-settings.c (+3/-1)
src/backends/meta-monitor-config-manager.c (+4/-4)
src/backends/meta-monitor-manager-dummy.c (+5/-5)
src/backends/meta-monitor-manager-private.h (+7/-2)
src/backends/meta-monitor-manager.c (+51/-12)
src/backends/meta-monitor.c (+33/-35)
src/backends/meta-monitor.h (+26/-26)
src/backends/meta-stage-private.h (+2/-1)
src/backends/meta-stage.c (+23/-4)
src/backends/native/meta-crtc-kms.c (+0/-89)
src/backends/native/meta-crtc-kms.h (+0/-3)
src/backends/native/meta-gpu-kms.c (+3/-6)
src/backends/native/meta-monitor-manager-kms.c (+21/-5)
src/backends/native/meta-output-kms.c (+59/-3)
src/backends/native/meta-renderer-native.c (+145/-49)
src/backends/x11/meta-gpu-xrandr.c (+0/-32)
src/backends/x11/meta-monitor-manager-xrandr.c (+50/-5)
src/compositor/meta-background.c (+1/-1)
src/compositor/meta-shadow-factory.c (+1/-1)
src/core/bell.c (+3/-79)
src/core/bell.h (+0/-11)
src/core/boxes-private.h (+1/-1)
src/core/boxes.c (+2/-2)
src/core/constraints.c (+103/-27)
src/core/frame.c (+0/-6)
src/core/frame.h (+0/-1)
src/core/keybindings.c (+1/-2)
src/core/meta-launch-context.c (+2/-2)
src/core/prefs.c (+1/-1)
src/core/startup-notification.c (+1/-0)
src/core/window-private.h (+10/-1)
src/core/window.c (+32/-0)
src/meson.build (+2/-1)
src/meta/common.h (+3/-5)
src/meta/meson.build (+1/-1)
src/tests/meta-monitor-manager-test.c (+5/-5)
src/tests/unit-tests.c (+8/-8)
src/ui/theme.c (+0/-2)
src/wayland/meta-wayland-buffer.c (+8/-8)
src/wayland/meta-wayland-legacy-xdg-shell.c (+1/-1)
src/wayland/meta-wayland-text-input.c (+54/-6)
src/wayland/meta-wayland-xdg-shell.c (+18/-5)
Reviewer Review Type Date Requested Status
Daniel van Vugt (community) Needs Fixing
Ubuntu Desktop Pending
Review via email: mp+365833@code.launchpad.net

Description of the change

To post a comment you must log in.
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Looks like what I was expecting...

review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Listing things that this release does not change and calling them "changes" is a bit confusing. Maybe don't list such things...

+mutter (3.32.0+git20190410-1ubuntu1) disco; urgency=medium
+
+ * Merge with debian git snapshot (LP: #1820542), remaining changes:
+ + debian/control:
+ - Update VCS flags to point to launchpad
+ - Update maintainer to ubuntu
+ + debian/gbp.conf: update branch to point to ubuntu/master
+ + debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch:
+ - X11: Add support for fractional scaling using Randr

review: Needs Fixing

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index fd38338..803f76a 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -4007,12 +4007,12 @@ clutter_actor_paint (ClutterActor *self)
4007 pick_mode == CLUTTER_PICK_NONE))4007 pick_mode == CLUTTER_PICK_NONE))
4008 _clutter_actor_draw_paint_volume (self);4008 _clutter_actor_draw_paint_volume (self);
40094009
4010done:
4011 /* If we make it here then the actor has run through a complete4010 /* If we make it here then the actor has run through a complete
4012 paint run including all the effects so it's no longer dirty */4011 paint run including all the effects so it's no longer dirty */
4013 if (pick_mode == CLUTTER_PICK_NONE)4012 if (pick_mode == CLUTTER_PICK_NONE)
4014 priv->is_dirty = FALSE;4013 priv->is_dirty = FALSE;
40154014
4015done:
4016 if (clip_set)4016 if (clip_set)
4017 {4017 {
4018 CoglFramebuffer *fb = _clutter_stage_get_active_framebuffer (stage);4018 CoglFramebuffer *fb = _clutter_stage_get_active_framebuffer (stage);
diff --git a/clutter/clutter/clutter-device-manager-private.h b/clutter/clutter/clutter-device-manager-private.h
index 60cb99d..2364fd2 100644
--- a/clutter/clutter/clutter-device-manager-private.h
+++ b/clutter/clutter/clutter-device-manager-private.h
@@ -167,10 +167,6 @@ struct _ClutterInputDeviceClass
167 gboolean (* is_grouped) (ClutterInputDevice *device,167 gboolean (* is_grouped) (ClutterInputDevice *device,
168 ClutterInputDevice *other_device);168 ClutterInputDevice *other_device);
169169
170 gboolean (* get_physical_size) (ClutterInputDevice *device,
171 gdouble *width,
172 gdouble *height);
173
174 /* Keyboard accessbility */170 /* Keyboard accessbility */
175 void (* process_kbd_a11y_event) (ClutterEvent *event,171 void (* process_kbd_a11y_event) (ClutterEvent *event,
176 ClutterInputDevice *device,172 ClutterInputDevice *device,
diff --git a/clutter/clutter/clutter-input-device.c b/clutter/clutter/clutter-input-device.c
index 5de169c..0697e3a 100644
--- a/clutter/clutter/clutter-input-device.c
+++ b/clutter/clutter/clutter-input-device.c
@@ -2284,15 +2284,3 @@ clutter_input_device_is_grouped (ClutterInputDevice *device,
22842284
2285 return CLUTTER_INPUT_DEVICE_GET_CLASS (device)->is_grouped (device, other_device);2285 return CLUTTER_INPUT_DEVICE_GET_CLASS (device)->is_grouped (device, other_device);
2286}2286}
2287
2288gboolean
2289clutter_input_device_get_physical_size (ClutterInputDevice *device,
2290 gdouble *width,
2291 gdouble *height)
2292{
2293 g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE);
2294
2295 return CLUTTER_INPUT_DEVICE_GET_CLASS (device)->get_physical_size (device,
2296 width,
2297 height);
2298}
diff --git a/clutter/clutter/clutter-input-device.h b/clutter/clutter/clutter-input-device.h
index 8dd2a54..c121fe1 100644
--- a/clutter/clutter/clutter-input-device.h
+++ b/clutter/clutter/clutter-input-device.h
@@ -171,10 +171,6 @@ void clutter_input_device_set_mapping_mode (ClutterInputDev
171CLUTTER_EXPORT171CLUTTER_EXPORT
172gboolean clutter_input_device_is_grouped (ClutterInputDevice *device,172gboolean clutter_input_device_is_grouped (ClutterInputDevice *device,
173 ClutterInputDevice *other_device);173 ClutterInputDevice *other_device);
174CLUTTER_EXPORT
175gboolean clutter_input_device_get_physical_size (ClutterInputDevice *device,
176 gdouble *width,
177 gdouble *height);
178174
179G_END_DECLS175G_END_DECLS
180176
diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.c b/clutter/clutter/evdev/clutter-input-device-evdev.c
index 8caf095..b52689e 100644
--- a/clutter/clutter/evdev/clutter-input-device-evdev.c
+++ b/clutter/clutter/evdev/clutter-input-device-evdev.c
@@ -676,7 +676,7 @@ stop_toggle_slowkeys (ClutterInputDeviceEvdev *device)
676}676}
677677
678static void678static void
679handle_togglekeys_press (ClutterEvent *event,679handle_enablekeys_press (ClutterEvent *event,
680 ClutterInputDeviceEvdev *device)680 ClutterInputDeviceEvdev *device)
681{681{
682 if (event->key.keyval == XKB_KEY_Shift_L || event->key.keyval == XKB_KEY_Shift_R)682 if (event->key.keyval == XKB_KEY_Shift_L || event->key.keyval == XKB_KEY_Shift_R)
@@ -698,7 +698,7 @@ handle_togglekeys_press (ClutterEvent *event,
698}698}
699699
700static void700static void
701handle_togglekeys_release (ClutterEvent *event,701handle_enablekeys_release (ClutterEvent *event,
702 ClutterInputDeviceEvdev *device)702 ClutterInputDeviceEvdev *device)
703{703{
704 if (event->key.keyval == XKB_KEY_Shift_L || event->key.keyval == XKB_KEY_Shift_R)704 if (event->key.keyval == XKB_KEY_Shift_L || event->key.keyval == XKB_KEY_Shift_R)
@@ -1132,9 +1132,14 @@ clutter_input_device_evdev_process_kbd_a11y_event (ClutterEvent *e
1132 if (event->key.flags & CLUTTER_EVENT_FLAG_INPUT_METHOD)1132 if (event->key.flags & CLUTTER_EVENT_FLAG_INPUT_METHOD)
1133 goto emit_event;1133 goto emit_event;
11341134
1135 if (!device_evdev->a11y_flags & CLUTTER_A11Y_KEYBOARD_ENABLED)1135 if (!(device_evdev->a11y_flags & CLUTTER_A11Y_KEYBOARD_ENABLED))
1136 goto emit_event;1136 goto emit_event;
11371137
1138 if (event->type == CLUTTER_KEY_PRESS)
1139 handle_enablekeys_press (event, device_evdev);
1140 else
1141 handle_enablekeys_release (event, device_evdev);
1142
1138 if (device_evdev->a11y_flags & CLUTTER_A11Y_MOUSE_KEYS_ENABLED)1143 if (device_evdev->a11y_flags & CLUTTER_A11Y_MOUSE_KEYS_ENABLED)
1139 {1144 {
1140 if (event->type == CLUTTER_KEY_PRESS &&1145 if (event->type == CLUTTER_KEY_PRESS &&
@@ -1145,14 +1150,6 @@ clutter_input_device_evdev_process_kbd_a11y_event (ClutterEvent *e
1145 return; /* swallow event */1150 return; /* swallow event */
1146 }1151 }
11471152
1148 if (device_evdev->a11y_flags & CLUTTER_A11Y_TOGGLE_KEYS_ENABLED)
1149 {
1150 if (event->type == CLUTTER_KEY_PRESS)
1151 handle_togglekeys_press (event, device_evdev);
1152 else
1153 handle_togglekeys_release (event, device_evdev);
1154 }
1155
1156 if ((device_evdev->a11y_flags & CLUTTER_A11Y_BOUNCE_KEYS_ENABLED) &&1153 if ((device_evdev->a11y_flags & CLUTTER_A11Y_BOUNCE_KEYS_ENABLED) &&
1157 (get_debounce_delay (device) != 0))1154 (get_debounce_delay (device) != 0))
1158 {1155 {
@@ -1266,18 +1263,6 @@ clutter_input_device_evdev_release_touch_state (ClutterInputDeviceEvdev *device,
1266 GINT_TO_POINTER (touch_state->device_slot));1263 GINT_TO_POINTER (touch_state->device_slot));
1267}1264}
12681265
1269static gboolean
1270clutter_input_device_evdev_get_physical_size (ClutterInputDevice *device,
1271 gdouble *width,
1272 gdouble *height)
1273{
1274 struct libinput_device *libinput_device;
1275
1276 libinput_device = clutter_evdev_input_device_get_libinput_device (device);
1277
1278 return libinput_device_get_size (libinput_device, width, height) == 0;
1279}
1280
1281static void1266static void
1282clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)1267clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)
1283{1268{
@@ -1293,7 +1278,6 @@ clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)
1293 klass->get_group_n_modes = clutter_input_device_evdev_get_group_n_modes;1278 klass->get_group_n_modes = clutter_input_device_evdev_get_group_n_modes;
1294 klass->is_grouped = clutter_input_device_evdev_is_grouped;1279 klass->is_grouped = clutter_input_device_evdev_is_grouped;
1295 klass->process_kbd_a11y_event = clutter_input_device_evdev_process_kbd_a11y_event;1280 klass->process_kbd_a11y_event = clutter_input_device_evdev_process_kbd_a11y_event;
1296 klass->get_physical_size = clutter_input_device_evdev_get_physical_size;
12971281
1298 obj_props[PROP_DEVICE_MATRIX] =1282 obj_props[PROP_DEVICE_MATRIX] =
1299 g_param_spec_boxed ("device-matrix",1283 g_param_spec_boxed ("device-matrix",
diff --git a/clutter/clutter/meson.build b/clutter/clutter/meson.build
index 879ea16..671d790 100644
--- a/clutter/clutter/meson.build
+++ b/clutter/clutter/meson.build
@@ -1,3 +1,4 @@
1clutter_clutter_includesubdir = join_paths(clutter_includesubdir, 'clutter')
1clutter_clutter_includedir = join_paths(clutter_includedir, 'clutter')2clutter_clutter_includedir = join_paths(clutter_includedir, 'clutter')
23
3clutter_headers = [4clutter_headers = [
@@ -577,16 +578,16 @@ if have_introspection
577endif578endif
578579
579install_headers(clutter_headers,580install_headers(clutter_headers,
580 subdir: clutter_clutter_includedir)581 subdir: clutter_clutter_includesubdir)
581582
582install_headers(cally_headers,583install_headers(cally_headers,
583 subdir: join_paths(clutter_includedir, 'cally'))584 subdir: join_paths(clutter_includesubdir, 'cally'))
584585
585install_headers(clutter_deprecated_headers,586install_headers(clutter_deprecated_headers,
586 subdir: join_paths(clutter_clutter_includedir, 'deprecated'))587 subdir: join_paths(clutter_clutter_includesubdir, 'deprecated'))
587588
588install_headers(clutter_x11_headers,589install_headers(clutter_x11_headers,
589 subdir: join_paths(clutter_clutter_includedir, 'x11'))590 subdir: join_paths(clutter_clutter_includesubdir, 'x11'))
590591
591pkg.generate(libmutter_clutter,592pkg.generate(libmutter_clutter,
592 name: 'Mutters Clutter',593 name: 'Mutters Clutter',
diff --git a/clutter/clutter/x11/clutter-input-device-xi2.c b/clutter/clutter/x11/clutter-input-device-xi2.c
index 92d3637..1254aca 100644
--- a/clutter/clutter/x11/clutter-input-device-xi2.c
+++ b/clutter/clutter/x11/clutter-input-device-xi2.c
@@ -180,56 +180,6 @@ clutter_input_device_xi2_is_mode_switch_button (ClutterInputDevice *device,
180 return button_group == (int) group;180 return button_group == (int) group;
181}181}
182182
183static gboolean
184clutter_input_device_xi2_get_physical_size (ClutterInputDevice *device,
185 gdouble *width,
186 gdouble *height)
187{
188 Display *xdisplay;
189 XIDeviceInfo *dev_info;
190 gdouble w = 0, h = 0;
191 int i, n_info, device_id;
192
193 xdisplay = clutter_x11_get_default_display ();
194 device_id = clutter_input_device_get_device_id (device);
195
196 clutter_x11_trap_x_errors ();
197 dev_info = XIQueryDevice (xdisplay, device_id, &n_info);
198 if (clutter_x11_untrap_x_errors ())
199 return FALSE;
200
201 if (!dev_info)
202 return FALSE;
203
204 for (i = 0; i < dev_info->num_classes; i++)
205 {
206 XIValuatorClassInfo *valuator;
207 gdouble *value;
208
209 if (dev_info->classes[i]->type != XIValuatorClass)
210 continue;
211
212 valuator = (XIValuatorClassInfo *) dev_info->classes[i];
213
214 if (valuator->label == XInternAtom (xdisplay, "Abs X", True) ||
215 valuator->label == XInternAtom (xdisplay, "Abs MT Position X", True))
216 value = &w;
217 else if (valuator->label == XInternAtom (xdisplay, "Abs Y", True) ||
218 valuator->label == XInternAtom (xdisplay, "Abs MT Position Y", True))
219 value = &h;
220 else
221 continue;
222
223 *value = (valuator->max - valuator->min) * 1000 / valuator->resolution;
224 }
225
226 XIFreeDeviceInfo (dev_info);
227 *width = w;
228 *height = h;
229
230 return (w > 0 && h > 0);
231}
232
233static void183static void
234clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)184clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
235{185{
@@ -243,7 +193,6 @@ clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
243 device_class->is_grouped = clutter_input_device_xi2_is_grouped;193 device_class->is_grouped = clutter_input_device_xi2_is_grouped;
244 device_class->get_group_n_modes = clutter_input_device_xi2_get_group_n_modes;194 device_class->get_group_n_modes = clutter_input_device_xi2_get_group_n_modes;
245 device_class->is_mode_switch_button = clutter_input_device_xi2_is_mode_switch_button;195 device_class->is_mode_switch_button = clutter_input_device_xi2_is_mode_switch_button;
246 device_class->get_physical_size = clutter_input_device_xi2_get_physical_size;
247}196}
248197
249static void198static void
diff --git a/clutter/meson.build b/clutter/meson.build
index 053cfa7..1397be1 100644
--- a/clutter/meson.build
+++ b/clutter/meson.build
@@ -1,4 +1,5 @@
1clutter_includedir = join_paths(pkgincludedir, 'clutter')1clutter_includesubdir = join_paths(pkgname, 'clutter')
2clutter_includedir = join_paths(includedir, clutter_includesubdir)
2clutter_srcdir = join_paths(top_srcdir, 'clutter')3clutter_srcdir = join_paths(top_srcdir, 'clutter')
3clutter_builddir = join_paths(builddir, 'clutter')4clutter_builddir = join_paths(builddir, 'clutter')
45
diff --git a/cogl/cogl-gles2/meson.build b/cogl/cogl-gles2/meson.build
index d446ca4..fbe3eb1 100644
--- a/cogl/cogl-gles2/meson.build
+++ b/cogl/cogl-gles2/meson.build
@@ -27,9 +27,9 @@ libmutter_cogl_gles2 = shared_library('mutter-cogl-gles2-' + libmutter_api_versi
27 install: true,27 install: true,
28)28)
2929
30cogl_gles2_includedir = join_paths(cogl_includedir, 'cogl-gles2/GLES2')30cogl_gles2_includesubdir = join_paths(cogl_includesubdir, 'cogl-gles2/GLES2')
31install_headers(cogl_gles2_public_headers,31install_headers(cogl_gles2_public_headers,
32 subdir: cogl_gles2_includedir)32 subdir: cogl_gles2_includesubdir)
3333
34pkg.generate(libmutter_cogl_gles2,34pkg.generate(libmutter_cogl_gles2,
35 name: 'CoglGles2',35 name: 'CoglGles2',
diff --git a/cogl/cogl-pango/meson.build b/cogl/cogl-pango/meson.build
index fb4d261..787ec01 100644
--- a/cogl/cogl-pango/meson.build
+++ b/cogl/cogl-pango/meson.build
@@ -70,8 +70,8 @@ if have_introspection
70 )70 )
71endif71endif
7272
73cogl_pango_includedir = join_paths(cogl_includedir, 'cogl-pango')73cogl_pango_includesubdir = join_paths(cogl_includesubdir, 'cogl-pango')
74install_headers(cogl_pango_public_headers, subdir: cogl_pango_includedir)74install_headers(cogl_pango_public_headers, subdir: cogl_pango_includesubdir)
7575
76pkg.generate(libmutter_cogl_pango,76pkg.generate(libmutter_cogl_pango,
77 name: 'CoglPango',77 name: 'CoglPango',
diff --git a/cogl/cogl-path/meson.build b/cogl/cogl-path/meson.build
index 6faba67..e086a62 100644
--- a/cogl/cogl-path/meson.build
+++ b/cogl/cogl-path/meson.build
@@ -1,3 +1,4 @@
1cogl_path_includesubdir = join_paths(cogl_includesubdir, 'cogl-path')
1cogl_path_includedir = join_paths(cogl_includedir, 'cogl-path')2cogl_path_includedir = join_paths(cogl_includedir, 'cogl-path')
23
3cogl_path_public_headers = [4cogl_path_public_headers = [
@@ -76,7 +77,7 @@ libmutter_cogl_path_dep = declare_dependency(
76)77)
7778
78install_headers(cogl_path_public_headers,79install_headers(cogl_path_public_headers,
79 subdir: cogl_path_includedir)80 subdir: cogl_path_includesubdir)
8081
81pkg.generate(libmutter_cogl_path,82pkg.generate(libmutter_cogl_path,
82 name: 'CoglPath',83 name: 'CoglPath',
diff --git a/cogl/cogl/cogl-texture-2d-sliced.h b/cogl/cogl/cogl-texture-2d-sliced.h
index 8d43fc5..12ce710 100644
--- a/cogl/cogl/cogl-texture-2d-sliced.h
+++ b/cogl/cogl/cogl-texture-2d-sliced.h
@@ -78,7 +78,7 @@ typedef struct _CoglTexture2DSliced CoglTexture2DSliced;
78GType cogl_texture_2d_sliced_get_gtype (void);78GType cogl_texture_2d_sliced_get_gtype (void);
7979
80/**80/**
81 * cogl_texture_2d_sliced_new_with_size:81 * cogl_texture_2d_sliced_new_with_size: (skip)
82 * @ctx: A #CoglContext82 * @ctx: A #CoglContext
83 * @width: The virtual width of your sliced texture.83 * @width: The virtual width of your sliced texture.
84 * @height: The virtual height of your sliced texture.84 * @height: The virtual height of your sliced texture.
@@ -125,7 +125,7 @@ cogl_texture_2d_sliced_new_with_size (CoglContext *ctx,
125 int max_waste);125 int max_waste);
126126
127/**127/**
128 * cogl_texture_2d_sliced_new_from_file:128 * cogl_texture_2d_sliced_new_from_file: (skip)
129 * @ctx: A #CoglContext129 * @ctx: A #CoglContext
130 * @filename: the file to load130 * @filename: the file to load
131 * @max_waste: The threshold of how wide a strip of wasted texels131 * @max_waste: The threshold of how wide a strip of wasted texels
@@ -173,7 +173,7 @@ cogl_texture_2d_sliced_new_from_file (CoglContext *ctx,
173 CoglError **error);173 CoglError **error);
174174
175/**175/**
176 * cogl_texture_2d_sliced_new_from_data:176 * cogl_texture_2d_sliced_new_from_data: (skip)
177 * @ctx: A #CoglContext177 * @ctx: A #CoglContext
178 * @width: width of texture in pixels178 * @width: width of texture in pixels
179 * @height: height of texture in pixels179 * @height: height of texture in pixels
diff --git a/cogl/cogl/cogl-texture-2d.h b/cogl/cogl/cogl-texture-2d.h
index 85cadba..29b8b2d 100644
--- a/cogl/cogl/cogl-texture-2d.h
+++ b/cogl/cogl/cogl-texture-2d.h
@@ -86,7 +86,7 @@ gboolean
86cogl_is_texture_2d (void *object);86cogl_is_texture_2d (void *object);
8787
88/**88/**
89 * cogl_texture_2d_new_with_size:89 * cogl_texture_2d_new_with_size: (skip)
90 * @ctx: A #CoglContext90 * @ctx: A #CoglContext
91 * @width: Width of the texture to allocate91 * @width: Width of the texture to allocate
92 * @height: Height of the texture to allocate92 * @height: Height of the texture to allocate
@@ -120,7 +120,7 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
120 int height);120 int height);
121121
122/**122/**
123 * cogl_texture_2d_new_from_file:123 * cogl_texture_2d_new_from_file: (skip)
124 * @ctx: A #CoglContext124 * @ctx: A #CoglContext
125 * @filename: the file to load125 * @filename: the file to load
126 * @error: A #CoglError to catch exceptional errors or %NULL126 * @error: A #CoglError to catch exceptional errors or %NULL
@@ -154,7 +154,7 @@ cogl_texture_2d_new_from_file (CoglContext *ctx,
154 CoglError **error);154 CoglError **error);
155155
156/**156/**
157 * cogl_texture_2d_new_from_data:157 * cogl_texture_2d_new_from_data: (skip)
158 * @ctx: A #CoglContext158 * @ctx: A #CoglContext
159 * @width: width of texture in pixels159 * @width: width of texture in pixels
160 * @height: height of texture in pixels160 * @height: height of texture in pixels
@@ -231,6 +231,9 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
231CoglTexture2D *231CoglTexture2D *
232cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap);232cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap);
233233
234/**
235 * cogl_egl_texture_2d_new_from_image: (skip)
236 */
234#if defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base)237#if defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base)
235/* NB: The reason we require the width, height and format to be passed238/* NB: The reason we require the width, height and format to be passed
236 * even though they may seem redundant is because GLES 1/2 don't239 * even though they may seem redundant is because GLES 1/2 don't
@@ -247,6 +250,9 @@ typedef gboolean (*CoglTexture2DEGLImageExternalAlloc) (CoglTexture2D *tex_2d,
247 gpointer user_data,250 gpointer user_data,
248 GError **error);251 GError **error);
249252
253/**
254 * cogl_texture_2d_new_from_egl_image_external: (skip)
255 */
250CoglTexture2D *256CoglTexture2D *
251cogl_texture_2d_new_from_egl_image_external (CoglContext *ctx,257cogl_texture_2d_new_from_egl_image_external (CoglContext *ctx,
252 int width,258 int width,
diff --git a/cogl/cogl/cogl-texture-driver.h b/cogl/cogl/cogl-texture-driver.h
index f77c548..a6e7d4f 100644
--- a/cogl/cogl/cogl-texture-driver.h
+++ b/cogl/cogl/cogl-texture-driver.h
@@ -172,15 +172,6 @@ struct _CoglTextureDriver
172 int depth);172 int depth);
173173
174 /*174 /*
175 * This driver abstraction is needed because GLES doesn't support setting
176 * a texture border color.
177 */
178 void
179 (* try_setting_gl_border_color) (CoglContext *ctx,
180 GLuint gl_target,
181 const GLfloat *transparent_color);
182
183 /*
184 * It may depend on the driver as to what texture targets may be used when175 * It may depend on the driver as to what texture targets may be used when
185 * creating a foreign texture. E.g. OpenGL supports ARB_texture_rectangle176 * creating a foreign texture. E.g. OpenGL supports ARB_texture_rectangle
186 * but GLES doesn't177 * but GLES doesn't
diff --git a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
index fbb55de..35b87f7 100644
--- a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
+++ b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
@@ -485,19 +485,6 @@ _cogl_texture_driver_size_supported (CoglContext *ctx,
485 return new_width != 0;485 return new_width != 0;
486}486}
487487
488static void
489_cogl_texture_driver_try_setting_gl_border_color
490 (CoglContext *ctx,
491 GLuint gl_target,
492 const GLfloat *transparent_color)
493{
494 /* Use a transparent border color so that we can leave the
495 color buffer alone when using texture co-ordinates
496 outside of the texture */
497 GE( ctx, glTexParameterfv (gl_target, GL_TEXTURE_BORDER_COLOR,
498 transparent_color) );
499}
500
501static gboolean488static gboolean
502_cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,489_cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,
503 GLenum gl_target)490 GLenum gl_target)
@@ -541,7 +528,6 @@ _cogl_texture_driver_gl =
541 _cogl_texture_driver_gl_get_tex_image,528 _cogl_texture_driver_gl_get_tex_image,
542 _cogl_texture_driver_size_supported,529 _cogl_texture_driver_size_supported,
543 _cogl_texture_driver_size_supported_3d,530 _cogl_texture_driver_size_supported_3d,
544 _cogl_texture_driver_try_setting_gl_border_color,
545 _cogl_texture_driver_allows_foreign_gl_target,531 _cogl_texture_driver_allows_foreign_gl_target,
546 _cogl_texture_driver_find_best_gl_get_data_format532 _cogl_texture_driver_find_best_gl_get_data_format
547 };533 };
diff --git a/cogl/cogl/driver/gl/gles/cogl-driver-gles.c b/cogl/cogl/driver/gl/gles/cogl-driver-gles.c
index 6f2cf6e..23158d5 100644
--- a/cogl/cogl/driver/gl/gles/cogl-driver-gles.c
+++ b/cogl/cogl/driver/gl/gles/cogl-driver-gles.c
@@ -429,6 +429,12 @@ _cogl_driver_update_features (CoglContext *context,
429 return TRUE;429 return TRUE;
430}430}
431431
432static gboolean
433_cogl_driver_texture_2d_is_get_data_supported (CoglTexture2D *tex_2d)
434{
435 return FALSE;
436}
437
432const CoglDriverVtable438const CoglDriverVtable
433_cogl_driver_gles =439_cogl_driver_gles =
434 {440 {
@@ -453,7 +459,7 @@ _cogl_driver_gles =
453 _cogl_texture_2d_gl_get_gl_handle,459 _cogl_texture_2d_gl_get_gl_handle,
454 _cogl_texture_2d_gl_generate_mipmap,460 _cogl_texture_2d_gl_generate_mipmap,
455 _cogl_texture_2d_gl_copy_from_bitmap,461 _cogl_texture_2d_gl_copy_from_bitmap,
456 NULL, /* texture_2d_is_get_data_supported */462 _cogl_driver_texture_2d_is_get_data_supported,
457 NULL, /* texture_2d_get_data */463 NULL, /* texture_2d_get_data */
458 _cogl_gl_flush_attributes_state,464 _cogl_gl_flush_attributes_state,
459 _cogl_clip_stack_gl_flush,465 _cogl_clip_stack_gl_flush,
diff --git a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
index 17f529e..f773f93 100644
--- a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
+++ b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
@@ -590,15 +590,6 @@ _cogl_texture_driver_size_supported (CoglContext *ctx,
590 return width <= max_size && height <= max_size;590 return width <= max_size && height <= max_size;
591}591}
592592
593static void
594_cogl_texture_driver_try_setting_gl_border_color
595 (CoglContext *ctx,
596 GLuint gl_target,
597 const GLfloat *transparent_color)
598{
599 /* FAIL! */
600}
601
602static gboolean593static gboolean
603_cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,594_cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,
604 GLenum gl_target)595 GLenum gl_target)
@@ -636,7 +627,6 @@ _cogl_texture_driver_gles =
636 _cogl_texture_driver_gl_get_tex_image,627 _cogl_texture_driver_gl_get_tex_image,
637 _cogl_texture_driver_size_supported,628 _cogl_texture_driver_size_supported,
638 _cogl_texture_driver_size_supported_3d,629 _cogl_texture_driver_size_supported_3d,
639 _cogl_texture_driver_try_setting_gl_border_color,
640 _cogl_texture_driver_allows_foreign_gl_target,630 _cogl_texture_driver_allows_foreign_gl_target,
641 _cogl_texture_driver_find_best_gl_get_data_format631 _cogl_texture_driver_find_best_gl_get_data_format
642 };632 };
diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build
index 5d80e87..cb94042 100644
--- a/cogl/cogl/meson.build
+++ b/cogl/cogl/meson.build
@@ -1,3 +1,4 @@
1cogl_cogl_includesubdir = join_paths(cogl_includesubdir, 'cogl')
1cogl_cogl_includedir = join_paths(cogl_includedir, 'cogl')2cogl_cogl_includedir = join_paths(cogl_includedir, 'cogl')
23
3cdata = configuration_data()4cdata = configuration_data()
@@ -89,6 +90,8 @@ cogl_headers = [
89 'cogl-pipeline-layer-state.h',90 'cogl-pipeline-layer-state.h',
90 'cogl-primitives.h',91 'cogl-primitives.h',
91 'cogl-texture.h',92 'cogl-texture.h',
93 'cogl-texture-2d.h',
94 'cogl-texture-2d-sliced.h',
92 'cogl-types.h',95 'cogl-types.h',
93 'cogl.h',96 'cogl.h',
94]97]
@@ -117,10 +120,8 @@ cogl_nonintrospected_headers = [
117 'cogl-matrix-stack.h',120 'cogl-matrix-stack.h',
118 'cogl-poll.h',121 'cogl-poll.h',
119 'cogl-texture-3d.h',122 'cogl-texture-3d.h',
120 'cogl-texture-2d.h',
121 'cogl-texture-2d-gl.h',123 'cogl-texture-2d-gl.h',
122 'cogl-texture-rectangle.h',124 'cogl-texture-rectangle.h',
123 'cogl-texture-2d-sliced.h',
124 'cogl-sub-texture.h',125 'cogl-sub-texture.h',
125 'cogl-atlas-texture.h',126 'cogl-atlas-texture.h',
126 'cogl-meta-texture.h',127 'cogl-meta-texture.h',
@@ -514,16 +515,16 @@ install_headers([
514 cogl_headers,515 cogl_headers,
515 cogl_nonintrospected_headers,516 cogl_nonintrospected_headers,
516 ],517 ],
517 subdir: cogl_cogl_includedir)518 subdir: cogl_cogl_includesubdir)
518519
519install_headers([520install_headers([
520 cogl_deprecated_headers,521 cogl_deprecated_headers,
521 cogl_deprecated_nonintrospected_headers,522 cogl_deprecated_nonintrospected_headers,
522 ],523 ],
523 subdir: join_paths(cogl_cogl_includedir, 'deprecated'))524 subdir: join_paths(cogl_cogl_includesubdir, 'deprecated'))
524525
525install_headers(cogl_gl_prototype_headers,526install_headers(cogl_gl_prototype_headers,
526 subdir: join_paths(cogl_cogl_includedir, 'gl-prototypes'))527 subdir: join_paths(cogl_cogl_includesubdir, 'gl-prototypes'))
527528
528pkg.generate(libmutter_cogl,529pkg.generate(libmutter_cogl,
529 name: 'Cogl',530 name: 'Cogl',
diff --git a/cogl/meson.build b/cogl/meson.build
index d76b865..356d596 100644
--- a/cogl/meson.build
+++ b/cogl/meson.build
@@ -1,4 +1,5 @@
1cogl_includedir = join_paths(pkgincludedir, 'cogl')1cogl_includesubdir = join_paths(pkgname, 'cogl')
2cogl_includedir = join_paths(includedir, cogl_includesubdir)
2cogl_srcdir = join_paths(top_srcdir, 'cogl')3cogl_srcdir = join_paths(top_srcdir, 'cogl')
3cogl_builddir = join_paths(builddir, 'cogl')4cogl_builddir = join_paths(builddir, 'cogl')
45
diff --git a/debian/changelog b/debian/changelog
index 5825020..7471ed8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,43 @@
1mutter (3.32.0+git20190410-1ubuntu1) disco; urgency=medium
2
3 * Merge with debian git snapshot (LP: #1820542), remaining changes:
4 + debian/control:
5 - Update VCS flags to point to launchpad
6 - Update maintainer to ubuntu
7 + debian/gbp.conf: update branch to point to ubuntu/master
8 + debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch:
9 - X11: Add support for fractional scaling using Randr
10 * d/p/x11-Add-support-for-fractional-scaling-using-Randr.patch:
11 - Refreshed.
12
13 -- Marco Trevisan (Treviño) <marco@ubuntu.com> Wed, 10 Apr 2019 20:12:29 -0500
14
15mutter (3.32.0+git20190410-1) experimental; urgency=medium
16
17 * New upstream snapshot up to commit
18 b2d0184c6efa164ad5dd7a2ca8b10cf13acf5b4c. Fixes Launchpad bugs:
19 + GNOME Shell task bar menus not updated with external monitor primary and
20 laptop screen fractionally scaled (LP: #1803319)
21 + (In Xorg sessions only) apps launched from gnome shell do not get input
22 focus (LP: #1817924)
23 + Touch input is offset with two screens (even appearing on the wrong
24 screen) in Xorg sessions (LP: #1821933)
25 + gnome-shell crashed with SIGABRT. Assertion failure in
26 meta_gpu_kms_flip_crtc: "monitor_manager->power_save_mode ==
27 META_POWER_SAVE_ON" (LP: #1820331)
28 * debian/patches/various: Drop upstream cherry-picks. We had cherry-picked
29 the stable branch into Debian patches in the previous upload, but that
30 would get out of hand if we carried on. Instead we are using a tarball
31 snapshot. So drop the cherry-picks.
32 * Update symbols. A typo was fixed in a public symbol. This is an ABI break,
33 but upstream didn't consider this worthy of a SONAME change. A codesearch
34 / github / web search doesn't reveal any external users either, so we will
35 eat this to avoid another transition.
36 * Use debhelper-compat 12 and BD on dh-sequence-{gnome,gir}. We were missing
37 a direct BD on the providers. Thanks, Lintian.
38
39 -- Iain Lane <laney@debian.org> Wed, 10 Apr 2019 16:36:23 +0100
40
1mutter (3.32.0-1ubuntu2) disco; urgency=medium41mutter (3.32.0-1ubuntu2) disco; urgency=medium
242
3 * debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch:43 * debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch:
diff --git a/debian/compat b/debian/compat
4deleted file mode 10064444deleted file mode 100644
index b4de394..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
111
diff --git a/debian/control b/debian/control
index 02668fc..ebbb4d0 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,9 @@ Priority: optional
8Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>8Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
9XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>9XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
10Uploaders: Iain Lane <laney@debian.org>, Jeremy Bicha <jbicha@debian.org>10Uploaders: Iain Lane <laney@debian.org>, Jeremy Bicha <jbicha@debian.org>
11Build-Depends: debhelper (>= 11),11Build-Depends: debhelper-compat (= 12),
12 dh-sequence-gir,
13 dh-sequence-gnome,
12 at-spi2-core <!nocheck>,14 at-spi2-core <!nocheck>,
13 dbus <!nocheck>,15 dbus <!nocheck>,
14 dmz-cursor-theme <!nocheck>,16 dmz-cursor-theme <!nocheck>,
diff --git a/debian/control.in b/debian/control.in
index 3c5bd2f..b8cb5fa 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -4,7 +4,9 @@ Priority: optional
4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>5XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
6Uploaders: @GNOME_TEAM@6Uploaders: @GNOME_TEAM@
7Build-Depends: debhelper (>= 11),7Build-Depends: debhelper-compat (= 12),
8 dh-sequence-gir,
9 dh-sequence-gnome,
8 at-spi2-core <!nocheck>,10 at-spi2-core <!nocheck>,
9 dbus <!nocheck>,11 dbus <!nocheck>,
10 dmz-cursor-theme <!nocheck>,12 dmz-cursor-theme <!nocheck>,
diff --git a/debian/libmutter-4-0.symbols b/debian/libmutter-4-0.symbols
index 5d8f044..c0f1939 100644
--- a/debian/libmutter-4-0.symbols
+++ b/debian/libmutter-4-0.symbols
@@ -419,7 +419,7 @@ libmutter-4.so.0 libmutter-4-0 #MINVER#
419 meta_rectangle_get_type@Base 3.28.2419 meta_rectangle_get_type@Base 3.28.2
420 meta_rectangle_horiz_overlap@Base 3.28.2420 meta_rectangle_horiz_overlap@Base 3.28.2
421 meta_rectangle_intersect@Base 3.28.2421 meta_rectangle_intersect@Base 3.28.2
422 meta_rectangle_is_adjecent_to@Base 3.28.2422 meta_rectangle_is_adjacent_to@Base 3.32.0+git20190410
423 meta_rectangle_overlap@Base 3.28.2423 meta_rectangle_overlap@Base 3.28.2
424 meta_rectangle_overlaps_with_region@Base 3.28.2424 meta_rectangle_overlaps_with_region@Base 3.28.2
425 meta_rectangle_resize_with_gravity@Base 3.28.2425 meta_rectangle_resize_with_gravity@Base 3.28.2
@@ -1513,7 +1513,6 @@ libmutter-clutter-4.so.0 libmutter-4-0 #MINVER#
1513 clutter_input_device_get_n_mode_groups@Base 3.29.41513 clutter_input_device_get_n_mode_groups@Base 3.29.4
1514 clutter_input_device_get_n_rings@Base 3.29.41514 clutter_input_device_get_n_rings@Base 3.29.4
1515 clutter_input_device_get_n_strips@Base 3.29.41515 clutter_input_device_get_n_strips@Base 3.29.4
1516 clutter_input_device_get_physical_size@Base 3.31.90
1517 clutter_input_device_get_pointer_actor@Base 3.29.41516 clutter_input_device_get_pointer_actor@Base 3.29.4
1518 clutter_input_device_get_pointer_stage@Base 3.29.41517 clutter_input_device_get_pointer_stage@Base 3.29.4
1519 clutter_input_device_get_product_id@Base 3.29.41518 clutter_input_device_get_product_id@Base 3.29.4
diff --git a/debian/patches/bell-Always-flash-window-instead-of-frame.patch b/debian/patches/bell-Always-flash-window-instead-of-frame.patch
1520deleted file mode 1006441519deleted file mode 100644
index 91614ab..0000000
--- a/debian/patches/bell-Always-flash-window-instead-of-frame.patch
+++ /dev/null
@@ -1,111 +0,0 @@
1From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
2Date: Wed, 6 Mar 2019 23:51:41 +0100
3Subject: bell: Always flash window instead of frame
4
5Traditionally visual alerts were implemented by flashing the focus
6window's frame. As that only works for windows that we decorate,
7flashing the whole window was added as a fallback for client-decorated
8windows.
9
10However that introduces some confusing inconsistency, better to just
11always flash the entire window.
12
13https://gitlab.gnome.org/GNOME/mutter/issues/491
14
15Origin: upstream, commit:8d62da2dc4c710246425ea89c09f41e7713371f
16Applied-Upstream: 3.32.1
17---
18 src/core/bell.c | 66 +++------------------------------------------------------
19 1 file changed, 3 insertions(+), 63 deletions(-)
20
21diff --git a/src/core/bell.c b/src/core/bell.c
22index cd96275..aa334d6 100644
23--- a/src/core/bell.c
24+++ b/src/core/bell.c
25@@ -34,10 +34,8 @@
26 * function then checks what kind of visual flash you like, and calls either
27 * bell_flash_fullscreen()-- which calls bell_flash_screen() to do
28 * its work-- or bell_flash_frame(), which flashes the focussed window
29- * using bell_flash_window_frame(), unless there is no such window, in
30- * which case it flashes the screen instead. bell_flash_window_frame()
31- * flashes the frame and calls bell_unflash_frame() as a timeout to
32- * remove the flash.
33+ * using bell_flash_window(), unless there is no such window, in
34+ * which case it flashes the screen instead.
35 *
36 * The visual bell was the result of a discussion in Bugzilla here:
37 * <http://bugzilla.gnome.org/show_bug.cgi?id=99886>.
38@@ -135,62 +133,6 @@ bell_flash_fullscreen (MetaDisplay *display)
39 meta_compositor_flash_display (display->compositor, display);
40 }
41
42-/**
43- * bell_unflash_frame:
44- * @data: The frame to unflash, cast to a gpointer so it can go into
45- * a callback function.
46- *
47- * Makes a frame be not flashed; this is the timeout half of
48- * bell_flash_window_frame(). This is done simply by clearing the
49- * flash flag and queuing a redraw of the frame.
50- *
51- * If the configure script found we had no XKB, this does not exist.
52- *
53- * Returns: Always FALSE, so we don't get called again.
54- */
55-
56-/*
57- * Bug: This is the parallel to bell_flash_window_frame(), so it should
58- * really be called meta_bell_unflash_window_frame().
59- */
60-static gboolean
61-bell_unflash_frame (gpointer data)
62-{
63- MetaFrame *frame = (MetaFrame *) data;
64- frame->is_flashing = 0;
65- meta_frame_queue_draw (frame);
66- return FALSE;
67-}
68-
69-/**
70- * bell_flash_window_frame:
71- * @window: The window to flash
72- *
73- * Makes a frame flash and then return to normal shortly afterwards.
74- * This is done by setting a flag so that the theme
75- * code will temporarily draw the frame as focussed if it's unfocussed and
76- * vice versa, and then queueing a redraw. Lastly, we create a timeout so
77- * that the flag can be unset and the frame re-redrawn.
78- *
79- * If the configure script found we had no XKB, this does not exist.
80- */
81-static void
82-bell_flash_window_frame (MetaWindow *window)
83-{
84- guint id;
85- g_assert (window->frame != NULL);
86- window->frame->is_flashing = 1;
87- meta_frame_queue_draw (window->frame);
88- /* Since this idle is added after the Clutter clock source, with
89- * the same priority, it will be executed after it as well, so
90- * we are guaranteed to get at least one frame drawn in the
91- * flashed state, no matter how loaded we are.
92- */
93- id = g_timeout_add_full (META_PRIORITY_REDRAW, 100,
94- bell_unflash_frame, window->frame, NULL);
95- g_source_set_name_by_id (id, "[mutter] bell_unflash_frame");
96-}
97-
98 static void
99 bell_flash_window (MetaWindow *window)
100 {
101@@ -209,9 +151,7 @@ static void
102 bell_flash_frame (MetaDisplay *display,
103 MetaWindow *window)
104 {
105- if (window && window->frame)
106- bell_flash_window_frame (window);
107- else if (window)
108+ if (window)
109 bell_flash_window (window);
110 else
111 bell_flash_fullscreen (display);
diff --git a/debian/patches/boxes-Actually-check-for-rectangle-containment.patch b/debian/patches/boxes-Actually-check-for-rectangle-containment.patch
112deleted file mode 1006440deleted file mode 100644
index b3af31e..0000000
--- a/debian/patches/boxes-Actually-check-for-rectangle-containment.patch
+++ /dev/null
@@ -1,38 +0,0 @@
1From: Pablo Barciela <scow@riseup.net>
2Date: Sun, 3 Mar 2019 16:05:55 +0100
3Subject: boxes: Actually check for rectangle containment
4
5Fixes condition duplicated:
6
7 /* If a contains b, just remove b */
8 if (meta_rectangle_contains_rect (a, b))
9 {
10 delete_me = other;
11 }
12 /* If b contains a, just remove a */
13 else if (meta_rectangle_contains_rect (a, b))
14 {
15 delete_me = compare;
16 }
17
18Closes https://gitlab.gnome.org/GNOME/mutter/issues/480
19
20Origin: upstream, commit:18164779c07c12c5acfcddde7834980c7521aac
21Applied-Upstream: 3.32.1
22---
23 src/core/boxes.c | 2 +-
24 1 file changed, 1 insertion(+), 1 deletion(-)
25
26diff --git a/src/core/boxes.c b/src/core/boxes.c
27index 4ab07d2..87f2d5d 100644
28--- a/src/core/boxes.c
29+++ b/src/core/boxes.c
30@@ -468,7 +468,7 @@ merge_spanning_rects_in_region (GList *region)
31 delete_me = other;
32 }
33 /* If b contains a, just remove a */
34- else if (meta_rectangle_contains_rect (a, b))
35+ else if (meta_rectangle_contains_rect (b, a))
36 {
37 delete_me = compare;
38 }
diff --git a/debian/patches/cogl-Introspect-CoglTexture2D-Sliced.patch b/debian/patches/cogl-Introspect-CoglTexture2D-Sliced.patch
39deleted file mode 1006440deleted file mode 100644
index 55a9e05..0000000
--- a/debian/patches/cogl-Introspect-CoglTexture2D-Sliced.patch
+++ /dev/null
@@ -1,124 +0,0 @@
1From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
2Date: Wed, 6 Mar 2019 18:50:33 +0100
3Subject: cogl: Introspect CoglTexture2D(Sliced)
4
5gnome-shell cannot use CoglTexture if gjs can't tell that an object
6in question implements the CoglTexture interface.
7
8https://gitlab.gnome.org/GNOME/gnome-shell/issues/1020
9https://gitlab.gnome.org/GNOME/mutter/merge_requests/482
10
11Origin: upstream, commit:aca31c81494435a6c3f2266b664bfc727a23fbe
12Applied-Upstream: 3.32.1
13---
14 cogl/cogl/cogl-texture-2d-sliced.h | 6 +++---
15 cogl/cogl/cogl-texture-2d.h | 12 +++++++++---
16 cogl/cogl/meson.build | 4 ++--
17 3 files changed, 14 insertions(+), 8 deletions(-)
18
19diff --git a/cogl/cogl/cogl-texture-2d-sliced.h b/cogl/cogl/cogl-texture-2d-sliced.h
20index 8d43fc5..12ce710 100644
21--- a/cogl/cogl/cogl-texture-2d-sliced.h
22+++ b/cogl/cogl/cogl-texture-2d-sliced.h
23@@ -78,7 +78,7 @@ typedef struct _CoglTexture2DSliced CoglTexture2DSliced;
24 GType cogl_texture_2d_sliced_get_gtype (void);
25
26 /**
27- * cogl_texture_2d_sliced_new_with_size:
28+ * cogl_texture_2d_sliced_new_with_size: (skip)
29 * @ctx: A #CoglContext
30 * @width: The virtual width of your sliced texture.
31 * @height: The virtual height of your sliced texture.
32@@ -125,7 +125,7 @@ cogl_texture_2d_sliced_new_with_size (CoglContext *ctx,
33 int max_waste);
34
35 /**
36- * cogl_texture_2d_sliced_new_from_file:
37+ * cogl_texture_2d_sliced_new_from_file: (skip)
38 * @ctx: A #CoglContext
39 * @filename: the file to load
40 * @max_waste: The threshold of how wide a strip of wasted texels
41@@ -173,7 +173,7 @@ cogl_texture_2d_sliced_new_from_file (CoglContext *ctx,
42 CoglError **error);
43
44 /**
45- * cogl_texture_2d_sliced_new_from_data:
46+ * cogl_texture_2d_sliced_new_from_data: (skip)
47 * @ctx: A #CoglContext
48 * @width: width of texture in pixels
49 * @height: height of texture in pixels
50diff --git a/cogl/cogl/cogl-texture-2d.h b/cogl/cogl/cogl-texture-2d.h
51index 85cadba..29b8b2d 100644
52--- a/cogl/cogl/cogl-texture-2d.h
53+++ b/cogl/cogl/cogl-texture-2d.h
54@@ -86,7 +86,7 @@ gboolean
55 cogl_is_texture_2d (void *object);
56
57 /**
58- * cogl_texture_2d_new_with_size:
59+ * cogl_texture_2d_new_with_size: (skip)
60 * @ctx: A #CoglContext
61 * @width: Width of the texture to allocate
62 * @height: Height of the texture to allocate
63@@ -120,7 +120,7 @@ cogl_texture_2d_new_with_size (CoglContext *ctx,
64 int height);
65
66 /**
67- * cogl_texture_2d_new_from_file:
68+ * cogl_texture_2d_new_from_file: (skip)
69 * @ctx: A #CoglContext
70 * @filename: the file to load
71 * @error: A #CoglError to catch exceptional errors or %NULL
72@@ -154,7 +154,7 @@ cogl_texture_2d_new_from_file (CoglContext *ctx,
73 CoglError **error);
74
75 /**
76- * cogl_texture_2d_new_from_data:
77+ * cogl_texture_2d_new_from_data: (skip)
78 * @ctx: A #CoglContext
79 * @width: width of texture in pixels
80 * @height: height of texture in pixels
81@@ -231,6 +231,9 @@ cogl_texture_2d_new_from_data (CoglContext *ctx,
82 CoglTexture2D *
83 cogl_texture_2d_new_from_bitmap (CoglBitmap *bitmap);
84
85+/**
86+ * cogl_egl_texture_2d_new_from_image: (skip)
87+ */
88 #if defined (COGL_HAS_EGL_SUPPORT) && defined (EGL_KHR_image_base)
89 /* NB: The reason we require the width, height and format to be passed
90 * even though they may seem redundant is because GLES 1/2 don't
91@@ -247,6 +250,9 @@ typedef gboolean (*CoglTexture2DEGLImageExternalAlloc) (CoglTexture2D *tex_2d,
92 gpointer user_data,
93 GError **error);
94
95+/**
96+ * cogl_texture_2d_new_from_egl_image_external: (skip)
97+ */
98 CoglTexture2D *
99 cogl_texture_2d_new_from_egl_image_external (CoglContext *ctx,
100 int width,
101diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build
102index 5d80e87..626e8fa 100644
103--- a/cogl/cogl/meson.build
104+++ b/cogl/cogl/meson.build
105@@ -89,6 +89,8 @@ cogl_headers = [
106 'cogl-pipeline-layer-state.h',
107 'cogl-primitives.h',
108 'cogl-texture.h',
109+ 'cogl-texture-2d.h',
110+ 'cogl-texture-2d-sliced.h',
111 'cogl-types.h',
112 'cogl.h',
113 ]
114@@ -117,10 +119,8 @@ cogl_nonintrospected_headers = [
115 'cogl-matrix-stack.h',
116 'cogl-poll.h',
117 'cogl-texture-3d.h',
118- 'cogl-texture-2d.h',
119 'cogl-texture-2d-gl.h',
120 'cogl-texture-rectangle.h',
121- 'cogl-texture-2d-sliced.h',
122 'cogl-sub-texture.h',
123 'cogl-atlas-texture.h',
124 'cogl-meta-texture.h',
diff --git a/debian/patches/cogl-Remove-unused-CoglTextureDriver-try_setting_gl_borde.patch b/debian/patches/cogl-Remove-unused-CoglTextureDriver-try_setting_gl_borde.patch
125deleted file mode 1006440deleted file mode 100644
index b4e5f3b..0000000
--- a/debian/patches/cogl-Remove-unused-CoglTextureDriver-try_setting_gl_borde.patch
+++ /dev/null
@@ -1,94 +0,0 @@
1From: Adam Jackson <ajax@redhat.com>
2Date: Wed, 6 Mar 2019 12:15:40 -0500
3Subject: cogl: Remove unused CoglTextureDriver::try_setting_gl_border_color
4
5https://gitlab.gnome.org/GNOME/mutter/merge_requests/480
6
7Origin: upstream, commit:555a2c8eba115425a81d7b84f3ca2163493c0d4
8Applied-Upstream: 3.32.1
9---
10 cogl/cogl/cogl-texture-driver.h | 9 ---------
11 cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c | 14 --------------
12 cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c | 10 ----------
13 3 files changed, 33 deletions(-)
14
15diff --git a/cogl/cogl/cogl-texture-driver.h b/cogl/cogl/cogl-texture-driver.h
16index f77c548..a6e7d4f 100644
17--- a/cogl/cogl/cogl-texture-driver.h
18+++ b/cogl/cogl/cogl-texture-driver.h
19@@ -171,15 +171,6 @@ struct _CoglTextureDriver
20 int height,
21 int depth);
22
23- /*
24- * This driver abstraction is needed because GLES doesn't support setting
25- * a texture border color.
26- */
27- void
28- (* try_setting_gl_border_color) (CoglContext *ctx,
29- GLuint gl_target,
30- const GLfloat *transparent_color);
31-
32 /*
33 * It may depend on the driver as to what texture targets may be used when
34 * creating a foreign texture. E.g. OpenGL supports ARB_texture_rectangle
35diff --git a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
36index fbb55de..35b87f7 100644
37--- a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
38+++ b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
39@@ -485,19 +485,6 @@ _cogl_texture_driver_size_supported (CoglContext *ctx,
40 return new_width != 0;
41 }
42
43-static void
44-_cogl_texture_driver_try_setting_gl_border_color
45- (CoglContext *ctx,
46- GLuint gl_target,
47- const GLfloat *transparent_color)
48-{
49- /* Use a transparent border color so that we can leave the
50- color buffer alone when using texture co-ordinates
51- outside of the texture */
52- GE( ctx, glTexParameterfv (gl_target, GL_TEXTURE_BORDER_COLOR,
53- transparent_color) );
54-}
55-
56 static gboolean
57 _cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,
58 GLenum gl_target)
59@@ -541,7 +528,6 @@ _cogl_texture_driver_gl =
60 _cogl_texture_driver_gl_get_tex_image,
61 _cogl_texture_driver_size_supported,
62 _cogl_texture_driver_size_supported_3d,
63- _cogl_texture_driver_try_setting_gl_border_color,
64 _cogl_texture_driver_allows_foreign_gl_target,
65 _cogl_texture_driver_find_best_gl_get_data_format
66 };
67diff --git a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
68index 17f529e..f773f93 100644
69--- a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
70+++ b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
71@@ -590,15 +590,6 @@ _cogl_texture_driver_size_supported (CoglContext *ctx,
72 return width <= max_size && height <= max_size;
73 }
74
75-static void
76-_cogl_texture_driver_try_setting_gl_border_color
77- (CoglContext *ctx,
78- GLuint gl_target,
79- const GLfloat *transparent_color)
80-{
81- /* FAIL! */
82-}
83-
84 static gboolean
85 _cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,
86 GLenum gl_target)
87@@ -636,7 +627,6 @@ _cogl_texture_driver_gles =
88 _cogl_texture_driver_gl_get_tex_image,
89 _cogl_texture_driver_size_supported,
90 _cogl_texture_driver_size_supported_3d,
91- _cogl_texture_driver_try_setting_gl_border_color,
92 _cogl_texture_driver_allows_foreign_gl_target,
93 _cogl_texture_driver_find_best_gl_get_data_format
94 };
diff --git a/debian/patches/frame-Remove-flashing-support.patch b/debian/patches/frame-Remove-flashing-support.patch
95deleted file mode 1006440deleted file mode 100644
index efbaf14..0000000
--- a/debian/patches/frame-Remove-flashing-support.patch
+++ /dev/null
@@ -1,144 +0,0 @@
1From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
2Date: Wed, 6 Mar 2019 23:56:33 +0100
3Subject: frame: Remove flashing support
4
5It's now unused.
6
7https://gitlab.gnome.org/GNOME/mutter/issues/491
8
9Origin: upstream, commit:bd33e7b0027f51307657938db3b4cc1a8d03dde
10Applied-Upstream: 3.32.1
11---
12 src/core/bell.c | 16 ----------------
13 src/core/bell.h | 11 -----------
14 src/core/frame.c | 6 ------
15 src/core/frame.h | 1 -
16 src/meta/common.h | 8 +++-----
17 src/ui/theme.c | 2 --
18 6 files changed, 3 insertions(+), 41 deletions(-)
19
20diff --git a/src/core/bell.c b/src/core/bell.c
21index aa334d6..d7000b2 100644
22--- a/src/core/bell.c
23+++ b/src/core/bell.c
24@@ -207,19 +207,3 @@ meta_bell_notify (MetaDisplay *display,
25
26 return TRUE;
27 }
28-
29-/**
30- * meta_bell_notify_frame_destroy:
31- * @frame: The frame which is being destroyed
32- *
33- * Deals with a frame being destroyed. This is important because if we're
34- * using a visual bell, we might be flashing the edges of the frame, and
35- * so we'd have a timeout function waiting ready to un-flash them. If the
36- * frame's going away, we can tell the timeout not to bother.
37- */
38-void
39-meta_bell_notify_frame_destroy (MetaFrame *frame)
40-{
41- if (frame->is_flashing)
42- g_source_remove_by_funcs_user_data (&g_timeout_funcs, frame);
43-}
44diff --git a/src/core/bell.h b/src/core/bell.h
45index 9205b08..f86cbb7 100644
46--- a/src/core/bell.h
47+++ b/src/core/bell.h
48@@ -41,14 +41,3 @@ MetaBell * meta_bell_new (MetaDisplay *display);
49 */
50 gboolean meta_bell_notify (MetaDisplay *display,
51 MetaWindow *window);
52-
53-/**
54- * meta_bell_notify_frame_destroy:
55- * @frame: The frame which is being destroyed
56- *
57- * Deals with a frame being destroyed. This is important because if we're
58- * using a visual bell, we might be flashing the edges of the frame, and
59- * so we'd have a timeout function waiting ready to un-flash them. If the
60- * frame's going away, we can tell the timeout not to bother.
61- */
62-void meta_bell_notify_frame_destroy (MetaFrame *frame);
63diff --git a/src/core/frame.c b/src/core/frame.c
64index 7eea0a3..7699461 100644
65--- a/src/core/frame.c
66+++ b/src/core/frame.c
67@@ -60,7 +60,6 @@ meta_window_ensure_frame (MetaWindow *window)
68 frame->right_width = 0;
69 frame->current_cursor = 0;
70
71- frame->is_flashing = FALSE;
72 frame->borders_cached = FALSE;
73
74 meta_verbose ("Frame geometry %d,%d %dx%d\n",
75@@ -177,8 +176,6 @@ meta_window_destroy_frame (MetaWindow *window)
76
77 meta_frame_calc_borders (frame, &borders);
78
79- meta_bell_notify_frame_destroy (frame);
80-
81 /* Unparent the client window; it may be destroyed,
82 * thus the error trap.
83 */
84@@ -298,9 +295,6 @@ meta_frame_get_flags (MetaFrame *frame)
85 if (frame->window->fullscreen)
86 flags |= META_FRAME_FULLSCREEN;
87
88- if (frame->is_flashing)
89- flags |= META_FRAME_IS_FLASHING;
90-
91 if (frame->window->wm_state_above)
92 flags |= META_FRAME_ABOVE;
93
94diff --git a/src/core/frame.h b/src/core/frame.h
95index 73a7b4b..c0bacbe 100644
96--- a/src/core/frame.h
97+++ b/src/core/frame.h
98@@ -49,7 +49,6 @@ struct _MetaFrame
99 int bottom_height;
100
101 guint need_reapply_frame_shape : 1;
102- guint is_flashing : 1; /* used by the visual bell flash */
103 guint borders_cached : 1;
104
105 MetaUIFrame *ui_frame;
106diff --git a/src/meta/common.h b/src/meta/common.h
107index 02e2802..670097b 100644
108--- a/src/meta/common.h
109+++ b/src/meta/common.h
110@@ -63,7 +63,6 @@
111 * @META_FRAME_ALLOWS_SHADE: frame allows shade
112 * @META_FRAME_ALLOWS_MOVE: frame allows move
113 * @META_FRAME_FULLSCREEN: frame allows fullscreen
114- * @META_FRAME_IS_FLASHING: frame is flashing
115 * @META_FRAME_ABOVE: frame is above
116 * @META_FRAME_TILED_LEFT: frame is tiled to the left
117 * @META_FRAME_TILED_RIGHT: frame is tiled to the right
118@@ -83,10 +82,9 @@ typedef enum
119 META_FRAME_ALLOWS_SHADE = 1 << 10,
120 META_FRAME_ALLOWS_MOVE = 1 << 11,
121 META_FRAME_FULLSCREEN = 1 << 12,
122- META_FRAME_IS_FLASHING = 1 << 13,
123- META_FRAME_ABOVE = 1 << 14,
124- META_FRAME_TILED_LEFT = 1 << 15,
125- META_FRAME_TILED_RIGHT = 1 << 16
126+ META_FRAME_ABOVE = 1 << 13,
127+ META_FRAME_TILED_LEFT = 1 << 14,
128+ META_FRAME_TILED_RIGHT = 1 << 15
129 } MetaFrameFlags;
130
131 /**
132diff --git a/src/ui/theme.c b/src/ui/theme.c
133index 53d7ef5..b7618d9 100644
134--- a/src/ui/theme.c
135+++ b/src/ui/theme.c
136@@ -1186,8 +1186,6 @@ meta_style_info_set_flags (MetaStyleInfo *style_info,
137 int i;
138
139 backdrop = !(flags & META_FRAME_HAS_FOCUS);
140- if (flags & META_FRAME_IS_FLASHING)
141- backdrop = !backdrop;
142
143 if (flags & META_FRAME_MAXIMIZED)
144 class_name = "maximized";
diff --git a/debian/patches/keybindings-Fix-theoretical-memory-leak-while-ungrabbing.patch b/debian/patches/keybindings-Fix-theoretical-memory-leak-while-ungrabbing.patch
145deleted file mode 1006440deleted file mode 100644
index 9f4e0f6..0000000
--- a/debian/patches/keybindings-Fix-theoretical-memory-leak-while-ungrabbing.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From: Benjamin Berg <bberg@redhat.com>
2Date: Wed, 6 Mar 2019 14:07:02 +0100
3Subject: keybindings: Fix theoretical memory leak while ungrabbing
4
5In the unlikely event that one tries to ungrab an action which does not
6exist, a small leak could occur. Fix this by using g_autofree.
7
8https://gitlab.gnome.org/GNOME/mutter/merge_requests/478
9
10Origin: upstream, commit:0ceeb28481ec74073241d0c2f6af8795f070905
11Applied-Upstream: 3.32.1
12---
13 src/core/keybindings.c | 3 +--
14 1 file changed, 1 insertion(+), 2 deletions(-)
15
16diff --git a/src/core/keybindings.c b/src/core/keybindings.c
17index 5ffe411..478d4d8 100644
18--- a/src/core/keybindings.c
19+++ b/src/core/keybindings.c
20@@ -1654,7 +1654,7 @@ meta_display_ungrab_accelerator (MetaDisplay *display,
21 MetaKeyBindingManager *keys = &display->key_binding_manager;
22 MetaKeyBinding *binding;
23 MetaKeyGrab *grab;
24- char *key;
25+ g_autofree char *key = NULL;
26 MetaResolvedKeyCombo resolved_combo = { NULL, 0 };
27
28 g_return_val_if_fail (action != META_KEYBINDING_ACTION_NONE, FALSE);
29@@ -1683,7 +1683,6 @@ meta_display_ungrab_accelerator (MetaDisplay *display,
30 }
31
32 g_hash_table_remove (external_grabs, key);
33- g_free (key);
34 resolved_key_combo_reset (&resolved_combo);
35
36 return TRUE;
diff --git a/debian/patches/meson-add-back-default_driver-option.patch b/debian/patches/meson-add-back-default_driver-option.patch
index 2aa1054..b79207c 100644
--- a/debian/patches/meson-add-back-default_driver-option.patch
+++ b/debian/patches/meson-add-back-default_driver-option.patch
@@ -29,10 +29,10 @@ index 56946b2..ae53310 100644
29+29+
30 #define COGL_CONFIG_H_INCLUDED 130 #define COGL_CONFIG_H_INCLUDED 1
31diff --git a/cogl/meson.build b/cogl/meson.build31diff --git a/cogl/meson.build b/cogl/meson.build
32index d76b865..a6c22ff 10064432index 356d596..2ab83bd 100644
33--- a/cogl/meson.build33--- a/cogl/meson.build
34+++ b/cogl/meson.build34+++ b/cogl/meson.build
35@@ -9,6 +9,10 @@ cdata.set('HAVE_COGL_GL', have_gl)35@@ -10,6 +10,10 @@ cdata.set('HAVE_COGL_GL', have_gl)
36 cdata.set('HAVE_COGL_GLES2', have_gles2)36 cdata.set('HAVE_COGL_GLES2', have_gles2)
37 cdata.set('ENABLE_UNIT_TESTS', have_cogl_tests)37 cdata.set('ENABLE_UNIT_TESTS', have_cogl_tests)
38 38
@@ -44,7 +44,7 @@ index d76b865..a6c22ff 100644
44 input: 'cogl-config.h.meson',44 input: 'cogl-config.h.meson',
45 output: 'cogl-config.h',45 output: 'cogl-config.h',
46diff --git a/meson.build b/meson.build46diff --git a/meson.build b/meson.build
47index dc210e6..cafbde4 10064447index 6ce9e59..bebe8eb 100644
48--- a/meson.build48--- a/meson.build
49+++ b/meson.build49+++ b/meson.build
50@@ -210,6 +210,8 @@ if have_wayland_eglstream50@@ -210,6 +210,8 @@ if have_wayland_eglstream
diff --git a/debian/patches/meta-monitor-Remove-useless-variable.patch b/debian/patches/meta-monitor-Remove-useless-variable.patch
51deleted file mode 10064451deleted file mode 100644
index c32082a..0000000
--- a/debian/patches/meta-monitor-Remove-useless-variable.patch
+++ /dev/null
@@ -1,44 +0,0 @@
1From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
2Date: Tue, 5 Mar 2019 01:26:35 +0100
3Subject: meta-monitor: Remove useless variable
4
5Since commit f76b3edf9cdf, the variable is never set to TRUE and
6we can simply remove it.
7
8https://gitlab.gnome.org/GNOME/mutter/merge_requests/475
9
10Origin: upstream, commit:2504ae91770a1d6524a136f56ab437d4455a626
11Applied-Upstream: 3.32.1
12---
13 src/backends/meta-monitor.c | 4 +---
14 1 file changed, 1 insertion(+), 3 deletions(-)
15
16diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
17index 3ff18a5..1a32e4c 100644
18--- a/src/backends/meta-monitor.c
19+++ b/src/backends/meta-monitor.c
20@@ -1587,7 +1587,6 @@ get_closest_scale_factor_for_resolution (float width,
21 float scaled_w;
22 float best_scale;
23 int base_scaled_w;
24- gboolean limit_exceeded;
25 gboolean found_one;
26
27 best_scale = 0;
28@@ -1604,7 +1603,6 @@ get_closest_scale_factor_for_resolution (float width,
29
30 i = 0;
31 found_one = FALSE;
32- limit_exceeded = FALSE;
33 base_scaled_w = floorf (scaled_w);
34
35 do
36@@ -1637,7 +1635,7 @@ get_closest_scale_factor_for_resolution (float width,
37
38 i++;
39 }
40- while (!found_one && !limit_exceeded);
41+ while (!found_one);
42
43 out:
44 return best_scale;
diff --git a/debian/patches/monitor-Fix-indentation-style-on-calculate_crtc_pos-and-f.patch b/debian/patches/monitor-Fix-indentation-style-on-calculate_crtc_pos-and-f.patch
45deleted file mode 1006440deleted file mode 100644
index eab8a30..0000000
--- a/debian/patches/monitor-Fix-indentation-style-on-calculate_crtc_pos-and-f.patch
+++ /dev/null
@@ -1,116 +0,0 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Fri, 8 Mar 2019 18:13:00 +0000
3Subject: monitor: Fix indentation style on calculate_crtc_pos and friends
4
5https://gitlab.gnome.org/GNOME/mutter/merge_requests/488
6
7Origin: upstream, commit:2525f286d3a6687b6d78b038f795d0c1a4f4cb0
8Applied-Upstream: 3.32.1
9---
10 src/backends/meta-monitor.c | 36 ++++++++++++++++++------------------
11 src/backends/meta-monitor.h | 24 ++++++++++++------------
12 2 files changed, 30 insertions(+), 30 deletions(-)
13
14diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
15index b2f500f..1c6e844 100644
16--- a/src/backends/meta-monitor.c
17+++ b/src/backends/meta-monitor.c
18@@ -615,12 +615,12 @@ meta_monitor_normal_get_suggested_position (MetaMonitor *monitor,
19 }
20
21 static void
22-meta_monitor_normal_calculate_crtc_pos (MetaMonitor *monitor,
23- MetaMonitorMode *monitor_mode,
24- MetaOutput *output,
25- MetaMonitorTransform crtc_transform,
26- int *out_x,
27- int *out_y)
28+meta_monitor_normal_calculate_crtc_pos (MetaMonitor *monitor,
29+ MetaMonitorMode *monitor_mode,
30+ MetaOutput *output,
31+ MetaMonitorTransform crtc_transform,
32+ int *out_x,
33+ int *out_y)
34 {
35 *out_x = 0;
36 *out_y = 0;
37@@ -1267,12 +1267,12 @@ meta_monitor_tiled_get_suggested_position (MetaMonitor *monitor,
38 }
39
40 static void
41-meta_monitor_tiled_calculate_crtc_pos (MetaMonitor *monitor,
42- MetaMonitorMode *monitor_mode,
43- MetaOutput *output,
44- MetaMonitorTransform crtc_transform,
45- int *out_x,
46- int *out_y)
47+meta_monitor_tiled_calculate_crtc_pos (MetaMonitor *monitor,
48+ MetaMonitorMode *monitor_mode,
49+ MetaOutput *output,
50+ MetaMonitorTransform crtc_transform,
51+ int *out_x,
52+ int *out_y)
53 {
54 MetaMonitorModeTiled *mode_tiled = (MetaMonitorModeTiled *) monitor_mode;
55
56@@ -1461,12 +1461,12 @@ meta_monitor_get_modes (MetaMonitor *monitor)
57 }
58
59 void
60-meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,
61- MetaMonitorMode *monitor_mode,
62- MetaOutput *output,
63- MetaMonitorTransform crtc_transform,
64- int *out_x,
65- int *out_y)
66+meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,
67+ MetaMonitorMode *monitor_mode,
68+ MetaOutput *output,
69+ MetaMonitorTransform crtc_transform,
70+ int *out_x,
71+ int *out_y)
72 {
73 META_MONITOR_GET_CLASS (monitor)->calculate_crtc_pos (monitor,
74 monitor_mode,
75diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
76index b24b1a5..c3ba4cf 100644
77--- a/src/backends/meta-monitor.h
78+++ b/src/backends/meta-monitor.h
79@@ -74,12 +74,12 @@ struct _MetaMonitorClass
80 MetaOutput * (* get_main_output) (MetaMonitor *monitor);
81 void (* derive_layout) (MetaMonitor *monitor,
82 MetaRectangle *layout);
83- void (* calculate_crtc_pos) (MetaMonitor *monitor,
84- MetaMonitorMode *monitor_mode,
85- MetaOutput *output,
86- MetaMonitorTransform crtc_transform,
87- int *out_x,
88- int *out_y);
89+ void (* calculate_crtc_pos) (MetaMonitor *monitor,
90+ MetaMonitorMode *monitor_mode,
91+ MetaOutput *output,
92+ MetaMonitorTransform crtc_transform,
93+ int *out_x,
94+ int *out_y);
95 gboolean (* get_suggested_position) (MetaMonitor *monitor,
96 int *width,
97 int *height);
98@@ -214,12 +214,12 @@ META_EXPORT_TEST
99 GList * meta_monitor_get_modes (MetaMonitor *monitor);
100
101 META_EXPORT_TEST
102-void meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,
103- MetaMonitorMode *monitor_mode,
104- MetaOutput *output,
105- MetaMonitorTransform crtc_transform,
106- int *out_x,
107- int *out_y);
108+void meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,
109+ MetaMonitorMode *monitor_mode,
110+ MetaOutput *output,
111+ MetaMonitorTransform crtc_transform,
112+ int *out_x,
113+ int *out_y);
114
115 META_EXPORT_TEST
116 float meta_monitor_calculate_mode_scale (MetaMonitor *monitor,
diff --git a/debian/patches/monitor-Fix-indentation-style-on-calculate_supported_scal.patch b/debian/patches/monitor-Fix-indentation-style-on-calculate_supported_scal.patch
117deleted file mode 1006440deleted file mode 100644
index 047f099..0000000
--- a/debian/patches/monitor-Fix-indentation-style-on-calculate_supported_scal.patch
+++ /dev/null
@@ -1,162 +0,0 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Fri, 8 Mar 2019 18:03:57 +0000
3Subject: monitor: Fix indentation style on calculate_supported_scales and
4 friends
5
6https://gitlab.gnome.org/GNOME/mutter/merge_requests/488
7
8Origin: upstream, commit:b8510ac566de7e7d08c9713508adb20451d2373
9Applied-Upstream: 3.32.1
10---
11 src/backends/meta-monitor-manager-dummy.c | 10 +++++-----
12 src/backends/meta-monitor-manager.c | 10 +++++-----
13 src/backends/meta-monitor.c | 8 ++++----
14 src/backends/meta-monitor.h | 8 ++++----
15 src/backends/native/meta-monitor-manager-kms.c | 10 +++++-----
16 src/backends/x11/meta-monitor-manager-xrandr.c | 10 +++++-----
17 src/tests/meta-monitor-manager-test.c | 10 +++++-----
18 7 files changed, 33 insertions(+), 33 deletions(-)
19
20diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
21index 06e8837..46c3b8c 100644
22--- a/src/backends/meta-monitor-manager-dummy.c
23+++ b/src/backends/meta-monitor-manager-dummy.c
24@@ -694,11 +694,11 @@ meta_monitor_manager_dummy_calculate_monitor_mode_scale (MetaMonitorManager *man
25 }
26
27 static float *
28-meta_monitor_manager_dummy_calculate_supported_scales (MetaMonitorManager *manager,
29- MetaLogicalMonitorLayoutMode layout_mode,
30- MetaMonitor *monitor,
31- MetaMonitorMode *monitor_mode,
32- int *n_supported_scales)
33+meta_monitor_manager_dummy_calculate_supported_scales (MetaMonitorManager *manager,
34+ MetaLogicalMonitorLayoutMode layout_mode,
35+ MetaMonitor *monitor,
36+ MetaMonitorMode *monitor_mode,
37+ int *n_supported_scales)
38 {
39 MetaMonitorScalesConstraint constraints =
40 META_MONITOR_SCALES_CONSTRAINT_NONE;
41diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
42index 9420265..c4ed245 100644
43--- a/src/backends/meta-monitor-manager.c
44+++ b/src/backends/meta-monitor-manager.c
45@@ -400,11 +400,11 @@ meta_monitor_manager_calculate_monitor_mode_scale (MetaMonitorManager *manager,
46 }
47
48 float *
49-meta_monitor_manager_calculate_supported_scales (MetaMonitorManager *manager,
50- MetaLogicalMonitorLayoutMode layout_mode,
51- MetaMonitor *monitor,
52- MetaMonitorMode *monitor_mode,
53- int *n_supported_scales)
54+meta_monitor_manager_calculate_supported_scales (MetaMonitorManager *manager,
55+ MetaLogicalMonitorLayoutMode layout_mode,
56+ MetaMonitor *monitor,
57+ MetaMonitorMode *monitor_mode,
58+ int *n_supported_scales)
59 {
60 MetaMonitorManagerClass *manager_class =
61 META_MONITOR_MANAGER_GET_CLASS (manager);
62diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
63index 1a32e4c..b2f500f 100644
64--- a/src/backends/meta-monitor.c
65+++ b/src/backends/meta-monitor.c
66@@ -1642,10 +1642,10 @@ out:
67 }
68
69 float *
70-meta_monitor_calculate_supported_scales (MetaMonitor *monitor,
71- MetaMonitorMode *monitor_mode,
72- MetaMonitorScalesConstraint constraints,
73- int *n_supported_scales)
74+meta_monitor_calculate_supported_scales (MetaMonitor *monitor,
75+ MetaMonitorMode *monitor_mode,
76+ MetaMonitorScalesConstraint constraints,
77+ int *n_supported_scales)
78 {
79 unsigned int i, j;
80 int width, height;
81diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
82index 41f2c0f..b24b1a5 100644
83--- a/src/backends/meta-monitor.h
84+++ b/src/backends/meta-monitor.h
85@@ -226,10 +226,10 @@ float meta_monitor_calculate_mode_scale (MetaMonitor *monitor,
86 MetaMonitorMode *monitor_mode);
87
88 META_EXPORT_TEST
89-float * meta_monitor_calculate_supported_scales (MetaMonitor *monitor,
90- MetaMonitorMode *monitor_mode,
91- MetaMonitorScalesConstraint constraints,
92- int *n_supported_scales);
93+float * meta_monitor_calculate_supported_scales (MetaMonitor *monitor,
94+ MetaMonitorMode *monitor_mode,
95+ MetaMonitorScalesConstraint constraints,
96+ int *n_supported_scales);
97
98 META_EXPORT_TEST
99 const char * meta_monitor_mode_get_id (MetaMonitorMode *monitor_mode);
100diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
101index c2c8ab5..c9a3cab 100644
102--- a/src/backends/native/meta-monitor-manager-kms.c
103+++ b/src/backends/native/meta-monitor-manager-kms.c
104@@ -512,11 +512,11 @@ meta_monitor_manager_kms_calculate_monitor_mode_scale (MetaMonitorManager *manag
105 }
106
107 static float *
108-meta_monitor_manager_kms_calculate_supported_scales (MetaMonitorManager *manager,
109- MetaLogicalMonitorLayoutMode layout_mode,
110- MetaMonitor *monitor,
111- MetaMonitorMode *monitor_mode,
112- int *n_supported_scales)
113+meta_monitor_manager_kms_calculate_supported_scales (MetaMonitorManager *manager,
114+ MetaLogicalMonitorLayoutMode layout_mode,
115+ MetaMonitor *monitor,
116+ MetaMonitorMode *monitor_mode,
117+ int *n_supported_scales)
118 {
119 MetaMonitorScalesConstraint constraints =
120 META_MONITOR_SCALES_CONSTRAINT_NONE;
121diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
122index c3a33e5..784bbde 100644
123--- a/src/backends/x11/meta-monitor-manager-xrandr.c
124+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
125@@ -929,11 +929,11 @@ ensure_supported_monitor_scales (MetaMonitorManager *manager)
126 }
127
128 static float *
129-meta_monitor_manager_xrandr_calculate_supported_scales (MetaMonitorManager *manager,
130- MetaLogicalMonitorLayoutMode layout_mode,
131- MetaMonitor *monitor,
132- MetaMonitorMode *monitor_mode,
133- int *n_supported_scales)
134+meta_monitor_manager_xrandr_calculate_supported_scales (MetaMonitorManager *manager,
135+ MetaLogicalMonitorLayoutMode layout_mode,
136+ MetaMonitor *monitor,
137+ MetaMonitorMode *monitor_mode,
138+ int *n_supported_scales)
139 {
140 MetaMonitorManagerXrandr *manager_xrandr =
141 META_MONITOR_MANAGER_XRANDR (manager);
142diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c
143index d1b729c..45680ed 100644
144--- a/src/tests/meta-monitor-manager-test.c
145+++ b/src/tests/meta-monitor-manager-test.c
146@@ -373,11 +373,11 @@ meta_monitor_manager_test_calculate_monitor_mode_scale (MetaMonitorManager *mana
147 }
148
149 static float *
150-meta_monitor_manager_test_calculate_supported_scales (MetaMonitorManager *manager,
151- MetaLogicalMonitorLayoutMode layout_mode,
152- MetaMonitor *monitor,
153- MetaMonitorMode *monitor_mode,
154- int *n_supported_scales)
155+meta_monitor_manager_test_calculate_supported_scales (MetaMonitorManager *manager,
156+ MetaLogicalMonitorLayoutMode layout_mode,
157+ MetaMonitor *monitor,
158+ MetaMonitorMode *monitor_mode,
159+ int *n_supported_scales)
160 {
161 MetaMonitorScalesConstraint constraints =
162 META_MONITOR_SCALES_CONSTRAINT_NONE;
diff --git a/debian/patches/monitor-Fix-indentation-style-on-foreach-functions.patch b/debian/patches/monitor-Fix-indentation-style-on-foreach-functions.patch
163deleted file mode 1006440deleted file mode 100644
index b719f23..0000000
--- a/debian/patches/monitor-Fix-indentation-style-on-foreach-functions.patch
+++ /dev/null
@@ -1,86 +0,0 @@
1From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
2Date: Fri, 8 Mar 2019 18:17:40 +0000
3Subject: monitor: Fix indentation style on foreach functions
4
5https://gitlab.gnome.org/GNOME/mutter/merge_requests/488
6
7Origin: upstream, commit:03e02bdac58f25df3b5e15525fd9bab06e49bf8
8Applied-Upstream: 3.32.1
9---
10 src/backends/meta-monitor.c | 20 ++++++++++----------
11 src/backends/meta-monitor.h | 24 ++++++++++++------------
12 2 files changed, 22 insertions(+), 22 deletions(-)
13
14diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
15index 1c6e844..22a3e45 100644
16--- a/src/backends/meta-monitor.c
17+++ b/src/backends/meta-monitor.c
18@@ -1725,11 +1725,11 @@ meta_monitor_mode_get_flags (MetaMonitorMode *monitor_mode)
19 }
20
21 gboolean
22-meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
23- MetaMonitorMode *mode,
24- MetaMonitorModeFunc func,
25- gpointer user_data,
26- GError **error)
27+meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
28+ MetaMonitorMode *mode,
29+ MetaMonitorModeFunc func,
30+ gpointer user_data,
31+ GError **error)
32 {
33 MetaMonitorPrivate *monitor_priv =
34 meta_monitor_get_instance_private (monitor);
35@@ -1751,11 +1751,11 @@ meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
36 }
37
38 gboolean
39-meta_monitor_mode_foreach_output (MetaMonitor *monitor,
40- MetaMonitorMode *mode,
41- MetaMonitorModeFunc func,
42- gpointer user_data,
43- GError **error)
44+meta_monitor_mode_foreach_output (MetaMonitor *monitor,
45+ MetaMonitorMode *mode,
46+ MetaMonitorModeFunc func,
47+ gpointer user_data,
48+ GError **error)
49 {
50 MetaMonitorPrivate *monitor_priv =
51 meta_monitor_get_instance_private (monitor);
52diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
53index c3ba4cf..413a4e2 100644
54--- a/src/backends/meta-monitor.h
55+++ b/src/backends/meta-monitor.h
56@@ -249,18 +249,18 @@ META_EXPORT_TEST
57 MetaCrtcModeFlag meta_monitor_mode_get_flags (MetaMonitorMode *monitor_mode);
58
59 META_EXPORT_TEST
60-gboolean meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
61- MetaMonitorMode *mode,
62- MetaMonitorModeFunc func,
63- gpointer user_data,
64- GError **error);
65-
66-META_EXPORT_TEST
67-gboolean meta_monitor_mode_foreach_output (MetaMonitor *monitor,
68- MetaMonitorMode *mode,
69- MetaMonitorModeFunc func,
70- gpointer user_data,
71- GError **error);
72+gboolean meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
73+ MetaMonitorMode *mode,
74+ MetaMonitorModeFunc func,
75+ gpointer user_data,
76+ GError **error);
77+
78+META_EXPORT_TEST
79+gboolean meta_monitor_mode_foreach_output (MetaMonitor *monitor,
80+ MetaMonitorMode *mode,
81+ MetaMonitorModeFunc func,
82+ gpointer user_data,
83+ GError **error);
84
85 META_EXPORT_TEST
86 gboolean meta_monitor_mode_should_be_advertised (MetaMonitorMode *monitor_mode);
diff --git a/debian/patches/prefs-Change-default-of-show-fallback-app-menu.patch b/debian/patches/prefs-Change-default-of-show-fallback-app-menu.patch
87deleted file mode 1006440deleted file mode 100644
index 6ad4427..0000000
--- a/debian/patches/prefs-Change-default-of-show-fallback-app-menu.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
2Date: Sun, 10 Mar 2019 19:30:12 +0100
3Subject: prefs: Change default of show-fallback-app-menu
4
5The app menu always was a GNOME-only thing, so after it was removed this
6cycle, assuming that it is not displayed by the environment is a better
7default.
8
9https://gitlab.gnome.org/GNOME/mutter/issues/493
10
11Origin: upstream, commit:574099449fd7cf78c226bdf9d3d5a414d4bd351
12Applied-Upstream: 3.32.1
13---
14 src/core/prefs.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/core/prefs.c b/src/core/prefs.c
18index fdee5b2..3f0db8a 100644
19--- a/src/core/prefs.c
20+++ b/src/core/prefs.c
21@@ -111,7 +111,7 @@ static gboolean resize_with_right_button = FALSE;
22 static gboolean edge_tiling = FALSE;
23 static gboolean force_fullscreen = TRUE;
24 static gboolean auto_maximize = TRUE;
25-static gboolean show_fallback_app_menu = FALSE;
26+static gboolean show_fallback_app_menu = TRUE;
27
28 static GDesktopVisualBellType visual_bell_type = G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH;
29 static MetaButtonLayout button_layout;
diff --git a/debian/patches/series b/debian/patches/series
index 5b6232c..5e2b370 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,15 +1,3 @@
1prefs-Change-default-of-show-fallback-app-menu.patch
2keybindings-Fix-theoretical-memory-leak-while-ungrabbing.patch
3meta-monitor-Remove-useless-variable.patch
4cogl-Remove-unused-CoglTextureDriver-try_setting_gl_borde.patch
5cogl-Introspect-CoglTexture2D-Sliced.patch
6shadow-factory-Update-shadow-of-attached-modals.patch
7monitor-Fix-indentation-style-on-calculate_supported_scal.patch
8monitor-Fix-indentation-style-on-calculate_crtc_pos-and-f.patch
9monitor-Fix-indentation-style-on-foreach-functions.patch
10bell-Always-flash-window-instead-of-frame.patch
11frame-Remove-flashing-support.patch
12boxes-Actually-check-for-rectangle-containment.patch
13theme-use-gtk_render_icon_suface-to-paint-button-icon.patch1theme-use-gtk_render_icon_suface-to-paint-button-icon.patch
14theme-load-icons-as-Gtk-does-with-fallback-and-RTL-suppor.patch2theme-load-icons-as-Gtk-does-with-fallback-and-RTL-suppor.patch
15meson-add-back-default_driver-option.patch3meson-add-back-default_driver-option.patch
diff --git a/debian/patches/shadow-factory-Update-shadow-of-attached-modals.patch b/debian/patches/shadow-factory-Update-shadow-of-attached-modals.patch
16deleted file mode 1006444deleted file mode 100644
index a46c881..0000000
--- a/debian/patches/shadow-factory-Update-shadow-of-attached-modals.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
2Date: Wed, 6 Mar 2019 23:31:43 +0100
3Subject: shadow-factory: Update shadow of attached modals
4
5When commit 91c6a144da synced shadows with Adwaita, it removed the
6shadow completely from attached modal dialogs. However Adwaita uses
7the same shadow for all dialogs (modal or not), so do the same here.
8
9https://gitlab.gnome.org/GNOME/mutter/issues/490
10
11Origin: upstream, commit:a87e87a05fb29e8e9aad5df5c7752b6db20535e
12Applied-Upstream: 3.32.1
13---
14 src/compositor/meta-shadow-factory.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/compositor/meta-shadow-factory.c b/src/compositor/meta-shadow-factory.c
18index 9fdecac..0eb14c9 100644
19--- a/src/compositor/meta-shadow-factory.c
20+++ b/src/compositor/meta-shadow-factory.c
21@@ -128,7 +128,7 @@ MetaShadowClassInfo default_shadow_classes[] = {
22 { "popup-menu", { 1, -1, 0, 0, 128 }, { 1, -1, 0, 0, 128 } },
23 { "dropdown-menu", { 1, -1, 0, 0, 128 }, { 1, -1, 0, 0, 128 } },
24
25- { "attached", { 0, -1, 0, 0, 0 }, { 0, -1, 0, 0, 0 } }
26+ { "attached", { 10, -1, 0, 3, 128 }, { 8, -1, 0, 2, 64 } }
27 };
28
29 G_DEFINE_TYPE (MetaShadowFactory, meta_shadow_factory, G_TYPE_OBJECT);
diff --git a/debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch b/debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch
index 90c17a9..7717be1 100644
--- a/debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch
+++ b/debian/patches/x11-Add-support-for-fractional-scaling-using-Randr.patch
@@ -122,7 +122,7 @@ index ddacfea..8d16455 100644
122 MetaLogicalMonitor *logical_monitor;122 MetaLogicalMonitor *logical_monitor;
123 123
124diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c124diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
125index 771c57f..5d620a3 100644125index 9a54ce5..7084522 100644
126--- a/src/backends/meta-monitor-config-manager.c126--- a/src/backends/meta-monitor-config-manager.c
127+++ b/src/backends/meta-monitor-config-manager.c127+++ b/src/backends/meta-monitor-config-manager.c
128@@ -152,6 +152,7 @@ find_unassigned_crtc (MetaOutput *output,128@@ -152,6 +152,7 @@ find_unassigned_crtc (MetaOutput *output,
@@ -623,7 +623,7 @@ index 46c3b8c..29fde36 100644
623 settings,623 settings,
624 META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER))624 META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER))
625diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h625diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h
626index 3b951c6..2ba9ced 100644626index cdb8f42..bf586ea 100644
627--- a/src/backends/meta-monitor-manager-private.h627--- a/src/backends/meta-monitor-manager-private.h
628+++ b/src/backends/meta-monitor-manager-private.h628+++ b/src/backends/meta-monitor-manager-private.h
629@@ -44,7 +44,9 @@ typedef enum _MetaMonitorManagerCapability629@@ -44,7 +44,9 @@ typedef enum _MetaMonitorManagerCapability
@@ -655,7 +655,7 @@ index 3b951c6..2ba9ced 100644
655 MetaMonitorTransform transform;655 MetaMonitorTransform transform;
656 GPtrArray *outputs;656 GPtrArray *outputs;
657 };657 };
658@@ -126,6 +130,7 @@ struct _MetaMonitorManager658@@ -124,6 +128,7 @@ struct _MetaMonitorManager
659 GList *gpus;659 GList *gpus;
660 660
661 GList *monitors;661 GList *monitors;
@@ -663,7 +663,7 @@ index 3b951c6..2ba9ced 100644
663 663
664 GList *logical_monitors;664 GList *logical_monitors;
665 MetaLogicalMonitor *primary_logical_monitor;665 MetaLogicalMonitor *primary_logical_monitor;
666@@ -156,6 +161,9 @@ struct _MetaMonitorManager666@@ -154,6 +159,9 @@ struct _MetaMonitorManager
667 * @apply_monitors_config: Tries to apply the given config using the given667 * @apply_monitors_config: Tries to apply the given config using the given
668 * method. Throws an error if something went wrong.668 * method. Throws an error if something went wrong.
669 *669 *
@@ -697,7 +697,7 @@ index 3b951c6..2ba9ced 100644
697 697
698 float * (*calculate_supported_scales) (MetaMonitorManager *,698 float * (*calculate_supported_scales) (MetaMonitorManager *,
699 MetaLogicalMonitorLayoutMode ,699 MetaLogicalMonitorLayoutMode ,
700@@ -350,9 +362,10 @@ void meta_monitor_manager_lid_is_closed_changed (MetaMonitorManage700@@ -355,9 +367,10 @@ void meta_monitor_manager_lid_is_closed_changed (MetaMonitorManage
701 701
702 gboolean meta_monitor_manager_is_headless (MetaMonitorManager *manager);702 gboolean meta_monitor_manager_is_headless (MetaMonitorManager *manager);
703 703
@@ -711,7 +711,7 @@ index 3b951c6..2ba9ced 100644
711 711
712 float * meta_monitor_manager_calculate_supported_scales (MetaMonitorManager *,712 float * meta_monitor_manager_calculate_supported_scales (MetaMonitorManager *,
713 MetaLogicalMonitorLayoutMode ,713 MetaLogicalMonitorLayoutMode ,
714@@ -366,6 +379,11 @@ gboolean meta_monitor_manager_is_scale_supported (MetaMonitorManager714@@ -371,6 +384,11 @@ gboolean meta_monitor_manager_is_scale_supported (MetaMonitorManager
715 MetaMonitorMode *monitor_mode,715 MetaMonitorMode *monitor_mode,
716 float scale);716 float scale);
717 717
@@ -724,10 +724,10 @@ index 3b951c6..2ba9ced 100644
724 meta_monitor_manager_get_capabilities (MetaMonitorManager *manager);724 meta_monitor_manager_get_capabilities (MetaMonitorManager *manager);
725 725
726diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c726diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
727index c4ed245..d055eec 100644727index 2d898c7..a78fb37 100644
728--- a/src/backends/meta-monitor-manager.c728--- a/src/backends/meta-monitor-manager.c
729+++ b/src/backends/meta-monitor-manager.c729+++ b/src/backends/meta-monitor-manager.c
730@@ -104,8 +104,18 @@ static gboolean730@@ -110,8 +110,18 @@ static gboolean
731 meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,731 meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
732 MetaMonitorsConfig *config);732 MetaMonitorsConfig *config);
733 733
@@ -746,9 +746,9 @@ index c4ed245..d055eec 100644
746+ float threshold,746+ float threshold,
747+ float *out_scale);747+ float *out_scale);
748 748
749 MetaBackend *749 static void
750 meta_monitor_manager_get_backend (MetaMonitorManager *manager)750 meta_monitor_manager_real_read_current_state (MetaMonitorManager *manager);
751@@ -190,15 +200,41 @@ meta_monitor_manager_rebuild_logical_monitors (MetaMonitorManager *manager,751@@ -199,15 +209,41 @@ meta_monitor_manager_rebuild_logical_monitors (MetaMonitorManager *manager,
752 primary_logical_monitor);752 primary_logical_monitor);
753 }753 }
754 754
@@ -793,7 +793,7 @@ index c4ed245..d055eec 100644
793 }793 }
794 794
795 static float795 static float
796@@ -209,24 +245,70 @@ calculate_monitor_scale (MetaMonitorManager *manager,796@@ -218,24 +254,70 @@ calculate_monitor_scale (MetaMonitorManager *manager,
797 797
798 monitor_mode = meta_monitor_get_current_mode (monitor);798 monitor_mode = meta_monitor_get_current_mode (monitor);
799 return meta_monitor_manager_calculate_monitor_mode_scale (manager,799 return meta_monitor_manager_calculate_monitor_mode_scale (manager,
@@ -869,7 +869,7 @@ index c4ed245..d055eec 100644
869 }869 }
870 870
871 static float871 static float
872@@ -248,6 +330,44 @@ derive_scale_from_config (MetaMonitorManager *manager,872@@ -257,6 +339,44 @@ derive_scale_from_config (MetaMonitorManager *manager,
873 return 1.0;873 return 1.0;
874 }874 }
875 875
@@ -914,7 +914,7 @@ index c4ed245..d055eec 100644
914 static void914 static void
915 meta_monitor_manager_rebuild_logical_monitors_derived (MetaMonitorManager *manager,915 meta_monitor_manager_rebuild_logical_monitors_derived (MetaMonitorManager *manager,
916 MetaMonitorsConfig *config)916 MetaMonitorsConfig *config)
917@@ -296,10 +416,16 @@ meta_monitor_manager_rebuild_logical_monitors_derived (MetaMonitorManager *manag917@@ -305,10 +425,16 @@ meta_monitor_manager_rebuild_logical_monitors_derived (MetaMonitorManager *manag
918 918
919 if (use_global_scale)919 if (use_global_scale)
920 scale = global_scale;920 scale = global_scale;
@@ -934,7 +934,7 @@ index c4ed245..d055eec 100644
934 934
935 g_assert (scale > 0);935 g_assert (scale > 0);
936 936
937@@ -387,14 +513,19 @@ meta_monitor_manager_is_headless (MetaMonitorManager *manager)937@@ -407,14 +533,19 @@ meta_monitor_manager_is_headless (MetaMonitorManager *manager)
938 }938 }
939 939
940 float940 float
@@ -957,7 +957,7 @@ index c4ed245..d055eec 100644
957 monitor,957 monitor,
958 monitor_mode);958 monitor_mode);
959 }959 }
960@@ -508,7 +639,8 @@ static gboolean960@@ -528,7 +659,8 @@ static gboolean
961 should_use_stored_config (MetaMonitorManager *manager)961 should_use_stored_config (MetaMonitorManager *manager)
962 {962 {
963 return (manager->in_init ||963 return (manager->in_init ||
@@ -967,7 +967,7 @@ index c4ed245..d055eec 100644
967 }967 }
968 968
969 MetaMonitorsConfig *969 MetaMonitorsConfig *
970@@ -700,6 +832,8 @@ experimental_features_changed (MetaSettings *settings,970@@ -720,6 +852,8 @@ experimental_features_changed (MetaSettings *settings,
971 {971 {
972 gboolean was_stage_views_scaled;972 gboolean was_stage_views_scaled;
973 gboolean is_stage_views_scaled;973 gboolean is_stage_views_scaled;
@@ -976,7 +976,7 @@ index c4ed245..d055eec 100644
976 gboolean should_reconfigure = FALSE;976 gboolean should_reconfigure = FALSE;
977 977
978 was_stage_views_scaled =978 was_stage_views_scaled =
979@@ -709,8 +843,16 @@ experimental_features_changed (MetaSettings *settings,979@@ -729,8 +863,16 @@ experimental_features_changed (MetaSettings *settings,
980 meta_settings_is_experimental_feature_enabled (980 meta_settings_is_experimental_feature_enabled (
981 settings,981 settings,
982 META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER);982 META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER);
@@ -994,7 +994,7 @@ index c4ed245..d055eec 100644
994 should_reconfigure = TRUE;994 should_reconfigure = TRUE;
995 995
996 if (should_reconfigure)996 if (should_reconfigure)
997@@ -1316,6 +1458,41 @@ request_persistent_confirmation (MetaMonitorManager *manager)997@@ -1337,6 +1479,41 @@ request_persistent_confirmation (MetaMonitorManager *manager)
998 g_signal_emit (manager, signals[CONFIRM_DISPLAY_CHANGE], 0);998 g_signal_emit (manager, signals[CONFIRM_DISPLAY_CHANGE], 0);
999 }999 }
1000 1000
@@ -1036,7 +1036,7 @@ index c4ed245..d055eec 100644
1036 #define META_DISPLAY_CONFIG_MODE_FLAGS_PREFERRED (1 << 0)1036 #define META_DISPLAY_CONFIG_MODE_FLAGS_PREFERRED (1 << 0)
1037 #define META_DISPLAY_CONFIG_MODE_FLAGS_CURRENT (1 << 1)1037 #define META_DISPLAY_CONFIG_MODE_FLAGS_CURRENT (1 << 1)
1038 1038
1039@@ -1343,6 +1520,7 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,1039@@ -1364,6 +1541,7 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
1040 MetaMonitorManagerCapability capabilities;1040 MetaMonitorManagerCapability capabilities;
1041 int ui_scaling_factor;1041 int ui_scaling_factor;
1042 int max_screen_width, max_screen_height;1042 int max_screen_width, max_screen_height;
@@ -1044,7 +1044,7 @@ index c4ed245..d055eec 100644
1044 1044
1045 g_variant_builder_init (&monitors_builder,1045 g_variant_builder_init (&monitors_builder,
1046 G_VARIANT_TYPE (MONITORS_FORMAT));1046 G_VARIANT_TYPE (MONITORS_FORMAT));
1047@@ -1389,6 +1567,7 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,1047@@ -1410,6 +1588,7 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
1048 1048
1049 preferred_scale =1049 preferred_scale =
1050 meta_monitor_manager_calculate_monitor_mode_scale (manager,1050 meta_monitor_manager_calculate_monitor_mode_scale (manager,
@@ -1052,7 +1052,7 @@ index c4ed245..d055eec 100644
1052 monitor,1052 monitor,
1053 monitor_mode);1053 monitor_mode);
1054 1054
1055@@ -1496,6 +1675,14 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,1055@@ -1517,6 +1696,14 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
1056 }1056 }
1057 1057
1058 g_variant_builder_init (&properties_builder, G_VARIANT_TYPE ("a{sv}"));1058 g_variant_builder_init (&properties_builder, G_VARIANT_TYPE ("a{sv}"));
@@ -1067,7 +1067,7 @@ index c4ed245..d055eec 100644
1067 capabilities = meta_monitor_manager_get_capabilities (manager);1067 capabilities = meta_monitor_manager_get_capabilities (manager);
1068 if ((capabilities & META_MONITOR_MANAGER_CAPABILITY_MIRRORING) == 0)1068 if ((capabilities & META_MONITOR_MANAGER_CAPABILITY_MIRRORING) == 0)
1069 {1069 {
1070@@ -1520,6 +1707,13 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,1070@@ -1541,6 +1728,13 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
1071 "global-scale-required",1071 "global-scale-required",
1072 g_variant_new_boolean (TRUE));1072 g_variant_new_boolean (TRUE));
1073 }1073 }
@@ -1081,7 +1081,7 @@ index c4ed245..d055eec 100644
1081 1081
1082 ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings);1082 ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings);
1083 g_variant_builder_add (&properties_builder, "{sv}",1083 g_variant_builder_add (&properties_builder, "{sv}",
1084@@ -1564,12 +1758,14 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,1084@@ -1585,12 +1779,14 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
1085 #undef LOGICAL_MONITOR_FORMAT1085 #undef LOGICAL_MONITOR_FORMAT
1086 #undef LOGICAL_MONITORS_FORMAT1086 #undef LOGICAL_MONITORS_FORMAT
1087 1087
@@ -1102,7 +1102,7 @@ index c4ed245..d055eec 100644
1102 {1102 {
1103 g_autofree float *supported_scales = NULL;1103 g_autofree float *supported_scales = NULL;
1104 int n_supported_scales;1104 int n_supported_scales;
1105@@ -1583,8 +1779,66 @@ meta_monitor_manager_is_scale_supported (MetaMonitorManager *manager,1105@@ -1604,8 +1800,66 @@ meta_monitor_manager_is_scale_supported (MetaMonitorManager *manager,
1106 &n_supported_scales);1106 &n_supported_scales);
1107 for (i = 0; i < n_supported_scales; i++)1107 for (i = 0; i < n_supported_scales; i++)
1108 {1108 {
@@ -1171,7 +1171,7 @@ index c4ed245..d055eec 100644
1171 }1171 }
1172 1172
1173 return FALSE;1173 return FALSE;
1174@@ -1628,11 +1882,11 @@ meta_monitor_manager_is_config_applicable (MetaMonitorManager *manager,1174@@ -1649,11 +1903,11 @@ meta_monitor_manager_is_config_applicable (MetaMonitorManager *manager,
1175 return FALSE;1175 return FALSE;
1176 }1176 }
1177 1177
@@ -1188,7 +1188,7 @@ index c4ed245..d055eec 100644
1188 {1188 {
1189 g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,1189 g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
1190 "Scale not supported by backend");1190 "Scale not supported by backend");
1191@@ -1841,6 +2095,7 @@ derive_logical_monitor_size (MetaMonitorConfig *monitor_config,1191@@ -1862,6 +2116,7 @@ derive_logical_monitor_size (MetaMonitorConfig *monitor_config,
1192 switch (layout_mode)1192 switch (layout_mode)
1193 {1193 {
1194 case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:1194 case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:
@@ -1196,7 +1196,7 @@ index c4ed245..d055eec 100644
1196 width = roundf (width / scale);1196 width = roundf (width / scale);
1197 height = roundf (height / scale);1197 height = roundf (height / scale);
1198 break;1198 break;
1199@@ -1963,6 +2218,7 @@ is_valid_layout_mode (MetaLogicalMonitorLayoutMode layout_mode)1199@@ -1984,6 +2239,7 @@ is_valid_layout_mode (MetaLogicalMonitorLayoutMode layout_mode)
1200 {1200 {
1201 case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:1201 case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:
1202 case META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL:1202 case META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL:
@@ -1204,7 +1204,7 @@ index c4ed245..d055eec 100644
1204 return TRUE;1204 return TRUE;
1205 }1205 }
1206 1206
1207@@ -1985,6 +2241,7 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet1207@@ -2006,6 +2262,7 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
1208 MetaMonitorsConfig *config;1208 MetaMonitorsConfig *config;
1209 GList *logical_monitor_configs = NULL;1209 GList *logical_monitor_configs = NULL;
1210 GError *error = NULL;1210 GError *error = NULL;
@@ -1212,7 +1212,7 @@ index c4ed245..d055eec 100644
1212 1212
1213 if (serial != manager->serial)1213 if (serial != manager->serial)
1214 {1214 {
1215@@ -2056,10 +2313,26 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet1215@@ -2077,10 +2334,26 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
1216 return TRUE;1216 return TRUE;
1217 }1217 }
1218 1218
@@ -1239,7 +1239,7 @@ index c4ed245..d055eec 100644
1239 config = meta_monitors_config_new (manager,1239 config = meta_monitors_config_new (manager,
1240 logical_monitor_configs,1240 logical_monitor_configs,
1241 layout_mode,1241 layout_mode,
1242@@ -2497,12 +2770,6 @@ meta_monitor_manager_get_laptop_panel (MetaMonitorManager *manager)1242@@ -2518,12 +2791,6 @@ meta_monitor_manager_get_laptop_panel (MetaMonitorManager *manager)
1243 return find_monitor (manager, meta_monitor_is_laptop_panel);1243 return find_monitor (manager, meta_monitor_is_laptop_panel);
1244 }1244 }
1245 1245
@@ -1252,7 +1252,7 @@ index c4ed245..d055eec 100644
1252 MetaMonitor *1252 MetaMonitor *
1253 meta_monitor_manager_get_monitor_from_connector (MetaMonitorManager *manager,1253 meta_monitor_manager_get_monitor_from_connector (MetaMonitorManager *manager,
1254 const char *connector)1254 const char *connector)
1255@@ -2688,6 +2955,10 @@ static void1255@@ -2718,6 +2985,10 @@ static void
1256 rebuild_monitors (MetaMonitorManager *manager)1256 rebuild_monitors (MetaMonitorManager *manager)
1257 {1257 {
1258 GList *l;1258 GList *l;
@@ -1263,7 +1263,7 @@ index c4ed245..d055eec 100644
1263 1263
1264 if (manager->monitors)1264 if (manager->monitors)
1265 {1265 {
1266@@ -2704,7 +2975,7 @@ rebuild_monitors (MetaMonitorManager *manager)1266@@ -2734,7 +3005,7 @@ rebuild_monitors (MetaMonitorManager *manager)
1267 {1267 {
1268 MetaOutput *output = k->data;1268 MetaOutput *output = k->data;
1269 1269
@@ -1272,7 +1272,7 @@ index c4ed245..d055eec 100644
1272 {1272 {
1273 if (is_main_tiled_monitor_output (output))1273 if (is_main_tiled_monitor_output (output))
1274 {1274 {
1275@@ -2901,7 +3172,7 @@ meta_monitor_manager_update_logical_state_derived (MetaMonitorManager *manager,1275@@ -2940,7 +3211,7 @@ meta_monitor_manager_update_logical_state_derived (MetaMonitorManager *manager,
1276 else1276 else
1277 manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;1277 manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
1278 1278
@@ -1281,7 +1281,7 @@ index c4ed245..d055eec 100644
1281 1281
1282 meta_monitor_manager_rebuild_logical_monitors_derived (manager, config);1282 meta_monitor_manager_rebuild_logical_monitors_derived (manager, config);
1283 }1283 }
1284@@ -2910,10 +3181,14 @@ void1284@@ -2949,10 +3220,14 @@ void
1285 meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager,1285 meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager,
1286 MetaMonitorsConfig *config)1286 MetaMonitorsConfig *config)
1287 {1287 {
@@ -1633,10 +1633,10 @@ index 34d49b3..e54317e 100644
1633 g_signal_new ("experimental-features-changed",1633 g_signal_new ("experimental-features-changed",
1634 G_TYPE_FROM_CLASS (object_class),1634 G_TYPE_FROM_CLASS (object_class),
1635diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c1635diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
1636index c9a3cab..da3a619 1006441636index 9a03644..93905e6 100644
1637--- a/src/backends/native/meta-monitor-manager-kms.c1637--- a/src/backends/native/meta-monitor-manager-kms.c
1638+++ b/src/backends/native/meta-monitor-manager-kms.c1638+++ b/src/backends/native/meta-monitor-manager-kms.c
1639@@ -503,20 +503,8 @@ meta_monitor_manager_kms_is_transform_handled (MetaMonitorManager *manager,1639@@ -518,20 +518,8 @@ meta_monitor_manager_kms_is_transform_handled (MetaMonitorManager *manager,
1640 return meta_crtc_kms_is_transform_handled (crtc, transform);1640 return meta_crtc_kms_is_transform_handled (crtc, transform);
1641 }1641 }
1642 1642
@@ -1659,7 +1659,7 @@ index c9a3cab..da3a619 100644
1659 {1659 {
1660 MetaMonitorScalesConstraint constraints =1660 MetaMonitorScalesConstraint constraints =
1661 META_MONITOR_SCALES_CONSTRAINT_NONE;1661 META_MONITOR_SCALES_CONSTRAINT_NONE;
1662@@ -524,12 +512,38 @@ meta_monitor_manager_kms_calculate_supported_scales (MetaMonitorManager1662@@ -539,12 +527,38 @@ meta_monitor_manager_kms_calculate_supported_scales (MetaMonitorManager
1663 switch (layout_mode)1663 switch (layout_mode)
1664 {1664 {
1665 case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:1665 case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL:
@@ -1698,7 +1698,7 @@ index c9a3cab..da3a619 100644
1698 return meta_monitor_calculate_supported_scales (monitor, monitor_mode,1698 return meta_monitor_calculate_supported_scales (monitor, monitor_mode,
1699 constraints,1699 constraints,
1700 n_supported_scales);1700 n_supported_scales);
1701@@ -543,7 +557,7 @@ meta_monitor_manager_kms_get_capabilities (MetaMonitorManager *manager)1701@@ -558,7 +572,7 @@ meta_monitor_manager_kms_get_capabilities (MetaMonitorManager *manager)
1702 MetaRenderer *renderer = meta_backend_get_renderer (backend);1702 MetaRenderer *renderer = meta_backend_get_renderer (backend);
1703 MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);1703 MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
1704 MetaMonitorManagerCapability capabilities =1704 MetaMonitorManagerCapability capabilities =
@@ -1857,7 +1857,7 @@ index d38a09a..d3f2f60 100644
1857 1857
1858 #endif /* META_CRTC_XRANDR_H */1858 #endif /* META_CRTC_XRANDR_H */
1859diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c1859diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c
1860index 14b46d5..72243a1 1006441860index 3e8a731..e8fa3f5 100644
1861--- a/src/backends/x11/meta-gpu-xrandr.c1861--- a/src/backends/x11/meta-gpu-xrandr.c
1862+++ b/src/backends/x11/meta-gpu-xrandr.c1862+++ b/src/backends/x11/meta-gpu-xrandr.c
1863@@ -42,6 +42,8 @@ struct _MetaGpuXrandr1863@@ -42,6 +42,8 @@ struct _MetaGpuXrandr
@@ -1945,14 +1945,12 @@ index 14b46d5..72243a1 100644
1945 static gboolean1945 static gboolean
1946 meta_gpu_xrandr_read_current (MetaGpu *gpu,1946 meta_gpu_xrandr_read_current (MetaGpu *gpu,
1947 GError **error)1947 GError **error)
1948@@ -95,13 +159,14 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu,1948@@ -95,19 +159,20 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu,
1949 RROutput primary_output;1949 RROutput primary_output;
1950 unsigned int i, j;1950 unsigned int i, j;
1951 GList *l;1951 GList *l;
1952- int min_width, min_height;1952- int min_width, min_height;
1953 Screen *screen;1953 Screen *screen;
1954 BOOL dpms_capable, dpms_enabled;
1955 CARD16 dpms_state;
1956 GList *outputs = NULL;1954 GList *outputs = NULL;
1957 GList *modes = NULL;1955 GList *modes = NULL;
1958 GList *crtcs = NULL;1956 GList *crtcs = NULL;
@@ -1961,8 +1959,7 @@ index 14b46d5..72243a1 100644
1961 1959
1962 if (gpu_xrandr->resources)1960 if (gpu_xrandr->resources)
1963 XRRFreeScreenResources (gpu_xrandr->resources);1961 XRRFreeScreenResources (gpu_xrandr->resources);
1964@@ -138,8 +203,8 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu,1962 gpu_xrandr->resources = NULL;
1965 }
1966 1963
1967 XRRGetScreenSizeRange (xdisplay, DefaultRootWindow (xdisplay),1964 XRRGetScreenSizeRange (xdisplay, DefaultRootWindow (xdisplay),
1968- &min_width,1965- &min_width,
@@ -1972,7 +1969,7 @@ index 14b46d5..72243a1 100644
1972 &gpu_xrandr->max_screen_width,1969 &gpu_xrandr->max_screen_width,
1973 &gpu_xrandr->max_screen_height);1970 &gpu_xrandr->max_screen_height);
1974 1971
1975@@ -182,17 +247,33 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu,1972@@ -150,17 +215,33 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu,
1976 }1973 }
1977 meta_gpu_take_modes (gpu, modes);1974 meta_gpu_take_modes (gpu, modes);
1978 1975
@@ -2023,7 +2020,7 @@ index aad49d0..4ac32b9 100644
2023 int *max_width,2020 int *max_width,
2024 int *max_height);2021 int *max_height);
2025diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c2022diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
2026index 784bbde..246b66d 1006442023index 45c81f4..7df4abc 100644
2027--- a/src/backends/x11/meta-monitor-manager-xrandr.c2024--- a/src/backends/x11/meta-monitor-manager-xrandr.c
2028+++ b/src/backends/x11/meta-monitor-manager-xrandr.c2025+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
2029@@ -63,6 +63,9 @@2026@@ -63,6 +63,9 @@
@@ -2068,7 +2065,7 @@ index 784bbde..246b66d 100644
2068 }2065 }
2069 2066
2070 static GBytes *2067 static GBytes *
2071@@ -149,6 +150,57 @@ meta_monitor_manager_xrandr_set_power_save_mode (MetaMonitorManager *manager,2068@@ -193,6 +194,57 @@ meta_monitor_manager_xrandr_set_power_save_mode (MetaMonitorManager *manager,
2072 DPMSSetTimeouts (manager_xrandr->xdisplay, 0, 0, 0);2069 DPMSSetTimeouts (manager_xrandr->xdisplay, 0, 0, 0);
2073 }2070 }
2074 2071
@@ -2126,7 +2123,7 @@ index 784bbde..246b66d 100644
2126 static xcb_randr_rotation_t2123 static xcb_randr_rotation_t
2127 meta_monitor_transform_to_xrandr (MetaMonitorTransform transform)2124 meta_monitor_transform_to_xrandr (MetaMonitorTransform transform)
2128 {2125 {
2129@@ -203,13 +255,36 @@ xrandr_set_crtc_config (MetaMonitorManagerXrandr *manager_xrandr,2126@@ -247,13 +299,36 @@ xrandr_set_crtc_config (MetaMonitorManagerXrandr *manager_xrandr,
2130 return TRUE;2127 return TRUE;
2131 }2128 }
2132 2129
@@ -2166,7 +2163,7 @@ index 784bbde..246b66d 100644
2166 for (i = 0; i < n_crtc_infos; i++)2163 for (i = 0; i < n_crtc_infos; i++)
2167 {2164 {
2168 MetaCrtcInfo *crtc_info = crtc_infos[i];2165 MetaCrtcInfo *crtc_info = crtc_infos[i];
2169@@ -230,6 +305,37 @@ is_crtc_assignment_changed (MetaCrtc *crtc,2166@@ -274,6 +349,37 @@ is_crtc_assignment_changed (MetaCrtc *crtc,
2170 if (crtc->transform != crtc_info->transform)2167 if (crtc->transform != crtc_info->transform)
2171 return TRUE;2168 return TRUE;
2172 2169
@@ -2204,7 +2201,7 @@ index 784bbde..246b66d 100644
2204 for (j = 0; j < crtc_info->outputs->len; j++)2201 for (j = 0; j < crtc_info->outputs->len; j++)
2205 {2202 {
2206 MetaOutput *output = ((MetaOutput**) crtc_info->outputs->pdata)[j];2203 MetaOutput *output = ((MetaOutput**) crtc_info->outputs->pdata)[j];
2207@@ -315,7 +421,7 @@ is_assignments_changed (MetaMonitorManager *manager,2204@@ -359,7 +465,7 @@ is_assignments_changed (MetaMonitorManager *manager,
2208 {2205 {
2209 MetaCrtc *crtc = l->data;2206 MetaCrtc *crtc = l->data;
2210 2207
@@ -2213,7 +2210,7 @@ index 784bbde..246b66d 100644
2213 return TRUE;2210 return TRUE;
2214 }2211 }
2215 2212
2216@@ -331,6 +437,32 @@ is_assignments_changed (MetaMonitorManager *manager,2213@@ -375,6 +481,32 @@ is_assignments_changed (MetaMonitorManager *manager,
2217 return TRUE;2214 return TRUE;
2218 }2215 }
2219 2216
@@ -2246,7 +2243,7 @@ index 784bbde..246b66d 100644
2246 return FALSE;2243 return FALSE;
2247 }2244 }
2248 2245
2249@@ -343,33 +475,57 @@ apply_crtc_assignments (MetaMonitorManager *manager,2246@@ -387,33 +519,57 @@ apply_crtc_assignments (MetaMonitorManager *manager,
2250 unsigned int n_outputs)2247 unsigned int n_outputs)
2251 {2248 {
2252 MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);2249 MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager);
@@ -2311,7 +2308,7 @@ index 784bbde..246b66d 100644
2311 }2308 }
2312 2309
2313 /* Second disable all newly disabled CRTCs, or CRTCs that in the previous2310 /* Second disable all newly disabled CRTCs, or CRTCs that in the previous
2314@@ -394,12 +550,16 @@ apply_crtc_assignments (MetaMonitorManager *manager,2311@@ -438,12 +594,16 @@ apply_crtc_assignments (MetaMonitorManager *manager,
2315 0, 0, XCB_NONE,2312 0, 0, XCB_NONE,
2316 XCB_RANDR_ROTATION_ROTATE_0,2313 XCB_RANDR_ROTATION_ROTATE_0,
2317 NULL, 0);2314 NULL, 0);
@@ -2328,7 +2325,7 @@ index 784bbde..246b66d 100644
2328 }2325 }
2329 }2326 }
2330 2327
2331@@ -424,25 +584,20 @@ apply_crtc_assignments (MetaMonitorManager *manager,2328@@ -468,25 +628,20 @@ apply_crtc_assignments (MetaMonitorManager *manager,
2332 0, 0, XCB_NONE,2329 0, 0, XCB_NONE,
2333 XCB_RANDR_ROTATION_ROTATE_0,2330 XCB_RANDR_ROTATION_ROTATE_0,
2334 NULL, 0);2331 NULL, 0);
@@ -2360,7 +2357,7 @@ index 784bbde..246b66d 100644
2360 2357
2361 for (i = 0; i < n_crtcs; i++)2358 for (i = 0; i < n_crtcs; i++)
2362 {2359 {
2363@@ -455,12 +610,21 @@ apply_crtc_assignments (MetaMonitorManager *manager,2360@@ -499,12 +654,21 @@ apply_crtc_assignments (MetaMonitorManager *manager,
2364 g_autofree xcb_randr_output_t *output_ids = NULL;2361 g_autofree xcb_randr_output_t *output_ids = NULL;
2365 unsigned int j, n_output_ids;2362 unsigned int j, n_output_ids;
2366 xcb_randr_rotation_t rotation;2363 xcb_randr_rotation_t rotation;
@@ -2382,7 +2379,7 @@ index 784bbde..246b66d 100644
2382 for (j = 0; j < n_output_ids; j++)2379 for (j = 0; j < n_output_ids; j++)
2383 {2380 {
2384 MetaOutput *output;2381 MetaOutput *output;
2385@@ -473,6 +637,20 @@ apply_crtc_assignments (MetaMonitorManager *manager,2382@@ -517,6 +681,20 @@ apply_crtc_assignments (MetaMonitorManager *manager,
2386 output_ids[j] = output->winsys_id;2383 output_ids[j] = output->winsys_id;
2387 }2384 }
2388 2385
@@ -2403,7 +2400,7 @@ index 784bbde..246b66d 100644
2403 rotation = meta_monitor_transform_to_xrandr (crtc_info->transform);2400 rotation = meta_monitor_transform_to_xrandr (crtc_info->transform);
2404 if (!xrandr_set_crtc_config (manager_xrandr,2401 if (!xrandr_set_crtc_config (manager_xrandr,
2405 crtc,2402 crtc,
2406@@ -508,6 +686,7 @@ apply_crtc_assignments (MetaMonitorManager *manager,2403@@ -552,6 +730,7 @@ apply_crtc_assignments (MetaMonitorManager *manager,
2407 crtc->rect.height = height;2404 crtc->rect.height = height;
2408 crtc->current_mode = mode;2405 crtc->current_mode = mode;
2409 crtc->transform = crtc_info->transform;2406 crtc->transform = crtc_info->transform;
@@ -2411,7 +2408,7 @@ index 784bbde..246b66d 100644
2411 }2408 }
2412 }2409 }
2413 2410
2414@@ -563,14 +742,61 @@ meta_monitor_manager_xrandr_ensure_initial_config (MetaMonitorManager *manager)2411@@ -607,14 +786,61 @@ meta_monitor_manager_xrandr_ensure_initial_config (MetaMonitorManager *manager)
2415 }2412 }
2416 2413
2417 static void2414 static void
@@ -2477,7 +2474,7 @@ index 784bbde..246b66d 100644
2477 }2474 }
2478 2475
2479 static gboolean2476 static gboolean
2480@@ -584,7 +810,7 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana2477@@ -628,7 +854,7 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana
2481 2478
2482 if (!config)2479 if (!config)
2483 {2480 {
@@ -2486,7 +2483,7 @@ index 784bbde..246b66d 100644
2486 return TRUE;2483 return TRUE;
2487 }2484 }
2488 2485
2489@@ -609,16 +835,26 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana2486@@ -653,16 +879,26 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana
2490 (MetaOutputInfo **) output_infos->pdata,2487 (MetaOutputInfo **) output_infos->pdata,
2491 output_infos->len))2488 output_infos->len))
2492 {2489 {
@@ -2514,7 +2511,7 @@ index 784bbde..246b66d 100644
2514 }2511 }
2515 }2512 }
2516 2513
2517@@ -748,7 +984,8 @@ meta_monitor_manager_xrandr_tiled_monitor_added (MetaMonitorManager *manager,2514@@ -792,7 +1028,8 @@ meta_monitor_manager_xrandr_tiled_monitor_added (MetaMonitorManager *manager,
2518 GList *l;2515 GList *l;
2519 int i;2516 int i;
2520 2517
@@ -2524,7 +2521,7 @@ index 784bbde..246b66d 100644
2524 return;2521 return;
2525 2522
2526 product = meta_monitor_get_product (monitor);2523 product = meta_monitor_get_product (monitor);
2527@@ -797,7 +1034,8 @@ meta_monitor_manager_xrandr_tiled_monitor_removed (MetaMonitorManager *manager,2524@@ -841,7 +1078,8 @@ meta_monitor_manager_xrandr_tiled_monitor_removed (MetaMonitorManager *manager,
2528 2525
2529 int monitor_count;2526 int monitor_count;
2530 2527
@@ -2534,7 +2531,7 @@ index 784bbde..246b66d 100644
2534 return;2531 return;
2535 2532
2536 monitor_xrandr_data = meta_monitor_xrandr_data_from_monitor (monitor);2533 monitor_xrandr_data = meta_monitor_xrandr_data_from_monitor (monitor);
2537@@ -815,10 +1053,12 @@ meta_monitor_manager_xrandr_tiled_monitor_removed (MetaMonitorManager *manager,2534@@ -859,10 +1097,12 @@ meta_monitor_manager_xrandr_tiled_monitor_removed (MetaMonitorManager *manager,
2538 static void2535 static void
2539 meta_monitor_manager_xrandr_init_monitors (MetaMonitorManagerXrandr *manager_xrandr)2536 meta_monitor_manager_xrandr_init_monitors (MetaMonitorManagerXrandr *manager_xrandr)
2540 {2537 {
@@ -2548,7 +2545,7 @@ index 784bbde..246b66d 100644
2548 return;2545 return;
2549 2546
2550 /* delete any tiled monitors setup, as mutter will want to recreate2547 /* delete any tiled monitors setup, as mutter will want to recreate
2551@@ -849,83 +1089,26 @@ meta_monitor_manager_xrandr_is_transform_handled (MetaMonitorManager *manager,2548@@ -893,83 +1133,26 @@ meta_monitor_manager_xrandr_is_transform_handled (MetaMonitorManager *manager,
2552 return TRUE;2549 return TRUE;
2553 }2550 }
2554 2551
@@ -2646,7 +2643,7 @@ index 784bbde..246b66d 100644
2646 }2643 }
2647 2644
2648 static float *2645 static float *
2649@@ -935,21 +1118,35 @@ meta_monitor_manager_xrandr_calculate_supported_scales (MetaMonitorManager2646@@ -979,21 +1162,35 @@ meta_monitor_manager_xrandr_calculate_supported_scales (MetaMonitorManager
2650 MetaMonitorMode *monitor_mode,2647 MetaMonitorMode *monitor_mode,
2651 int *n_supported_scales)2648 int *n_supported_scales)
2652 {2649 {
@@ -2692,7 +2689,7 @@ index 784bbde..246b66d 100644
2692 }2689 }
2693 2690
2694 static gboolean2691 static gboolean
2695@@ -966,9 +1163,34 @@ meta_monitor_manager_xrandr_get_max_screen_size (MetaMonitorManager *manager,2692@@ -1010,9 +1207,34 @@ meta_monitor_manager_xrandr_get_max_screen_size (MetaMonitorManager *manager,
2696 return TRUE;2693 return TRUE;
2697 }2694 }
2698 2695
@@ -2727,7 +2724,7 @@ index 784bbde..246b66d 100644
2727 return META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL;2724 return META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL;
2728 }2725 }
2729 2726
2730@@ -978,10 +1200,11 @@ meta_monitor_manager_xrandr_constructed (GObject *object)2727@@ -1022,10 +1244,11 @@ meta_monitor_manager_xrandr_constructed (GObject *object)
2731 MetaMonitorManagerXrandr *manager_xrandr =2728 MetaMonitorManagerXrandr *manager_xrandr =
2732 META_MONITOR_MANAGER_XRANDR (object);2729 META_MONITOR_MANAGER_XRANDR (object);
2733 MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr);2730 MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr);
@@ -2742,7 +2739,7 @@ index 784bbde..246b66d 100644
2742 2739
2743 manager_xrandr->gpu = META_GPU (meta_gpu_xrandr_new (manager_xrandr));2740 manager_xrandr->gpu = META_GPU (meta_gpu_xrandr_new (manager_xrandr));
2744 meta_monitor_manager_add_gpu (manager, manager_xrandr->gpu);2741 meta_monitor_manager_add_gpu (manager, manager_xrandr->gpu);
2745@@ -1003,19 +1226,19 @@ meta_monitor_manager_xrandr_constructed (GObject *object)2742@@ -1047,19 +1270,19 @@ meta_monitor_manager_xrandr_constructed (GObject *object)
2746 | RRCrtcChangeNotifyMask2743 | RRCrtcChangeNotifyMask
2747 | RROutputPropertyNotifyMask);2744 | RROutputPropertyNotifyMask);
2748 2745
@@ -2770,7 +2767,7 @@ index 784bbde..246b66d 100644
2770 G_OBJECT_CLASS (meta_monitor_manager_xrandr_parent_class)->constructed (object);2767 G_OBJECT_CLASS (meta_monitor_manager_xrandr_parent_class)->constructed (object);
2771 }2768 }
2772 2769
2773@@ -1026,7 +1249,6 @@ meta_monitor_manager_xrandr_finalize (GObject *object)2770@@ -1070,7 +1293,6 @@ meta_monitor_manager_xrandr_finalize (GObject *object)
2774 2771
2775 g_clear_object (&manager_xrandr->gpu);2772 g_clear_object (&manager_xrandr->gpu);
2776 g_hash_table_destroy (manager_xrandr->tiled_monitor_atoms);2773 g_hash_table_destroy (manager_xrandr->tiled_monitor_atoms);
@@ -2778,15 +2775,15 @@ index 784bbde..246b66d 100644
2778 2775
2779 G_OBJECT_CLASS (meta_monitor_manager_xrandr_parent_class)->finalize (object);2776 G_OBJECT_CLASS (meta_monitor_manager_xrandr_parent_class)->finalize (object);
2780 }2777 }
2781@@ -1048,6 +1270,7 @@ meta_monitor_manager_xrandr_class_init (MetaMonitorManagerXrandrClass *klass)2778@@ -1093,6 +1315,7 @@ meta_monitor_manager_xrandr_class_init (MetaMonitorManagerXrandrClass *klass)
2782 manager_class->read_edid = meta_monitor_manager_xrandr_read_edid;2779 manager_class->read_current_state = meta_monitor_manager_xrandr_read_current_state;
2783 manager_class->ensure_initial_config = meta_monitor_manager_xrandr_ensure_initial_config;2780 manager_class->ensure_initial_config = meta_monitor_manager_xrandr_ensure_initial_config;
2784 manager_class->apply_monitors_config = meta_monitor_manager_xrandr_apply_monitors_config;2781 manager_class->apply_monitors_config = meta_monitor_manager_xrandr_apply_monitors_config;
2785+ manager_class->update_screen_size_derived = meta_monitor_manager_xrandr_update_screen_size_derived;2782+ manager_class->update_screen_size_derived = meta_monitor_manager_xrandr_update_screen_size_derived;
2786 manager_class->set_power_save_mode = meta_monitor_manager_xrandr_set_power_save_mode;2783 manager_class->set_power_save_mode = meta_monitor_manager_xrandr_set_power_save_mode;
2787 manager_class->change_backlight = meta_monitor_manager_xrandr_change_backlight;2784 manager_class->change_backlight = meta_monitor_manager_xrandr_change_backlight;
2788 manager_class->get_crtc_gamma = meta_monitor_manager_xrandr_get_crtc_gamma;2785 manager_class->get_crtc_gamma = meta_monitor_manager_xrandr_get_crtc_gamma;
2789@@ -1108,7 +1331,7 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra2786@@ -1153,7 +1376,7 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra
2790 config = NULL;2787 config = NULL;
2791 }2788 }
2792 2789
@@ -2931,7 +2928,7 @@ index 0854a19..e412784 100644
2931 }2928 }
2932 }2929 }
2933diff --git a/src/core/boxes-private.h b/src/core/boxes-private.h2930diff --git a/src/core/boxes-private.h b/src/core/boxes-private.h
2934index 24c596b..f92837a 1006442931index 74f5c54..0b37f0f 100644
2935--- a/src/core/boxes-private.h2932--- a/src/core/boxes-private.h
2936+++ b/src/core/boxes-private.h2933+++ b/src/core/boxes-private.h
2937@@ -157,6 +157,10 @@ gboolean meta_rectangle_overlaps_with_region (2934@@ -157,6 +157,10 @@ gboolean meta_rectangle_overlaps_with_region (
@@ -2946,7 +2943,7 @@ index 24c596b..f92837a 100644
2946 * but make it no smaller than min_size.2943 * but make it no smaller than min_size.
2947 */2944 */
2948diff --git a/src/core/boxes.c b/src/core/boxes.c2945diff --git a/src/core/boxes.c b/src/core/boxes.c
2949index 87f2d5d..95978c1 1006442946index 4bb961c..69fd45f 100644
2950--- a/src/core/boxes.c2947--- a/src/core/boxes.c
2951+++ b/src/core/boxes.c2948+++ b/src/core/boxes.c
2952@@ -911,6 +911,27 @@ meta_rectangle_overlaps_with_region (const GList *spanning_rects,2949@@ -911,6 +911,27 @@ meta_rectangle_overlaps_with_region (const GList *spanning_rects,
@@ -2966,7 +2963,7 @@ index 87f2d5d..95978c1 100644
2966+ if (rect == other || meta_rectangle_equal (rect, other))2963+ if (rect == other || meta_rectangle_equal (rect, other))
2967+ continue;2964+ continue;
2968+2965+
2969+ if (meta_rectangle_is_adjecent_to ((MetaRectangle *) rect, other))2966+ if (meta_rectangle_is_adjacent_to ((MetaRectangle *) rect, other))
2970+ {2967+ {
2971+ return TRUE;2968+ return TRUE;
2972+ }2969+ }
@@ -2978,7 +2975,7 @@ index 87f2d5d..95978c1 100644
2978 void2975 void
2979 meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,2976 meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,
2980diff --git a/src/core/window.c b/src/core/window.c2977diff --git a/src/core/window.c b/src/core/window.c
2981index 62b2df8..d1cf7c3 1006442978index d2c2450..bb2e459 100644
2982--- a/src/core/window.c2979--- a/src/core/window.c
2983+++ b/src/core/window.c2980+++ b/src/core/window.c
2984@@ -226,6 +226,7 @@ enum2981@@ -226,6 +226,7 @@ enum
diff --git a/debian/rules b/debian/rules
index 4e6d9c1..2047ed8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -4,7 +4,7 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
4export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,--as-needed4export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,--as-needed
55
6%:6%:
7 dh $@ --with gir,gnome --buildsystem=meson7 dh $@
88
9override_dh_autoreconf:9override_dh_autoreconf:
10 dh_autoreconf --as-needed10 dh_autoreconf --as-needed
diff --git a/meson.build b/meson.build
index dc210e6..6ce9e59 100644
--- a/meson.build
+++ b/meson.build
@@ -178,7 +178,7 @@ if have_native_backend
178 libgbm_dep = dependency('gbm', version: gbm_req)178 libgbm_dep = dependency('gbm', version: gbm_req)
179 libinput_dep = dependency('libinput', version: libinput_req)179 libinput_dep = dependency('libinput', version: libinput_req)
180180
181 libsystemd_dep = dependency('libsystemd')181 libsystemd_dep = dependency('libsystemd', required: false)
182 if libsystemd_dep.found()182 if libsystemd_dep.found()
183 logind_provider_dep = libsystemd_dep183 logind_provider_dep = libsystemd_dep
184 else184 else
diff --git a/po/ar.po b/po/ar.po
index 4f26451..82df3c2 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -4,15 +4,14 @@
4# Arafat Medini <lumina@silverpen.de>, 2003.4# Arafat Medini <lumina@silverpen.de>, 2003.
5# Abdulaziz Al-Arfaj <alarfaj0@yahoo.com>, 2004.5# Abdulaziz Al-Arfaj <alarfaj0@yahoo.com>, 2004.
6# Djihed Afifi <djihed@gmail.com>, 2006.6# Djihed Afifi <djihed@gmail.com>, 2006.
7# Khaled Hosny <khaledhosny@eglug.org>, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017.7# Khaled Hosny <khaledhosny@eglug.org>, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017, 2019.
8# Anas Afif Emad <anas.e87@gmail.com>, 2008.8# Anas Afif Emad <anas.e87@gmail.com>, 2008.
9msgid ""9msgid ""
10msgstr ""10msgstr ""
11"Project-Id-Version: metacity.HEAD\n"11"Project-Id-Version: metacity.HEAD\n"
12"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"12"Report-Msgid-Bugs-To: \n"
13"keywords=I18N+L10N&component=general\n"13"POT-Creation-Date: 2019-03-15 23:40+0200\n"
14"POT-Creation-Date: 2017-11-03 10:20+0200\n"14"PO-Revision-Date: 2019-03-15 23:42+0200\n"
15"PO-Revision-Date: 2017-11-03 10:22+0200\n"
16"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"15"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
17"Language-Team: Arabic <doc@arabeyes.org>\n"16"Language-Team: Arabic <doc@arabeyes.org>\n"
18"Language: ar\n"17"Language: ar\n"
@@ -21,126 +20,599 @@ msgstr ""
21"Content-Transfer-Encoding: 8bit\n"20"Content-Transfer-Encoding: 8bit\n"
22"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "21"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
23"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"22"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
24"X-Generator: Virtaal 1.0.0-beta1\n"23"X-Generator: Virtaal 0.7.1\n"
25"X-Project-Style: gnome\n"24"X-Project-Style: gnome\n"
2625
26#: data/50-mutter-navigation.xml:6
27msgid "Navigation"
28msgstr "الإبحار"
29
30#: data/50-mutter-navigation.xml:9
31msgid "Move window to workspace 1"
32msgstr "انقل النافذة إلى مساحة العمل 1"
33
34#: data/50-mutter-navigation.xml:12
35msgid "Move window to workspace 2"
36msgstr "انقل النافذة إلى مساحة العمل 2"
37
38#: data/50-mutter-navigation.xml:15
39msgid "Move window to workspace 3"
40msgstr "انقل النافذة إلى مساحة العمل 3"
41
42#: data/50-mutter-navigation.xml:18
43msgid "Move window to workspace 4"
44msgstr "انقل النافذة إلى مساحة العمل 4"
45
46#: data/50-mutter-navigation.xml:21
47msgid "Move window to last workspace"
48msgstr "انقل النافذة إلى مساحة العمل الأخيرة"
49
50#: data/50-mutter-navigation.xml:24
51msgid "Move window one workspace up"
52msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى"
53
54#: data/50-mutter-navigation.xml:27
55msgid "Move window one workspace down"
56msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل"
57
58#: data/50-mutter-navigation.xml:30
59msgid "Move window one monitor to the left"
60msgstr "انقل النافذة شاشة واحدة إلى اليسار"
61
62#: data/50-mutter-navigation.xml:33
63msgid "Move window one monitor to the right"
64msgstr "انقل النافذة شاشة واحدة إلى اليمين"
65
66#: data/50-mutter-navigation.xml:36
67msgid "Move window one monitor up"
68msgstr "انقل النافذة شاشة واحدة إلى الأعلى"
69
70#: data/50-mutter-navigation.xml:39
71msgid "Move window one monitor down"
72msgstr "انقل النافذة شاشة واحدة إلى الأسفل"
73
74#: data/50-mutter-navigation.xml:43
75msgid "Switch applications"
76msgstr "تنقل بين التطبيقات"
77
78#: data/50-mutter-navigation.xml:48
79msgid "Switch to previous application"
80msgstr "انتقل إلى التطبيق السابق"
81
82#: data/50-mutter-navigation.xml:52
83msgid "Switch windows"
84msgstr "تنقل بين النوافذ"
85
86#: data/50-mutter-navigation.xml:57
87msgid "Switch to previous window"
88msgstr "انتقل إلى النافذة السابقة"
89
90#: data/50-mutter-navigation.xml:61
91msgid "Switch windows of an application"
92msgstr "تنقل بين نوافذ التطبيق"
93
94#: data/50-mutter-navigation.xml:66
95msgid "Switch to previous window of an application"
96msgstr "انتقل إلى نافذة التطبيق السابقة"
97
98#: data/50-mutter-navigation.xml:70
99msgid "Switch system controls"
100msgstr "تنقل بين تحكمات النظام"
101
102#: data/50-mutter-navigation.xml:75
103msgid "Switch to previous system control"
104msgstr "انتقل إلى تحكم النظام السابق"
105
106#: data/50-mutter-navigation.xml:79
107msgid "Switch windows directly"
108msgstr "تنقل مباشرة بين النوافذ"
109
110#: data/50-mutter-navigation.xml:84
111msgid "Switch directly to previous window"
112msgstr "انتقل مباشرة إلى النافذة السابقة"
113
114#: data/50-mutter-navigation.xml:88
115msgid "Switch windows of an app directly"
116msgstr "تنقل مباشرة بين نوافذ التطبيق"
117
118#: data/50-mutter-navigation.xml:93
119msgid "Switch directly to previous window of an app"
120msgstr "انتقل مباشرة إلى نافذة التطبيق السابقة"
121
122#: data/50-mutter-navigation.xml:97
123msgid "Switch system controls directly"
124msgstr "تنقل مباشرة بين تحكمات النظام"
125
126#: data/50-mutter-navigation.xml:102
127msgid "Switch directly to previous system control"
128msgstr "انتقل مباشرة إلى تحكم النظام السابق"
129
130#: data/50-mutter-navigation.xml:105
131msgid "Hide all normal windows"
132msgstr "أخفِ كل النوافذ العادية"
133
134#: data/50-mutter-navigation.xml:108
135msgid "Switch to workspace 1"
136msgstr "انتقل إلى مساحة العمل 1"
137
138#: data/50-mutter-navigation.xml:111
139msgid "Switch to workspace 2"
140msgstr "انتقل إلى مساحة العمل 2"
141
142#: data/50-mutter-navigation.xml:114
143msgid "Switch to workspace 3"
144msgstr "انتقل إلى مساحة العمل 3"
145
146#: data/50-mutter-navigation.xml:117
147msgid "Switch to workspace 4"
148msgstr "انتقل إلى مساحة العمل 4"
149
150#: data/50-mutter-navigation.xml:120
151msgid "Switch to last workspace"
152msgstr "انتقل إلى مساحة العمل الأخيرة"
153
154#: data/50-mutter-navigation.xml:123
155msgid "Move to workspace above"
156msgstr "انقل لمساحة العمل أعلى"
157
158#: data/50-mutter-navigation.xml:126
159msgid "Move to workspace below"
160msgstr "انقل لمساحة العمل أسفل"
161
162#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
163msgid "System"
164msgstr "النظام"
165
166#: data/50-mutter-system.xml:8
167msgid "Show the run command prompt"
168msgstr "أظهر محث تشغيل أمر"
169
170#: data/50-mutter-system.xml:10
171msgid "Show the activities overview"
172msgstr "أظهر نظرة عامة على الأنشطة"
173
174#: data/50-mutter-wayland.xml:8
175msgid "Restore the keyboard shortcuts"
176msgstr "استعد اختصارات لوحة المفاتيح"
177
178#: data/50-mutter-windows.xml:6
179msgid "Windows"
180msgstr "النوافذ"
181
182#: data/50-mutter-windows.xml:8
183msgid "Activate the window menu"
184msgstr "فعّل قائمة النافذة"
185
186#: data/50-mutter-windows.xml:10
187msgid "Toggle fullscreen mode"
188msgstr "بدّل نمط ملء الشاشة"
189
190#: data/50-mutter-windows.xml:12
191msgid "Toggle maximization state"
192msgstr "بدّل حالة التكبير"
193
194#: data/50-mutter-windows.xml:14
195msgid "Maximize window"
196msgstr "كبّر النّافذة"
197
198#: data/50-mutter-windows.xml:16
199msgid "Restore window"
200msgstr "استعد النّافذة"
201
202#: data/50-mutter-windows.xml:18
203msgid "Close window"
204msgstr "أغلق النّافذة"
205
206#: data/50-mutter-windows.xml:20
207msgid "Hide window"
208msgstr "أخفِ النّافذة"
209
210#: data/50-mutter-windows.xml:22
211msgid "Move window"
212msgstr "انقل النّافذة"
213
214#: data/50-mutter-windows.xml:24
215msgid "Resize window"
216msgstr "حجّم النّافذة"
217
218#: data/50-mutter-windows.xml:27
219msgid "Toggle window on all workspaces or one"
220msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها"
221
222#: data/50-mutter-windows.xml:29
223msgid "Raise window if covered, otherwise lower it"
224msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك"
225
226#: data/50-mutter-windows.xml:31
227msgid "Raise window above other windows"
228msgstr "ارفع النافذة فوق النوافذ الأخرى"
229
230#: data/50-mutter-windows.xml:33
231msgid "Lower window below other windows"
232msgstr "اخفض النافذة تحت النوافذ الأخرى"
233
234#: data/50-mutter-windows.xml:35
235msgid "Maximize window vertically"
236msgstr "كبّر النافذة رأسيا"
237
238#: data/50-mutter-windows.xml:37
239msgid "Maximize window horizontally"
240msgstr "كبّر النافذة أفقيا"
241
242#: data/50-mutter-windows.xml:41
243msgid "View split on left"
244msgstr "المنظور مقسوم على اليمين"
245
246#: data/50-mutter-windows.xml:45
247msgid "View split on right"
248msgstr "المنظور مقسوم على اليسار"
249
250#: data/mutter.desktop.in:4
251msgid "Mutter"
252msgstr "مَتَر"
253
254#: data/org.gnome.mutter.gschema.xml.in:7
255msgid "Modifier to use for extended window management operations"
256msgstr "المغير الذي سيُستعمل لتمديد عمليات إدارة النوافذ "
257
258#: data/org.gnome.mutter.gschema.xml.in:8
259msgid ""
260"This key will initiate the “overlay”, which is a combination window overview "
261"and application launching system. The default is intended to be the “Windows "
262"key” on PC hardware. It’s expected that this binding either the default or "
263"set to the empty string."
264msgstr ""
265
266#: data/org.gnome.mutter.gschema.xml.in:20
267#, fuzzy
268msgid "Attach modal dialogs"
269msgstr "صندوق حوار سائد"
270
271#: data/org.gnome.mutter.gschema.xml.in:21
272msgid ""
273"When true, instead of having independent titlebars, modal dialogs appear "
274"attached to the titlebar of the parent window and are moved together with "
275"the parent window."
276msgstr ""
277
278#: data/org.gnome.mutter.gschema.xml.in:30
279msgid "Enable edge tiling when dropping windows on screen edges"
280msgstr ""
281
282#: data/org.gnome.mutter.gschema.xml.in:31
283msgid ""
284"If enabled, dropping windows on vertical screen edges maximizes them "
285"vertically and resizes them horizontally to cover half of the available "
286"area. Dropping windows on the top screen edge maximizes them completely."
287msgstr ""
288
289#: data/org.gnome.mutter.gschema.xml.in:40
290msgid "Workspaces are managed dynamically"
291msgstr ""
292
293#: data/org.gnome.mutter.gschema.xml.in:41
294msgid ""
295"Determines whether workspaces are managed dynamically or whether there’s a "
296"static number of workspaces (determined by the num-workspaces key in org."
297"gnome.desktop.wm.preferences)."
298msgstr ""
299
300#: data/org.gnome.mutter.gschema.xml.in:50
301msgid "Workspaces only on primary"
302msgstr ""
303
304#: data/org.gnome.mutter.gschema.xml.in:51
305msgid ""
306"Determines whether workspace switching should happen for windows on all "
307"monitors or only for windows on the primary monitor."
308msgstr ""
309
310#: data/org.gnome.mutter.gschema.xml.in:59
311msgid "No tab popup"
312msgstr ""
313
314#: data/org.gnome.mutter.gschema.xml.in:60
315msgid ""
316"Determines whether the use of popup and highlight frame should be disabled "
317"for window cycling."
318msgstr ""
319
320#: data/org.gnome.mutter.gschema.xml.in:68
321msgid "Delay focus changes until the pointer stops moving"
322msgstr ""
323
324#: data/org.gnome.mutter.gschema.xml.in:69
325msgid ""
326"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
327"focus will not be changed immediately when entering a window, but only after "
328"the pointer stops moving."
329msgstr ""
330
331#: data/org.gnome.mutter.gschema.xml.in:79
332msgid "Draggable border width"
333msgstr ""
334
335#: data/org.gnome.mutter.gschema.xml.in:80
336msgid ""
337"The amount of total draggable borders. If the theme’s visible borders are "
338"not enough, invisible borders will be added to meet this value."
339msgstr ""
340
341#: data/org.gnome.mutter.gschema.xml.in:89
342msgid "Auto maximize nearly monitor sized windows"
343msgstr ""
344
345#: data/org.gnome.mutter.gschema.xml.in:90
346msgid ""
347"If enabled, new windows that are initially the size of the monitor "
348"automatically get maximized."
349msgstr ""
350
351#: data/org.gnome.mutter.gschema.xml.in:98
352msgid "Place new windows in the center"
353msgstr ""
354
355#: data/org.gnome.mutter.gschema.xml.in:99
356msgid ""
357"When true, the new windows will always be put in the center of the active "
358"screen of the monitor."
359msgstr ""
360
361#: data/org.gnome.mutter.gschema.xml.in:107
362msgid "Enable experimental features"
363msgstr ""
364
365#: data/org.gnome.mutter.gschema.xml.in:108
366msgid ""
367"To enable experimental features, add the feature keyword to the list. "
368"Whether the feature requires restarting the compositor depends on the given "
369"feature. Any experimental feature is not required to still be available, or "
370"configurable. Don’t expect adding anything in this setting to be future "
371"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
372"mutter default to layout logical monitors in a logical pixel coordinate "
373"space, while scaling monitor framebuffers instead of window content, to "
374"manage HiDPI monitors. Does not require a restart."
375msgstr ""
376
377#: data/org.gnome.mutter.gschema.xml.in:141
378msgid "Select window from tab popup"
379msgstr ""
380
381#: data/org.gnome.mutter.gschema.xml.in:146
382msgid "Cancel tab popup"
383msgstr ""
384
385#: data/org.gnome.mutter.gschema.xml.in:151
386#, fuzzy
387msgid "Switch monitor configurations"
388msgstr "غيّر الشاشة"
389
390#: data/org.gnome.mutter.gschema.xml.in:156
391msgid "Rotates the built-in monitor configuration"
392msgstr ""
393
394#: data/org.gnome.mutter.wayland.gschema.xml.in:6
395#, fuzzy
396msgid "Switch to VT 1"
397msgstr "انتقل إلى مساحة العمل 1"
398
399#: data/org.gnome.mutter.wayland.gschema.xml.in:10
400#, fuzzy
401msgid "Switch to VT 2"
402msgstr "انتقل إلى مساحة العمل 2"
403
404#: data/org.gnome.mutter.wayland.gschema.xml.in:14
405#, fuzzy
406msgid "Switch to VT 3"
407msgstr "انتقل إلى مساحة العمل 3"
408
409#: data/org.gnome.mutter.wayland.gschema.xml.in:18
410#, fuzzy
411msgid "Switch to VT 4"
412msgstr "انتقل إلى مساحة العمل 4"
413
414#: data/org.gnome.mutter.wayland.gschema.xml.in:22
415#, fuzzy
416msgid "Switch to VT 5"
417msgstr "انتقل إلى مساحة العمل 5"
418
419#: data/org.gnome.mutter.wayland.gschema.xml.in:26
420#, fuzzy
421msgid "Switch to VT 6"
422msgstr "انتقل إلى مساحة العمل 6"
423
424#: data/org.gnome.mutter.wayland.gschema.xml.in:30
425#, fuzzy
426msgid "Switch to VT 7"
427msgstr "انتقل إلى مساحة العمل 7"
428
429#: data/org.gnome.mutter.wayland.gschema.xml.in:34
430#, fuzzy
431msgid "Switch to VT 8"
432msgstr "انتقل إلى مساحة العمل 8"
433
434#: data/org.gnome.mutter.wayland.gschema.xml.in:38
435#, fuzzy
436msgid "Switch to VT 9"
437msgstr "انتقل إلى مساحة العمل 9"
438
439#: data/org.gnome.mutter.wayland.gschema.xml.in:42
440#, fuzzy
441msgid "Switch to VT 10"
442msgstr "انتقل إلى مساحة العمل 10"
443
444#: data/org.gnome.mutter.wayland.gschema.xml.in:46
445#, fuzzy
446msgid "Switch to VT 11"
447msgstr "انتقل إلى مساحة العمل 11"
448
449#: data/org.gnome.mutter.wayland.gschema.xml.in:50
450#, fuzzy
451msgid "Switch to VT 12"
452msgstr "انتقل إلى مساحة العمل 12"
453
454#: data/org.gnome.mutter.wayland.gschema.xml.in:54
455msgid "Re-enable shortcuts"
456msgstr ""
457
458#: data/org.gnome.mutter.wayland.gschema.xml.in:64
459msgid "Allow grabs with Xwayland"
460msgstr ""
461
462#: data/org.gnome.mutter.wayland.gschema.xml.in:65
463msgid ""
464"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
465"taken into account. For a X11 grab to be taken into account under Wayland, "
466"the client must also either send a specific X11 ClientMessage to the root "
467"window or be among the applications white-listed in key “xwayland-grab-"
468"access-rules”."
469msgstr ""
470
471#: data/org.gnome.mutter.wayland.gschema.xml.in:77
472msgid "Xwayland applications allowed to issue keyboard grabs"
473msgstr ""
474
475#: data/org.gnome.mutter.wayland.gschema.xml.in:78
476msgid ""
477"List the resource names or resource class of X11 windows either allowed or "
478"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
479"resource class of a given X11 window can be obtained using the command "
480"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
481"Values starting with “!” are blacklisted, which has precedence over the "
482"whitelist, to revoke applications from the default system list. The default "
483"system list includes the following applications: "
484"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
485"using the specific keyboard shortcut defined by the keybinding key “restore-"
486"shortcuts”."
487msgstr ""
488
27#. TRANSLATORS: This string refers to a button that switches between489#. TRANSLATORS: This string refers to a button that switches between
28#. * different modes.490#. * different modes.
29#.491#.
30#: ../src/backends/meta-input-settings.c:2167492#: src/backends/meta-input-settings.c:2424
31#, c-format493#, c-format
32msgid "Mode Switch (Group %d)"494msgid "Mode Switch (Group %d)"
33msgstr ""495msgstr "تغيير الأوضاع (مجموعة %d)"
34496
35#. TRANSLATORS: This string refers to an action, cycles drawing tablets'497#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
36#. * mapping through the available outputs.498#. * mapping through the available outputs.
37#.499#.
38#: ../src/backends/meta-input-settings.c:2190500#: src/backends/meta-input-settings.c:2447
39msgid "Switch monitor"501msgid "Switch monitor"
40msgstr "غيّر الشاشة"502msgstr "غيّر الشاشة"
41503
42#: ../src/backends/meta-input-settings.c:2192504#: src/backends/meta-input-settings.c:2449
43msgid "Show on-screen help"505msgid "Show on-screen help"
44msgstr "اعرض المساعدة على الشاشة"506msgstr "اعرض المساعدة على الشاشة"
45507
46#: ../src/backends/meta-monitor-manager.c:900508#: src/backends/meta-monitor-manager.c:955
47msgid "Built-in display"509msgid "Built-in display"
48msgstr "شاشة مدمجة"510msgstr "شاشة مدمجة"
49511
50#: ../src/backends/meta-monitor-manager.c:923512#: src/backends/meta-monitor-manager.c:987
51msgid "Unknown"513msgid "Unknown"
52msgstr "غير معروفة"514msgstr "غير معروفة"
53515
54#: ../src/backends/meta-monitor-manager.c:925516#: src/backends/meta-monitor-manager.c:989
55msgid "Unknown Display"517msgid "Unknown Display"
56msgstr "شاشة غير معروفة"518msgstr "شاشة غير معروفة"
57519
58#. TRANSLATORS: this is a monitor vendor name, followed by a520#: src/backends/meta-monitor-manager.c:997
59#. * size in inches, like 'Dell 15"'
60#.
61#: ../src/backends/meta-monitor-manager.c:933
62#, c-format521#, c-format
522msgctxt ""
523"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
524msgid "%s %s"
525msgstr "%s %s"
526
527#: src/backends/meta-monitor-manager.c:1005
528#, c-format
529msgctxt ""
530"This is a monitor vendor name followed by product/model name where size in "
531"inches could not be calculated, e.g. Dell U2414H"
63msgid "%s %s"532msgid "%s %s"
64msgstr "%s %s"533msgstr "%s %s"
65534
66#. This probably means that a non-WM compositor like xcompmgr is running;535#. This probably means that a non-WM compositor like xcompmgr is running;
67#. * we have no way to get it to exit536#. * we have no way to get it to exit
68#: ../src/compositor/compositor.c:476537#: src/compositor/compositor.c:482
69#, c-format538#, c-format
70msgid ""539msgid ""
71"Another compositing manager is already running on screen %i on display “%s”."540"Another compositing manager is already running on screen %i on display “%s”."
72msgstr "يعمل مدير مزج آخر على الشاشة %i و العرض ”%s“."541msgstr "يعمل مدير مزج آخر على الشاشة %i و العرض ”%s“."
73542
74#: ../src/core/bell.c:194543#: src/core/bell.c:192
75msgid "Bell event"544msgid "Bell event"
76msgstr "حدث جرس"545msgstr "حدث جرس"
77546
78#: ../src/core/display.c:608547#: src/core/main.c:185
79#, c-format
80msgid "Failed to open X Window System display “%s”\n"
81msgstr "فشل فتح عرض نظام نوافذ إكس ”%s“\n"
82
83#: ../src/core/main.c:189
84msgid "Disable connection to session manager"548msgid "Disable connection to session manager"
85msgstr "عطّل الاتصال بمدير الجلسة"549msgstr "عطّل الاتصال بمدير الجلسة"
86550
87#: ../src/core/main.c:195551#: src/core/main.c:191
88msgid "Replace the running window manager"552msgid "Replace the running window manager"
89msgstr "استبدل بمدير النوافذ الذي يعمل"553msgstr "استبدل بمدير النوافذ الذي يعمل"
90554
91#: ../src/core/main.c:201555#: src/core/main.c:197
92msgid "Specify session management ID"556msgid "Specify session management ID"
93msgstr "حدّد رقم هويّة إدارة الجلسة"557msgstr "حدّد رقم هويّة إدارة الجلسة"
94558
95#: ../src/core/main.c:206559#: src/core/main.c:202
96msgid "X Display to use"560msgid "X Display to use"
97msgstr "معراض س الذي سيستعمل"561msgstr "معراض س الذي سيستعمل"
98562
99#: ../src/core/main.c:212563#: src/core/main.c:208
100msgid "Initialize session from savefile"564msgid "Initialize session from savefile"
101msgstr "ابدأ الجلسة من ملف محفوظ"565msgstr "ابدأ الجلسة من ملف محفوظ"
102566
103#: ../src/core/main.c:218567#: src/core/main.c:214
104msgid "Make X calls synchronous"568msgid "Make X calls synchronous"
105msgstr "اجعل نداءات س متزامنة"569msgstr "اجعل نداءات س متزامنة"
106570
107#: ../src/core/main.c:225571#: src/core/main.c:221
108msgid "Run as a wayland compositor"572msgid "Run as a wayland compositor"
109msgstr ""573msgstr ""
110574
111#: ../src/core/main.c:231575#: src/core/main.c:227
112msgid "Run as a nested compositor"576msgid "Run as a nested compositor"
113msgstr ""577msgstr ""
114578
115#: ../src/core/main.c:239579#: src/core/main.c:233
580msgid "Run wayland compositor without starting Xwayland"
581msgstr ""
582
583#: src/core/main.c:241
116msgid "Run as a full display server, rather than nested"584msgid "Run as a full display server, rather than nested"
117msgstr ""585msgstr ""
118586
587#: src/core/main.c:247
588msgid "Run with X11 backend"
589msgstr ""
590
119#. Translators: %s is a window title591#. Translators: %s is a window title
120#: ../src/core/meta-close-dialog-default.c:147592#: src/core/meta-close-dialog-default.c:151
121#, c-format593#, c-format
122msgid "“%s” is not responding."594msgid "“%s” is not responding."
123msgstr "”‏%s“ لا يستجيب."595msgstr "”‏%s“ لا يستجيب."
124596
125#: ../src/core/meta-close-dialog-default.c:149597#: src/core/meta-close-dialog-default.c:153
126msgid "Application is not responding."598msgid "Application is not responding."
127msgstr "لا يستجيب التطبيق"599msgstr "لا يستجيب التطبيق"
128600
129#: ../src/core/meta-close-dialog-default.c:154601#: src/core/meta-close-dialog-default.c:158
130msgid ""602msgid ""
131"You may choose to wait a short while for it to continue or force the "603"You may choose to wait a short while for it to continue or force the "
132"application to quit entirely."604"application to quit entirely."
133msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية."605msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية."
134606
135#: ../src/core/meta-close-dialog-default.c:161607#: src/core/meta-close-dialog-default.c:165
136msgid "_Force Quit"608msgid "_Force Quit"
137msgstr "أ_جبر الإنهاء"609msgstr "أ_جبر الإنهاء"
138610
139#: ../src/core/meta-close-dialog-default.c:161611#: src/core/meta-close-dialog-default.c:165
140msgid "_Wait"612msgid "_Wait"
141msgstr "ا_نتظر"613msgstr "ا_نتظر"
142614
143#: ../src/core/mutter.c:39615#: src/core/mutter.c:38
144#, c-format616#, c-format
145msgid ""617msgid ""
146"mutter %s\n"618"mutter %s\n"
@@ -154,43 +626,52 @@ msgstr ""
154"هذا برنامج حر، راجع المصدر لشروط النسخ.\n"626"هذا برنامج حر، راجع المصدر لشروط النسخ.\n"
155"لا يوجد أي ضمان: و لا حتى ضمان قابلية التسويق أو المناسبة لأي هدف.\n"627"لا يوجد أي ضمان: و لا حتى ضمان قابلية التسويق أو المناسبة لأي هدف.\n"
156628
157#: ../src/core/mutter.c:53629#: src/core/mutter.c:52
158msgid "Print version"630msgid "Print version"
159msgstr "اطبع الإصدارة"631msgstr "اطبع الإصدارة"
160632
161#: ../src/core/mutter.c:59633#: src/core/mutter.c:58
162msgid "Mutter plugin to use"634msgid "Mutter plugin to use"
163msgstr "ملحق مَتَر الذي سيُستخدم"635msgstr "ملحق مَتَر الذي سيُستخدم"
164636
165#: ../src/core/prefs.c:1997637#: src/core/prefs.c:1786
166#, c-format638#, c-format
167msgid "Workspace %d"639msgid "Workspace %d"
168msgstr "مساحة العمل %d"640msgstr "مساحة العمل %d"
169641
170#: ../src/core/screen.c:583642#: src/core/util.c:121
643msgid "Mutter was compiled without support for verbose mode\n"
644msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n"
645
646#: src/wayland/meta-wayland-tablet-pad.c:567
647#, c-format
648msgid "Mode Switch: Mode %d"
649msgstr ""
650
651#: src/x11/meta-x11-display.c:666
171#, c-format652#, c-format
172msgid ""653msgid ""
173"Display “%s” already has a window manager; try using the --replace option to "654"Display “%s” already has a window manager; try using the --replace option to "
174"replace the current window manager."655"replace the current window manager."
175msgstr ""656msgstr ""
176"الشاشة ”%s“ لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace لتحُلّ"657"الشاشة ”%s“ لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace لتحُلّ "
177" محلّ مدير النوافذ الحالي."658"محلّ مدير النوافذ الحالي."
178659
179#: ../src/core/screen.c:668660#: src/x11/meta-x11-display.c:1008
180#, c-format661msgid "Failed to initialize GDK\n"
181msgid "Screen %d on display “%s” is invalid\n"662msgstr ""
182msgstr "الشاشة %d على العرض ”%s“ غير صحيحة\n"
183663
184#: ../src/core/util.c:120664#: src/x11/meta-x11-display.c:1032
185msgid "Mutter was compiled without support for verbose mode\n"665#, c-format
186msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n"666msgid "Failed to open X Window System display “%s”\n"
667msgstr "فشل فتح عرض نظام نوافذ إكس ”%s“\n"
187668
188#: ../src/wayland/meta-wayland-tablet-pad.c:563669#: src/x11/meta-x11-display.c:1113
189#, c-format670#, c-format
190msgid "Mode Switch: Mode %d"671msgid "Screen %d on display “%s” is invalid\n"
191msgstr ""672msgstr "الشاشة %d على العرض ”%s“ غير صحيحة\n"
192673
193#: ../src/x11/session.c:1815674#: src/x11/session.c:1821
194msgid ""675msgid ""
195"These windows do not support “save current setup” and will have to be "676"These windows do not support “save current setup” and will have to be "
196"restarted manually next time you log in."677"restarted manually next time you log in."
@@ -198,245 +679,26 @@ msgstr ""
198"هذه النوافذ لا تدعم ” الضبط الحالي&quot; إعادة تشغيلها يدويا عند الولوج "679"هذه النوافذ لا تدعم ” الضبط الحالي&quot; إعادة تشغيلها يدويا عند الولوج "
199"المرة القادمة."680"المرة القادمة."
200681
201#: ../src/x11/window-props.c:559682#: src/x11/window-props.c:569
202#, c-format683#, c-format
203msgid "%s (on %s)"684msgid "%s (on %s)"
204msgstr "%s (على %s)"685msgstr "%s (على %s)"
205686
206#~ msgid "Navigation"
207#~ msgstr "الإبحار"
208
209#~ msgid "Move window to workspace 1"
210#~ msgstr "انقل النافذة إلى مساحة العمل 1"
211
212#~ msgid "Move window to workspace 2"
213#~ msgstr "انقل النافذة إلى مساحة العمل 2"
214
215#~ msgid "Move window to workspace 3"
216#~ msgstr "انقل النافذة إلى مساحة العمل 3"
217
218#~ msgid "Move window to workspace 4"
219#~ msgstr "انقل النافذة إلى مساحة العمل 4"
220
221#~ msgid "Move window to last workspace"
222#~ msgstr "انقل النافذة إلى مساحة العمل الأخيرة"
223
224#~ msgid "Move window one workspace to the left"687#~ msgid "Move window one workspace to the left"
225#~ msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار"688#~ msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار"
226689
227#~ msgid "Move window one workspace to the right"690#~ msgid "Move window one workspace to the right"
228#~ msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين"691#~ msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين"
229692
230#~ msgid "Move window one workspace up"
231#~ msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى"
232
233#~ msgid "Move window one workspace down"
234#~ msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل"
235
236#~ msgid "Move window one monitor to the left"
237#~ msgstr "انقل النافذة شاشة واحدة إلى اليسار"
238
239#~ msgid "Move window one monitor to the right"
240#~ msgstr "انقل النافذة شاشة واحدة إلى اليمين"
241
242#~ msgid "Move window one monitor up"
243#~ msgstr "انقل النافذة شاشة واحدة إلى الأعلى"
244
245#~ msgid "Move window one monitor down"
246#~ msgstr "انقل النافذة شاشة واحدة إلى الأسفل"
247
248#~ msgid "Switch applications"
249#~ msgstr "تنقل بين التطبيقات"
250
251#~ msgid "Switch to previous application"
252#~ msgstr "انتقل إلى التطبيق السابق"
253
254#~ msgid "Switch windows"
255#~ msgstr "تنقل بين النوافذ"
256
257#~ msgid "Switch to previous window"
258#~ msgstr "انتقل إلى النافذة السابقة"
259
260#~ msgid "Switch windows of an application"
261#~ msgstr "تنقل بين نوافذ التطبيق"
262
263#~ msgid "Switch to previous window of an application"
264#~ msgstr "انتقل إلى نافذة التطبيق السابقة"
265
266#~ msgid "Switch system controls"
267#~ msgstr "تنقل بين تحكمات النظام"
268
269#~ msgid "Switch to previous system control"
270#~ msgstr "انتقل إلى تحكم النظام السابق"
271
272#~ msgid "Switch windows directly"
273#~ msgstr "تنقل مباشرة بين النوافذ"
274
275#~ msgid "Switch directly to previous window"
276#~ msgstr "انتقل مباشرة إلى النافذة السابقة"
277
278#~ msgid "Switch windows of an app directly"
279#~ msgstr "تنقل مباشرة بين نوافذ التطبيق"
280
281#~ msgid "Switch directly to previous window of an app"
282#~ msgstr "انتقل مباشرة إلى نافذة التطبيق السابقة"
283
284#~ msgid "Switch system controls directly"
285#~ msgstr "تنقل مباشرة بين تحكمات النظام"
286
287#~ msgid "Switch directly to previous system control"
288#~ msgstr "انتقل مباشرة إلى تحكم النظام السابق"
289
290#~ msgid "Hide all normal windows"
291#~ msgstr "أخفِ كل النوافذ العادية"
292
293#~ msgid "Switch to workspace 1"
294#~ msgstr "انتقل إلى مساحة العمل 1"
295
296#~ msgid "Switch to workspace 2"
297#~ msgstr "انتقل إلى مساحة العمل 2"
298
299#~ msgid "Switch to workspace 3"
300#~ msgstr "انتقل إلى مساحة العمل 3"
301
302#~ msgid "Switch to workspace 4"
303#~ msgstr "انتقل إلى مساحة العمل 4"
304
305#~ msgid "Switch to last workspace"
306#~ msgstr "انتقل إلى مساحة العمل الأخيرة"
307
308#~ msgid "Move to workspace left"693#~ msgid "Move to workspace left"
309#~ msgstr "انقل لمساحة العمل على اليسار"694#~ msgstr "انقل لمساحة العمل على اليسار"
310695
311#~ msgid "Move to workspace right"696#~ msgid "Move to workspace right"
312#~ msgstr "انقل لمساحة العمل على اليمين"697#~ msgstr "انقل لمساحة العمل على اليمين"
313698
314#~ msgid "Move to workspace above"
315#~ msgstr "انقل لمساحة العمل أعلى"
316
317#~ msgid "Move to workspace below"
318#~ msgstr "انقل لمساحة العمل أسفل"
319
320#~ msgid "System"
321#~ msgstr "النظام"
322
323#~ msgid "Show the run command prompt"
324#~ msgstr "أظهر محث تشغيل أمر"
325
326#~ msgid "Show the activities overview"
327#~ msgstr "أظهر نظرة عامة على الأنشطة"
328
329#~ msgid "Windows"
330#~ msgstr "النوافذ"
331
332#~ msgid "Activate the window menu"
333#~ msgstr "فعّل قائمة النافذة"
334
335#~ msgid "Toggle fullscreen mode"
336#~ msgstr "بدّل نمط ملء الشاشة"
337
338#~ msgid "Toggle maximization state"
339#~ msgstr "بدّل حالة التكبير"
340
341#~ msgid "Maximize window"
342#~ msgstr "كبّر النّافذة"
343
344#~ msgid "Restore window"
345#~ msgstr "استعد النّافذة"
346
347#~ msgid "Toggle shaded state"699#~ msgid "Toggle shaded state"
348#~ msgstr "بدّل حالة الإخفاء"700#~ msgstr "بدّل حالة الإخفاء"
349701
350#~ msgid "Close window"
351#~ msgstr "أغلق النّافذة"
352
353#~ msgid "Hide window"
354#~ msgstr "أخفِ النّافذة"
355
356#~ msgid "Move window"
357#~ msgstr "انقل النّافذة"
358
359#~ msgid "Resize window"
360#~ msgstr "حجّم النّافذة"
361
362#~ msgid "Toggle window on all workspaces or one"
363#~ msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها"
364
365#~ msgid "Raise window if covered, otherwise lower it"
366#~ msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك"
367
368#~ msgid "Raise window above other windows"
369#~ msgstr "ارفع النافذة فوق النوافذ الأخرى"
370
371#~ msgid "Lower window below other windows"
372#~ msgstr "اخفض النافذة تحت النوافذ الأخرى"
373
374#~ msgid "Maximize window vertically"
375#~ msgstr "كبّر النافذة رأسيا"
376
377#~ msgid "Maximize window horizontally"
378#~ msgstr "كبّر النافذة أفقيا"
379
380#~ msgid "View split on left"
381#~ msgstr "المنظور مقسوم على اليمين"
382
383#~ msgid "View split on right"
384#~ msgstr "المنظور مقسوم على اليسار"
385
386#~ msgid "Mutter"
387#~ msgstr "مَتَر"
388
389#~ msgid "Modifier to use for extended window management operations"
390#~ msgstr "المغير الذي سيُستعمل لتمديد عمليات إدارة النوافذ "
391
392#, fuzzy
393#~ msgid "Switch to VT 1"
394#~ msgstr "انتقل إلى مساحة العمل 1"
395
396#, fuzzy
397#~ msgid "Switch to VT 2"
398#~ msgstr "انتقل إلى مساحة العمل 2"
399
400#, fuzzy
401#~ msgid "Switch to VT 3"
402#~ msgstr "انتقل إلى مساحة العمل 3"
403
404#, fuzzy
405#~ msgid "Switch to VT 4"
406#~ msgstr "انتقل إلى مساحة العمل 4"
407
408#, fuzzy
409#~ msgid "Switch to VT 5"
410#~ msgstr "انتقل إلى مساحة العمل 5"
411
412#, fuzzy
413#~ msgid "Switch to VT 6"
414#~ msgstr "انتقل إلى مساحة العمل 6"
415
416#, fuzzy
417#~ msgid "Switch to VT 7"
418#~ msgstr "انتقل إلى مساحة العمل 7"
419
420#, fuzzy
421#~ msgid "Switch to VT 8"
422#~ msgstr "انتقل إلى مساحة العمل 8"
423
424#, fuzzy
425#~ msgid "Switch to VT 9"
426#~ msgstr "انتقل إلى مساحة العمل 9"
427
428#, fuzzy
429#~ msgid "Switch to VT 10"
430#~ msgstr "انتقل إلى مساحة العمل 10"
431
432#, fuzzy
433#~ msgid "Switch to VT 11"
434#~ msgstr "انتقل إلى مساحة العمل 11"
435
436#, fuzzy
437#~ msgid "Switch to VT 12"
438#~ msgstr "انتقل إلى مساحة العمل 12"
439
440#~ msgid "Unknown window information request: %d"702#~ msgid "Unknown window information request: %d"
441#~ msgstr "طلب معلومات نافذة مجهول: %d"703#~ msgstr "طلب معلومات نافذة مجهول: %d"
442704
@@ -1162,9 +1424,6 @@ msgstr "%s (على %s)"
1162#~ msgid "Border"1424#~ msgid "Border"
1163#~ msgstr "حد"1425#~ msgstr "حد"
11641426
1165#~ msgid "Attached Modal Dialog"
1166#~ msgstr "صندوق حوار سائد"
1167
1168#~ msgid "Button layout test %d"1427#~ msgid "Button layout test %d"
1169#~ msgstr "تجربة تصميم الأزرار %d"1428#~ msgstr "تجربة تصميم الأزرار %d"
11701429
diff --git a/po/es.po b/po/es.po
index c5dbad6..39e6635 100644
--- a/po/es.po
+++ b/po/es.po
@@ -13,7 +13,7 @@ msgid ""
13msgstr ""13msgstr ""
14"Project-Id-Version: mutter.master\n"14"Project-Id-Version: mutter.master\n"
15"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"15"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
16"POT-Creation-Date: 2019-02-20 14:35+0000\n"16"POT-Creation-Date: 2019-03-28 12:21+0000\n"
17"PO-Revision-Date: 2019-03-01 12:17+0100\n"17"PO-Revision-Date: 2019-03-01 12:17+0100\n"
18"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"18"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
19"Language-Team: es <gnome-es-list@gnome.org>\n"19"Language-Team: es <gnome-es-list@gnome.org>\n"
@@ -154,7 +154,7 @@ msgstr "Cambiar a la útima área de trabajo"
154154
155#: data/50-mutter-navigation.xml:123155#: data/50-mutter-navigation.xml:123
156msgid "Move to workspace above"156msgid "Move to workspace above"
157msgstr "Mover al área de trabajo de la arriba"157msgstr "Mover al área de trabajo de arriba"
158158
159#: data/50-mutter-navigation.xml:126159#: data/50-mutter-navigation.xml:126
160msgid "Move to workspace below"160msgid "Move to workspace below"
@@ -534,7 +534,7 @@ msgstr ""
534#. TRANSLATORS: This string refers to a button that switches between534#. TRANSLATORS: This string refers to a button that switches between
535#. * different modes.535#. * different modes.
536#.536#.
537#: src/backends/meta-input-settings.c:2423537#: src/backends/meta-input-settings.c:2424
538#, c-format538#, c-format
539msgid "Mode Switch (Group %d)"539msgid "Mode Switch (Group %d)"
540msgstr "Cambiar modo (grupo %d)"540msgstr "Cambiar modo (grupo %d)"
@@ -542,34 +542,34 @@ msgstr "Cambiar modo (grupo %d)"
542#. TRANSLATORS: This string refers to an action, cycles drawing tablets'542#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
543#. * mapping through the available outputs.543#. * mapping through the available outputs.
544#.544#.
545#: src/backends/meta-input-settings.c:2446545#: src/backends/meta-input-settings.c:2447
546msgid "Switch monitor"546msgid "Switch monitor"
547msgstr "Cambiar monitor"547msgstr "Cambiar monitor"
548548
549#: src/backends/meta-input-settings.c:2448549#: src/backends/meta-input-settings.c:2449
550msgid "Show on-screen help"550msgid "Show on-screen help"
551msgstr "Mostrar la ayuda en pantalla"551msgstr "Mostrar la ayuda en pantalla"
552552
553#: src/backends/meta-monitor-manager.c:954553#: src/backends/meta-monitor-manager.c:955
554msgid "Built-in display"554msgid "Built-in display"
555msgstr "Pantalla integrada"555msgstr "Pantalla integrada"
556556
557#: src/backends/meta-monitor-manager.c:986557#: src/backends/meta-monitor-manager.c:987
558msgid "Unknown"558msgid "Unknown"
559msgstr "Desconocida"559msgstr "Desconocida"
560560
561#: src/backends/meta-monitor-manager.c:988561#: src/backends/meta-monitor-manager.c:989
562msgid "Unknown Display"562msgid "Unknown Display"
563msgstr "Pantalla desconocida"563msgstr "Pantalla desconocida"
564564
565#: src/backends/meta-monitor-manager.c:996565#: src/backends/meta-monitor-manager.c:997
566#, c-format566#, c-format
567msgctxt ""567msgctxt ""
568"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"568"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
569msgid "%s %s"569msgid "%s %s"
570msgstr "%s %s"570msgstr "%s %s"
571571
572#: src/backends/meta-monitor-manager.c:1004572#: src/backends/meta-monitor-manager.c:1005
573#, c-format573#, c-format
574msgctxt ""574msgctxt ""
575"This is a monitor vendor name followed by product/model name where size in "575"This is a monitor vendor name followed by product/model name where size in "
@@ -587,7 +587,7 @@ msgstr ""
587"Ya existe un gestor de composición ejecutándose en la monitor %i, pantalla "587"Ya existe un gestor de composición ejecutándose en la monitor %i, pantalla "
588"«%s»."588"«%s»."
589589
590#: src/core/bell.c:252590#: src/core/bell.c:192
591msgid "Bell event"591msgid "Bell event"
592msgstr "Evento de campana"592msgstr "Evento de campana"
593593
@@ -636,16 +636,16 @@ msgid "Run with X11 backend"
636msgstr "Ejecutar con «backend» de X11"636msgstr "Ejecutar con «backend» de X11"
637637
638#. Translators: %s is a window title638#. Translators: %s is a window title
639#: src/core/meta-close-dialog-default.c:150639#: src/core/meta-close-dialog-default.c:151
640#, c-format640#, c-format
641msgid "“%s” is not responding."641msgid "“%s” is not responding."
642msgstr "«%s» no está respondiendo."642msgstr "«%s» no está respondiendo."
643643
644#: src/core/meta-close-dialog-default.c:152644#: src/core/meta-close-dialog-default.c:153
645msgid "Application is not responding."645msgid "Application is not responding."
646msgstr "La aplicación no está respondiendo."646msgstr "La aplicación no está respondiendo."
647647
648#: src/core/meta-close-dialog-default.c:157648#: src/core/meta-close-dialog-default.c:158
649msgid ""649msgid ""
650"You may choose to wait a short while for it to continue or force the "650"You may choose to wait a short while for it to continue or force the "
651"application to quit entirely."651"application to quit entirely."
@@ -653,11 +653,11 @@ msgstr ""
653"Puede elegir esperar un rato para ver si continua o forzar la aplicación "653"Puede elegir esperar un rato para ver si continua o forzar la aplicación "
654"para cerrarla completamente."654"para cerrarla completamente."
655655
656#: src/core/meta-close-dialog-default.c:164656#: src/core/meta-close-dialog-default.c:165
657msgid "_Force Quit"657msgid "_Force Quit"
658msgstr "_Forzar la salida"658msgstr "_Forzar la salida"
659659
660#: src/core/meta-close-dialog-default.c:164660#: src/core/meta-close-dialog-default.c:165
661msgid "_Wait"661msgid "_Wait"
662msgstr "_Esperar"662msgstr "_Esperar"
663663
@@ -717,7 +717,7 @@ msgstr "Falló al inicializar GDK\n"
717msgid "Failed to open X Window System display “%s”\n"717msgid "Failed to open X Window System display “%s”\n"
718msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n"718msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n"
719719
720#: src/x11/meta-x11-display.c:1115720#: src/x11/meta-x11-display.c:1113
721#, c-format721#, c-format
722msgid "Screen %d on display “%s” is invalid\n"722msgid "Screen %d on display “%s” is invalid\n"
723msgstr "La ventana %d en la pantalla «%s» no es válida\n"723msgstr "La ventana %d en la pantalla «%s» no es válida\n"
@@ -730,7 +730,7 @@ msgstr ""
730"Estas ventanas no soportan «guardar la configuración actual» y tendrán que "730"Estas ventanas no soportan «guardar la configuración actual» y tendrán que "
731"reiniciarse manualmente la próxima vez que inicie una sesión."731"reiniciarse manualmente la próxima vez que inicie una sesión."
732732
733#: src/x11/window-props.c:568733#: src/x11/window-props.c:569
734#, c-format734#, c-format
735msgid "%s (on %s)"735msgid "%s (on %s)"
736msgstr "%s (on %s)"736msgstr "%s (on %s)"
diff --git a/po/hr.po b/po/hr.po
index 493ab6e..fba9745 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -5,8 +5,8 @@ msgid ""
5msgstr ""5msgstr ""
6"Project-Id-Version: metacity 0\n"6"Project-Id-Version: metacity 0\n"
7"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"7"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
8"POT-Creation-Date: 2018-07-07 09:58+0000\n"8"POT-Creation-Date: 2019-02-04 17:52+0000\n"
9"PO-Revision-Date: 2018-09-02 18:40+0200\n"9"PO-Revision-Date: 2019-03-26 12:40+0100\n"
10"Last-Translator: gogo <trebelnik2@gmail.com>\n"10"Last-Translator: gogo <trebelnik2@gmail.com>\n"
11"Language-Team: Croatian <lokalizacija@linux.hr>\n"11"Language-Team: Croatian <lokalizacija@linux.hr>\n"
12"Language: hr\n"12"Language: hr\n"
@@ -16,7 +16,7 @@ msgstr ""
16"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"16"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"17"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"X-Launchpad-Export-Date: 2008-05-28 13:28+0000\n"18"X-Launchpad-Export-Date: 2008-05-28 13:28+0000\n"
19"X-Generator: Poedit 2.1.1\n"19"X-Generator: Poedit 2.0.6\n"
2020
21#: data/50-mutter-navigation.xml:621#: data/50-mutter-navigation.xml:6
22msgid "Navigation"22msgid "Navigation"
@@ -518,7 +518,7 @@ msgstr ""
518#. TRANSLATORS: This string refers to a button that switches between518#. TRANSLATORS: This string refers to a button that switches between
519#. * different modes.519#. * different modes.
520#.520#.
521#: src/backends/meta-input-settings.c:2325521#: src/backends/meta-input-settings.c:2423
522#, c-format522#, c-format
523msgid "Mode Switch (Group %d)"523msgid "Mode Switch (Group %d)"
524msgstr "Način prebacivanja (Grupa %d)"524msgstr "Način prebacivanja (Grupa %d)"
@@ -526,102 +526,109 @@ msgstr "Način prebacivanja (Grupa %d)"
526#. TRANSLATORS: This string refers to an action, cycles drawing tablets'526#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
527#. * mapping through the available outputs.527#. * mapping through the available outputs.
528#.528#.
529#: src/backends/meta-input-settings.c:2348529#: src/backends/meta-input-settings.c:2446
530msgid "Switch monitor"530msgid "Switch monitor"
531msgstr "Prebaci zaslon"531msgstr "Prebaci zaslon"
532532
533#: src/backends/meta-input-settings.c:2350533#: src/backends/meta-input-settings.c:2448
534msgid "Show on-screen help"534msgid "Show on-screen help"
535msgstr "Prikaži zaslonsku pomoć"535msgstr "Prikaži zaslonsku pomoć"
536536
537#: src/backends/meta-monitor-manager.c:907537#: src/backends/meta-monitor-manager.c:954
538msgid "Built-in display"538msgid "Built-in display"
539msgstr "Ugrađeni zaslon"539msgstr "Ugrađeni zaslon"
540540
541#: src/backends/meta-monitor-manager.c:930541#: src/backends/meta-monitor-manager.c:986
542msgid "Unknown"542msgid "Unknown"
543msgstr "Nepoznat"543msgstr "Nepoznat"
544544
545#: src/backends/meta-monitor-manager.c:932545#: src/backends/meta-monitor-manager.c:988
546msgid "Unknown Display"546msgid "Unknown Display"
547msgstr "Nepoznat zaslon"547msgstr "Nepoznat zaslon"
548548
549#. TRANSLATORS: this is a monitor vendor name, followed by a549#: src/backends/meta-monitor-manager.c:996
550#. * size in inches, like 'Dell 15"'550#, c-format
551#.551msgctxt ""
552#: src/backends/meta-monitor-manager.c:940552"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
553msgid "%s %s"
554msgstr "%s %s"
555
556#: src/backends/meta-monitor-manager.c:1004
553#, c-format557#, c-format
558msgctxt ""
559"This is a monitor vendor name followed by product/model name where size in "
560"inches could not be calculated, e.g. Dell U2414H"
554msgid "%s %s"561msgid "%s %s"
555msgstr "%s %s"562msgstr "%s %s"
556563
557#. This probably means that a non-WM compositor like xcompmgr is running;564#. This probably means that a non-WM compositor like xcompmgr is running;
558#. * we have no way to get it to exit565#. * we have no way to get it to exit
559#: src/compositor/compositor.c:481566#: src/compositor/compositor.c:482
560#, c-format567#, c-format
561msgid ""568msgid ""
562"Another compositing manager is already running on screen %i on display “%s”."569"Another compositing manager is already running on screen %i on display “%s”."
563msgstr ""570msgstr ""
564"Drugi upravitelja kompoziranja već je pokrenut na zaslonu %i prikaza \"%s\"."571"Drugi upravitelja kompoziranja već je pokrenut na zaslonu %i prikaza \"%s\"."
565572
566#: src/core/bell.c:254573#: src/core/bell.c:252
567msgid "Bell event"574msgid "Bell event"
568msgstr "Događaj zvona"575msgstr "Događaj zvona"
569576
570#: src/core/main.c:191577#: src/core/main.c:185
571msgid "Disable connection to session manager"578msgid "Disable connection to session manager"
572msgstr "Onemogući povezivanje sa upraviteljem sesija"579msgstr "Onemogući povezivanje sa upraviteljem sesija"
573580
574#: src/core/main.c:197581#: src/core/main.c:191
575msgid "Replace the running window manager"582msgid "Replace the running window manager"
576msgstr "Zamijeni pokrenutoga upravitelja porozora"583msgstr "Zamijeni pokrenutoga upravitelja porozora"
577584
578#: src/core/main.c:203585#: src/core/main.c:197
579msgid "Specify session management ID"586msgid "Specify session management ID"
580msgstr "Odredite ID upravljanja sesijama"587msgstr "Odredite ID upravljanja sesijama"
581588
582#: src/core/main.c:208589#: src/core/main.c:202
583msgid "X Display to use"590msgid "X Display to use"
584msgstr "X Prikaz za korištenje"591msgstr "X Prikaz za korištenje"
585592
586#: src/core/main.c:214593#: src/core/main.c:208
587msgid "Initialize session from savefile"594msgid "Initialize session from savefile"
588msgstr "Pokreni sesiju iz spremljene datoteke"595msgstr "Pokreni sesiju iz spremljene datoteke"
589596
590#: src/core/main.c:220597#: src/core/main.c:214
591msgid "Make X calls synchronous"598msgid "Make X calls synchronous"
592msgstr "Napravi X pozive usklađenim"599msgstr "Napravi X pozive usklađenim"
593600
594#: src/core/main.c:227601#: src/core/main.c:221
595msgid "Run as a wayland compositor"602msgid "Run as a wayland compositor"
596msgstr "Pokreni wayland kompozitor"603msgstr "Pokreni wayland kompozitor"
597604
598#: src/core/main.c:233605#: src/core/main.c:227
599msgid "Run as a nested compositor"606msgid "Run as a nested compositor"
600msgstr "Pokreni kao ugrađeni kompozitor"607msgstr "Pokreni kao ugrađeni kompozitor"
601608
602#: src/core/main.c:239609#: src/core/main.c:233
603msgid "Run wayland compositor without starting Xwayland"610msgid "Run wayland compositor without starting Xwayland"
604msgstr "Pokreni wayland kompozitor bez pokretanja Xwaylanda"611msgstr "Pokreni wayland kompozitor bez pokretanja Xwaylanda"
605612
606#: src/core/main.c:247613#: src/core/main.c:241
607msgid "Run as a full display server, rather than nested"614msgid "Run as a full display server, rather than nested"
608msgstr "Pokreni kao potpuni poslužitelj zaslona, radije nego ugrađeni"615msgstr "Pokreni kao potpuni poslužitelj zaslona, radije nego ugrađeni"
609616
610#: src/core/main.c:253617#: src/core/main.c:247
611msgid "Run with X11 backend"618msgid "Run with X11 backend"
612msgstr "Pokreni s X11 pozadinskim programom"619msgstr "Pokreni s X11 pozadinskim programom"
613620
614#. Translators: %s is a window title621#. Translators: %s is a window title
615#: src/core/meta-close-dialog-default.c:148622#: src/core/meta-close-dialog-default.c:150
616#, c-format623#, c-format
617msgid "“%s” is not responding."624msgid "“%s” is not responding."
618msgstr "“%s” ne odgovara."625msgstr "“%s” ne odgovara."
619626
620#: src/core/meta-close-dialog-default.c:150627#: src/core/meta-close-dialog-default.c:152
621msgid "Application is not responding."628msgid "Application is not responding."
622msgstr "Aplikacija ne odgovara."629msgstr "Aplikacija ne odgovara."
623630
624#: src/core/meta-close-dialog-default.c:155631#: src/core/meta-close-dialog-default.c:157
625msgid ""632msgid ""
626"You may choose to wait a short while for it to continue or force the "633"You may choose to wait a short while for it to continue or force the "
627"application to quit entirely."634"application to quit entirely."
@@ -629,15 +636,15 @@ msgstr ""
629"Možete pričekati neko vrijeme da aplikacija nastavi s radom ili možete "636"Možete pričekati neko vrijeme da aplikacija nastavi s radom ili možete "
630"prisiliti prekid rada aplikacije."637"prisiliti prekid rada aplikacije."
631638
632#: src/core/meta-close-dialog-default.c:162639#: src/core/meta-close-dialog-default.c:164
633msgid "_Force Quit"640msgid "_Force Quit"
634msgstr "_Prisili izlaženje"641msgstr "_Prisili izlaženje"
635642
636#: src/core/meta-close-dialog-default.c:162643#: src/core/meta-close-dialog-default.c:164
637msgid "_Wait"644msgid "_Wait"
638msgstr "_Čekaj"645msgstr "_Čekaj"
639646
640#: src/core/mutter.c:39647#: src/core/mutter.c:38
641#, c-format648#, c-format
642msgid ""649msgid ""
643"mutter %s\n"650"mutter %s\n"
@@ -652,20 +659,20 @@ msgstr ""
652"NE postoji jamstvo; čak i bez podrazumijevanih jamstava UPORABLJIVOSTI ZA "659"NE postoji jamstvo; čak i bez podrazumijevanih jamstava UPORABLJIVOSTI ZA "
653"ODREĐENU SVRHU.\n"660"ODREĐENU SVRHU.\n"
654661
655#: src/core/mutter.c:53662#: src/core/mutter.c:52
656msgid "Print version"663msgid "Print version"
657msgstr "Inačica za ispis"664msgstr "Inačica za ispis"
658665
659#: src/core/mutter.c:59666#: src/core/mutter.c:58
660msgid "Mutter plugin to use"667msgid "Mutter plugin to use"
661msgstr "Mutter priključak koji se koristi"668msgstr "Mutter priključak koji se koristi"
662669
663#: src/core/prefs.c:1915670#: src/core/prefs.c:1786
664#, c-format671#, c-format
665msgid "Workspace %d"672msgid "Workspace %d"
666msgstr "Radni prostor %d"673msgstr "Radni prostor %d"
667674
668#: src/core/util.c:120675#: src/core/util.c:121
669msgid "Mutter was compiled without support for verbose mode\n"676msgid "Mutter was compiled without support for verbose mode\n"
670msgstr "Mutter je kompiliran bez podrške za opširan način rada\n"677msgstr "Mutter je kompiliran bez podrške za opširan način rada\n"
671678
@@ -683,21 +690,21 @@ msgstr ""
683"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "690"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "
684"mogućnost za zamjenu trenutnog upravitelja prozora."691"mogućnost za zamjenu trenutnog upravitelja prozora."
685692
686#: src/x11/meta-x11-display.c:1010693#: src/x11/meta-x11-display.c:1008
687msgid "Failed to initialize GDK\n"694msgid "Failed to initialize GDK\n"
688msgstr "Neuspjelo GDK pokretanje\n"695msgstr "Neuspjelo GDK pokretanje\n"
689696
690#: src/x11/meta-x11-display.c:1034697#: src/x11/meta-x11-display.c:1032
691#, c-format698#, c-format
692msgid "Failed to open X Window System display “%s”\n"699msgid "Failed to open X Window System display “%s”\n"
693msgstr "Neuspjelo otvaranje sustava prikaza X prozora \"%s\"\n"700msgstr "Neuspjelo otvaranje sustava prikaza X prozora \"%s\"\n"
694701
695#: src/x11/meta-x11-display.c:1117702#: src/x11/meta-x11-display.c:1115
696#, c-format703#, c-format
697msgid "Screen %d on display “%s” is invalid\n"704msgid "Screen %d on display “%s” is invalid\n"
698msgstr "Zaslon %d na prikazu '%s' je neispravan\n"705msgstr "Zaslon %d na prikazu '%s' je neispravan\n"
699706
700#: src/x11/session.c:1819707#: src/x11/session.c:1821
701msgid ""708msgid ""
702"These windows do not support “save current setup” and will have to be "709"These windows do not support “save current setup” and will have to be "
703"restarted manually next time you log in."710"restarted manually next time you log in."
@@ -705,7 +712,7 @@ msgstr ""
705"Ovi prozori ne podržavaju mogućnost \"spremi trenutne postavke\" i moraju se "712"Ovi prozori ne podržavaju mogućnost \"spremi trenutne postavke\" i moraju se "
706"ručno ponovno pokrenuti sljedeći puta kada se prijavite."713"ručno ponovno pokrenuti sljedeći puta kada se prijavite."
707714
708#: src/x11/window-props.c:565715#: src/x11/window-props.c:568
709#, c-format716#, c-format
710msgid "%s (on %s)"717msgid "%s (on %s)"
711msgstr "%s (na %s)"718msgstr "%s (na %s)"
diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h
index 510e6aa..7eba180 100644
--- a/src/backends/meta-backend-private.h
+++ b/src/backends/meta-backend-private.h
@@ -147,6 +147,10 @@ xkb_layout_index_t meta_backend_get_keymap_layout_group (MetaBackend *backend);
147147
148gboolean meta_backend_is_lid_closed (MetaBackend *backend);148gboolean meta_backend_is_lid_closed (MetaBackend *backend);
149149
150void meta_backend_freeze_updates (MetaBackend *backend);
151
152void meta_backend_thaw_updates (MetaBackend *backend);
153
150void meta_backend_update_last_device (MetaBackend *backend,154void meta_backend_update_last_device (MetaBackend *backend,
151 int device_id);155 int device_id);
152156
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index c527114..23ab2fa 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -475,7 +475,7 @@ meta_backend_real_post_init (MetaBackend *backend)
475 MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);475 MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
476 ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();476 ClutterDeviceManager *device_manager = clutter_device_manager_get_default ();
477477
478 priv->stage = meta_stage_new ();478 priv->stage = meta_stage_new (backend);
479 clutter_actor_realize (priv->stage);479 clutter_actor_realize (priv->stage);
480 META_BACKEND_GET_CLASS (backend)->select_stage_events (backend);480 META_BACKEND_GET_CLASS (backend)->select_stage_events (backend);
481481
@@ -1079,6 +1079,24 @@ meta_backend_get_stage (MetaBackend *backend)
1079 return priv->stage;1079 return priv->stage;
1080}1080}
10811081
1082void
1083meta_backend_freeze_updates (MetaBackend *backend)
1084{
1085 ClutterStage *stage;
1086
1087 stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
1088 clutter_stage_freeze_updates (stage);
1089}
1090
1091void
1092meta_backend_thaw_updates (MetaBackend *backend)
1093{
1094 ClutterStage *stage;
1095
1096 stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
1097 clutter_stage_thaw_updates (stage);
1098}
1099
1082static gboolean1100static gboolean
1083update_last_device (MetaBackend *backend)1101update_last_device (MetaBackend *backend)
1084{1102{
diff --git a/src/backends/meta-input-mapper.c b/src/backends/meta-input-mapper.c
index 1a3cb2c..5227292 100644
--- a/src/backends/meta-input-mapper.c
+++ b/src/backends/meta-input-mapper.c
@@ -20,6 +20,10 @@
2020
21#include "config.h"21#include "config.h"
2222
23#ifdef HAVE_LIBGUDEV
24#include <gudev/gudev.h>
25#endif
26
23#include "meta-input-mapper-private.h"27#include "meta-input-mapper-private.h"
24#include "meta-monitor-manager-private.h"28#include "meta-monitor-manager-private.h"
25#include "meta-logical-monitor.h"29#include "meta-logical-monitor.h"
@@ -39,6 +43,9 @@ struct _MetaInputMapper
39 ClutterDeviceManager *input_device_manager;43 ClutterDeviceManager *input_device_manager;
40 GHashTable *input_devices; /* ClutterInputDevice -> MetaMapperInputInfo */44 GHashTable *input_devices; /* ClutterInputDevice -> MetaMapperInputInfo */
41 GHashTable *output_devices; /* MetaLogicalMonitor -> MetaMapperOutputInfo */45 GHashTable *output_devices; /* MetaLogicalMonitor -> MetaMapperOutputInfo */
46#ifdef HAVE_LIBGUDEV
47 GUdevClient *udev_client;
48#endif
42};49};
4350
44typedef enum51typedef enum
@@ -271,6 +278,33 @@ match_edid (MetaMapperInputInfo *input,
271}278}
272279
273static gboolean280static gboolean
281input_device_get_physical_size (MetaInputMapper *mapper,
282 ClutterInputDevice *device,
283 double *width,
284 double *height)
285{
286#ifdef HAVE_LIBGUDEV
287 g_autoptr (GUdevDevice) udev_device = NULL;
288 const char *node;
289
290 node = clutter_input_device_get_device_node (device);
291 udev_device = g_udev_client_query_by_device_file (mapper->udev_client, node);
292
293 if (udev_device &&
294 g_udev_device_has_property (udev_device, "ID_INPUT_WIDTH_MM"))
295 {
296 *width = g_udev_device_get_property_as_double (udev_device,
297 "ID_INPUT_WIDTH_MM");
298 *height = g_udev_device_get_property_as_double (udev_device,
299 "ID_INPUT_HEIGHT_MM");
300 return TRUE;
301 }
302#endif
303
304 return FALSE;
305}
306
307static gboolean
274find_size_match (MetaMapperInputInfo *input,308find_size_match (MetaMapperInputInfo *input,
275 GList *monitors,309 GList *monitors,
276 MetaMonitor **matched_monitor)310 MetaMonitor **matched_monitor)
@@ -282,7 +316,8 @@ find_size_match (MetaMapperInputInfo *input,
282316
283 min_w_diff = min_h_diff = MAX_SIZE_MATCH_DIFF;317 min_w_diff = min_h_diff = MAX_SIZE_MATCH_DIFF;
284318
285 if (!clutter_input_device_get_physical_size (input->device, &i_width, &i_height))319 if (!input_device_get_physical_size (input->mapper, input->device,
320 &i_width, &i_height))
286 return FALSE;321 return FALSE;
287322
288 for (l = monitors; l; l = l->next)323 for (l = monitors; l; l = l->next)
@@ -520,6 +555,9 @@ meta_input_mapper_finalize (GObject *object)
520555
521 g_hash_table_unref (mapper->input_devices);556 g_hash_table_unref (mapper->input_devices);
522 g_hash_table_unref (mapper->output_devices);557 g_hash_table_unref (mapper->output_devices);
558#ifdef HAVE_LIBGUDEV
559 g_clear_object (&mapper->udev_client);
560#endif
523561
524 G_OBJECT_CLASS (meta_input_mapper_parent_class)->finalize (object);562 G_OBJECT_CLASS (meta_input_mapper_parent_class)->finalize (object);
525}563}
@@ -527,11 +565,18 @@ meta_input_mapper_finalize (GObject *object)
527static void565static void
528meta_input_mapper_constructed (GObject *object)566meta_input_mapper_constructed (GObject *object)
529{567{
568#ifdef HAVE_LIBGUDEV
569 const char *udev_subsystems[] = { "input", NULL };
570#endif
530 MetaInputMapper *mapper = META_INPUT_MAPPER (object);571 MetaInputMapper *mapper = META_INPUT_MAPPER (object);
531 MetaBackend *backend;572 MetaBackend *backend;
532573
533 G_OBJECT_CLASS (meta_input_mapper_parent_class)->constructed (object);574 G_OBJECT_CLASS (meta_input_mapper_parent_class)->constructed (object);
534575
576#ifdef HAVE_LIBGUDEV
577 mapper->udev_client = g_udev_client_new (udev_subsystems);
578#endif
579
535 mapper->input_device_manager = clutter_device_manager_get_default ();580 mapper->input_device_manager = clutter_device_manager_get_default ();
536 g_signal_connect (mapper->input_device_manager, "device-removed",581 g_signal_connect (mapper->input_device_manager, "device-removed",
537 G_CALLBACK (input_mapper_device_removed_cb), mapper);582 G_CALLBACK (input_mapper_device_removed_cb), mapper);
diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c
index 27e99b5..7b8df56 100644
--- a/src/backends/meta-input-settings.c
+++ b/src/backends/meta-input-settings.c
@@ -1766,9 +1766,11 @@ power_save_mode_changed_cb (MetaMonitorManager *manager,
1766 ClutterInputDevice *device;1766 ClutterInputDevice *device;
1767 MetaLogicalMonitor *logical_monitor;1767 MetaLogicalMonitor *logical_monitor;
1768 MetaMonitor *builtin;1768 MetaMonitor *builtin;
1769 MetaPowerSave power_save_mode;
1769 gboolean on;1770 gboolean on;
17701771
1771 on = (manager->power_save_mode == META_POWER_SAVE_ON);1772 power_save_mode = meta_monitor_manager_get_power_save_mode (manager);
1773 on = power_save_mode == META_POWER_SAVE_ON;
1772 priv = meta_input_settings_get_instance_private (user_data);1774 priv = meta_input_settings_get_instance_private (user_data);
17731775
1774 builtin = meta_monitor_manager_get_laptop_panel (manager);1776 builtin = meta_monitor_manager_get_laptop_panel (manager);
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
index 771c57f..9a54ce5 100644
--- a/src/backends/meta-monitor-config-manager.c
+++ b/src/backends/meta-monitor-config-manager.c
@@ -1540,7 +1540,7 @@ meta_verify_logical_monitor_config (MetaLogicalMonitorConfig *logical_monitor
1540}1540}
15411541
1542static gboolean1542static gboolean
1543has_adjecent_neighbour (MetaMonitorsConfig *config,1543has_adjacent_neighbour (MetaMonitorsConfig *config,
1544 MetaLogicalMonitorConfig *logical_monitor_config)1544 MetaLogicalMonitorConfig *logical_monitor_config)
1545{1545{
1546 GList *l;1546 GList *l;
@@ -1559,7 +1559,7 @@ has_adjecent_neighbour (MetaMonitorsConfig *config,
1559 if (logical_monitor_config == other_logical_monitor_config)1559 if (logical_monitor_config == other_logical_monitor_config)
1560 continue;1560 continue;
15611561
1562 if (meta_rectangle_is_adjecent_to (&logical_monitor_config->layout,1562 if (meta_rectangle_is_adjacent_to (&logical_monitor_config->layout,
1563 &other_logical_monitor_config->layout))1563 &other_logical_monitor_config->layout))
1564 return TRUE;1564 return TRUE;
1565 }1565 }
@@ -1665,10 +1665,10 @@ meta_verify_monitors_config (MetaMonitorsConfig *config,
1665 has_primary = TRUE;1665 has_primary = TRUE;
1666 }1666 }
16671667
1668 if (!has_adjecent_neighbour (config, logical_monitor_config))1668 if (!has_adjacent_neighbour (config, logical_monitor_config))
1669 {1669 {
1670 g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,1670 g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
1671 "Logical monitors not adjecent");1671 "Logical monitors not adjacent");
1672 return FALSE;1672 return FALSE;
1673 }1673 }
16741674
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index 06e8837..46c3b8c 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -694,11 +694,11 @@ meta_monitor_manager_dummy_calculate_monitor_mode_scale (MetaMonitorManager *man
694}694}
695695
696static float *696static float *
697meta_monitor_manager_dummy_calculate_supported_scales (MetaMonitorManager *manager,697meta_monitor_manager_dummy_calculate_supported_scales (MetaMonitorManager *manager,
698 MetaLogicalMonitorLayoutMode layout_mode,698 MetaLogicalMonitorLayoutMode layout_mode,
699 MetaMonitor *monitor,699 MetaMonitor *monitor,
700 MetaMonitorMode *monitor_mode,700 MetaMonitorMode *monitor_mode,
701 int *n_supported_scales)701 int *n_supported_scales)
702{702{
703 MetaMonitorScalesConstraint constraints =703 MetaMonitorScalesConstraint constraints =
704 META_MONITOR_SCALES_CONSTRAINT_NONE;704 META_MONITOR_SCALES_CONSTRAINT_NONE;
diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h
index 3b951c6..cdb8f42 100644
--- a/src/backends/meta-monitor-manager-private.h
+++ b/src/backends/meta-monitor-manager-private.h
@@ -116,8 +116,6 @@ struct _MetaMonitorManager
116 gboolean in_init;116 gboolean in_init;
117 unsigned int serial;117 unsigned int serial;
118118
119 MetaPowerSave power_save_mode;
120
121 MetaLogicalMonitorLayoutMode layout_mode;119 MetaLogicalMonitorLayoutMode layout_mode;
122120
123 int screen_width;121 int screen_width;
@@ -192,6 +190,8 @@ struct _MetaMonitorManagerClass
192 GBytes* (*read_edid) (MetaMonitorManager *,190 GBytes* (*read_edid) (MetaMonitorManager *,
193 MetaOutput *);191 MetaOutput *);
194192
193 void (*read_current_state) (MetaMonitorManager *);
194
195 void (*ensure_initial_config) (MetaMonitorManager *);195 void (*ensure_initial_config) (MetaMonitorManager *);
196196
197 gboolean (*apply_monitors_config) (MetaMonitorManager *,197 gboolean (*apply_monitors_config) (MetaMonitorManager *,
@@ -305,6 +305,11 @@ void meta_monitor_manager_get_screen_size (MetaMonitorManager *
305 int *width,305 int *width,
306 int *height);306 int *height);
307307
308MetaPowerSave meta_monitor_manager_get_power_save_mode (MetaMonitorManager *manager);
309
310void meta_monitor_manager_power_save_mode_changed (MetaMonitorManager *manager,
311 MetaPowerSave mode);
312
308void meta_monitor_manager_confirm_configuration (MetaMonitorManager *manager,313void meta_monitor_manager_confirm_configuration (MetaMonitorManager *manager,
309 gboolean ok);314 gboolean ok);
310315
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 9420265..2d898c7 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -95,7 +95,13 @@ static gfloat transform_matrices[][6] = {
9595
96static int signals[SIGNALS_LAST];96static int signals[SIGNALS_LAST];
9797
98G_DEFINE_TYPE (MetaMonitorManager, meta_monitor_manager, G_TYPE_OBJECT)98typedef struct _MetaMonitorManagerPrivate
99{
100 MetaPowerSave power_save_mode;
101} MetaMonitorManagerPrivate;
102
103G_DEFINE_TYPE_WITH_PRIVATE (MetaMonitorManager, meta_monitor_manager,
104 G_TYPE_OBJECT)
99105
100static void initialize_dbus_interface (MetaMonitorManager *manager);106static void initialize_dbus_interface (MetaMonitorManager *manager);
101static void monitor_manager_setup_dbus_config_handlers (MetaMonitorManager *manager);107static void monitor_manager_setup_dbus_config_handlers (MetaMonitorManager *manager);
@@ -107,6 +113,9 @@ meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
107static MetaMonitor *113static MetaMonitor *
108meta_monitor_manager_get_active_monitor (MetaMonitorManager *manager);114meta_monitor_manager_get_active_monitor (MetaMonitorManager *manager);
109115
116static void
117meta_monitor_manager_real_read_current_state (MetaMonitorManager *manager);
118
110MetaBackend *119MetaBackend *
111meta_monitor_manager_get_backend (MetaMonitorManager *manager)120meta_monitor_manager_get_backend (MetaMonitorManager *manager)
112{121{
@@ -329,11 +338,24 @@ meta_monitor_manager_rebuild_logical_monitors_derived (MetaMonitorManager *manag
329 primary_logical_monitor);338 primary_logical_monitor);
330}339}
331340
341void
342meta_monitor_manager_power_save_mode_changed (MetaMonitorManager *manager,
343 MetaPowerSave mode)
344{
345 MetaMonitorManagerPrivate *priv =
346 meta_monitor_manager_get_instance_private (manager);
347
348 priv->power_save_mode = mode;
349 g_signal_emit (manager, signals[POWER_SAVE_MODE_CHANGED], 0);
350}
351
332static void352static void
333power_save_mode_changed (MetaMonitorManager *manager,353power_save_mode_changed (MetaMonitorManager *manager,
334 GParamSpec *pspec,354 GParamSpec *pspec,
335 gpointer user_data)355 gpointer user_data)
336{356{
357 MetaMonitorManagerPrivate *priv =
358 meta_monitor_manager_get_instance_private (manager);
337 MetaMonitorManagerClass *klass;359 MetaMonitorManagerClass *klass;
338 int mode = meta_dbus_display_config_get_power_save_mode (manager->display_config);360 int mode = meta_dbus_display_config_get_power_save_mode (manager->display_config);
339361
@@ -341,7 +363,7 @@ power_save_mode_changed (MetaMonitorManager *manager,
341 return;363 return;
342364
343 /* If DPMS is unsupported, force the property back. */365 /* If DPMS is unsupported, force the property back. */
344 if (manager->power_save_mode == META_POWER_SAVE_UNSUPPORTED)366 if (priv->power_save_mode == META_POWER_SAVE_UNSUPPORTED)
345 {367 {
346 meta_dbus_display_config_set_power_save_mode (manager->display_config, META_POWER_SAVE_UNSUPPORTED);368 meta_dbus_display_config_set_power_save_mode (manager->display_config, META_POWER_SAVE_UNSUPPORTED);
347 return;369 return;
@@ -351,9 +373,7 @@ power_save_mode_changed (MetaMonitorManager *manager,
351 if (klass->set_power_save_mode)373 if (klass->set_power_save_mode)
352 klass->set_power_save_mode (manager, mode);374 klass->set_power_save_mode (manager, mode);
353375
354 manager->power_save_mode = mode;376 meta_monitor_manager_power_save_mode_changed (manager, mode);
355
356 g_signal_emit (manager, signals[POWER_SAVE_MODE_CHANGED], 0);
357}377}
358378
359void379void
@@ -400,11 +420,11 @@ meta_monitor_manager_calculate_monitor_mode_scale (MetaMonitorManager *manager,
400}420}
401421
402float *422float *
403meta_monitor_manager_calculate_supported_scales (MetaMonitorManager *manager,423meta_monitor_manager_calculate_supported_scales (MetaMonitorManager *manager,
404 MetaLogicalMonitorLayoutMode layout_mode,424 MetaLogicalMonitorLayoutMode layout_mode,
405 MetaMonitor *monitor,425 MetaMonitor *monitor,
406 MetaMonitorMode *monitor_mode,426 MetaMonitorMode *monitor_mode,
407 int *n_supported_scales)427 int *n_supported_scales)
408{428{
409 MetaMonitorManagerClass *manager_class =429 MetaMonitorManagerClass *manager_class =
410 META_MONITOR_MANAGER_GET_CLASS (manager);430 META_MONITOR_MANAGER_GET_CLASS (manager);
@@ -855,6 +875,7 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
855 object_class->set_property = meta_monitor_manager_set_property;875 object_class->set_property = meta_monitor_manager_set_property;
856876
857 klass->read_edid = meta_monitor_manager_real_read_edid;877 klass->read_edid = meta_monitor_manager_real_read_edid;
878 klass->read_current_state = meta_monitor_manager_real_read_current_state;
858879
859 signals[MONITORS_CHANGED] =880 signals[MONITORS_CHANGED] =
860 g_signal_new ("monitors-changed",881 g_signal_new ("monitors-changed",
@@ -2684,6 +2705,15 @@ meta_monitor_manager_get_screen_size (MetaMonitorManager *manager,
2684 *height = manager->screen_height;2705 *height = manager->screen_height;
2685}2706}
26862707
2708MetaPowerSave
2709meta_monitor_manager_get_power_save_mode (MetaMonitorManager *manager)
2710{
2711 MetaMonitorManagerPrivate *priv =
2712 meta_monitor_manager_get_instance_private (manager);
2713
2714 return priv->power_save_mode;
2715}
2716
2687static void2717static void
2688rebuild_monitors (MetaMonitorManager *manager)2718rebuild_monitors (MetaMonitorManager *manager)
2689{2719{
@@ -2760,8 +2790,8 @@ meta_monitor_manager_is_transform_handled (MetaMonitorManager *manager,
2760 return manager_class->is_transform_handled (manager, crtc, transform);2790 return manager_class->is_transform_handled (manager, crtc, transform);
2761}2791}
27622792
2763void2793static void
2764meta_monitor_manager_read_current_state (MetaMonitorManager *manager)2794meta_monitor_manager_real_read_current_state (MetaMonitorManager *manager)
2765{2795{
2766 GList *l;2796 GList *l;
27672797
@@ -2782,6 +2812,15 @@ meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
2782 rebuild_monitors (manager);2812 rebuild_monitors (manager);
2783}2813}
27842814
2815void
2816meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
2817{
2818 MetaMonitorManagerClass *manager_class =
2819 META_MONITOR_MANAGER_GET_CLASS (manager);
2820
2821 manager_class->read_current_state (manager);
2822}
2823
2785static void2824static void
2786meta_monitor_manager_notify_monitors_changed (MetaMonitorManager *manager)2825meta_monitor_manager_notify_monitors_changed (MetaMonitorManager *manager)
2787{2826{
diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
index 3ff18a5..22a3e45 100644
--- a/src/backends/meta-monitor.c
+++ b/src/backends/meta-monitor.c
@@ -615,12 +615,12 @@ meta_monitor_normal_get_suggested_position (MetaMonitor *monitor,
615}615}
616616
617static void617static void
618meta_monitor_normal_calculate_crtc_pos (MetaMonitor *monitor,618meta_monitor_normal_calculate_crtc_pos (MetaMonitor *monitor,
619 MetaMonitorMode *monitor_mode,619 MetaMonitorMode *monitor_mode,
620 MetaOutput *output,620 MetaOutput *output,
621 MetaMonitorTransform crtc_transform,621 MetaMonitorTransform crtc_transform,
622 int *out_x,622 int *out_x,
623 int *out_y)623 int *out_y)
624{624{
625 *out_x = 0;625 *out_x = 0;
626 *out_y = 0;626 *out_y = 0;
@@ -1267,12 +1267,12 @@ meta_monitor_tiled_get_suggested_position (MetaMonitor *monitor,
1267}1267}
12681268
1269static void1269static void
1270meta_monitor_tiled_calculate_crtc_pos (MetaMonitor *monitor,1270meta_monitor_tiled_calculate_crtc_pos (MetaMonitor *monitor,
1271 MetaMonitorMode *monitor_mode,1271 MetaMonitorMode *monitor_mode,
1272 MetaOutput *output,1272 MetaOutput *output,
1273 MetaMonitorTransform crtc_transform,1273 MetaMonitorTransform crtc_transform,
1274 int *out_x,1274 int *out_x,
1275 int *out_y)1275 int *out_y)
1276{1276{
1277 MetaMonitorModeTiled *mode_tiled = (MetaMonitorModeTiled *) monitor_mode;1277 MetaMonitorModeTiled *mode_tiled = (MetaMonitorModeTiled *) monitor_mode;
12781278
@@ -1461,12 +1461,12 @@ meta_monitor_get_modes (MetaMonitor *monitor)
1461}1461}
14621462
1463void1463void
1464meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,1464meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,
1465 MetaMonitorMode *monitor_mode,1465 MetaMonitorMode *monitor_mode,
1466 MetaOutput *output,1466 MetaOutput *output,
1467 MetaMonitorTransform crtc_transform,1467 MetaMonitorTransform crtc_transform,
1468 int *out_x,1468 int *out_x,
1469 int *out_y)1469 int *out_y)
1470{1470{
1471 META_MONITOR_GET_CLASS (monitor)->calculate_crtc_pos (monitor,1471 META_MONITOR_GET_CLASS (monitor)->calculate_crtc_pos (monitor,
1472 monitor_mode,1472 monitor_mode,
@@ -1587,7 +1587,6 @@ get_closest_scale_factor_for_resolution (float width,
1587 float scaled_w;1587 float scaled_w;
1588 float best_scale;1588 float best_scale;
1589 int base_scaled_w;1589 int base_scaled_w;
1590 gboolean limit_exceeded;
1591 gboolean found_one;1590 gboolean found_one;
15921591
1593 best_scale = 0;1592 best_scale = 0;
@@ -1604,7 +1603,6 @@ get_closest_scale_factor_for_resolution (float width,
16041603
1605 i = 0;1604 i = 0;
1606 found_one = FALSE;1605 found_one = FALSE;
1607 limit_exceeded = FALSE;
1608 base_scaled_w = floorf (scaled_w);1606 base_scaled_w = floorf (scaled_w);
16091607
1610 do1608 do
@@ -1637,17 +1635,17 @@ get_closest_scale_factor_for_resolution (float width,
16371635
1638 i++;1636 i++;
1639 }1637 }
1640 while (!found_one && !limit_exceeded);1638 while (!found_one);
16411639
1642out:1640out:
1643 return best_scale;1641 return best_scale;
1644}1642}
16451643
1646float *1644float *
1647meta_monitor_calculate_supported_scales (MetaMonitor *monitor,1645meta_monitor_calculate_supported_scales (MetaMonitor *monitor,
1648 MetaMonitorMode *monitor_mode,1646 MetaMonitorMode *monitor_mode,
1649 MetaMonitorScalesConstraint constraints,1647 MetaMonitorScalesConstraint constraints,
1650 int *n_supported_scales)1648 int *n_supported_scales)
1651{1649{
1652 unsigned int i, j;1650 unsigned int i, j;
1653 int width, height;1651 int width, height;
@@ -1727,11 +1725,11 @@ meta_monitor_mode_get_flags (MetaMonitorMode *monitor_mode)
1727}1725}
17281726
1729gboolean1727gboolean
1730meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,1728meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
1731 MetaMonitorMode *mode,1729 MetaMonitorMode *mode,
1732 MetaMonitorModeFunc func,1730 MetaMonitorModeFunc func,
1733 gpointer user_data,1731 gpointer user_data,
1734 GError **error)1732 GError **error)
1735{1733{
1736 MetaMonitorPrivate *monitor_priv =1734 MetaMonitorPrivate *monitor_priv =
1737 meta_monitor_get_instance_private (monitor);1735 meta_monitor_get_instance_private (monitor);
@@ -1753,11 +1751,11 @@ meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
1753}1751}
17541752
1755gboolean1753gboolean
1756meta_monitor_mode_foreach_output (MetaMonitor *monitor,1754meta_monitor_mode_foreach_output (MetaMonitor *monitor,
1757 MetaMonitorMode *mode,1755 MetaMonitorMode *mode,
1758 MetaMonitorModeFunc func,1756 MetaMonitorModeFunc func,
1759 gpointer user_data,1757 gpointer user_data,
1760 GError **error)1758 GError **error)
1761{1759{
1762 MetaMonitorPrivate *monitor_priv =1760 MetaMonitorPrivate *monitor_priv =
1763 meta_monitor_get_instance_private (monitor);1761 meta_monitor_get_instance_private (monitor);
diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
index 41f2c0f..413a4e2 100644
--- a/src/backends/meta-monitor.h
+++ b/src/backends/meta-monitor.h
@@ -74,12 +74,12 @@ struct _MetaMonitorClass
74 MetaOutput * (* get_main_output) (MetaMonitor *monitor);74 MetaOutput * (* get_main_output) (MetaMonitor *monitor);
75 void (* derive_layout) (MetaMonitor *monitor,75 void (* derive_layout) (MetaMonitor *monitor,
76 MetaRectangle *layout);76 MetaRectangle *layout);
77 void (* calculate_crtc_pos) (MetaMonitor *monitor,77 void (* calculate_crtc_pos) (MetaMonitor *monitor,
78 MetaMonitorMode *monitor_mode,78 MetaMonitorMode *monitor_mode,
79 MetaOutput *output,79 MetaOutput *output,
80 MetaMonitorTransform crtc_transform,80 MetaMonitorTransform crtc_transform,
81 int *out_x,81 int *out_x,
82 int *out_y);82 int *out_y);
83 gboolean (* get_suggested_position) (MetaMonitor *monitor,83 gboolean (* get_suggested_position) (MetaMonitor *monitor,
84 int *width,84 int *width,
85 int *height);85 int *height);
@@ -214,22 +214,22 @@ META_EXPORT_TEST
214GList * meta_monitor_get_modes (MetaMonitor *monitor);214GList * meta_monitor_get_modes (MetaMonitor *monitor);
215215
216META_EXPORT_TEST216META_EXPORT_TEST
217void meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,217void meta_monitor_calculate_crtc_pos (MetaMonitor *monitor,
218 MetaMonitorMode *monitor_mode,218 MetaMonitorMode *monitor_mode,
219 MetaOutput *output,219 MetaOutput *output,
220 MetaMonitorTransform crtc_transform,220 MetaMonitorTransform crtc_transform,
221 int *out_x,221 int *out_x,
222 int *out_y);222 int *out_y);
223223
224META_EXPORT_TEST224META_EXPORT_TEST
225float meta_monitor_calculate_mode_scale (MetaMonitor *monitor,225float meta_monitor_calculate_mode_scale (MetaMonitor *monitor,
226 MetaMonitorMode *monitor_mode);226 MetaMonitorMode *monitor_mode);
227227
228META_EXPORT_TEST228META_EXPORT_TEST
229float * meta_monitor_calculate_supported_scales (MetaMonitor *monitor,229float * meta_monitor_calculate_supported_scales (MetaMonitor *monitor,
230 MetaMonitorMode *monitor_mode,230 MetaMonitorMode *monitor_mode,
231 MetaMonitorScalesConstraint constraints,231 MetaMonitorScalesConstraint constraints,
232 int *n_supported_scales);232 int *n_supported_scales);
233233
234META_EXPORT_TEST234META_EXPORT_TEST
235const char * meta_monitor_mode_get_id (MetaMonitorMode *monitor_mode);235const char * meta_monitor_mode_get_id (MetaMonitorMode *monitor_mode);
@@ -249,18 +249,18 @@ META_EXPORT_TEST
249MetaCrtcModeFlag meta_monitor_mode_get_flags (MetaMonitorMode *monitor_mode);249MetaCrtcModeFlag meta_monitor_mode_get_flags (MetaMonitorMode *monitor_mode);
250250
251META_EXPORT_TEST251META_EXPORT_TEST
252gboolean meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,252gboolean meta_monitor_mode_foreach_crtc (MetaMonitor *monitor,
253 MetaMonitorMode *mode,253 MetaMonitorMode *mode,
254 MetaMonitorModeFunc func,254 MetaMonitorModeFunc func,
255 gpointer user_data,255 gpointer user_data,
256 GError **error);256 GError **error);
257257
258META_EXPORT_TEST258META_EXPORT_TEST
259gboolean meta_monitor_mode_foreach_output (MetaMonitor *monitor,259gboolean meta_monitor_mode_foreach_output (MetaMonitor *monitor,
260 MetaMonitorMode *mode,260 MetaMonitorMode *mode,
261 MetaMonitorModeFunc func,261 MetaMonitorModeFunc func,
262 gpointer user_data,262 gpointer user_data,
263 GError **error);263 GError **error);
264264
265META_EXPORT_TEST265META_EXPORT_TEST
266gboolean meta_monitor_mode_should_be_advertised (MetaMonitorMode *monitor_mode);266gboolean meta_monitor_mode_should_be_advertised (MetaMonitorMode *monitor_mode);
diff --git a/src/backends/meta-stage-private.h b/src/backends/meta-stage-private.h
index 21feab3..639d237 100644
--- a/src/backends/meta-stage-private.h
+++ b/src/backends/meta-stage-private.h
@@ -23,12 +23,13 @@
23#include "backends/meta-cursor.h"23#include "backends/meta-cursor.h"
24#include "meta/boxes.h"24#include "meta/boxes.h"
25#include "meta/meta-stage.h"25#include "meta/meta-stage.h"
26#include "meta/types.h"
2627
27G_BEGIN_DECLS28G_BEGIN_DECLS
2829
29typedef struct _MetaOverlay MetaOverlay;30typedef struct _MetaOverlay MetaOverlay;
3031
31ClutterActor *meta_stage_new (void);32ClutterActor *meta_stage_new (MetaBackend *backend);
3233
33MetaOverlay *meta_stage_create_cursor_overlay (MetaStage *stage);34MetaOverlay *meta_stage_create_cursor_overlay (MetaStage *stage);
34void meta_stage_remove_cursor_overlay (MetaStage *stage,35void meta_stage_remove_cursor_overlay (MetaStage *stage,
diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c
index 1f0d9c0..47a00e5 100644
--- a/src/backends/meta-stage.c
+++ b/src/backends/meta-stage.c
@@ -181,6 +181,15 @@ meta_stage_deactivate (ClutterStage *actor)
181}181}
182182
183static void183static void
184on_power_save_changed (MetaMonitorManager *monitor_manager,
185 MetaStage *stage)
186{
187 if (meta_monitor_manager_get_power_save_mode (monitor_manager) ==
188 META_POWER_SAVE_ON)
189 clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
190}
191
192static void
184meta_stage_class_init (MetaStageClass *klass)193meta_stage_class_init (MetaStageClass *klass)
185{194{
186 ClutterStageClass *stage_class = (ClutterStageClass *) klass;195 ClutterStageClass *stage_class = (ClutterStageClass *) klass;
@@ -209,11 +218,21 @@ meta_stage_init (MetaStage *stage)
209}218}
210219
211ClutterActor *220ClutterActor *
212meta_stage_new (void)221meta_stage_new (MetaBackend *backend)
213{222{
214 return g_object_new (META_TYPE_STAGE,223 MetaStage *stage;
215 "cursor-visible", FALSE,224 MetaMonitorManager *monitor_manager;
216 NULL);225
226 stage = g_object_new (META_TYPE_STAGE,
227 "cursor-visible", FALSE,
228 NULL);
229
230 monitor_manager = meta_backend_get_monitor_manager (backend);
231 g_signal_connect (monitor_manager, "power-save-mode-changed",
232 G_CALLBACK (on_power_save_changed),
233 stage);
234
235 return CLUTTER_ACTOR (stage);
217}236}
218237
219static void238static void
diff --git a/src/backends/native/meta-crtc-kms.c b/src/backends/native/meta-crtc-kms.c
index 79a9b1e..8c2fbfe 100644
--- a/src/backends/native/meta-crtc-kms.c
+++ b/src/backends/native/meta-crtc-kms.c
@@ -41,9 +41,6 @@
41typedef struct _MetaCrtcKms41typedef struct _MetaCrtcKms
42{42{
43 unsigned int index;43 unsigned int index;
44 uint32_t underscan_prop_id;
45 uint32_t underscan_hborder_prop_id;
46 uint32_t underscan_vborder_prop_id;
47 uint32_t primary_plane_id;44 uint32_t primary_plane_id;
48 uint32_t rotation_prop_id;45 uint32_t rotation_prop_id;
49 uint32_t rotation_map[ALL_TRANSFORMS];46 uint32_t rotation_map[ALL_TRANSFORMS];
@@ -137,54 +134,6 @@ meta_crtc_kms_apply_transform (MetaCrtc *crtc)
137 }134 }
138}135}
139136
140void
141meta_crtc_kms_set_underscan (MetaCrtc *crtc,
142 gboolean is_underscanning)
143{
144 MetaCrtcKms *crtc_kms = crtc->driver_private;
145 MetaGpu *gpu = meta_crtc_get_gpu (crtc);
146 MetaGpuKms *gpu_kms = META_GPU_KMS (gpu);
147 int kms_fd;
148
149 if (!crtc_kms->underscan_prop_id)
150 return;
151
152 kms_fd = meta_gpu_kms_get_fd (gpu_kms);
153
154 if (is_underscanning)
155 {
156 drmModeObjectSetProperty (kms_fd, crtc->crtc_id,
157 DRM_MODE_OBJECT_CRTC,
158 crtc_kms->underscan_prop_id, (uint64_t) 1);
159
160 if (crtc_kms->underscan_hborder_prop_id)
161 {
162 uint64_t value;
163
164 value = crtc->current_mode->width * 0.05;
165 drmModeObjectSetProperty (kms_fd, crtc->crtc_id,
166 DRM_MODE_OBJECT_CRTC,
167 crtc_kms->underscan_hborder_prop_id, value);
168 }
169 if (crtc_kms->underscan_vborder_prop_id)
170 {
171 uint64_t value;
172
173 value = crtc->current_mode->height * 0.05;
174 drmModeObjectSetProperty (kms_fd, crtc->crtc_id,
175 DRM_MODE_OBJECT_CRTC,
176 crtc_kms->underscan_vborder_prop_id, value);
177 }
178
179 }
180 else
181 {
182 drmModeObjectSetProperty (kms_fd, crtc->crtc_id,
183 DRM_MODE_OBJECT_CRTC,
184 crtc_kms->underscan_prop_id, (uint64_t) 0);
185 }
186}
187
188static int137static int
189find_property_index (MetaGpu *gpu,138find_property_index (MetaGpu *gpu,
190 drmModeObjectPropertiesPtr props,139 drmModeObjectPropertiesPtr props,
@@ -534,43 +483,6 @@ init_crtc_rotations (MetaCrtc *crtc,
534}483}
535484
536static void485static void
537find_crtc_properties (MetaCrtc *crtc,
538 MetaGpuKms *gpu_kms)
539{
540 MetaCrtcKms *crtc_kms = crtc->driver_private;
541 int kms_fd;
542 drmModeObjectPropertiesPtr props;
543 unsigned int i;
544
545 kms_fd = meta_gpu_kms_get_fd (gpu_kms);
546 props = drmModeObjectGetProperties (kms_fd, crtc->crtc_id,
547 DRM_MODE_OBJECT_CRTC);
548 if (!props)
549 return;
550
551 for (i = 0; i < props->count_props; i++)
552 {
553 drmModePropertyPtr prop = drmModeGetProperty (kms_fd, props->props[i]);
554 if (!prop)
555 continue;
556
557 if ((prop->flags & DRM_MODE_PROP_ENUM) &&
558 strcmp (prop->name, "underscan") == 0)
559 crtc_kms->underscan_prop_id = prop->prop_id;
560 else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
561 strcmp (prop->name, "underscan hborder") == 0)
562 crtc_kms->underscan_hborder_prop_id = prop->prop_id;
563 else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
564 strcmp (prop->name, "underscan vborder") == 0)
565 crtc_kms->underscan_vborder_prop_id = prop->prop_id;
566
567 drmModeFreeProperty (prop);
568 }
569
570 drmModeFreeObjectProperties (props);
571}
572
573static void
574meta_crtc_destroy_notify (MetaCrtc *crtc)486meta_crtc_destroy_notify (MetaCrtc *crtc)
575{487{
576 MetaCrtcKms *crtc_kms = crtc->driver_private;488 MetaCrtcKms *crtc_kms = crtc->driver_private;
@@ -628,7 +540,6 @@ meta_create_kms_crtc (MetaGpuKms *gpu_kms,
628 crtc->driver_private = crtc_kms;540 crtc->driver_private = crtc_kms;
629 crtc->driver_notify = (GDestroyNotify) meta_crtc_destroy_notify;541 crtc->driver_notify = (GDestroyNotify) meta_crtc_destroy_notify;
630542
631 find_crtc_properties (crtc, gpu_kms);
632 init_crtc_rotations (crtc, gpu);543 init_crtc_rotations (crtc, gpu);
633544
634 return crtc;545 return crtc;
diff --git a/src/backends/native/meta-crtc-kms.h b/src/backends/native/meta-crtc-kms.h
index 622ea55..456f440 100644
--- a/src/backends/native/meta-crtc-kms.h
+++ b/src/backends/native/meta-crtc-kms.h
@@ -44,9 +44,6 @@ gboolean meta_crtc_kms_is_transform_handled (MetaCrtc *crtc,
4444
45void meta_crtc_kms_apply_transform (MetaCrtc *crtc);45void meta_crtc_kms_apply_transform (MetaCrtc *crtc);
4646
47void meta_crtc_kms_set_underscan (MetaCrtc *crtc,
48 gboolean is_underscanning);
49
50GArray * meta_crtc_kms_get_modifiers (MetaCrtc *crtc,47GArray * meta_crtc_kms_get_modifiers (MetaCrtc *crtc,
51 uint32_t format);48 uint32_t format);
5249
diff --git a/src/backends/native/meta-gpu-kms.c b/src/backends/native/meta-gpu-kms.c
index d924466..c569b94 100644
--- a/src/backends/native/meta-gpu-kms.c
+++ b/src/backends/native/meta-gpu-kms.c
@@ -210,7 +210,7 @@ meta_gpu_kms_is_crtc_active (MetaGpuKms *gpu_kms,
210210
211 g_assert (meta_crtc_get_gpu (crtc) == META_GPU (gpu_kms));211 g_assert (meta_crtc_get_gpu (crtc) == META_GPU (gpu_kms));
212212
213 if (monitor_manager->power_save_mode != META_POWER_SAVE_ON)213 if (meta_monitor_manager_get_power_save_mode (monitor_manager))
214 return FALSE;214 return FALSE;
215215
216 connected_crtc_found = FALSE;216 connected_crtc_found = FALSE;
@@ -273,7 +273,8 @@ meta_gpu_kms_flip_crtc (MetaGpuKms *gpu_kms,
273 int ret = -1;273 int ret = -1;
274274
275 g_assert (meta_crtc_get_gpu (crtc) == gpu);275 g_assert (meta_crtc_get_gpu (crtc) == gpu);
276 g_assert (monitor_manager->power_save_mode == META_POWER_SAVE_ON);276 g_assert (meta_monitor_manager_get_power_save_mode (monitor_manager) ==
277 META_POWER_SAVE_ON);
277278
278 get_crtc_drm_connectors (gpu, crtc, &connectors, &n_connectors);279 get_crtc_drm_connectors (gpu, crtc, &connectors, &n_connectors);
279 g_assert (n_connectors > 0);280 g_assert (n_connectors > 0);
@@ -836,8 +837,6 @@ meta_gpu_kms_read_current (MetaGpu *gpu,
836 GError **error)837 GError **error)
837{838{
838 MetaGpuKms *gpu_kms = META_GPU_KMS (gpu);839 MetaGpuKms *gpu_kms = META_GPU_KMS (gpu);
839 MetaMonitorManager *monitor_manager =
840 meta_gpu_get_monitor_manager (gpu);
841 MetaKmsResources resources;840 MetaKmsResources resources;
842 g_autoptr (GError) local_error = NULL;841 g_autoptr (GError) local_error = NULL;
843842
@@ -855,8 +854,6 @@ meta_gpu_kms_read_current (MetaGpu *gpu,
855 gpu_kms->max_buffer_width = resources.resources->max_width;854 gpu_kms->max_buffer_width = resources.resources->max_width;
856 gpu_kms->max_buffer_height = resources.resources->max_height;855 gpu_kms->max_buffer_height = resources.resources->max_height;
857856
858 monitor_manager->power_save_mode = META_POWER_SAVE_ON;
859
860 /* Note: we must not free the public structures (output, crtc, monitor857 /* Note: we must not free the public structures (output, crtc, monitor
861 mode and monitor info) here, they must be kept alive until the API858 mode and monitor info) here, they must be kept alive until the API
862 users are done with them after we emit monitors-changed, and thus859 users are done with them after we emit monitors-changed, and thus
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index c2c8ab5..9a03644 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -109,6 +109,21 @@ meta_monitor_manager_kms_read_edid (MetaMonitorManager *manager,
109}109}
110110
111static void111static void
112meta_monitor_manager_kms_read_current_state (MetaMonitorManager *manager)
113{
114 MetaMonitorManagerClass *parent_class =
115 META_MONITOR_MANAGER_CLASS (meta_monitor_manager_kms_parent_class);
116 MetaPowerSave power_save_mode;
117
118 power_save_mode = meta_monitor_manager_get_power_save_mode (manager);
119 if (power_save_mode != META_POWER_SAVE_ON)
120 meta_monitor_manager_power_save_mode_changed (manager,
121 META_POWER_SAVE_ON);
122
123 parent_class->read_current_state (manager);
124}
125
126static void
112meta_monitor_manager_kms_set_power_save_mode (MetaMonitorManager *manager,127meta_monitor_manager_kms_set_power_save_mode (MetaMonitorManager *manager,
113 MetaPowerSave mode)128 MetaPowerSave mode)
114{129{
@@ -512,11 +527,11 @@ meta_monitor_manager_kms_calculate_monitor_mode_scale (MetaMonitorManager *manag
512}527}
513528
514static float *529static float *
515meta_monitor_manager_kms_calculate_supported_scales (MetaMonitorManager *manager,530meta_monitor_manager_kms_calculate_supported_scales (MetaMonitorManager *manager,
516 MetaLogicalMonitorLayoutMode layout_mode,531 MetaLogicalMonitorLayoutMode layout_mode,
517 MetaMonitor *monitor,532 MetaMonitor *monitor,
518 MetaMonitorMode *monitor_mode,533 MetaMonitorMode *monitor_mode,
519 int *n_supported_scales)534 int *n_supported_scales)
520{535{
521 MetaMonitorScalesConstraint constraints =536 MetaMonitorScalesConstraint constraints =
522 META_MONITOR_SCALES_CONSTRAINT_NONE;537 META_MONITOR_SCALES_CONSTRAINT_NONE;
@@ -755,6 +770,7 @@ meta_monitor_manager_kms_class_init (MetaMonitorManagerKmsClass *klass)
755 object_class->dispose = meta_monitor_manager_kms_dispose;770 object_class->dispose = meta_monitor_manager_kms_dispose;
756771
757 manager_class->read_edid = meta_monitor_manager_kms_read_edid;772 manager_class->read_edid = meta_monitor_manager_kms_read_edid;
773 manager_class->read_current_state = meta_monitor_manager_kms_read_current_state;
758 manager_class->ensure_initial_config = meta_monitor_manager_kms_ensure_initial_config;774 manager_class->ensure_initial_config = meta_monitor_manager_kms_ensure_initial_config;
759 manager_class->apply_monitors_config = meta_monitor_manager_kms_apply_monitors_config;775 manager_class->apply_monitors_config = meta_monitor_manager_kms_apply_monitors_config;
760 manager_class->set_power_save_mode = meta_monitor_manager_kms_set_power_save_mode;776 manager_class->set_power_save_mode = meta_monitor_manager_kms_set_power_save_mode;
diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c
index f3fa17e..f3cc543 100644
--- a/src/backends/native/meta-output-kms.c
+++ b/src/backends/native/meta-output-kms.c
@@ -56,6 +56,10 @@ typedef struct _MetaOutputKms
56 uint32_t edid_blob_id;56 uint32_t edid_blob_id;
57 uint32_t tile_blob_id;57 uint32_t tile_blob_id;
5858
59 uint32_t underscan_prop_id;
60 uint32_t underscan_hborder_prop_id;
61 uint32_t underscan_vborder_prop_id;
62
59 int suggested_x;63 int suggested_x;
60 int suggested_y;64 int suggested_y;
61 uint32_t hotplug_mode_update;65 uint32_t hotplug_mode_update;
@@ -66,13 +70,55 @@ typedef struct _MetaOutputKms
66void70void
67meta_output_kms_set_underscan (MetaOutput *output)71meta_output_kms_set_underscan (MetaOutput *output)
68{72{
73 MetaOutputKms *output_kms = output->driver_private;
74 MetaGpu *gpu = meta_output_get_gpu (output);
75 MetaGpuKms *gpu_kms = META_GPU_KMS (gpu);
69 MetaCrtc *crtc;76 MetaCrtc *crtc;
77 int kms_fd;
78 uint32_t connector_id;
7079
71 crtc = meta_output_get_assigned_crtc (output);80 if (!output_kms->underscan_prop_id)
72 if (!crtc)
73 return;81 return;
7482
75 meta_crtc_kms_set_underscan (crtc, output->is_underscanning);83 crtc = meta_output_get_assigned_crtc (output);
84 kms_fd = meta_gpu_kms_get_fd (gpu_kms);
85 connector_id = output_kms->connector->connector_id;
86
87 if (output->is_underscanning && crtc && crtc->current_mode)
88 {
89 drmModeObjectSetProperty (kms_fd, connector_id,
90 DRM_MODE_OBJECT_CONNECTOR,
91 output_kms->underscan_prop_id,
92 (uint64_t) 1);
93
94 if (output_kms->underscan_hborder_prop_id)
95 {
96 uint64_t value;
97
98 value = MIN (128, crtc->current_mode->width * 0.05);
99 drmModeObjectSetProperty (kms_fd, connector_id,
100 DRM_MODE_OBJECT_CONNECTOR,
101 output_kms->underscan_hborder_prop_id,
102 value);
103 }
104 if (output_kms->underscan_vborder_prop_id)
105 {
106 uint64_t value;
107
108 value = MIN (128, crtc->current_mode->height * 0.05);
109 drmModeObjectSetProperty (kms_fd, connector_id,
110 DRM_MODE_OBJECT_CONNECTOR,
111 output_kms->underscan_vborder_prop_id,
112 value);
113 }
114 }
115 else
116 {
117 drmModeObjectSetProperty (kms_fd, connector_id,
118 DRM_MODE_OBJECT_CONNECTOR,
119 output_kms->underscan_prop_id,
120 (uint64_t) 0);
121 }
76}122}
77123
78uint32_t124uint32_t
@@ -312,6 +358,15 @@ find_connector_properties (MetaGpuKms *gpu_kms,
312 strcmp (prop->name, "panel orientation") == 0)358 strcmp (prop->name, "panel orientation") == 0)
313 handle_panel_orientation (output, prop,359 handle_panel_orientation (output, prop,
314 output_kms->connector->prop_values[i]);360 output_kms->connector->prop_values[i]);
361 else if ((prop->flags & DRM_MODE_PROP_ENUM) &&
362 strcmp (prop->name, "underscan") == 0)
363 output_kms->underscan_prop_id = prop->prop_id;
364 else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
365 strcmp (prop->name, "underscan hborder") == 0)
366 output_kms->underscan_hborder_prop_id = prop->prop_id;
367 else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
368 strcmp (prop->name, "underscan vborder") == 0)
369 output_kms->underscan_vborder_prop_id = prop->prop_id;
315370
316 drmModeFreeProperty (prop);371 drmModeFreeProperty (prop);
317 }372 }
@@ -639,6 +694,7 @@ meta_create_kms_output (MetaGpuKms *gpu_kms,
639 output->suggested_x = output_kms->suggested_x;694 output->suggested_x = output_kms->suggested_x;
640 output->suggested_y = output_kms->suggested_y;695 output->suggested_y = output_kms->suggested_y;
641 output->hotplug_mode_update = output_kms->hotplug_mode_update;696 output->hotplug_mode_update = output_kms->hotplug_mode_update;
697 output->supports_underscanning = output_kms->underscan_prop_id != 0;
642698
643 if (output_kms->edid_blob_id != 0)699 if (output_kms->edid_blob_id != 0)
644 {700 {
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 771ca08..086e8e4 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -103,8 +103,6 @@ typedef struct _MetaRendererNativeGpuData
103#ifdef HAVE_EGL_DEVICE103#ifdef HAVE_EGL_DEVICE
104 struct {104 struct {
105 EGLDeviceEXT device;105 EGLDeviceEXT device;
106
107 gboolean no_egl_output_drm_flip_event;
108 } egl;106 } egl;
109#endif107#endif
110108
@@ -215,6 +213,9 @@ struct _MetaRendererNative
215213
216 int64_t frame_counter;214 int64_t frame_counter;
217 gboolean pending_unset_disabled_crtcs;215 gboolean pending_unset_disabled_crtcs;
216
217 GList *power_save_page_flip_closures;
218 guint power_save_page_flip_source_id;
218};219};
219220
220static void221static void
@@ -257,6 +258,15 @@ cogl_pixel_format_from_drm_format (uint32_t drm_format,
257 CoglPixelFormat *out_format,258 CoglPixelFormat *out_format,
258 CoglTextureComponents *out_components);259 CoglTextureComponents *out_components);
259260
261static MetaBackend *
262backend_from_renderer_native (MetaRendererNative *renderer_native)
263{
264 MetaMonitorManager *monitor_manager =
265 META_MONITOR_MANAGER (renderer_native->monitor_manager_kms);
266
267 return meta_monitor_manager_get_backend (monitor_manager);
268}
269
260static void270static void
261meta_renderer_native_gpu_data_free (MetaRendererNativeGpuData *renderer_gpu_data)271meta_renderer_native_gpu_data_free (MetaRendererNativeGpuData *renderer_gpu_data)
262{272{
@@ -1485,8 +1495,6 @@ flip_egl_stream (MetaOnscreenNative *onscreen_native,
1485 renderer_gpu_data =1495 renderer_gpu_data =
1486 meta_renderer_native_get_gpu_data (onscreen_native->renderer_native,1496 meta_renderer_native_get_gpu_data (onscreen_native->renderer_native,
1487 onscreen_native->render_gpu);1497 onscreen_native->render_gpu);
1488 if (renderer_gpu_data->egl.no_egl_output_drm_flip_event)
1489 return FALSE;
14901498
1491 closure_container =1499 closure_container =
1492 meta_gpu_kms_wrap_flip_closure (onscreen_native->render_gpu,1500 meta_gpu_kms_wrap_flip_closure (onscreen_native->render_gpu,
@@ -1509,9 +1517,7 @@ flip_egl_stream (MetaOnscreenNative *onscreen_native,
1509 if (error->domain != META_EGL_ERROR ||1517 if (error->domain != META_EGL_ERROR ||
1510 error->code != EGL_RESOURCE_BUSY_EXT)1518 error->code != EGL_RESOURCE_BUSY_EXT)
1511 {1519 {
1512 g_warning ("Failed to flip EGL stream (%s), relying on clock from "1520 g_warning ("Failed to flip EGL stream: %s", error->message);
1513 "now on", error->message);
1514 renderer_gpu_data->egl.no_egl_output_drm_flip_event = TRUE;
1515 }1521 }
1516 g_error_free (error);1522 g_error_free (error);
1517 meta_gpu_kms_flip_closure_container_free (closure_container);1523 meta_gpu_kms_flip_closure_container_free (closure_container);
@@ -1532,6 +1538,38 @@ is_timestamp_earlier_than (uint64_t ts1,
1532 return ts2 - ts1 < UINT64_MAX / 2;1538 return ts2 - ts1 < UINT64_MAX / 2;
1533}1539}
15341540
1541static gboolean
1542dummy_power_save_page_flip_cb (gpointer user_data)
1543{
1544 MetaRendererNative *renderer_native = user_data;
1545
1546 g_list_free_full (renderer_native->power_save_page_flip_closures,
1547 (GDestroyNotify) g_closure_unref);
1548 renderer_native->power_save_page_flip_closures = NULL;
1549 renderer_native->power_save_page_flip_source_id = 0;
1550
1551 return G_SOURCE_REMOVE;
1552}
1553
1554static void
1555queue_dummy_power_save_page_flip (MetaRendererNative *renderer_native,
1556 GClosure *flip_closure)
1557{
1558 const unsigned int timeout_ms = 100;
1559
1560 if (!renderer_native->power_save_page_flip_source_id)
1561 {
1562 renderer_native->power_save_page_flip_source_id =
1563 g_timeout_add (timeout_ms,
1564 dummy_power_save_page_flip_cb,
1565 renderer_native);
1566 }
1567
1568 renderer_native->power_save_page_flip_closures =
1569 g_list_prepend (renderer_native->power_save_page_flip_closures,
1570 g_closure_ref (flip_closure));
1571}
1572
1535typedef struct _RetryPageFlipData1573typedef struct _RetryPageFlipData
1536{1574{
1537 MetaCrtc *crtc;1575 MetaCrtc *crtc;
@@ -1547,14 +1585,39 @@ retry_page_flip_data_free (RetryPageFlipData *retry_page_flip_data)
1547 g_free (retry_page_flip_data);1585 g_free (retry_page_flip_data);
1548}1586}
15491587
1588static void
1589retry_page_flip_data_fake_flipped (RetryPageFlipData *retry_page_flip_data,
1590 MetaOnscreenNative *onscreen_native)
1591{
1592 MetaCrtc *crtc = retry_page_flip_data->crtc;
1593 MetaGpuKms *gpu_kms = META_GPU_KMS (meta_crtc_get_gpu (crtc));
1594
1595 if (gpu_kms != onscreen_native->render_gpu)
1596 {
1597 MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state;
1598
1599 secondary_gpu_state =
1600 meta_onscreen_native_get_secondary_gpu_state (onscreen_native,
1601 gpu_kms);
1602 secondary_gpu_state->pending_flips--;
1603 }
1604
1605 onscreen_native->total_pending_flips--;
1606}
1607
1550static gboolean1608static gboolean
1551retry_page_flips (gpointer user_data)1609retry_page_flips (gpointer user_data)
1552{1610{
1553 MetaOnscreenNative *onscreen_native = user_data;1611 MetaOnscreenNative *onscreen_native = user_data;
1612 MetaRendererNative *renderer_native = onscreen_native->renderer_native;
1613 MetaMonitorManager *monitor_manager =
1614 META_MONITOR_MANAGER (renderer_native->monitor_manager_kms);
1554 uint64_t now_us;1615 uint64_t now_us;
1616 MetaPowerSave power_save_mode;
1555 GList *l;1617 GList *l;
15561618
1557 now_us = g_source_get_time (onscreen_native->retry_page_flips_source);1619 now_us = g_source_get_time (onscreen_native->retry_page_flips_source);
1620 power_save_mode = meta_monitor_manager_get_power_save_mode (monitor_manager);
15581621
1559 l = onscreen_native->pending_page_flip_retries;1622 l = onscreen_native->pending_page_flip_retries;
1560 while (l)1623 while (l)
@@ -1566,6 +1629,19 @@ retry_page_flips (gpointer user_data)
1566 g_autoptr (GError) error = NULL;1629 g_autoptr (GError) error = NULL;
1567 gboolean did_flip;1630 gboolean did_flip;
15681631
1632 if (power_save_mode != META_POWER_SAVE_ON)
1633 {
1634 onscreen_native->pending_page_flip_retries =
1635 g_list_remove_link (onscreen_native->pending_page_flip_retries, l);
1636
1637 retry_page_flip_data_fake_flipped (retry_page_flip_data,
1638 onscreen_native);
1639 retry_page_flip_data_free (retry_page_flip_data);
1640
1641 l = l_next;
1642 continue;
1643 }
1644
1569 if (is_timestamp_earlier_than (now_us,1645 if (is_timestamp_earlier_than (now_us,
1570 retry_page_flip_data->retry_time_us))1646 retry_page_flip_data->retry_time_us))
1571 {1647 {
@@ -1582,7 +1658,7 @@ retry_page_flips (gpointer user_data)
1582 g_error_matches (error, G_IO_ERROR, G_IO_ERROR_BUSY))1658 g_error_matches (error, G_IO_ERROR, G_IO_ERROR_BUSY))
1583 {1659 {
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches