Accepting request 531474 from GNOME:Next
1 OBS-URL: https://build.opensuse.org/request/show/531474 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/mutter?expand=0&rev=261
This commit is contained in:
parent
4aa393ce04
commit
791217d02d
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2a62933a11632830c430570b0f8d762fd9f76a2eb955d54cc14f73274d06e577
|
||||
size 3618704
|
3
mutter-3.26.1.tar.xz
Normal file
3
mutter-3.26.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:16faf617aae9be06dc5f9e104f4cd20dfdd4d6ec0bc10053752262e9f79a04c2
|
||||
size 3623648
|
@ -1,202 +0,0 @@
|
||||
From e3d59832c56dbc6acb4301836bc54c467889d515 Mon Sep 17 00:00:00 2001
|
||||
From: Vasilis Liaskovitis <vliaskovitis@suse.com>
|
||||
Date: Fri, 29 Sep 2017 16:57:22 +0200
|
||||
Subject: [PATCH] x11/window: Implement _NET_RESTACK_WINDOW and
|
||||
XConfigureRequestEvent sibling
|
||||
|
||||
Implement _NET_RESTACK_WINDOW, based on metacity commit 0b5a50c8.
|
||||
|
||||
Also respect "above" field (sibling) of XConfigureRequestEvent. When it is
|
||||
set, perform a stack operation relative to that sibling.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=786363
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=786365
|
||||
|
||||
Index: mutter-3.26.0/src/core/window-private.h
|
||||
===================================================================
|
||||
--- mutter-3.26.0.orig/src/core/window-private.h
|
||||
+++ mutter-3.26.0/src/core/window-private.h
|
||||
@@ -682,6 +682,9 @@ void meta_window_frame_size_changed (Met
|
||||
void meta_window_stack_just_below (MetaWindow *window,
|
||||
MetaWindow *below_this_one);
|
||||
|
||||
+void meta_window_stack_just_above (MetaWindow *window,
|
||||
+ MetaWindow *above_this_one);
|
||||
+
|
||||
void meta_window_set_user_time (MetaWindow *window,
|
||||
guint32 timestamp);
|
||||
|
||||
Index: mutter-3.26.0/src/core/window.c
|
||||
===================================================================
|
||||
--- mutter-3.26.0.orig/src/core/window.c
|
||||
+++ mutter-3.26.0/src/core/window.c
|
||||
@@ -6646,6 +6646,30 @@ meta_window_stack_just_below (MetaWindow
|
||||
}
|
||||
}
|
||||
|
||||
+void
|
||||
+meta_window_stack_just_above (MetaWindow *window,
|
||||
+ MetaWindow *above_this_one)
|
||||
+{
|
||||
+ g_return_if_fail (window != NULL);
|
||||
+ g_return_if_fail (above_this_one != NULL);
|
||||
+
|
||||
+ if (window->stack_position < above_this_one->stack_position)
|
||||
+ {
|
||||
+ meta_topic (META_DEBUG_STACK,
|
||||
+ "Setting stack position of window %s to %d (making it above window %s).\n",
|
||||
+ window->desc,
|
||||
+ above_this_one->stack_position,
|
||||
+ above_this_one->desc);
|
||||
+ meta_window_set_stack_position (window, above_this_one->stack_position);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ meta_topic (META_DEBUG_STACK,
|
||||
+ "Window %s was already above window %s.\n",
|
||||
+ window->desc, above_this_one->desc);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* meta_window_get_user_time:
|
||||
* @window: a #MetaWindow
|
||||
Index: mutter-3.26.0/src/x11/atomnames.h
|
||||
===================================================================
|
||||
--- mutter-3.26.0.orig/src/x11/atomnames.h
|
||||
+++ mutter-3.26.0/src/x11/atomnames.h
|
||||
@@ -176,6 +176,7 @@ item(_NET_WM_OPAQUE_REGION)
|
||||
item(_NET_WM_FRAME_DRAWN)
|
||||
item(_NET_WM_FRAME_TIMINGS)
|
||||
item(_NET_WM_WINDOW_OPACITY)
|
||||
+item(_NET_RESTACK_WINDOW)
|
||||
|
||||
/* eof atomnames.h */
|
||||
|
||||
Index: mutter-3.26.0/src/x11/window-x11.c
|
||||
===================================================================
|
||||
--- mutter-3.26.0.orig/src/x11/window-x11.c
|
||||
+++ mutter-3.26.0/src/x11/window-x11.c
|
||||
@@ -2092,6 +2092,32 @@ meta_window_move_resize_request (MetaWin
|
||||
}
|
||||
}
|
||||
|
||||
+static void
|
||||
+restack_window (MetaWindow *window,
|
||||
+ MetaWindow *sibling,
|
||||
+ int direction)
|
||||
+{
|
||||
+ switch (direction)
|
||||
+ {
|
||||
+ case Above:
|
||||
+ if (sibling)
|
||||
+ meta_window_stack_just_above (window, sibling);
|
||||
+ else
|
||||
+ meta_window_raise (window);
|
||||
+ break;
|
||||
+ case Below:
|
||||
+ if (sibling)
|
||||
+ meta_window_stack_just_below (window, sibling);
|
||||
+ else
|
||||
+ meta_window_lower (window);
|
||||
+ break;
|
||||
+ case TopIf:
|
||||
+ case BottomIf:
|
||||
+ case Opposite:
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
gboolean
|
||||
meta_window_x11_configure_request (MetaWindow *window,
|
||||
XEvent *event)
|
||||
@@ -2125,10 +2151,7 @@ meta_window_x11_configure_request (MetaW
|
||||
* the stack looks).
|
||||
*
|
||||
* I'm pretty sure no interesting client uses TopIf, BottomIf, or
|
||||
- * Opposite anyway, so the only possible missing thing is
|
||||
- * Above/Below with a sibling set. For now we just pretend there's
|
||||
- * never a sibling set and always do the full raise/lower instead of
|
||||
- * the raise-just-above/below-sibling.
|
||||
+ * Opposite anyway.
|
||||
*/
|
||||
if (event->xconfigurerequest.value_mask & CWStackMode)
|
||||
{
|
||||
@@ -2160,19 +2183,23 @@ meta_window_x11_configure_request (MetaW
|
||||
}
|
||||
else
|
||||
{
|
||||
- switch (event->xconfigurerequest.detail)
|
||||
+ MetaWindow *sibling = NULL;
|
||||
+ /* Handle Above/Below with a sibling set */
|
||||
+ if (event->xconfigurerequest.above != None)
|
||||
{
|
||||
- case Above:
|
||||
- meta_window_raise (window);
|
||||
- break;
|
||||
- case Below:
|
||||
- meta_window_lower (window);
|
||||
- break;
|
||||
- case TopIf:
|
||||
- case BottomIf:
|
||||
- case Opposite:
|
||||
- break;
|
||||
+ MetaDisplay *display;
|
||||
+
|
||||
+ display = meta_window_get_display (window);
|
||||
+ sibling = meta_display_lookup_x_window (display,
|
||||
+ event->xconfigurerequest.above);
|
||||
+ if (sibling == NULL)
|
||||
+ return TRUE;
|
||||
+
|
||||
+ meta_topic (META_DEBUG_STACK,
|
||||
+ "xconfigure stacking request from window %s sibling %s stackmode %d\n",
|
||||
+ window->desc, sibling->desc, event->xconfigurerequest.detail);
|
||||
}
|
||||
+ restack_window (window, sibling, event->xconfigurerequest.detail);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2245,6 +2272,30 @@ query_pressed_buttons (MetaWindow *windo
|
||||
return button;
|
||||
}
|
||||
|
||||
+static void
|
||||
+handle_net_restack_window (MetaDisplay *display,
|
||||
+ XEvent *event)
|
||||
+{
|
||||
+ MetaWindow *window, *sibling = NULL;
|
||||
+
|
||||
+ /* Ignore if this does not come from a pager, see the WM spec
|
||||
+ */
|
||||
+ if (event->xclient.data.l[0] != 2)
|
||||
+ return;
|
||||
+
|
||||
+ window = meta_display_lookup_x_window (display,
|
||||
+ event->xclient.window);
|
||||
+
|
||||
+ if (window)
|
||||
+ {
|
||||
+ if (event->xclient.data.l[1])
|
||||
+ sibling = meta_display_lookup_x_window (display,
|
||||
+ event->xclient.data.l[1]);
|
||||
+
|
||||
+ restack_window (window, sibling, event->xclient.data.l[2]);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
gboolean
|
||||
meta_window_x11_client_message (MetaWindow *window,
|
||||
XEvent *event)
|
||||
@@ -2728,6 +2779,11 @@ meta_window_x11_client_message (MetaWind
|
||||
|
||||
meta_window_show_menu (window, META_WINDOW_MENU_WM, x, y);
|
||||
}
|
||||
+ else if (event->xclient.message_type ==
|
||||
+ display->atom__NET_RESTACK_WINDOW)
|
||||
+ {
|
||||
+ handle_net_restack_window (display, event);
|
||||
+ }
|
||||
|
||||
return FALSE;
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
From ea214fbe0f85119f7a10244d211a13489a7a44d6 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Soller <jackpot51@gmail.com>
|
||||
Date: Mon, 25 Sep 2017 20:04:00 +0000
|
||||
Subject: Remove unscaled-font-dpi setting from X11 backend
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=788049
|
||||
---
|
||||
clutter/clutter/x11/clutter-settings-x11.h | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/clutter/clutter/x11/clutter-settings-x11.h b/clutter/clutter/x11/clutter-settings-x11.h
|
||||
index 3e08885..b7d1b0e 100644
|
||||
--- a/clutter/clutter/x11/clutter-settings-x11.h
|
||||
+++ b/clutter/clutter/x11/clutter-settings-x11.h
|
||||
@@ -14,7 +14,6 @@ static const struct {
|
||||
{ "Xft/HintStyle", "font-hint-style" },
|
||||
{ "Xft/RGBA", "font-subpixel-order" },
|
||||
{ "Fontconfig/Timestamp", "fontconfig-timestamp" },
|
||||
- { "Gdk/UnscaledDPI", "unscaled-font-dpi" },
|
||||
};
|
||||
|
||||
static const gint _n_clutter_settings_map = G_N_ELEMENTS (_clutter_settings_map);
|
||||
--
|
||||
cgit v0.12
|
||||
|
@ -1,29 +0,0 @@
|
||||
From 26cd031be8b675bd89fc4582e0e4c11116af81d7 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Thu, 14 Sep 2017 14:55:02 +0200
|
||||
Subject: clutter: Use the ClutterScrollFinishFlags when delivering scroll
|
||||
event
|
||||
|
||||
This got accidentally hardcoded to CLUTTER_SCROLL_FINISHED_NONE on commit
|
||||
d3c559a917, which broke kinetic scrolling for touchpads on clients.
|
||||
---
|
||||
clutter/clutter/evdev/clutter-device-manager-evdev.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c b/clutter/clutter/evdev/clutter-device-manager-evdev.c
|
||||
index 4470a62..9de2ea1 100644
|
||||
--- a/clutter/clutter/evdev/clutter-device-manager-evdev.c
|
||||
+++ b/clutter/clutter/evdev/clutter-device-manager-evdev.c
|
||||
@@ -1214,8 +1214,7 @@ notify_continuous_axis (ClutterSeatEvdev *seat,
|
||||
|
||||
clutter_seat_evdev_notify_scroll_continuous (seat, device, time_us,
|
||||
dx, dy,
|
||||
- scroll_source,
|
||||
- CLUTTER_SCROLL_FINISHED_NONE);
|
||||
+ scroll_source, finish_flags);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
cgit v0.12
|
||||
|
@ -1,71 +0,0 @@
|
||||
From 1035200f26efaddc8c21194e775f11fedf2ee266 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Sun, 17 Sep 2017 12:07:12 +0200
|
||||
Subject: monitor-config-manager: Fix 90/270 degree rotation not working
|
||||
|
||||
When rotating 90/270 degrees we need to swap width and height. This fixes
|
||||
the screen going black and the following errors showing in the journal:
|
||||
|
||||
gnome-shell[1097]: Failed to set CRTC mode 800x1280: No space left on device
|
||||
gnome-shell[1097]: Failed to flip: Device or resource busy
|
||||
gnome-shell[1097]: Failed to set CRTC mode 800x1280: No space left on device
|
||||
gnome-shell[1097]: Failed to set CRTC mode 800x1280: No space left on device
|
||||
|
||||
When rotating a tablet with accelerometer 90/270 degrees.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=787836
|
||||
---
|
||||
src/backends/meta-monitor-config-manager.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c
|
||||
index 265269c..d40c2e0 100644
|
||||
--- a/src/backends/meta-monitor-config-manager.c
|
||||
+++ b/src/backends/meta-monitor-config-manager.c
|
||||
@@ -764,6 +764,14 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager,
|
||||
logical_monitor_config->monitor_configs = g_list_append (NULL, monitor_config);
|
||||
logical_monitor_config->transform = transform;
|
||||
|
||||
+ if (meta_monitor_transform_is_rotated (current_logical_monitor_config->transform) !=
|
||||
+ meta_monitor_transform_is_rotated (logical_monitor_config->transform))
|
||||
+ {
|
||||
+ int temp = logical_monitor_config->layout.width;
|
||||
+ logical_monitor_config->layout.width = logical_monitor_config->layout.height;
|
||||
+ logical_monitor_config->layout.height = temp;
|
||||
+ }
|
||||
+
|
||||
return meta_monitors_config_new (g_list_append (NULL, logical_monitor_config),
|
||||
config_manager->current_config->layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
From 7e3a780dcdabaff6ff94fddec7995681029b2f9a Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Sun, 17 Sep 2017 16:21:46 +0200
|
||||
Subject: monitor-config-manager-kms: Fix is_transform_handled
|
||||
|
||||
meta_monitor_manager_kms_is_transform_handled should checked the
|
||||
transform passed as function argument, not the current crtc transform.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=787836
|
||||
---
|
||||
src/backends/native/meta-monitor-manager-kms.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
|
||||
index 6507e51..23a79ae 100644
|
||||
--- a/src/backends/native/meta-monitor-manager-kms.c
|
||||
+++ b/src/backends/native/meta-monitor-manager-kms.c
|
||||
@@ -1782,7 +1782,7 @@ meta_monitor_manager_kms_is_transform_handled (MetaMonitorManager *manager,
|
||||
{
|
||||
MetaCrtcKms *crtc_kms = crtc->driver_private;
|
||||
|
||||
- if ((1 << crtc->transform) & crtc_kms->all_hw_transforms)
|
||||
+ if ((1 << transform) & crtc_kms->all_hw_transforms)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
--
|
||||
cgit v0.12
|
||||
|
@ -1,40 +0,0 @@
|
||||
From 743e8cc249168ccc64073ab83c00c31a30ca22e7 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Thu, 14 Sep 2017 12:42:47 +0200
|
||||
Subject: backends: Add some wiggle room for refresh rate comparisons
|
||||
|
||||
We have not enough control over the sources of the refresh rate
|
||||
float variable to make == comparisons reliable, add some room
|
||||
when comparing these.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=787668
|
||||
---
|
||||
src/backends/meta-monitor.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
|
||||
index e3595fc..70350c3 100644
|
||||
--- a/src/backends/meta-monitor.c
|
||||
+++ b/src/backends/meta-monitor.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#define MAXIMUM_SCALE_FACTOR 4.0f
|
||||
#define MINIMUM_LOGICAL_WIDTH 800
|
||||
#define MINIMUM_LOGICAL_HEIGHT 600
|
||||
+#define MAXIMUM_REFRESH_RATE_DIFF 0.001
|
||||
|
||||
#define HANDLED_CRTC_MODE_FLAGS (META_CRTC_MODE_FLAG_INTERLACE)
|
||||
|
||||
@@ -1252,8 +1253,8 @@ meta_monitor_mode_spec_equals (MetaMonitorModeSpec *monitor_mode_spec,
|
||||
{
|
||||
return (monitor_mode_spec->width == other_monitor_mode_spec->width &&
|
||||
monitor_mode_spec->height == other_monitor_mode_spec->height &&
|
||||
- (monitor_mode_spec->refresh_rate ==
|
||||
- other_monitor_mode_spec->refresh_rate) &&
|
||||
+ ABS (monitor_mode_spec->refresh_rate -
|
||||
+ other_monitor_mode_spec->refresh_rate) < MAXIMUM_REFRESH_RATE_DIFF &&
|
||||
monitor_mode_spec->flags == other_monitor_mode_spec->flags);
|
||||
}
|
||||
|
||||
--
|
||||
cgit v0.12
|
||||
|
@ -1,196 +0,0 @@
|
||||
From 07f6c85cc737b2f7d106490cc4d336f2404ac9b5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Tue, 12 Sep 2017 12:20:31 +0800
|
||||
Subject: wayland/inhibit-shortcuts-dialog: Use g_new0 instead of g_new
|
||||
|
||||
The code assumed the newly allocated blocked was initialized to 0, but
|
||||
it wasn't since g_new was used. Fix that by using g_new0.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=787570
|
||||
---
|
||||
src/wayland/meta-wayland-inhibit-shortcuts-dialog.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c b/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c
|
||||
index da897b9..5f883f7 100644
|
||||
--- a/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c
|
||||
+++ b/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c
|
||||
@@ -112,7 +112,7 @@ meta_wayland_surface_ensure_inhibit_shortcuts_dialog (MetaWaylandSurface *surfac
|
||||
if (data)
|
||||
return data;
|
||||
|
||||
- data = g_new (InhibitShortcutsData, 1);
|
||||
+ data = g_new0 (InhibitShortcutsData, 1);
|
||||
surface_inhibit_shortcuts_data_set (surface, data);
|
||||
g_signal_connect (surface, "destroy",
|
||||
G_CALLBACK (on_surface_destroyed),
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
|
||||
From 9c16e4e2f3c198d3ac6a13b02b63b91f3ab56850 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Tue, 12 Sep 2017 09:39:24 +0200
|
||||
Subject: wayland: Keep the inhibit shortcut dialog
|
||||
|
||||
On Wayland, the grab()/ungrab() in gtk+/gdk are wired to the shortcut
|
||||
inhibitor mechanism, which in turn shows the dialog, which can take
|
||||
focus away from the client window when the dialog is shown.
|
||||
|
||||
If the client issues an ungrab() when the keyboard focus is lost, we
|
||||
would hide the dialog, causing the keyboard focus to be returned to the
|
||||
client surface, which in turn would issue a new grab(), so forth and so
|
||||
on, causing a continuous show/hide of the shortcut inhibitor dialog.
|
||||
|
||||
To avoid this issue, keep the dialog around even if the shortcut inhibit
|
||||
is canceled by the client, so that the user is forced to make a choice
|
||||
that we can reuse on the next request without showing the dialog again.
|
||||
|
||||
Instead of hiding the dialog when the shortcut inhibitor is destroyed by
|
||||
the client, we simply mark the request as canceled and do not apply the
|
||||
user's choice.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=787568
|
||||
---
|
||||
src/wayland/meta-wayland-inhibit-shortcuts-dialog.c | 15 +++++++++++----
|
||||
src/wayland/meta-wayland-inhibit-shortcuts-dialog.h | 2 +-
|
||||
src/wayland/meta-wayland-inhibit-shortcuts.c | 2 +-
|
||||
3 files changed, 13 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c b/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c
|
||||
index 5f883f7..a432a41 100644
|
||||
--- a/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c
|
||||
+++ b/src/wayland/meta-wayland-inhibit-shortcuts-dialog.c
|
||||
@@ -32,6 +32,7 @@ typedef struct _InhibitShortcutsData
|
||||
MetaInhibitShortcutsDialog *dialog;
|
||||
gulong response_handler_id;
|
||||
gboolean has_last_response;
|
||||
+ gboolean request_canceled;
|
||||
MetaInhibitShortcutsDialogResponse last_response;
|
||||
} InhibitShortcutsData;
|
||||
|
||||
@@ -93,7 +94,10 @@ inhibit_shortcuts_dialog_response_cb (MetaInhibitShortcutsDialog *dialog,
|
||||
{
|
||||
data->last_response = response;
|
||||
data->has_last_response = TRUE;
|
||||
- inhibit_shortcuts_dialog_response_apply (data);
|
||||
+
|
||||
+ /* If the request was canceled, we don't need to apply the choice made */
|
||||
+ if (!data->request_canceled)
|
||||
+ inhibit_shortcuts_dialog_response_apply (data);
|
||||
|
||||
meta_inhibit_shortcuts_dialog_hide (data->dialog);
|
||||
surface_inhibit_shortcuts_data_destroy_dialog (data);
|
||||
@@ -154,11 +158,14 @@ meta_wayland_surface_show_inhibit_shortcuts_dialog (MetaWaylandSurface *surface,
|
||||
}
|
||||
|
||||
data = meta_wayland_surface_ensure_inhibit_shortcuts_dialog (surface, seat);
|
||||
+ /* This is a new request */
|
||||
+ data->request_canceled = FALSE;
|
||||
+
|
||||
meta_inhibit_shortcuts_dialog_show (data->dialog);
|
||||
}
|
||||
|
||||
void
|
||||
-meta_wayland_surface_hide_inhibit_shortcuts_dialog (MetaWaylandSurface *surface)
|
||||
+meta_wayland_surface_cancel_inhibit_shortcuts_dialog (MetaWaylandSurface *surface)
|
||||
{
|
||||
InhibitShortcutsData *data;
|
||||
|
||||
@@ -168,8 +175,8 @@ meta_wayland_surface_hide_inhibit_shortcuts_dialog (MetaWaylandSurface *surface)
|
||||
data = surface_inhibit_shortcuts_data_get (surface);
|
||||
g_return_if_fail (data);
|
||||
|
||||
- if (data->dialog)
|
||||
- meta_inhibit_shortcuts_dialog_hide (data->dialog);
|
||||
+ /* Keep the dialog on screen, but mark the request as canceled */
|
||||
+ data->request_canceled = TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
diff --git a/src/wayland/meta-wayland-inhibit-shortcuts-dialog.h b/src/wayland/meta-wayland-inhibit-shortcuts-dialog.h
|
||||
index bd3fc42..a7d60cf 100644
|
||||
--- a/src/wayland/meta-wayland-inhibit-shortcuts-dialog.h
|
||||
+++ b/src/wayland/meta-wayland-inhibit-shortcuts-dialog.h
|
||||
@@ -24,7 +24,7 @@
|
||||
void meta_wayland_surface_show_inhibit_shortcuts_dialog (MetaWaylandSurface *surface,
|
||||
MetaWaylandSeat *seat);
|
||||
|
||||
-void meta_wayland_surface_hide_inhibit_shortcuts_dialog (MetaWaylandSurface *surface);
|
||||
+void meta_wayland_surface_cancel_inhibit_shortcuts_dialog (MetaWaylandSurface *surface);
|
||||
|
||||
void meta_wayland_surface_inhibit_shortcuts_dialog_init (void);
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-inhibit-shortcuts.c b/src/wayland/meta-wayland-inhibit-shortcuts.c
|
||||
index cd07891..a7ba3c2 100644
|
||||
--- a/src/wayland/meta-wayland-inhibit-shortcuts.c
|
||||
+++ b/src/wayland/meta-wayland-inhibit-shortcuts.c
|
||||
@@ -49,7 +49,7 @@ zwp_keyboard_shortcuts_inhibit_destroy (struct wl_client *client,
|
||||
shortcut_inhibit = wl_resource_get_user_data (resource);
|
||||
if (shortcut_inhibit->surface)
|
||||
{
|
||||
- meta_wayland_surface_hide_inhibit_shortcuts_dialog (shortcut_inhibit->surface);
|
||||
+ meta_wayland_surface_cancel_inhibit_shortcuts_dialog (shortcut_inhibit->surface);
|
||||
|
||||
g_signal_handler_disconnect (shortcut_inhibit->surface,
|
||||
shortcut_inhibit->surface_destroyed_handler);
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
|
||||
From 2bf7974076ea99c9b30fe5b3d49456dba5a20c19 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Tue, 12 Sep 2017 10:27:32 +0200
|
||||
Subject: wayland: do not leak shortcut inhibit data
|
||||
|
||||
We would free the shortcut inhibit data only when the client destroys
|
||||
its request, which is not the case when the clients itself is
|
||||
destroyed, leading to a leak of the shortcut inhibit data.
|
||||
|
||||
Free the data on resource destruction instead, and simply destroy the
|
||||
resource on destroy request.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=787568
|
||||
---
|
||||
src/wayland/meta-wayland-inhibit-shortcuts.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-inhibit-shortcuts.c b/src/wayland/meta-wayland-inhibit-shortcuts.c
|
||||
index a7ba3c2..8e5ed24 100644
|
||||
--- a/src/wayland/meta-wayland-inhibit-shortcuts.c
|
||||
+++ b/src/wayland/meta-wayland-inhibit-shortcuts.c
|
||||
@@ -41,8 +41,7 @@ struct _MetaWaylandKeyboardShotscutsInhibit
|
||||
};
|
||||
|
||||
static void
|
||||
-zwp_keyboard_shortcuts_inhibit_destroy (struct wl_client *client,
|
||||
- struct wl_resource *resource)
|
||||
+zwp_keyboard_shortcuts_inhibit_destructor (struct wl_resource *resource)
|
||||
{
|
||||
MetaWaylandKeyboardShotscutsInhibit *shortcut_inhibit;
|
||||
|
||||
@@ -64,6 +63,12 @@ zwp_keyboard_shortcuts_inhibit_destroy (struct wl_client *client,
|
||||
shortcut_inhibit->seat);
|
||||
}
|
||||
g_free (shortcut_inhibit);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+zwp_keyboard_shortcuts_inhibit_destroy (struct wl_client *client,
|
||||
+ struct wl_resource *resource)
|
||||
+{
|
||||
wl_resource_destroy (resource);
|
||||
}
|
||||
|
||||
@@ -148,7 +153,7 @@ zwp_keyboard_shortcuts_inhibit_manager_inhibit_shortcuts (struct wl_client *cl
|
||||
wl_resource_set_implementation (keyboard_shortcuts_inhibit_resource,
|
||||
&meta_keyboard_shortcuts_inhibit_interface,
|
||||
shortcut_inhibit,
|
||||
- NULL);
|
||||
+ zwp_keyboard_shortcuts_inhibit_destructor);
|
||||
}
|
||||
|
||||
static const struct zwp_keyboard_shortcuts_inhibit_manager_v1_interface
|
||||
--
|
||||
cgit v0.12
|
||||
|
@ -1,3 +1,32 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 4 19:55:42 UTC 2017 - zaitor@opensuse.org
|
||||
|
||||
- Update to version 3.26.1:
|
||||
+ Fix crash when respawning shortcut inhibitor dialog
|
||||
(bgo#787568).
|
||||
+ Fix crash during monitor configuration migration (bgo#787668).
|
||||
+ Fix multihead regressions in X11 session (bgo#787477).
|
||||
+ Fix screen rotation regressions (bgo#787836).
|
||||
+ Fix keybindings not being resolved with non-latin layouts (bgo#787016).
|
||||
+ Support snap packages for sandboxed app IDs (bgo#788217).
|
||||
+ Fix crash when reconnecting tablet device (bgo#787649).
|
||||
+ Support running headless (bgo#730551, bgo#787637).
|
||||
+ Support _NET_RESTACK_WINDOW and ConfigureRequest siblings (bgo#786365).
|
||||
+ Fix monitor layout not being remembered across sessions (bgo#787629).
|
||||
+ Make sure to export _NET_NUMBER_OF_DESKTOPS (bgo#760651).
|
||||
+ Allow resizing of tiled windows (bgo#645153).
|
||||
+ Export tiling information to clients (bgo#751857).
|
||||
+ Misc. bug fixes: bgo#787570, bgo#787715, bgo#787953,
|
||||
bgo#788049, bgo#788199, bgo#788292, bgo#788197.
|
||||
+ Updated translations.
|
||||
- Drop upstream fixed patches:
|
||||
+ mutter-wayland-fixes.patch.
|
||||
+ mutter-monitor-refresh-rate.patch.
|
||||
+ mutter-fix-kinetic-scrolling.patch.
|
||||
+ mutter-monitor-config-manager-rotation-fix.patch.
|
||||
+ mutter-fix-hidpi-scaling-x11.patch.
|
||||
+ mutter-bsc1052058-NET_RESTACK_WINDOW-Respect-sibling.patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 2 11:57:00 CEST 2017 - vliaskovitis@suse.com
|
||||
|
||||
|
20
mutter.spec
20
mutter.spec
@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
Name: mutter
|
||||
Version: 3.26.0
|
||||
Version: 3.26.1
|
||||
Release: 0
|
||||
Summary: Window and compositing manager based on Clutter
|
||||
License: GPL-2.0+
|
||||
@ -28,18 +28,6 @@ Source: http://download.gnome.org/sources/mutter/3.26/%{name}-%{version}
|
||||
Patch0: mutter-fix-startup.patch
|
||||
# PATCH-FEATURE-UPSTREAM mutter-iconcache-Support-RGB16_565-format-for-16-bit-color-.patch FATE#323412 bgo#781704 bsc#1024748 vliaskovitis@suse.com -- iconcache: Support RGB16_565 format for 16-bit sessions
|
||||
Patch1: mutter-iconcache-Support-RGB16_565-format-for-16-bit-color-.patch
|
||||
# PATCH-FIX-UPSTREAM mutter-wayland-fixes.patch bgo#787570 bgo#787568 zaitor@opensuse.org -- Three bugfix commits from upstream for wayland
|
||||
Patch2: mutter-wayland-fixes.patch
|
||||
# PATCH-FIX-UPSTREAM mutter-monitor-refresh-rate.patch bgo#787668 zaitor@opensuse.org -- Fix refreshrate for some user
|
||||
Patch3: mutter-monitor-refresh-rate.patch
|
||||
# PATCH-FIX-UPSTREAM mutter-fix-kinetic-scrolling.patch zaitor@opensuse.org -- Fix kinetic scrolling
|
||||
Patch4: mutter-fix-kinetic-scrolling.patch
|
||||
# PATCH-FIX-UPSTREAM mutter-monitor-config-manager-rotation-fix.patch bgo#787836 badshah400@gmail.com -- Fix transformation when rotating screen so that rotation by 90/270 deg don't show a black screen; patch taken from upstream git
|
||||
Patch5: mutter-monitor-config-manager-rotation-fix.patch
|
||||
# PATCH-FIX-UPSTREAM mutter-fix-hidpi-scaling-x11.patch bgo#788049 zaitor@opensuse.org -- Fix hidpi scaling regression when using X11
|
||||
Patch6: mutter-fix-hidpi-scaling-x11.patch
|
||||
# PATCH-FIX-UPSTREAM mutter-bsc1052058-NET_RESTACK_WINDOW-Respect-sibling.patch bsc#1052058 bgo#786363 bgo#786365 vliaskovitis@suse.com --Implement NET_RESTACK_WINDOW, respect XConfigureRequestEvent sibling
|
||||
Patch7: mutter-bsc1052058-NET_RESTACK_WINDOW-Respect-sibling.patch
|
||||
|
||||
# SLE only patches start at 1000
|
||||
# PATCH-FEATURE-SLE mutter-SLE-bell.patch FATE#316042 bnc#889218 idonmez@suse.com -- make audible bell work out of the box.
|
||||
@ -150,12 +138,6 @@ applications that want to make use of the mutter library.
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
|
||||
# SLE only patches and translations.
|
||||
%if !0%{?is_opensuse}
|
||||
|
Loading…
Reference in New Issue
Block a user