Update to 3.32.1
This commit is contained in:
parent
238cfe5ac4
commit
6e450d5715
1
.gitignore
vendored
1
.gitignore
vendored
@ -151,3 +151,4 @@ mutter-2.31.5.tar.bz2
|
||||
/mutter-3.31.91.tar.xz
|
||||
/mutter-3.31.92.tar.xz
|
||||
/mutter-3.32.0.tar.xz
|
||||
/mutter-3.32.1.tar.xz
|
||||
|
@ -1,180 +0,0 @@
|
||||
From 91c323c9fd20bb3b6a194b10b7a26bf6045e391f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Tue, 12 Mar 2019 01:35:13 +0100
|
||||
Subject: [PATCH] build: Don't use absolute paths with subdir keyword
|
||||
|
||||
Meson 0.50.0 made passing an absolute path to install_headers()'
|
||||
subdir keyword a fatal error. This means we have to track both
|
||||
relative (to includedir) paths for header subdirs and absolute
|
||||
paths for generated headers now :-(
|
||||
|
||||
https://gitlab.gnome.org/GNOME/mutter/merge_requests/492
|
||||
---
|
||||
clutter/clutter/meson.build | 9 +++++----
|
||||
clutter/meson.build | 3 ++-
|
||||
cogl/cogl-gles2/meson.build | 4 ++--
|
||||
cogl/cogl-pango/meson.build | 4 ++--
|
||||
cogl/cogl-path/meson.build | 3 ++-
|
||||
cogl/cogl/meson.build | 7 ++++---
|
||||
cogl/meson.build | 3 ++-
|
||||
src/meson.build | 3 ++-
|
||||
src/meta/meson.build | 2 +-
|
||||
9 files changed, 22 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/clutter/clutter/meson.build b/clutter/clutter/meson.build
|
||||
index 879ea1664..671d790df 100644
|
||||
--- a/clutter/clutter/meson.build
|
||||
+++ b/clutter/clutter/meson.build
|
||||
@@ -1,3 +1,4 @@
|
||||
+clutter_clutter_includesubdir = join_paths(clutter_includesubdir, 'clutter')
|
||||
clutter_clutter_includedir = join_paths(clutter_includedir, 'clutter')
|
||||
|
||||
clutter_headers = [
|
||||
@@ -577,16 +578,16 @@ if have_introspection
|
||||
endif
|
||||
|
||||
install_headers(clutter_headers,
|
||||
- subdir: clutter_clutter_includedir)
|
||||
+ subdir: clutter_clutter_includesubdir)
|
||||
|
||||
install_headers(cally_headers,
|
||||
- subdir: join_paths(clutter_includedir, 'cally'))
|
||||
+ subdir: join_paths(clutter_includesubdir, 'cally'))
|
||||
|
||||
install_headers(clutter_deprecated_headers,
|
||||
- subdir: join_paths(clutter_clutter_includedir, 'deprecated'))
|
||||
+ subdir: join_paths(clutter_clutter_includesubdir, 'deprecated'))
|
||||
|
||||
install_headers(clutter_x11_headers,
|
||||
- subdir: join_paths(clutter_clutter_includedir, 'x11'))
|
||||
+ subdir: join_paths(clutter_clutter_includesubdir, 'x11'))
|
||||
|
||||
pkg.generate(libmutter_clutter,
|
||||
name: 'Mutters Clutter',
|
||||
diff --git a/clutter/meson.build b/clutter/meson.build
|
||||
index 053cfa751..1397be179 100644
|
||||
--- a/clutter/meson.build
|
||||
+++ b/clutter/meson.build
|
||||
@@ -1,4 +1,5 @@
|
||||
-clutter_includedir = join_paths(pkgincludedir, 'clutter')
|
||||
+clutter_includesubdir = join_paths(pkgname, 'clutter')
|
||||
+clutter_includedir = join_paths(includedir, clutter_includesubdir)
|
||||
clutter_srcdir = join_paths(top_srcdir, 'clutter')
|
||||
clutter_builddir = join_paths(builddir, 'clutter')
|
||||
|
||||
diff --git a/cogl/cogl-gles2/meson.build b/cogl/cogl-gles2/meson.build
|
||||
index d446ca4c5..fbe3eb19f 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
|
||||
install: true,
|
||||
)
|
||||
|
||||
-cogl_gles2_includedir = join_paths(cogl_includedir, 'cogl-gles2/GLES2')
|
||||
+cogl_gles2_includesubdir = join_paths(cogl_includesubdir, 'cogl-gles2/GLES2')
|
||||
install_headers(cogl_gles2_public_headers,
|
||||
- subdir: cogl_gles2_includedir)
|
||||
+ subdir: cogl_gles2_includesubdir)
|
||||
|
||||
pkg.generate(libmutter_cogl_gles2,
|
||||
name: 'CoglGles2',
|
||||
diff --git a/cogl/cogl-pango/meson.build b/cogl/cogl-pango/meson.build
|
||||
index fb4d26142..787ec0132 100644
|
||||
--- a/cogl/cogl-pango/meson.build
|
||||
+++ b/cogl/cogl-pango/meson.build
|
||||
@@ -70,8 +70,8 @@ if have_introspection
|
||||
)
|
||||
endif
|
||||
|
||||
-cogl_pango_includedir = join_paths(cogl_includedir, 'cogl-pango')
|
||||
-install_headers(cogl_pango_public_headers, subdir: cogl_pango_includedir)
|
||||
+cogl_pango_includesubdir = join_paths(cogl_includesubdir, 'cogl-pango')
|
||||
+install_headers(cogl_pango_public_headers, subdir: cogl_pango_includesubdir)
|
||||
|
||||
pkg.generate(libmutter_cogl_pango,
|
||||
name: 'CoglPango',
|
||||
diff --git a/cogl/cogl-path/meson.build b/cogl/cogl-path/meson.build
|
||||
index 6faba674e..e086a622f 100644
|
||||
--- a/cogl/cogl-path/meson.build
|
||||
+++ b/cogl/cogl-path/meson.build
|
||||
@@ -1,3 +1,4 @@
|
||||
+cogl_path_includesubdir = join_paths(cogl_includesubdir, 'cogl-path')
|
||||
cogl_path_includedir = join_paths(cogl_includedir, 'cogl-path')
|
||||
|
||||
cogl_path_public_headers = [
|
||||
@@ -76,7 +77,7 @@ libmutter_cogl_path_dep = declare_dependency(
|
||||
)
|
||||
|
||||
install_headers(cogl_path_public_headers,
|
||||
- subdir: cogl_path_includedir)
|
||||
+ subdir: cogl_path_includesubdir)
|
||||
|
||||
pkg.generate(libmutter_cogl_path,
|
||||
name: 'CoglPath',
|
||||
diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build
|
||||
index 5d80e8750..6bc64e696 100644
|
||||
--- a/cogl/cogl/meson.build
|
||||
+++ b/cogl/cogl/meson.build
|
||||
@@ -1,3 +1,4 @@
|
||||
+cogl_cogl_includesubdir = join_paths(cogl_includesubdir, 'cogl')
|
||||
cogl_cogl_includedir = join_paths(cogl_includedir, 'cogl')
|
||||
|
||||
cdata = configuration_data()
|
||||
@@ -514,16 +515,16 @@ install_headers([
|
||||
cogl_headers,
|
||||
cogl_nonintrospected_headers,
|
||||
],
|
||||
- subdir: cogl_cogl_includedir)
|
||||
+ subdir: cogl_cogl_includesubdir)
|
||||
|
||||
install_headers([
|
||||
cogl_deprecated_headers,
|
||||
cogl_deprecated_nonintrospected_headers,
|
||||
],
|
||||
- subdir: join_paths(cogl_cogl_includedir, 'deprecated'))
|
||||
+ subdir: join_paths(cogl_cogl_includesubdir, 'deprecated'))
|
||||
|
||||
install_headers(cogl_gl_prototype_headers,
|
||||
- subdir: join_paths(cogl_cogl_includedir, 'gl-prototypes'))
|
||||
+ subdir: join_paths(cogl_cogl_includesubdir, 'gl-prototypes'))
|
||||
|
||||
pkg.generate(libmutter_cogl,
|
||||
name: 'Cogl',
|
||||
diff --git a/cogl/meson.build b/cogl/meson.build
|
||||
index d76b86589..356d596f5 100644
|
||||
--- a/cogl/meson.build
|
||||
+++ b/cogl/meson.build
|
||||
@@ -1,4 +1,5 @@
|
||||
-cogl_includedir = join_paths(pkgincludedir, 'cogl')
|
||||
+cogl_includesubdir = join_paths(pkgname, 'cogl')
|
||||
+cogl_includedir = join_paths(includedir, cogl_includesubdir)
|
||||
cogl_srcdir = join_paths(top_srcdir, 'cogl')
|
||||
cogl_builddir = join_paths(builddir, 'cogl')
|
||||
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 8779c956e..9919b5cfb 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -1,4 +1,5 @@
|
||||
-mutter_includedir = join_paths(pkgincludedir, 'meta')
|
||||
+mutter_includesubdir = join_paths(pkgname, 'meta')
|
||||
+mutter_includedir = join_paths(includedir, mutter_includesubdir)
|
||||
|
||||
mutter_includes = [
|
||||
include_directories('.'),
|
||||
diff --git a/src/meta/meson.build b/src/meta/meson.build
|
||||
index 53c4723a2..2bd50e4f7 100644
|
||||
--- a/src/meta/meson.build
|
||||
+++ b/src/meta/meson.build
|
||||
@@ -48,7 +48,7 @@ if have_x11
|
||||
endif
|
||||
|
||||
install_headers(mutter_public_headers,
|
||||
- subdir: mutter_includedir
|
||||
+ subdir: mutter_includesubdir
|
||||
)
|
||||
|
||||
mutter_public_header_files = files(mutter_public_headers)
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 639be849cd80b38567f6abb0279bef59f17ac5ca Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Mon, 18 Mar 2019 11:59:26 +0100
|
||||
Subject: [PATCH 1/3] core: Remove startup sequences after timeout
|
||||
|
||||
The complete/remove semantics were split to cater for presenting windows,
|
||||
so we must now separately do both here.
|
||||
|
||||
Related: https://gitlab.gnome.org/GNOME/mutter/issues/501
|
||||
---
|
||||
src/core/startup-notification.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/core/startup-notification.c b/src/core/startup-notification.c
|
||||
index 8bcb0f385..d2d0d1362 100644
|
||||
--- a/src/core/startup-notification.c
|
||||
+++ b/src/core/startup-notification.c
|
||||
@@ -454,6 +454,7 @@ startup_sequence_timeout (void *data)
|
||||
meta_startup_sequence_get_id (sequence));
|
||||
|
||||
meta_startup_sequence_complete (sequence);
|
||||
+ meta_startup_notification_remove_sequence (sn, sequence);
|
||||
}
|
||||
|
||||
g_slist_free (ctod.list);
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,127 +0,0 @@
|
||||
From 63124e3e8a675725c729d4a99b994a83517a5c1a Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Thu, 18 Oct 2018 02:08:24 +0200
|
||||
Subject: [PATCH] wayland: Defer text_input.done on an idle
|
||||
|
||||
IBus naturally doesn't know how to implement the text-input protocol,
|
||||
and some input methods emit event streams that are incompatible with the
|
||||
protocol, if not assumed to be part of an grouped series of events. As
|
||||
IBus doesn't have any API to let us know about such groupings, let's
|
||||
fake it by adding a specially crafted idle callback.
|
||||
|
||||
The idle callback has a known limitation; if there is an idle callback
|
||||
with a higher priority, that either doesn't remove itself, or
|
||||
reschedules itself before the next idle, we'll never get triggered.
|
||||
This, however, is unlikely to actually be the bigger problem in such
|
||||
situations, as it'd likely mean we'd have a 100% CPU bug.
|
||||
|
||||
https://gitlab.gnome.org/GNOME/gtk/issues/1365
|
||||
---
|
||||
src/wayland/meta-wayland-text-input.c | 60 ++++++++++++++++++++++++---
|
||||
1 file changed, 54 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-text-input.c b/src/wayland/meta-wayland-text-input.c
|
||||
index 8681430217..0493760bd1 100644
|
||||
--- a/src/wayland/meta-wayland-text-input.c
|
||||
+++ b/src/wayland/meta-wayland-text-input.c
|
||||
@@ -70,6 +70,8 @@ struct _MetaWaylandTextInput
|
||||
uint32_t content_type_purpose;
|
||||
uint32_t text_change_cause;
|
||||
gboolean enabled;
|
||||
+
|
||||
+ guint done_idle_id;
|
||||
};
|
||||
|
||||
struct _MetaWaylandTextInputFocus
|
||||
@@ -114,6 +116,52 @@ increment_serial (MetaWaylandTextInput *text_input,
|
||||
GUINT_TO_POINTER (serial + 1));
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+done_idle_cb (gpointer user_data)
|
||||
+{
|
||||
+ ClutterInputFocus *focus = user_data;
|
||||
+ MetaWaylandTextInput *text_input;
|
||||
+ struct wl_resource *resource;
|
||||
+
|
||||
+ text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
|
||||
+
|
||||
+ wl_resource_for_each (resource, &text_input->focus_resource_list)
|
||||
+ {
|
||||
+ zwp_text_input_v3_send_done (resource,
|
||||
+ lookup_serial (text_input, resource));
|
||||
+ }
|
||||
+
|
||||
+ text_input->done_idle_id = 0;
|
||||
+ return G_SOURCE_REMOVE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+meta_wayland_text_input_focus_defer_done (ClutterInputFocus *focus)
|
||||
+{
|
||||
+ MetaWaylandTextInput *text_input;
|
||||
+
|
||||
+ text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
|
||||
+
|
||||
+ if (text_input->done_idle_id != 0)
|
||||
+ return;
|
||||
+
|
||||
+ /* This operates on 3 principles:
|
||||
+ * - GDBus uses G_PRIORITY_DEFAULT to put messages in the thread default main
|
||||
+ * context.
|
||||
+ * - All relevant ClutterInputFocus methods are ultimately backed by
|
||||
+ * DBus methods inside IBus.
|
||||
+ * - We want to run .done after them all. The slightly lower
|
||||
+ * G_PRIORITY_DEFAULT + 1 priority should ensure we at least group
|
||||
+ * all messages seen so far.
|
||||
+ *
|
||||
+ * FIXME: .done may be delayed indefinitely if there's a high enough
|
||||
+ * priority idle source in the main loop. It's unlikely that
|
||||
+ * recurring idles run at this high priority though.
|
||||
+ */
|
||||
+ text_input->done_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT + 1,
|
||||
+ done_idle_cb, focus, NULL);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
meta_wayland_text_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
||||
guint cursor,
|
||||
@@ -127,9 +175,9 @@ meta_wayland_text_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
||||
wl_resource_for_each (resource, &text_input->focus_resource_list)
|
||||
{
|
||||
zwp_text_input_v3_send_delete_surrounding_text (resource, cursor, len);
|
||||
- zwp_text_input_v3_send_done (resource,
|
||||
- lookup_serial (text_input, resource));
|
||||
}
|
||||
+
|
||||
+ meta_wayland_text_input_focus_defer_done (focus);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -145,9 +193,9 @@ meta_wayland_text_input_focus_commit_text (ClutterInputFocus *focus,
|
||||
{
|
||||
zwp_text_input_v3_send_preedit_string (resource, NULL, 0, 0);
|
||||
zwp_text_input_v3_send_commit_string (resource, text);
|
||||
- zwp_text_input_v3_send_done (resource,
|
||||
- lookup_serial (text_input, resource));
|
||||
}
|
||||
+
|
||||
+ meta_wayland_text_input_focus_defer_done (focus);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -163,9 +211,9 @@ meta_wayland_text_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
||||
wl_resource_for_each (resource, &text_input->focus_resource_list)
|
||||
{
|
||||
zwp_text_input_v3_send_preedit_string (resource, text, cursor, cursor);
|
||||
- zwp_text_input_v3_send_done (resource,
|
||||
- lookup_serial (text_input, resource));
|
||||
}
|
||||
+
|
||||
+ meta_wayland_text_input_focus_defer_done (focus);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.19.1
|
||||
|
@ -1,130 +0,0 @@
|
||||
From 1074040be3b89ffa7d6fb15a3c1ef35e141e15d1 Mon Sep 17 00:00:00 2001
|
||||
From: Pekka Paalanen <pekka.paalanen@collabora.com>
|
||||
Date: Wed, 3 Apr 2019 13:11:45 +0300
|
||||
Subject: [PATCH 2/3] renderer/native: Make EGL initialization failure not
|
||||
fatal
|
||||
|
||||
The failure to initialize EGL does not necessarily mean the KMS device cannot
|
||||
be used. The device could still be used as a "secondary GPU" with the CPU copy
|
||||
mode.
|
||||
|
||||
If meta_renderer_native_create_renderer_gpu_data () fails,
|
||||
meta_renderer_native_get_gpu_data () will return NULL, which may cause crashes.
|
||||
This patch removes most of the failures, but does not fix the NULL dereferences
|
||||
that will still happen if creating gpu data fails.
|
||||
|
||||
This patch reorders create_renderer_gpu_data_gbm () so that it fails hard only
|
||||
if GBM device cannot be created, and otherwise always returns an initialized
|
||||
gpu data structure. Users of the gpu data structure are responsible for
|
||||
checking egl_display validity.
|
||||
|
||||
The GBM device creation failure is a hard failure because presumably GBM is
|
||||
necessary for cursors.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/542
|
||||
https://gitlab.gnome.org/GNOME/mutter/merge_requests/521
|
||||
---
|
||||
src/backends/native/meta-renderer-native.c | 62 ++++++++++++++--------
|
||||
1 file changed, 40 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
|
||||
index 771ca0872..c7483f3cd 100644
|
||||
--- a/src/backends/native/meta-renderer-native.c
|
||||
+++ b/src/backends/native/meta-renderer-native.c
|
||||
@@ -3698,16 +3698,13 @@ gpu_kms_is_hardware_rendering (MetaRendererNative *renderer_native,
|
||||
return data->secondary.is_hardware_rendering;
|
||||
}
|
||||
|
||||
-static MetaRendererNativeGpuData *
|
||||
-create_renderer_gpu_data_gbm (MetaRendererNative *renderer_native,
|
||||
- MetaGpuKms *gpu_kms,
|
||||
- GError **error)
|
||||
+static EGLDisplay
|
||||
+init_gbm_egl_display (MetaRendererNative *renderer_native,
|
||||
+ struct gbm_device *gbm_device,
|
||||
+ GError **error)
|
||||
{
|
||||
MetaEgl *egl = meta_renderer_native_get_egl (renderer_native);
|
||||
- struct gbm_device *gbm_device;
|
||||
EGLDisplay egl_display;
|
||||
- int kms_fd;
|
||||
- MetaRendererNativeGpuData *renderer_gpu_data;
|
||||
|
||||
if (!meta_egl_has_extensions (egl, EGL_NO_DISPLAY, NULL,
|
||||
"EGL_MESA_platform_gbm",
|
||||
@@ -3719,9 +3716,31 @@ create_renderer_gpu_data_gbm (MetaRendererNative *renderer_native,
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
G_IO_ERROR_FAILED,
|
||||
"Missing extension for GBM renderer: EGL_KHR_platform_gbm");
|
||||
- return NULL;
|
||||
+ return EGL_NO_DISPLAY;
|
||||
}
|
||||
|
||||
+ egl_display = meta_egl_get_platform_display (egl,
|
||||
+ EGL_PLATFORM_GBM_KHR,
|
||||
+ gbm_device, NULL, error);
|
||||
+ if (egl_display == EGL_NO_DISPLAY)
|
||||
+ return EGL_NO_DISPLAY;
|
||||
+
|
||||
+ if (!meta_egl_initialize (egl, egl_display, error))
|
||||
+ return EGL_NO_DISPLAY;
|
||||
+
|
||||
+ return egl_display;
|
||||
+}
|
||||
+
|
||||
+static MetaRendererNativeGpuData *
|
||||
+create_renderer_gpu_data_gbm (MetaRendererNative *renderer_native,
|
||||
+ MetaGpuKms *gpu_kms,
|
||||
+ GError **error)
|
||||
+{
|
||||
+ struct gbm_device *gbm_device;
|
||||
+ int kms_fd;
|
||||
+ MetaRendererNativeGpuData *renderer_gpu_data;
|
||||
+ g_autoptr (GError) local_error = NULL;
|
||||
+
|
||||
kms_fd = meta_gpu_kms_get_fd (gpu_kms);
|
||||
|
||||
gbm_device = gbm_create_device (kms_fd);
|
||||
@@ -3733,26 +3752,25 @@ create_renderer_gpu_data_gbm (MetaRendererNative *renderer_native,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- egl_display = meta_egl_get_platform_display (egl,
|
||||
- EGL_PLATFORM_GBM_KHR,
|
||||
- gbm_device, NULL, error);
|
||||
- if (egl_display == EGL_NO_DISPLAY)
|
||||
- {
|
||||
- gbm_device_destroy (gbm_device);
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- if (!meta_egl_initialize (egl, egl_display, error))
|
||||
- return NULL;
|
||||
-
|
||||
renderer_gpu_data = meta_create_renderer_native_gpu_data (gpu_kms);
|
||||
renderer_gpu_data->renderer_native = renderer_native;
|
||||
renderer_gpu_data->gbm.device = gbm_device;
|
||||
renderer_gpu_data->mode = META_RENDERER_NATIVE_MODE_GBM;
|
||||
- renderer_gpu_data->egl_display = egl_display;
|
||||
|
||||
- init_secondary_gpu_data (renderer_gpu_data);
|
||||
+ renderer_gpu_data->egl_display = init_gbm_egl_display (renderer_native,
|
||||
+ gbm_device,
|
||||
+ &local_error);
|
||||
+ if (renderer_gpu_data->egl_display == EGL_NO_DISPLAY)
|
||||
+ {
|
||||
+ g_debug ("GBM EGL init for %s failed: %s",
|
||||
+ meta_gpu_kms_get_file_path (gpu_kms),
|
||||
+ local_error->message);
|
||||
|
||||
+ init_secondary_gpu_data_cpu (renderer_gpu_data);
|
||||
+ return renderer_gpu_data;
|
||||
+ }
|
||||
+
|
||||
+ init_secondary_gpu_data (renderer_gpu_data);
|
||||
return renderer_gpu_data;
|
||||
}
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,59 +0,0 @@
|
||||
From b09318fd75e1d4644381e7080105da18726bbdb9 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Mon, 15 Apr 2019 14:55:45 +0200
|
||||
Subject: [PATCH 3/3] wayland/output: Set user data of xdg_output resource
|
||||
|
||||
mutter would randomly crash in `send_xdg_output_events()` when changing
|
||||
the fractional scaling:
|
||||
|
||||
wl_resource_post_event ()
|
||||
zxdg_output_v1_send_logical_size ()
|
||||
send_xdg_output_events ()
|
||||
wayland_output_update_for_output ()
|
||||
meta_wayland_compositor_update_outputs ()
|
||||
on_monitors_changed ()
|
||||
g_closure_invoke ()
|
||||
signal_emit_unlocked_R ()
|
||||
g_signal_emit_valist ()
|
||||
_signal_emit ()
|
||||
meta_monitor_manager_notify_monitors_changed ()
|
||||
meta_monitor_manager_rebuild ()
|
||||
|
||||
This is because the xdg-output resource got freed but wasn't removed
|
||||
from the list of resources.
|
||||
|
||||
Fix this by setting the user data of the xdg-output resource to the
|
||||
corresponding `MetaWaylandOutput` so that the xdg-output resource
|
||||
destructor can remove it from the list of resources.
|
||||
|
||||
https://gitlab.gnome.org/GNOME/mutter/merge_requests/538
|
||||
---
|
||||
src/wayland/meta-wayland-outputs.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/wayland/meta-wayland-outputs.c b/src/wayland/meta-wayland-outputs.c
|
||||
index 7695d86af..099e87ab9 100644
|
||||
--- a/src/wayland/meta-wayland-outputs.c
|
||||
+++ b/src/wayland/meta-wayland-outputs.c
|
||||
@@ -624,14 +624,14 @@ meta_xdg_output_manager_get_xdg_output (struct wl_client *client,
|
||||
wl_resource_get_version (resource),
|
||||
id);
|
||||
|
||||
- wl_resource_set_implementation (xdg_output_resource,
|
||||
- &meta_xdg_output_interface,
|
||||
- NULL, meta_xdg_output_destructor);
|
||||
-
|
||||
wayland_output = wl_resource_get_user_data (output);
|
||||
if (!wayland_output)
|
||||
return;
|
||||
|
||||
+ wl_resource_set_implementation (xdg_output_resource,
|
||||
+ &meta_xdg_output_interface,
|
||||
+ wayland_output, meta_xdg_output_destructor);
|
||||
+
|
||||
wayland_output->xdg_output_resources =
|
||||
g_list_prepend (wayland_output->xdg_output_resources, xdg_output_resource);
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
25
mutter.spec
25
mutter.spec
@ -7,8 +7,8 @@
|
||||
%global mutter_api_version 4
|
||||
|
||||
Name: mutter
|
||||
Version: 3.32.0
|
||||
Release: 4%{?dist}
|
||||
Version: 3.32.1
|
||||
Release: 1%{?dist}
|
||||
Summary: Window and compositing manager based on Clutter
|
||||
|
||||
License: GPLv2+
|
||||
@ -19,24 +19,6 @@ Source0: http://download.gnome.org/sources/%{name}/3.32/%{name}-%{version}
|
||||
# Work-around for OpenJDK's compliance test
|
||||
Patch0: 0001-window-actor-Special-case-shaped-Java-windows.patch
|
||||
|
||||
# Fix building with meson >= 0.50.0
|
||||
Patch1: 0001-build-Don-t-use-absolute-paths-with-subdir-keyword.patch
|
||||
|
||||
# Backport work-around for hangul text input bug (rhbz#1632981)
|
||||
Patch2: 0001-wayland-Defer-text_input.done-on-an-idle.patch
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/mutter/merge_requests/498 fixes
|
||||
# https://gitlab.gnome.org/GNOME/mutter/issues/501 /
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1692135
|
||||
Patch3: 0001-core-Remove-startup-sequences-after-timeout.patch
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/mutter/merge_requests/521 fixes
|
||||
# https://gitlab.gnome.org/GNOME/mutter/issues/542 (crasher)
|
||||
Patch4: 0002-renderer-native-Make-EGL-initialization-failure-not-.patch
|
||||
|
||||
# https://gitlab.gnome.org/GNOME/mutter/merge_requests/538 (crash fix)
|
||||
Patch5: 0003-wayland-output-Set-user-data-of-xdg_output-resource.patch
|
||||
|
||||
BuildRequires: chrpath
|
||||
BuildRequires: pango-devel
|
||||
BuildRequires: startup-notification-devel
|
||||
@ -178,6 +160,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/mutter-%{mutter_api_version}/tests
|
||||
|
||||
%changelog
|
||||
* Wed Apr 17 2019 Florian Müllner <fmuellner@redhat.com> - 3.32.1-1
|
||||
- Update to 3.32.1
|
||||
|
||||
* Wed Apr 17 2019 Adam Williamson <awilliam@redhat.com> - 3.32.0-4
|
||||
- Backport MR #498 for spinner bug, plus two crasher fixes
|
||||
Resolves: #1692135
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (mutter-3.32.0.tar.xz) = 7f26e7f752a5cedbe066b05b34eec8c4086aee1a7cbd787fad3e9b9c3a440fc8a74ada2440717a115bb69bb0781184f01e55bbbdfaa20f58d060ce6102895de1
|
||||
SHA512 (mutter-3.32.1.tar.xz) = c3573340d8c5128cff68196f0fdd8593093ad1870765ca0a1f8f5ce400b4d1f90ec7c95084e747a90c3170b9840d8c4f722496d2e8c25846d579b85702160e05
|
||||
|
Loading…
Reference in New Issue
Block a user