Marco Trevisan (Treviño) has proposed merging 
~3v1n0/ubuntu/+source/mutter:ubuntu/bionic into 
~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/bionic with 
~3v1n0/ubuntu/+source/mutter:upstream/3.28.x as a prerequisite.

Requested reviews:
  Ubuntu Desktop (ubuntu-desktop)

For more details, see:
https://code.launchpad.net/~3v1n0/ubuntu/+source/mutter/+git/mutter/+merge/361811
-- 
Your team Ubuntu Desktop is requested to review the proposed merge of 
~3v1n0/ubuntu/+source/mutter:ubuntu/bionic into 
~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/bionic.
diff --git a/debian/changelog b/debian/changelog
index 360eba4..07fdbda 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+mutter (3.28.3+git20181011~ubuntu18.04.3) UNRELEASED; urgency=medium
+
+  * New upstream git snapshot based on 3.28.3 plus commits up to 1b78ca8c5
+    (LP: #1811900, LP: #1765269, LP: #1790525, LP: #1795774)
+  * d/p/gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch,
+    d/p/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch,
+    d/p/monitor-manager-Filter-out-low-screen-resolutions.patch,
+    d/p/window-wayland-Always-update-monitor-for-non-user-ops.patch,
+    d/p/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch,
+    d/p/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch,
+    d/p/monitor-Use-current-monitor-mode-to-check-whether-active.patch,
+    d/p/core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch,
+    d/p/renderer-native-Fallback-to-non-planar-API-if-gbm_bo_get_.patch,
+    d/p/clutter-x11-Implement-keycode-lookup-from-keysyms-on-virt.patch:
+    - Removed as applied upstream
+
+ -- Marco Trevisan (Treviño) <ma...@ubuntu.com>  Tue, 15 Jan 2019 23:33:23 +0100
+
 mutter (3.28.3-2~ubuntu18.04.2) bionic; urgency=medium
 
   * d/p/renderer-native-Fallback-to-non-planar-API-if-gbm_bo_get_.patch:
diff --git a/debian/patches/bgo768531_workaround-startup-notifications.patch b/debian/patches/bgo768531_workaround-startup-notifications.patch
index bc6b697..26ac823 100644
--- a/debian/patches/bgo768531_workaround-startup-notifications.patch
+++ b/debian/patches/bgo768531_workaround-startup-notifications.patch
@@ -16,10 +16,10 @@ Applied-upstream: no
  1 file changed, 10 insertions(+)
 
 diff --git a/src/wayland/meta-wayland-gtk-shell.c b/src/wayland/meta-wayland-gtk-shell.c
-index 0ef9b83..891109a 100644
+index 474595b..5837567 100644
 --- a/src/wayland/meta-wayland-gtk-shell.c
 +++ b/src/wayland/meta-wayland-gtk-shell.c
-@@ -312,11 +312,21 @@ gtk_shell_set_startup_id (struct wl_client   *client,
+@@ -321,11 +321,21 @@ gtk_shell_set_startup_id (struct wl_client   *client,
                            struct wl_resource *resource,
                            const char         *startup_id)
  {
diff --git a/debian/patches/clutter-x11-Implement-keycode-lookup-from-keysyms-on-virt.patch b/debian/patches/clutter-x11-Implement-keycode-lookup-from-keysyms-on-virt.patch
deleted file mode 100644
index ccb4263..0000000
--- a/debian/patches/clutter-x11-Implement-keycode-lookup-from-keysyms-on-virt.patch
+++ /dev/null
@@ -1,316 +0,0 @@
-From: Carlos Garnacho <carl...@gnome.org>
-Date: Fri, 29 Jun 2018 14:31:23 +0200
-Subject: clutter/x11: Implement keycode lookup from keysyms on virtual key
- devices
-
-Unfortunately XKeysymToKeycode() falls short in that it coalesces keysyms
-into keycodes pertaining to the first level (i.e. lowercase). Add a
-ClutterKeymapX11 method (much alike its GdkKeymap counterpart) to look up
-all matches for the given keysym.
-
-Two other helper methods have been added so the virtual device can fetch
-the current keyboard group, and latch modifiers for key emission. Combining
-all this, the virtual device is now able to handle keycodes in further
-levels.
-
-Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/135
-
-(cherry picked from commit 85284acb000ddc70afcf716b6c198b4b5bf5741e)
-
-Ubuntu-Bug: https://bugs.launchpad.net/oem-priority/+bug/1730211
-Applied-Upstream: yes, 3.28.4
----
- clutter/clutter/x11/clutter-keymap-x11.c           | 178 ++++++++++++++++++++-
- clutter/clutter/x11/clutter-keymap-x11.h           |   8 +
- .../clutter/x11/clutter-virtual-input-device-x11.c |  22 ++-
- 3 files changed, 204 insertions(+), 4 deletions(-)
-
-diff --git a/clutter/clutter/x11/clutter-keymap-x11.c b/clutter/clutter/x11/clutter-keymap-x11.c
-index 914e314..c34e676 100644
---- a/clutter/clutter/x11/clutter-keymap-x11.c
-+++ b/clutter/clutter/x11/clutter-keymap-x11.c
-@@ -38,6 +38,14 @@
- 
- typedef struct _ClutterKeymapX11Class   ClutterKeymapX11Class;
- typedef struct _DirectionCacheEntry     DirectionCacheEntry;
-+typedef struct _ClutterKeymapKey        ClutterKeymapKey;
-+
-+struct _ClutterKeymapKey
-+{
-+  guint keycode;
-+  guint group;
-+  guint level;
-+};
- 
- struct _DirectionCacheEntry
- {
-@@ -59,6 +67,7 @@ struct _ClutterKeymapX11
- 
-   ClutterModifierType num_lock_mask;
-   ClutterModifierType scroll_lock_mask;
-+  ClutterModifierType level3_shift_mask;
- 
-   PangoDirection current_direction;
- 
-@@ -69,6 +78,7 @@ struct _ClutterKeymapX11
-   Atom current_group_atom;
-   guint current_cache_serial;
-   DirectionCacheEntry group_direction_cache[4];
-+  int current_group;
- #endif
- 
-   guint caps_lock_state : 1;
-@@ -198,6 +208,9 @@ get_xkb (ClutterKeymapX11 *keymap_x11)
-   if (keymap_x11->scroll_lock_mask == 0)
-     keymap_x11->scroll_lock_mask = XkbKeysymToModifiers (backend_x11->xdpy,
-                                                          XK_Scroll_Lock);
-+  if (keymap_x11->level3_shift_mask == 0)
-+    keymap_x11->level3_shift_mask = XkbKeysymToModifiers (backend_x11->xdpy,
-+                                                          XK_ISO_Level3_Shift);
- 
-   return keymap_x11->xkb_desc;
- }
-@@ -469,6 +482,7 @@ static void
- clutter_keymap_x11_init (ClutterKeymapX11 *keymap)
- {
-   keymap->current_direction = PANGO_DIRECTION_NEUTRAL;
-+  keymap->current_group = -1;
- }
- 
- static ClutterTranslateReturn
-@@ -498,7 +512,8 @@ clutter_keymap_x11_translate_event (ClutterEventTranslator *translator,
-         {
-         case XkbStateNotify:
-           CLUTTER_NOTE (EVENT, "Updating keyboard state");
--          update_direction (keymap_x11, XkbStateGroup (&xkb_event->state));
-+          keymap_x11->current_group = XkbStateGroup (&xkb_event->state);
-+          update_direction (keymap_x11, keymap_x11->current_group);
-           update_locked_mods (keymap_x11, xkb_event->state.locked_mods);
-           retval = CLUTTER_TRANSLATE_REMOVE;
-           break;
-@@ -665,3 +680,164 @@ _clutter_keymap_x11_get_direction (ClutterKeymapX11 *keymap)
- #endif
-     return PANGO_DIRECTION_NEUTRAL;
- }
-+
-+static gboolean
-+clutter_keymap_x11_get_entries_for_keyval (ClutterKeymapX11  *keymap_x11,
-+                                           guint              keyval,
-+                                           ClutterKeymapKey **keys,
-+                                           gint              *n_keys)
-+{
-+#ifdef HAVE_XKB
-+  if (CLUTTER_BACKEND_X11 (keymap_x11->backend)->use_xkb)
-+    {
-+      XkbDescRec *xkb = get_xkb (keymap_x11);
-+      GArray *retval;
-+      gint keycode;
-+
-+      keycode = keymap_x11->min_keycode;
-+      retval = g_array_new (FALSE, FALSE, sizeof (ClutterKeymapKey));
-+
-+      while (keycode <= keymap_x11->max_keycode)
-+        {
-+          gint max_shift_levels = XkbKeyGroupsWidth (xkb, keycode);
-+          gint group = 0;
-+          gint level = 0;
-+          gint total_syms = XkbKeyNumSyms (xkb, keycode);
-+          gint i = 0;
-+          KeySym *entry;
-+
-+          /* entry is an array with all syms for group 0, all
-+           * syms for group 1, etc. and for each group the
-+           * shift level syms are in order
-+           */
-+          entry = XkbKeySymsPtr (xkb, keycode);
-+
-+          while (i < total_syms)
-+            {
-+              g_assert (i == (group * max_shift_levels + level));
-+
-+              if (entry[i] == keyval)
-+                {
-+                  ClutterKeymapKey key;
-+
-+                  key.keycode = keycode;
-+                  key.group = group;
-+                  key.level = level;
-+
-+                  g_array_append_val (retval, key);
-+
-+                  g_assert (XkbKeySymEntry (xkb, keycode, level, group) ==
-+                            keyval);
-+                }
-+
-+              ++level;
-+
-+              if (level == max_shift_levels)
-+                {
-+                  level = 0;
-+                  ++group;
-+                }
-+
-+              ++i;
-+            }
-+
-+          ++keycode;
-+        }
-+
-+      if (retval->len > 0)
-+        {
-+          *keys = (ClutterKeymapKey*) retval->data;
-+          *n_keys = retval->len;
-+        }
-+      else
-+        {
-+          *keys = NULL;
-+          *n_keys = 0;
-+        }
-+
-+      g_array_free (retval, retval->len > 0 ? FALSE : TRUE);
-+
-+      return *n_keys > 0;
-+    }
-+  else
-+#endif
-+    {
-+      return FALSE;
-+    }
-+}
-+
-+void
-+clutter_keymap_x11_latch_modifiers (ClutterKeymapX11 *keymap_x11,
-+                                    uint32_t          level,
-+                                    gboolean          enable)
-+{
-+#ifdef HAVE_XKB
-+  ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (keymap_x11->backend);
-+  uint32_t modifiers[] = {
-+    0,
-+    ShiftMask,
-+    keymap_x11->level3_shift_mask,
-+    keymap_x11->level3_shift_mask | ShiftMask,
-+  };
-+  uint32_t value = 0;
-+
-+  if (!backend_x11->use_xkb)
-+    return;
-+
-+  level = CLAMP (level, 0, G_N_ELEMENTS (modifiers) - 1);
-+
-+  if (enable)
-+    value = modifiers[level];
-+  else
-+    value = 0;
-+
-+  XkbLatchModifiers (clutter_x11_get_default_display (),
-+                     XkbUseCoreKbd, modifiers[level],
-+                     value);
-+#endif
-+}
-+
-+static uint32_t
-+clutter_keymap_x11_get_current_group (ClutterKeymapX11 *keymap_x11)
-+{
-+  ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (keymap_x11->backend);
-+  XkbStateRec state_rec;
-+
-+  if (keymap_x11->current_group >= 0)
-+    return keymap_x11->current_group;
-+
-+  XkbGetState (backend_x11->xdpy, XkbUseCoreKbd, &state_rec);
-+  return XkbStateGroup (&state_rec);
-+}
-+
-+gboolean
-+clutter_keymap_x11_keycode_for_keyval (ClutterKeymapX11 *keymap_x11,
-+                                       guint             keyval,
-+                                       guint            *keycode_out,
-+                                       guint            *level_out)
-+{
-+  ClutterKeymapKey *keys;
-+  gint i, n_keys, group;
-+  gboolean found = FALSE;
-+
-+  g_return_val_if_fail (keycode_out != NULL, FALSE);
-+  g_return_val_if_fail (level_out != NULL, FALSE);
-+
-+  group = clutter_keymap_x11_get_current_group (keymap_x11);
-+
-+  if (!clutter_keymap_x11_get_entries_for_keyval (keymap_x11, keyval, &keys, &n_keys))
-+    return FALSE;
-+
-+  for (i = 0; i < n_keys && !found; i++)
-+    {
-+      if (keys[i].group == group)
-+        {
-+          *keycode_out = keys[i].keycode;
-+          *level_out = keys[i].level;
-+          found = TRUE;
-+        }
-+    }
-+
-+  g_free (keys);
-+  return found;
-+}
-diff --git a/clutter/clutter/x11/clutter-keymap-x11.h b/clutter/clutter/x11/clutter-keymap-x11.h
-index ad673a2..4b5b403 100644
---- a/clutter/clutter/x11/clutter-keymap-x11.h
-+++ b/clutter/clutter/x11/clutter-keymap-x11.h
-@@ -51,6 +51,14 @@ gboolean _clutter_keymap_x11_get_is_modifier     (ClutterKeymapX11    *keymap,
- 
- PangoDirection _clutter_keymap_x11_get_direction (ClutterKeymapX11    *keymap);
- 
-+gboolean clutter_keymap_x11_keycode_for_keyval (ClutterKeymapX11 *keymap_x11,
-+                                                guint             keyval,
-+                                                guint            *keycode_out,
-+                                                guint            *level_out);
-+void     clutter_keymap_x11_latch_modifiers (ClutterKeymapX11 *keymap_x11,
-+                                             uint32_t          level,
-+                                             gboolean          enable);
-+
- G_END_DECLS
- 
- #endif /* __CLUTTER_KEYMAP_X11_H__ */
-diff --git a/clutter/clutter/x11/clutter-virtual-input-device-x11.c b/clutter/clutter/x11/clutter-virtual-input-device-x11.c
-index 416c944..b86ded0 100644
---- a/clutter/clutter/x11/clutter-virtual-input-device-x11.c
-+++ b/clutter/clutter/x11/clutter-virtual-input-device-x11.c
-@@ -32,6 +32,8 @@
- 
- #include "clutter-virtual-input-device.h"
- #include "x11/clutter-virtual-input-device-x11.h"
-+#include "x11/clutter-backend-x11.h"
-+#include "x11/clutter-keymap-x11.h"
- 
- struct _ClutterVirtualInputDeviceX11
- {
-@@ -135,11 +137,25 @@ clutter_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtu
- 						uint32_t                   keyval,
- 						ClutterKeyState            key_state)
- {
--  KeyCode keycode;
-+  ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (clutter_get_default_backend ());
-+  ClutterKeymapX11 *keymap = backend_x11->keymap;
-+  uint32_t keycode, level;
-+
-+  if (!clutter_keymap_x11_keycode_for_keyval (keymap, keyval, &keycode, &level))
-+    {
-+      g_warning ("No keycode found for keyval %x in current group", keyval);
-+      return;
-+    }
-+
-+  if (key_state == CLUTTER_KEY_STATE_PRESSED)
-+    clutter_keymap_x11_latch_modifiers (keymap, level, TRUE);
- 
--  keycode = XKeysymToKeycode (clutter_x11_get_default_display (), keyval);
-   XTestFakeKeyEvent (clutter_x11_get_default_display (),
--                     keycode, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
-+                     (KeyCode) keycode,
-+                     key_state == CLUTTER_KEY_STATE_PRESSED, 0);
-+
-+  if (key_state == CLUTTER_KEY_STATE_RELEASED)
-+    clutter_keymap_x11_latch_modifiers (keymap, level, FALSE);
- }
- 
- static void
diff --git a/debian/patches/core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch b/debian/patches/core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch
deleted file mode 100644
index 171c91a..0000000
--- a/debian/patches/core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From: Sam Spilsbury <s...@endlessm.com>
-Date: Tue, 10 Oct 2017 11:39:40 -0500
-Subject: core: Return -1 if meta_window_get_monitor is called on an unmanaged
- window
-
-As opposed to crashing. In this case, letting the caller deal with
-it is the best policy, since this is public API.
-
-Fixes #78834
-
-Forwarded: yes
-Bug: https://bugzilla.gnome.org/show_bug.cgi?id=788834
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1724439
----
- src/core/window.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/window.c b/src/core/window.c
-index cc0813a..f9094a3 100644
---- a/src/core/window.c
-+++ b/src/core/window.c
-@@ -3752,11 +3752,16 @@ maybe_move_attached_dialog (MetaWindow *window,
-  *
-  * Gets index of the monitor that this window is on.
-  *
-- * Return Value: The index of the monitor in the screens monitor list
-+ * Return Value: The index of the monitor in the screens monitor list, or -1
-+ * if the window has been recently unmanaged and does not have
-+ * a monitor.
-  */
- int
- meta_window_get_monitor (MetaWindow *window)
- {
-+  if (!window->monitor)
-+    return -1;
-+
-   return window->monitor->number;
- }
- 
diff --git a/debian/patches/gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch b/debian/patches/gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch
deleted file mode 100644
index 9bc47f9..0000000
--- a/debian/patches/gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From: Aaron Plattner <aplatt...@nvidia.com>
-Date: Thu, 19 Jul 2018 10:51:34 -0700
-Subject: gpu-kms: Don't crash if drmModeGetResources returns NULL
-
-DRM drivers can be opened by meta_launcher_open_restricted() even if they don't
-implement modesetting. However, drmModeGetResources() will return NULL.
-
-Check whether that happened in meta_gpu_kms_new() and return with an error
-instead of crashing.
-
-Fixes #223.
-
-Applied-Upstream: https://gitlab.gnome.org/GNOME/mutter/commit/62660bbd15
-Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/223
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1767956
----
- src/backends/native/meta-gpu-kms.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/backends/native/meta-gpu-kms.c b/src/backends/native/meta-gpu-kms.c
-index 613a607..259cd71 100644
---- a/src/backends/native/meta-gpu-kms.c
-+++ b/src/backends/native/meta-gpu-kms.c
-@@ -801,6 +801,13 @@ meta_gpu_kms_new (MetaMonitorManagerKms  *monitor_manager_kms,
-    */
-   drm_resources = drmModeGetResources (kms_fd);
- 
-+  if (!drm_resources)
-+    {
-+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "No resources");
-+      meta_launcher_close_restricted (launcher, kms_fd);
-+      return NULL;
-+    }
-+
-   n_connectors = drm_resources->count_connectors;
- 
-   drmModeFreeResources (drm_resources);
diff --git a/debian/patches/monitor-Use-current-monitor-mode-to-check-whether-active.patch b/debian/patches/monitor-Use-current-monitor-mode-to-check-whether-active.patch
deleted file mode 100644
index 9badb76..0000000
--- a/debian/patches/monitor-Use-current-monitor-mode-to-check-whether-active.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From: =?utf-8?q?Jonas_=C3=85dahl?= <jad...@gmail.com>
-Date: Tue, 31 Jul 2018 13:18:51 +0200
-Subject: monitor: Use current monitor mode to check whether active
-
-For historical reasons meta_monitor_is_active() checked whether it is
-active by checking whether the main output have a CRTC assigned and
-whether that CRTC has a current mode. At a later point, the MetaMonitor
-got its own mode abstraction (MetaMonitorMode), but
-meta_monitor_is_active() was never updated to use this.
-
-An issue with checking the main output's CRTC state is that, if there is
-some CRTC mode combination that for some reason isn't properly detected
-by the MetaMonitorMode abstraction (e.g. some tiling configuration not
-yet handled), meta_monitor_is_active() would return TRUE, even though no
-(abstracted) mode was set. This would cause confusion here and there,
-leading to NULL pointer dereferences due to the assumption that if a
-monitor is active, it has an active mode.
-
-Instead, change meta_monitor_is_active() to directly check the current
-monitor mode, and log a warning if the main output still happen to have
-a CRTC with a mode assigned to it. This way, when an not undrestood CRTC
-mode combination is encountered, instead of dereferencing NULL pointers,
-simply assume the monitor is not active, which means that it will not be
-managed or rendered by mutter at all.
-
-https://gitlab.gnome.org/GNOME/mutter/issues/130
-
-(cherry picked from commit 4d465eac0806eb1ead375e2852d4a9d6bc24524f)
-
-Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/130
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1723615
-Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/mutter/commit/d0d80780
----
- src/backends/meta-monitor.c | 22 ++++++++++++++++------
- 1 file changed, 16 insertions(+), 6 deletions(-)
-
-diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
-index 92c61c0..60f3674 100644
---- a/src/backends/meta-monitor.c
-+++ b/src/backends/meta-monitor.c
-@@ -203,13 +203,9 @@ meta_monitor_get_main_output (MetaMonitor *monitor)
- gboolean
- meta_monitor_is_active (MetaMonitor *monitor)
- {
--  MetaOutput *output;
--  MetaCrtc *crtc;
--
--  output = meta_monitor_get_main_output (monitor);
--  crtc = meta_output_get_assigned_crtc (output);
-+  MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor);
- 
--  return crtc && crtc->current_mode;
-+  return !!priv->current_mode;
- }
- 
- gboolean
-@@ -1411,6 +1407,18 @@ meta_monitor_get_current_mode (MetaMonitor *monitor)
-   return priv->current_mode;
- }
- 
-+static gboolean
-+is_current_mode_known (MetaMonitor *monitor)
-+{
-+  MetaOutput *output;
-+  MetaCrtc *crtc;
-+
-+  output = meta_monitor_get_main_output (monitor);
-+  crtc = meta_output_get_assigned_crtc (output);
-+
-+  return meta_monitor_is_active (monitor) == (crtc && crtc->current_mode);
-+}
-+
- void
- meta_monitor_derive_current_mode (MetaMonitor *monitor)
- {
-@@ -1430,6 +1438,8 @@ meta_monitor_derive_current_mode (MetaMonitor *monitor)
-     }
- 
-   priv->current_mode = current_mode;
-+
-+  g_warn_if_fail (is_current_mode_known (monitor));
- }
- 
- void
diff --git a/debian/patches/monitor-manager-Filter-out-low-screen-resolutions.patch b/debian/patches/monitor-manager-Filter-out-low-screen-resolutions.patch
deleted file mode 100644
index f1ae69c..0000000
--- a/debian/patches/monitor-manager-Filter-out-low-screen-resolutions.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From: Andrea Azzarone <azzaro...@gmail.com>
-Date: Mon, 16 Jul 2018 18:09:40 +0200
-Subject: monitor-manager: Filter out low screen resolutions
-
-Avoid exporting through org.gnome.Mutter.DisplayConfig.GetCurrentState
-excessively-low screen resolutions setting both a minimum width and a minimum
-height. GetCurrentState is e.g. used by Gnome Control Center to build a list of
-selectable resolutions.
-
-Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=793223
-
-(cherry picked from commit 649c26e05a67c52a4f5acf6b4aa3b1217e9bc9c0)
-
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/1772831
-Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=793223
-Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/mutter/commit/0c5e61a2a
----
- src/backends/meta-monitor-manager.c |  4 ++++
- src/backends/meta-monitor.c         | 19 +++++++++++++++++--
- src/backends/meta-monitor.h         |  2 ++
- 3 files changed, 23 insertions(+), 2 deletions(-)
-
-diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
-index 5bd34ad..c4c1db5 100644
---- a/src/backends/meta-monitor-manager.c
-+++ b/src/backends/meta-monitor-manager.c
-@@ -1323,9 +1323,13 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
-           GVariantBuilder mode_properties_builder;
-           MetaCrtcModeFlag mode_flags;
- 
-+          if (!meta_monitor_mode_should_be_advertised (monitor_mode))
-+            continue;
-+
-           mode_id = meta_monitor_mode_get_id (monitor_mode);
-           meta_monitor_mode_get_resolution (monitor_mode,
-                                             &mode_width, &mode_height);
-+
-           refresh_rate = meta_monitor_mode_get_refresh_rate (monitor_mode);
- 
-           preferred_scale =
-diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
-index 9833066..92c61c0 100644
---- a/src/backends/meta-monitor.c
-+++ b/src/backends/meta-monitor.c
-@@ -1553,6 +1553,22 @@ meta_monitor_calculate_mode_scale (MetaMonitor     *monitor,
-   return calculate_scale (monitor, monitor_mode);
- }
- 
-+static gboolean
-+is_logical_size_large_enough (gint width, gint height)
-+{
-+  return width >= MINIMUM_LOGICAL_WIDTH &&
-+         height >= MINIMUM_LOGICAL_HEIGHT;
-+}
-+
-+gboolean
-+meta_monitor_mode_should_be_advertised (MetaMonitorMode *monitor_mode)
-+{
-+  g_return_val_if_fail (monitor_mode != NULL, FALSE);
-+
-+  return is_logical_size_large_enough (monitor_mode->spec.width,
-+                                       monitor_mode->spec.height);
-+}
-+
- static float
- get_closest_scale_factor_for_resolution (float width,
-                                          float height,
-@@ -1573,8 +1589,7 @@ get_closest_scale_factor_for_resolution (float width,
- 
-   if (scale < MINIMUM_SCALE_FACTOR ||
-       scale > MAXIMUM_SCALE_FACTOR ||
--      floorf (scaled_w) < MINIMUM_LOGICAL_WIDTH ||
--      floorf (scaled_h) < MINIMUM_LOGICAL_HEIGHT)
-+      !is_logical_size_large_enough (floorf (scaled_w), floorf (scaled_h)))
-     goto out;
- 
-   if (floorf (scaled_w) == scaled_w && floorf (scaled_h) == scaled_h)
-diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
-index bc79778..213ff2c 100644
---- a/src/backends/meta-monitor.h
-+++ b/src/backends/meta-monitor.h
-@@ -219,6 +219,8 @@ gboolean meta_monitor_mode_foreach_output (MetaMonitor        *monitor,
-                                            gpointer            user_data,
-                                            GError            **error);
- 
-+gboolean meta_monitor_mode_should_be_advertised (MetaMonitorMode *monitor_mode);
-+
- MetaMonitorSpec * meta_monitor_spec_clone (MetaMonitorSpec *monitor_id);
- 
- gboolean meta_monitor_spec_equals (MetaMonitorSpec *monitor_id,
diff --git a/debian/patches/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch b/debian/patches/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch
deleted file mode 100644
index 650a2d8..0000000
--- a/debian/patches/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: =?utf-8?q?Jonas_=C3=85dahl?= <jad...@gmail.com>
-Date: Tue, 24 Apr 2018 09:26:33 +0000
-Subject: native/gpu: Handle drmModeSetCrtc() failing gracefully
-
-If drmModeSetCrtc() is called with no fb, mode or connectors for some
-CRTC it may still fail, and we should handle that gracefully instead of
-assuming it failed to set a non-disabled state.
-
-Closes https://gitlab.gnome.org/GNOME/mutter/issues/70
-
-
-(cherry picked from commit 6e953e2725d5d5b10d14c7bd479bd99f6853addc)
-
-Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/70
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1754949
-Applied-Upstream: https://gitlab.gnome.org/GNOME/mutter/commit/44682a2cc555
----
- src/backends/native/meta-gpu-kms.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/backends/native/meta-gpu-kms.c b/src/backends/native/meta-gpu-kms.c
-index 259cd71..1d1c288 100644
---- a/src/backends/native/meta-gpu-kms.c
-+++ b/src/backends/native/meta-gpu-kms.c
-@@ -143,7 +143,10 @@ meta_gpu_kms_apply_crtc_mode (MetaGpuKms *gpu_kms,
-                       connectors, n_connectors,
-                       mode) != 0)
-     {
--      g_warning ("Failed to set CRTC mode %s: %m", crtc->current_mode->name);
-+      if (mode)
-+        g_warning ("Failed to set CRTC mode %s: %m", crtc->current_mode->name);
-+      else
-+        g_warning ("Failed to disable CRTC");
-       g_free (connectors);
-       return FALSE;
-     }
diff --git a/debian/patches/renderer-native-Fallback-to-non-planar-API-if-gbm_bo_get_.patch b/debian/patches/renderer-native-Fallback-to-non-planar-API-if-gbm_bo_get_.patch
deleted file mode 100644
index a25fca3..0000000
--- a/debian/patches/renderer-native-Fallback-to-non-planar-API-if-gbm_bo_get_.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: =?utf-8?q?Alex_Villac=C3=ADs_Lasso?= <a_villa...@palosanto.com>
-Date: Fri, 27 Jul 2018 16:08:52 +0000
-Subject: renderer/native: Fallback to non-planar API if
- gbm_bo_get_handle_for_plane fails
-
-Commit c0d9b08ef9bf2be865aad9bf1bc74ba24c655d9f replaced the old GBM API calls
-with the multi-plane GBM API. However, the call to gbm_bo_get_handle_for_plane
-fails for some DRI drivers (in particular i915). Due to missing error checks,
-the subsequent call to drmModeAddFB[2] fails and the screen output locks up.
-
-This commit adds the missing error checks and falls back to the old GBM API
-(non-planar) if necessary.
-
-v5: test success of gbm_bo_get_handle_for_plane instead of errno
-
-This commit adopts solution proposed by Daniel van Vugt to check the return
-value of gbm_bo_get_handle_for_plane on plane 0 and fall back to old
-non-planar method if the call fails. This removes the errno check (for
-ENOSYS) that could abort if mesa ever sets a different value.
-
-Related to: https://gitlab.gnome.org/GNOME/mutter/issues/127
-
-(cherry picked from commit f7af32a3eaefabbea3ebbda3a93eff98dd105ab9)
-
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1727356
-Applied-Upstream: yes, 3.28.4
----
- src/backends/native/meta-renderer-native.c | 21 ++++++++++++++++-----
- 1 file changed, 16 insertions(+), 5 deletions(-)
-
-diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
-index fc6b223..59003b3 100644
---- a/src/backends/native/meta-renderer-native.c
-+++ b/src/backends/native/meta-renderer-native.c
-@@ -1607,12 +1607,23 @@ gbm_get_next_fb_id (MetaGpuKms         *gpu_kms,
-       return FALSE;
-     }
- 
--  for (i = 0; i < gbm_bo_get_plane_count (next_bo); i++)
-+  if (gbm_bo_get_handle_for_plane (next_bo, 0).s32 == -1)
-     {
--      strides[i] = gbm_bo_get_stride_for_plane (next_bo, i);
--      handles[i] = gbm_bo_get_handle_for_plane (next_bo, i).u32;
--      offsets[i] = gbm_bo_get_offset (next_bo, i);
--      modifiers[i] = gbm_bo_get_modifier (next_bo);
-+      /* Failed to fetch handle to plane, falling back to old method */
-+      strides[0] = gbm_bo_get_stride (next_bo);
-+      handles[0] = gbm_bo_get_handle (next_bo).u32;
-+      offsets[0] = 0;
-+      modifiers[0] = DRM_FORMAT_MOD_INVALID;
-+    }
-+  else
-+    {
-+      for (i = 0; i < gbm_bo_get_plane_count (next_bo); i++)
-+        {
-+          strides[i] = gbm_bo_get_stride_for_plane (next_bo, i);
-+          handles[i] = gbm_bo_get_handle_for_plane (next_bo, i).u32;
-+          offsets[i] = gbm_bo_get_offset (next_bo, i);
-+          modifiers[i] = gbm_bo_get_modifier (next_bo);
-+        }
-     }
- 
-   kms_fd = meta_gpu_kms_get_fd (gpu_kms);
diff --git a/debian/patches/series b/debian/patches/series
index 5bd9ae6..59d31f8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,17 +1,7 @@
-gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch
-native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch
-monitor-manager-Filter-out-low-screen-resolutions.patch
-window-wayland-Always-update-monitor-for-non-user-ops.patch
-window-Don-t-refuse-to-move-focus-to-the-grab-window.patch
-window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch
-monitor-Use-current-monitor-mode-to-check-whether-active.patch
 theme-use-gtk_render_icon_suface-to-paint-button-icon.patch
 theme-load-icons-as-Gtk-does-with-fallback-and-RTL-suppor.patch
 clutter-Smooth-out-master-clock-to-smooth-visuals.patch
-core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch
 bgo768531_workaround-startup-notifications.patch
-renderer-native-Fallback-to-non-planar-API-if-gbm_bo_get_.patch
-clutter-x11-Implement-keycode-lookup-from-keysyms-on-virt.patch
 clutter-Do-not-latch-modifiers-on-modifier-keys.patch
 debian/synaptics-support.patch
 debian/skip-failing-tests.patch
diff --git a/debian/patches/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch b/debian/patches/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch
deleted file mode 100644
index ec37087..0000000
--- a/debian/patches/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuell...@gnome.org>
-Date: Fri, 25 May 2018 18:18:23 +0000
-Subject: window: Don't refuse to move focus to the grab window
-
-We refuse to move focus while a grab operation is in place. While this
-generally makes sense, there's no reason why the window that owns the
-grab shouldn't be given the regular input focus as well - we pretty
-much assume that the grab window is also the focus window anyway.
-
-In fact there's a strong reason for allowing the focus change here:
-If the grab window isn't the focus window, it probably has a modal
-transient that is focused instead, and a likely reason for the focus
-request is that the transient is being unmanaged and we must move
-the focus elsewhere.
-
-https://gitlab.gnome.org/GNOME/mutter/issues/15
-
-
-(cherry picked from commit 148da24f9510ebd23d750b8224aa0ab3a549e69e)
-
-Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/15
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1422253
-Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/mutter/commit/513cc535
----
- src/core/window.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/core/window.c b/src/core/window.c
-index 743326c..5b1eb5b 100644
---- a/src/core/window.c
-+++ b/src/core/window.c
-@@ -4620,6 +4620,7 @@ meta_window_focus (MetaWindow  *window,
-               window->desc, window->input, window->take_focus);
- 
-   if (window->display->grab_window &&
-+      window->display->grab_window != window &&
-       window->display->grab_window->all_keys_grabbed &&
-       !window->display->grab_window->unmanaging)
-     {
diff --git a/debian/patches/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch b/debian/patches/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch
deleted file mode 100644
index fa98757..0000000
--- a/debian/patches/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuell...@gnome.org>
-Date: Fri, 25 May 2018 21:24:17 +0200
-Subject: window: Explicitly exclude unmanaging window from focus again
-
-Since commit b3b9d9e16 we no longer have to pass the unmanaging window
-to make sure we don't try to focus it again, however the parameter also
-influences the focus policy by giving ancestors preference over the normal
-stack order.
-
-https://gitlab.gnome.org/GNOME/mutter/issues/15
-
-(cherry picked from commit d99442d6e6b7c9b383863cc754db609398d4e65b)
-
-Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/15
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1422253
-Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/mutter/commit/137f2223
----
- src/core/window.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/window.c b/src/core/window.c
-index 5b1eb5b..cc0813a 100644
---- a/src/core/window.c
-+++ b/src/core/window.c
-@@ -1469,7 +1469,9 @@ meta_window_unmanage (MetaWindow  *window,
-       meta_topic (META_DEBUG_FOCUS,
-                   "Focusing default window since we're unmanaging %s\n",
-                   window->desc);
--      meta_workspace_focus_default_window (window->screen->active_workspace, NULL, timestamp);
-+      meta_workspace_focus_default_window (window->screen->active_workspace,
-+                                           window,
-+                                           timestamp);
-     }
-   else
-     {
diff --git a/debian/patches/window-wayland-Always-update-monitor-for-non-user-ops.patch b/debian/patches/window-wayland-Always-update-monitor-for-non-user-ops.patch
deleted file mode 100644
index ce279ed..0000000
--- a/debian/patches/window-wayland-Always-update-monitor-for-non-user-ops.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From: Olivier Fourdan <ofour...@redhat.com>
-Date: Mon, 18 Jun 2018 12:39:11 +0200
-Subject: window/wayland: Always update monitor for non-user ops
-
-meta_window_wayland_update_main_monitor() would skip the monitor update
-if the difference in scale between the old and the new monitor would
-cause another monitor change.
-
-While this is suitable when the monitor change results from a user
-interactively moving the surface between monitors of different scales,
-this can leave dangling pointers to freed monitors when this is
-triggered by a change of monitor configuration.
-
-Make sure we update the monitor unconditionally if not from a user
-operation.
-
-Closes: https://gitlab.gnome.org/GNOME/mutter/issues/189
-
-(cherry picked from commit a3da4b8d5bd217c0262fd9361036877d155a300f)
-
-Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/issues/189
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1784398
-Applied-Upstream: 3.28.4, commit:https://gitlab.gnome.org/GNOME/mutter/commit/d74a04606
----
- src/wayland/meta-window-wayland.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c
-index 705bc49..8bafb25 100644
---- a/src/wayland/meta-window-wayland.c
-+++ b/src/wayland/meta-window-wayland.c
-@@ -413,6 +413,12 @@ meta_window_wayland_update_main_monitor (MetaWindow *window,
-       return;
-     }
- 
-+  if (!user_op)
-+    {
-+      window->monitor = to;
-+      return;
-+    }
-+
-   from_scale = meta_logical_monitor_get_scale (from);
-   to_scale = meta_logical_monitor_get_scale (to);
- 
-- 
ubuntu-desktop mailing list
ubuntu-desktop@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop

Reply via email to