diff --git a/mutter-3.22.3.tar.xz b/mutter-3.22.3.tar.xz
deleted file mode 100644
index 33fc727..0000000
--- a/mutter-3.22.3.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:537eda8e5fdd4a70602da913b885ad745a7510678c24006b91ceba83ccab209a
-size 3533212
diff --git a/mutter-3.24.0.tar.xz b/mutter-3.24.0.tar.xz
new file mode 100644
index 0000000..b3c5884
--- /dev/null
+++ b/mutter-3.24.0.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fec996a776259ddedfd02205e43b96ec35bd79ae3f73ac21d7010fba0189d08
+size 3576520
diff --git a/mutter-bell.patch b/mutter-bell.patch
index 882e4d5..571f1f0 100644
--- a/mutter-bell.patch
+++ b/mutter-bell.patch
@@ -1,7 +1,7 @@
-Index: mutter-3.20.0/src/meta/prefs.h
+Index: mutter-3.23.2/src/meta/prefs.h
 ===================================================================
---- mutter-3.20.0.orig/src/meta/prefs.h
-+++ mutter-3.20.0/src/meta/prefs.h
+--- mutter-3.23.2.orig/src/meta/prefs.h
++++ mutter-3.23.2/src/meta/prefs.h
 @@ -89,6 +89,7 @@ typedef enum
    META_PREF_WORKSPACE_NAMES,
    META_PREF_VISUAL_BELL,
@@ -18,10 +18,10 @@ Index: mutter-3.20.0/src/meta/prefs.h
  GDesktopVisualBellType meta_prefs_get_visual_bell_type (void);
  
  #endif
-Index: mutter-3.20.0/src/core/prefs.c
+Index: mutter-3.23.2/src/core/prefs.c
 ===================================================================
---- mutter-3.20.0.orig/src/core/prefs.c
-+++ mutter-3.20.0/src/core/prefs.c
+--- mutter-3.23.2.orig/src/core/prefs.c
++++ mutter-3.23.2/src/core/prefs.c
 @@ -93,6 +93,7 @@ static gboolean auto_raise_delay = 500;
  static gboolean focus_change_on_pointer_rest = FALSE;
  static gboolean bell_is_visible = FALSE;
