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.91.tar.xz | ||||||
| /mutter-3.31.92.tar.xz | /mutter-3.31.92.tar.xz | ||||||
| /mutter-3.32.0.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 | %global mutter_api_version 4 | ||||||
| 
 | 
 | ||||||
| Name:          mutter | Name:          mutter | ||||||
| Version:       3.32.0 | Version:       3.32.1 | ||||||
| Release:       4%{?dist} | Release:       1%{?dist} | ||||||
| Summary:       Window and compositing manager based on Clutter | Summary:       Window and compositing manager based on Clutter | ||||||
| 
 | 
 | ||||||
| License:       GPLv2+ | License:       GPLv2+ | ||||||
| @ -19,24 +19,6 @@ Source0:       http://download.gnome.org/sources/%{name}/3.32/%{name}-%{version} | |||||||
| # Work-around for OpenJDK's compliance test | # Work-around for OpenJDK's compliance test | ||||||
| Patch0:        0001-window-actor-Special-case-shaped-Java-windows.patch | 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: chrpath | ||||||
| BuildRequires: pango-devel | BuildRequires: pango-devel | ||||||
| BuildRequires: startup-notification-devel | BuildRequires: startup-notification-devel | ||||||
| @ -178,6 +160,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop | |||||||
| %{_datadir}/mutter-%{mutter_api_version}/tests | %{_datadir}/mutter-%{mutter_api_version}/tests | ||||||
| 
 | 
 | ||||||
| %changelog | %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 | * Wed Apr 17 2019 Adam Williamson <awilliam@redhat.com> - 3.32.0-4 | ||||||
| - Backport MR #498 for spinner bug, plus two crasher fixes | - Backport MR #498 for spinner bug, plus two crasher fixes | ||||||
|   Resolves: #1692135 |   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