@@ -67,10 +67,10 @@ Index: mutter-3.20.0/src/core/prefs.c
  GDesktopVisualBellType
  meta_prefs_get_visual_bell_type (void)
  {
-Index: mutter-3.20.0/src/core/bell.c
+Index: mutter-3.23.2/src/core/bell.c
 ===================================================================
---- mutter-3.20.0.orig/src/core/bell.c
-+++ mutter-3.20.0/src/core/bell.c
+--- mutter-3.23.2.orig/src/core/bell.c
++++ mutter-3.23.2/src/core/bell.c
 @@ -220,6 +220,12 @@ meta_bell_notify (MetaDisplay *display,
    if (meta_prefs_get_visual_bell ())
      bell_visual_notify (display, window);
@@ -84,22 +84,22 @@ Index: mutter-3.20.0/src/core/bell.c
    if (meta_prefs_bell_is_audible ())
      return bell_audible_notify (display, window);
  
-Index: mutter-3.20.0/data/org.gnome.mutter.gschema.xml.in
+Index: mutter-3.23.2/data/org.gnome.mutter.gschema.xml.in
 ===================================================================
---- mutter-3.20.0.orig/data/org.gnome.mutter.gschema.xml.in
-+++ mutter-3.20.0/data/org.gnome.mutter.gschema.xml.in
+--- mutter-3.23.2.orig/data/org.gnome.mutter.gschema.xml.in
++++ mutter-3.23.2/data/org.gnome.mutter.gschema.xml.in
 @@ -102,6 +102,16 @@
-       </_description>
+       </description>
      </key>
  
 +    <key name="audible-bell-force-through-server" type="b">
 +      <default>false</default>
-+      <_summary>Force the System Bell through the X server only.</_summary>
-+      <_description>
++      <summary>Force the System Bell through the X server only.</summary>
++      <description>
 +        Force the System Bell through the X server only for systems that
 +        do not want to go through the sound card - for example that don't
 +        have speakers.
-+      </_description>
++      </description>
 +    </key>
 +
      <child name="keybindings" schema="org.gnome.mutter.keybindings"/>
diff --git a/mutter.changes b/mutter.changes
index 0fb7393..58812b9 100644
--- a/mutter.changes
+++ b/mutter.changes
@@ -1,3 +1,141 @@
+-------------------------------------------------------------------
+Mon Mar 20 20:15:10 UTC 2017 - dimstar@opensuse.org
+
+- Update to version 3.24.0:
+  + Updated translations.
+
+-------------------------------------------------------------------
+Tue Mar 14 17:37:28 UTC 2017 - dimstar@opensuse.org
+
+- Update to version 3.23.92:
+  + Properly handle EGLOutput acquire errors (bgo#779112).
+  + Fix crash when a window closes during Alt+Tab (bgo#779483).
+  + Implement DnD handling code in wayland (bgo#765003).
+  + Fix fallout from pixel conversion optimization in 3.23.91
+    (bgo#779234).
+  + Fix mouse input stopping to work in applications (bgo#763246).
+  + Fix DnD between QT5 and GTK3 applications on wayland
+    (bgo#779757).
+  + Make EDID reading less fragile (bgo#779837).
+  + Add support for tablet grouping (bgo#779986).
+  + Misc. bug fixes and cleanups: bgo#779436, bgo#779001,
+    bgo#779745.
+  + Updated translations.
+
+-------------------------------------------------------------------
+Fri Mar  3 15:42:55 UTC 2017 - zaitor@opensuse.org
+
+- Pass --enable-egl-device to configure, build egl support, we
+  already have the needed BuildRequires.
+
+-------------------------------------------------------------------
+Wed Mar  1 15:17:53 UTC 2017 - zaitor@opensuse.org
+
+- Update to version 3.23.91:
+  + Give libinput read-only access to /sys (bgo#778472).
+  + Allow edge-scrolling without 2-finger-scroll capable devices
+    (bgo#778554).
+  + Fullscreen windows on the requested monitor on wayland
+    (bgo#772525).
+  + Implement threaded swap_event fallback for NVIDIA driver
+    (bgo#779039).
+  + Avoid pixel conversions when storing textures from cairo
+    (bgo#779234).
+  + Misc. bug fixes: bgo#772218, bgo#776919, bgo#778831,
+    bgo#642652.
+  + Updated translations.
+
+-------------------------------------------------------------------
+Sat Feb 18 13:13:17 UTC 2017 - luke.nukem.jones@gmail.com
+
+- Update to version 3.23.90:
+  + Fix window menu placement with HiDPI (bgo#776055).
+  + Improve EGLStream support (bgo#773629).
+  + Start moving low-level monitor configuration into mutter
+    (bgo#777732).
+  + Fix erroneous key event repeats (bgo#774989).
+  + Don't hardcode seat ID in ClutterDeviceManager (bgo#778092).
+  + Fix "ghost" cursors in multi-monitor setups (bgo#771056).
+  + Use eglGetPlatformDisplay (bgo#772422).
+  + Fix erratic raise_or_lower behavior (bgo#705200).
+  + Fix coordinate mapping of absolute devices (bgo#774115).
+  + Show OSD on tablet mode switches (bgo#771098).
+  + Make mutter libs parallel installable (bgo#777317).
+  + Only apply keymap when not running nested (bgo#777800).
+  + Set right scale for tablet tool cursors on HiDPI (bgo#778474).
+  + Adjust server-side shadows to match Adwaita (bgo#744667).
+  + Misc. bug fixes bgo#774891, bgo#777389, bgo#777691,
+    bgo#778262, bgo#776543, bgo#778684, bgo#778699,
+    bgo#744667.
+- Rename sub-package libmutter0 to libmutter-0-0 to reflect
+  upstream library name change, making it paralell installable.
+- Remove
+  %global __provides_exclude_from ^%{_libdir}/mutter/.*.typelib$:
+  No longer needed as mutter is now paralell installable following
+  upstream changes.
+- Add explicit pkgconfig(gbm) BuildRequires that configure checks
+  for.
+
+-------------------------------------------------------------------
+Thu Feb 16 23:02:15 UTC 2017 - dimstar@opensuse.org
+
+- Update to version 3.23.3:
+  + Fix frequent freezes in multihead setups on wayland
+    (bgo#774557).
+  + Preserve root window mask on XSelectionRequest (bgo#776128).
+  + Misc. bug fixes: bgo#775478, bgo#774891, bgo#775986,
+    bgo#776036.
+
+-------------------------------------------------------------------
+Thu Feb 16 23:02:14 UTC 2017 - dimstar@opensuse.org
+
+- Update to version 3.23.2:
+  + Stack docks below other windows on fullscreen monitors
+    (bgo#772937).
+  + Fix popup grabs blocking screen lock on wayland (bgo#771235).
+  + Handle touchpad pinch gestures with more than two fingers
+    (bgo#765937).
+  + Implement drawing tablet support on X11 (bgo#773779).
+  + Fix some Wine games starting minimized (bgo#774333).
+  + Fix switching between two finger- and edge scrolling on wayland
+    (bgo#771744).
+  + Implement support for EGLStream/EGLDevice (bgo#773629).
+  + Add size_changed vfunc to handle async client size changes
+    (bgo#770345).
+  + Change focus window on clicks with any modifiers (bgo#746642).
+  + Misc. bug fixes and cleanups: bgo#771067, bgo#774330,
+    bgo#774613, bgo#771297, bgo#774135, bgo#774827, bgo#774923.
+  + Updated translations.
+- Add pkgconfig(egl), pkgconfig(glesv2) and pkgconfig(xtst)
+  BuildRequires: new dependencies.
+- Drop meta-input-settings-x11.c: fixed upstream.
+- Rebase mutter-bell.patch and
+  relax-some-constraints-on-CSD-windows-in-sle-classic.patch.
+
+-------------------------------------------------------------------
+Thu Feb 16 23:02:13 UTC 2017 - dimstar@opensuse.org
+
+- Update to version 3.23.1:
+  + Fix handling of Escape shortcut in force-quit dialog
+    (bgo#737109).
+  + Improve pointer constraints support (bgo#771859).
+  + Really fix framebuffer capture origin offset (bgo#771502).
+  + Fix session going into idle mode immediately on startup
+    (bgo#772839).
+  + Fix mirror mode with stage views (bgo#773115).
+  + Fall back to X with connectors spread across multiple GPUs
+    (bgo#771442).
+  + Fix various crashes on wayland (bgo#771646, bgo#771858,
+    bgo#772929).
+  + Fix various placement issues on wayland (bgo#772729,
+    bgo#768039, bgo#771841, bgo#771841, bgo#773141).
+  + Misc. bug fixes: bgo#771019, bgo#773116, bgo#772914,
+    bgo#773210.
+  + Updated translations.
+- Drop upstream fixed patches:
+  + mutter-screeenshot-coords.patch.
+  + mutter-scale-positioner-coordinates.patch.
+
 -------------------------------------------------------------------
 Thu Feb 16 23:02:12 UTC 2017 - zaitor@opensuse.org
 
diff --git a/mutter.spec b/mutter.spec
index fb56303..bd9bfa1 100644
--- a/mutter.spec
+++ b/mutter.spec
@@ -22,16 +22,14 @@
 %bcond_without wayland
 %endif
 
-%global __provides_exclude_from ^%{_libdir}/mutter/.*.typelib$
-
 Name:           mutter
-Version:        3.22.3
+Version:        3.24.0
 Release:        0
 Summary:        Window and compositing manager based on Clutter
 License:        GPL-2.0+
 Group:          System/GUI/GNOME
 Url:            http://www.gnome.org
-Source:         http://download.gnome.org/sources/mutter/3.22/%{name}-%{version}.tar.xz
+Source:         http://download.gnome.org/sources/mutter/3.24/%{name}-%{version}.tar.xz
 # PATCH-FEATURE-SLE mutter-bell.patch FATE#316042 bnc#889218 idonmez@suse.com -- make audible bell work out of the box.
 Patch1:         mutter-bell.patch
 # PATCH-FIX-SLE relax-some-constraints-on-CSD-windows-in-sle-classic.patch bnc#883491 cxiong@suse.com -- Relax some constraints on window positioning for CSD windows s.t. they can be placed at the very top of the monitor.
@@ -51,7 +49,10 @@ BuildRequires:  translation-update-upstream
 BuildRequires:  update-desktop-files
 BuildRequires:  zenity
 BuildRequires:  pkgconfig(cairo) >= 1.10.0
+BuildRequires:  pkgconfig(egl)
+BuildRequires:  pkgconfig(gbm)
 BuildRequires:  pkgconfig(gio-unix-2.0) >= 2.25.10
+BuildRequires:  pkgconfig(glesv2)
 BuildRequires:  pkgconfig(gnome-desktop-3.0)
 BuildRequires:  pkgconfig(gsettings-desktop-schemas) >= 3.19.3
 BuildRequires:  pkgconfig(gtk+-3.0) >= 3.19.7
@@ -74,6 +75,7 @@ BuildRequires:  pkgconfig(xkbfile)
 BuildRequires:  pkgconfig(xkeyboard-config)
 BuildRequires:  pkgconfig(xrandr) >= 1.5.0
 BuildRequires:  pkgconfig(xrender)
+BuildRequires:  pkgconfig(xtst)
 %if %{with wayland}
 BuildRequires:  pkgconfig(gbm) >= 10.3
 BuildRequires:  pkgconfig(gudev-1.0)
@@ -81,7 +83,7 @@ BuildRequires:  pkgconfig(libdrm)
 BuildRequires:  pkgconfig(libinput)
 BuildRequires:  pkgconfig(libsystemd)
 BuildRequires:  pkgconfig(wayland-protocols) >= 1.7
-BuildRequires:  pkgconfig(wayland-server) >= 1.4.93
+BuildRequires:  pkgconfig(wayland-server) >= 1.1.90
 %endif
 Requires:       zenity
 Recommends:     %{name}-lang
@@ -94,14 +96,14 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Mutter is a window and compositing manager based on Clutter, forked
 from Metacity.
 
-%package -n libmutter0
+%package -n libmutter-0-0
 Summary:        Window and compositing manager based on Clutter
 # we need the gsettings schema; hopefully, they'll stay backwards compatible
 # (since we can't require = version, to not break SLPP)
 Group:          System/Libraries
 Requires:       %{name}-data >= %{version}
 
-%description -n libmutter0
+%description -n libmutter-0-0
 Mutter is a window and compositing manager based on Clutter, forked
 from Metacity.
 
@@ -123,7 +125,7 @@ This package contains data files needed by mutter and its library.
 Summary:        Development files for mutter, a window and compositing manager
 Group:          Development/Libraries/GNOME
 Requires:       %{name} = %{version}
-Requires:       libmutter0 = %{version}
+Requires:       libmutter-0-0 = %{version}
 
 %description devel
 This subpackage contains libraries and header files for developing
@@ -150,6 +152,7 @@ translation-update-upstream
         --disable-native-backend \
 %endif
         --disable-static \
+        --enable-egl-device \
         --enable-compile-warnings=maximum
 make %{?_smp_mflags}
 
@@ -166,9 +169,9 @@ find %{buildroot}%{_libdir} -type f -name '*.la' -delete -print
 %postun
 %desktop_database_postun
 
-%post -n libmutter0 -p /sbin/ldconfig
+%post -n libmutter-0-0 -p /sbin/ldconfig
 
-%postun -n libmutter0 -p /sbin/ldconfig
+%postun -n libmutter-0-0 -p /sbin/ldconfig
 
 %post data
 %glib2_gsettings_schema_post
@@ -182,28 +185,28 @@ find %{buildroot}%{_libdir} -type f -name '*.la' -delete -print
 %doc %{_mandir}/man1/mutter.1%{?ext_man}
 %{_bindir}/mutter
 # These so files are not split out since they are private to mutter
-%{_libdir}/mutter/libmutter-clutter-1.0.so
-%{_libdir}/mutter/libmutter-cogl-pango.so
-%{_libdir}/mutter/libmutter-cogl-path.so
-%{_libdir}/mutter/libmutter-cogl.so
+%{_libdir}/mutter/libmutter-clutter-0.so
+%{_libdir}/mutter/libmutter-cogl-pango-0.so
+%{_libdir}/mutter/libmutter-cogl-path-0.so
+%{_libdir}/mutter/libmutter-cogl-0.so
 %{_libdir}/mutter/plugins/default.so
 #
 %{_libexecdir}/mutter-restart-helper
 %{_datadir}/applications/mutter.desktop
 # These typelibs are not split out since they are private to mutter
-%{_libdir}/mutter/Cally-1.0.typelib
-%{_libdir}/mutter/Clutter-1.0.typelib
-%{_libdir}/mutter/ClutterX11-1.0.typelib
-%{_libdir}/mutter/Cogl-1.0.typelib
+%{_libdir}/mutter/Cally-0.typelib
+%{_libdir}/mutter/Clutter-0.typelib
+%{_libdir}/mutter/ClutterX11-0.typelib
+%{_libdir}/mutter/Cogl-0.typelib
 #{_libdir}/mutter/Cogl-2.0.typelib
-%{_libdir}/mutter/CoglPango-1.0.typelib
+%{_libdir}/mutter/CoglPango-0.typelib
 #{_libdir}/mutter/CoglPango-2.0.typelib
-%{_libdir}/mutter/Meta-3.0.typelib
+%{_libdir}/mutter/Meta-0.typelib
 #
 
-%files -n libmutter0
+%files -n libmutter-0-0
 %defattr(-,root,root)
-%{_libdir}/libmutter.so.*
+%{_libdir}/libmutter-0.so.*
 %dir %{_libdir}/mutter/
 # users of libmutter need this directory
 %dir %{_libdir}/mutter/plugins/
@@ -225,20 +228,20 @@ find %{buildroot}%{_libdir} -type f -name '*.la' -delete -print
 %files devel
 %defattr(-,root,root)
 %{_includedir}/mutter/
-%{_libdir}/libmutter.so
-%{_libdir}/mutter/Meta-3.0.gir
-%{_libdir}/mutter/Cally-1.0.gir
-%{_libdir}/mutter/Clutter-1.0.gir
-%{_libdir}/mutter/ClutterX11-1.0.gir
-%{_libdir}/mutter/Cogl-1.0.gir
+%{_libdir}/libmutter-0.so
+%{_libdir}/mutter/Meta-0.gir
+%{_libdir}/mutter/Cally-0.gir
+%{_libdir}/mutter/Clutter-0.gir
+%{_libdir}/mutter/ClutterX11-0.gir
+%{_libdir}/mutter/Cogl-0.gir
 #{_libdir}/mutter/Cogl-2.0.gir
-%{_libdir}/mutter/CoglPango-1.0.gir
+%{_libdir}/mutter/CoglPango-0.gir
 #{_libdir}/mutter/CoglPango-2.0.gir
-%{_libdir}/pkgconfig/libmutter.pc
-%{_libdir}/pkgconfig/mutter-clutter-1.0.pc
-%{_libdir}/pkgconfig/mutter-clutter-x11-1.0.pc
-%{_libdir}/pkgconfig/mutter-cogl-1.0.pc
-%{_libdir}/pkgconfig/mutter-cogl-pango-1.0.pc
-%{_libdir}/pkgconfig/mutter-cogl-path-1.0.pc
+%{_libdir}/pkgconfig/libmutter-0.pc
+%{_libdir}/pkgconfig/mutter-clutter-0.pc
+%{_libdir}/pkgconfig/mutter-clutter-x11-0.pc
+%{_libdir}/pkgconfig/mutter-cogl-0.pc
+%{_libdir}/pkgconfig/mutter-cogl-pango-0.pc
+%{_libdir}/pkgconfig/mutter-cogl-path-0.pc
 
 %changelog
diff --git a/relax-some-constraints-on-CSD-windows-in-sle-classic.patch b/relax-some-constraints-on-CSD-windows-in-sle-classic.patch
index dea3124..05edb40 100644
--- a/relax-some-constraints-on-CSD-windows-in-sle-classic.patch
+++ b/relax-some-constraints-on-CSD-windows-in-sle-classic.patch
@@ -1,8 +1,8 @@
-Index: mutter-3.20.0/src/core/constraints.c
+Index: mutter-3.23.2/src/core/constraints.c
 ===================================================================
---- mutter-3.20.0.orig/src/core/constraints.c
-+++ mutter-3.20.0/src/core/constraints.c
-@@ -1241,6 +1241,12 @@ constrain_to_single_monitor (MetaWindow
+--- mutter-3.23.2.orig/src/core/constraints.c
++++ mutter-3.23.2/src/core/constraints.c
+@@ -1466,6 +1466,12 @@ constrain_to_single_monitor (MetaWindow
  }
  
  static gboolean
@@ -15,7 +15,7 @@ Index: mutter-3.20.0/src/core/constraints.c
  constrain_fully_onscreen (MetaWindow         *window,
                            ConstraintInfo     *info,
                            ConstraintPriority  priority,
-@@ -1256,6 +1262,11 @@ constrain_fully_onscreen (MetaWindow
+@@ -1481,6 +1487,11 @@ constrain_fully_onscreen (MetaWindow
    if (window->type == META_WINDOW_DESKTOP ||
        window->type == META_WINDOW_DOCK    ||
        window->fullscreen                  ||
@@ -25,9 +25,9 @@ Index: mutter-3.20.0/src/core/constraints.c
 +       */
 +      (constraint_is_sle_classic() && !window->decorated) ||
        !window->require_fully_onscreen     ||
-       info->is_user_action)
-     return TRUE;
-@@ -1292,10 +1303,11 @@ constrain_titlebar_visible (MetaWindow
+       info->is_user_action                ||
+       meta_window_get_placement_rule (window))
+@@ -1518,11 +1529,12 @@ constrain_titlebar_visible (MetaWindow
     * is only meant for normal windows (e.g. we don't want docks to be shoved
     * "onscreen" by their own strut).
     */
@@ -35,11 +35,13 @@ Index: mutter-3.20.0/src/core/constraints.c
 -      window->type == META_WINDOW_DOCK    ||
 -      window->fullscreen                  ||
 -      !window->require_titlebar_visible   ||
+-      unconstrained_user_action           ||
 +  if (window->type == META_WINDOW_DESKTOP                 ||
 +      window->type == META_WINDOW_DOCK                    ||
 +      window->fullscreen                                  ||
 +      (constraint_is_sle_classic() && !window->decorated) ||
 +      !window->require_titlebar_visible                   ||
-       unconstrained_user_action)
++      unconstrained_user_action                           ||
+       meta_window_get_placement_rule (window))
      return TRUE;