Github messages for voidlinux
 help / color / mirror / Atom feed
From: q66 <q66@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] gnome 3.38
Date: Thu, 17 Sep 2020 06:32:53 +0200	[thread overview]
Message-ID: <20200917043253.3Hz1XZl-2uL4HIazzrv9AV8YRyEvvJYTRNvqWTO_yEw@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-24260@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 4748 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/q66/void-packages gnome338
https://github.com/void-linux/void-packages/pull/24260

gnome 3.38
Since https://github.com/void-linux/void-packages/pull/21382 is taking a while and gnome 3.38 is just around the corner, I prepared a preliminary PR for now containing the 3.37 prerelease stuff - I did this mainly because I needed more "ready" wayland support. Tested on aarch64.

# TODO

- [x] clean it up
- [x] better testing, make sure testsuite passes
- [x] import the useful bits from #21382, or rebase if it gets merged
- [ ] make sure crossbuilds work
- [ ] test on more platforms
- [x] fix the metapackages (they haven't been touched, possibly in https://github.com/void-linux/void-packages/pull/22936)
- [ ] ~~drop the `vala` option in the rest of the packages~~ probably gonna do that once this PR is merged

# Stable updates

- [x] mozjs78 -> 78.1.0 **(new)**
- [x] yelp-xsl -> 3.38.0
- [x] yelp-tools -> 3.38.0
- [x] yelp -> 3.38.0
- [x] vala -> 0.50.0
- [x] valadoc -> 0.50.0 
- [x] valabind -> (revbump) 
- [x] devhelp -> 3.38.0
- [x] gdl -> 3.34.0
- [x] libsoup -> 2.72.0
- [x] grilo -> 0.3.13
- [x] grilo-plugins -> 0.3.12
- [x] gtksourceview4 -> 4.8.0
- [x] tepl -> 5.0.0
- [x] glade3 -> 3.38.0
- [x] libhandy -> (revbump)
- [x] libhandy1 -> 1.0.0
- [x] libxfce4ui -> (revbump)
- [x] libdazzle -> 3.38.0
- [x] anjuta -> (revbump)
- [x] sysprof -> 3.38.0
- [x] tracker -> 2.3.6
- [x] tracker-miners -> 2.3.5
- [x] tracker3 -> 3.0.0 **(new)**
- [x] tracker3-miners -> 3.0.0 **(new)**
- [x] bijiben -> 3.36.3
- [x] graphene -> 1.10.2
- [x] amtk -> 5.2.0
- [x] io.elementary.code -> (revbump)
- [x] phodav -> 2.5
- [x] gsettings-desktop-schemas -> 3.38.0
- [x] glib-networking -> 2.66.0
- [x] at-spi2-core -> 2.38.0
- [x] at-spi2-atk -> 2.38.0
- [x] libgweather -> 3.36.1
- [x] gnome-menus -> 3.36.0
- [x] gnome-desktop -> 3.38.0
- [x] gnome-settings-daemon -> 3.38.0
- [x] mutter -> 3.38.0
- [x] cheese -> 3.38.0
- [x] evolution-data-server -> 3.38.0
- [x] folks -> 0.14.0
- [x] gnome-online-accounts -> 3.37.90
- [x] gvfs -> 1.46.0
- [x] gnome-control-center -> 3.38.0
- [x] dconf-editor -> 3.38.0
- [x] gjs -> 1.66.0
- [x] gnome-shell -> 3.38.0
- [x] gnome-shell-extensions -> 3.38.0
- [x] gdm -> 3.38.0
- [x] gnome-session -> 3.38.0
- [x] gnome-initial-setup -> 3.38.0
- [x] xdg-desktop-portal-gtk -> 1.8.0
- [x] nautilus -> 3.38.0
- [x] gnome-maps -> 3.38.0
- [x] evolution -> 3.38.0
- [x] evolution-ews -> 3.38.0
- [x] python3-atspi -> 2.38.0
- [x] python-atspi -> 2.38.0
- [x] orca -> 3.38.0
- [x] gnome-weather -> (revbump)
- [x] vte3 -> 0.62.0
- [x] gnome-terminal -> 3.38.0
- [x] gnome-getting-started-docs -> 3.36.2
- [x] gnome-user-docs -> 3.38.0
- [x] gnome-epub-thumbnailer -> 1.6
- [x] gnome-books -> (revbump)
- [x] gnome-characters -> (revbump)
- [x] gnome-documents -> (revbump)
- [x] gnome-font-viewer -> (revbump)
- [x] totem -> 3.38.0
- [x] gnome-screensaver -> (revbump + build fix)
- [x] gnome-clocks -> 3.38.0
- [x] epiphany -> 3.38.0
- [x] gnome-contacts -> 3.37.2
- [x] gnome-photos -> 3.37.91.1
- [x] eog -> 3.38.0
- [x] evince -> 3.38.0
- [x] file-roller -> 3.38.0
- [x] gnome-calendar -> 3.38.0
- [x] gnome-music -> 3.38.0
- [x] gedit -> 3.38.0
- [x] gedit-plugins -> 3.38.0
- [x] gnome-latex -> 3.38.0
- [x] baobab -> 3.38.0
- [x] gnome-boxes -> 3.38.0
- [x] gnome-calculator -> 3.38.0
- [x] gnome-disk-utility -> 3.38.0
- [x] gnome-screenshot -> 3.38.0
- [x] gnome-system-monitor -> 3.38.0
- [x] adwaita-icon-theme -> 3.38.0
- [x] gnome-backgrounds -> 3.38.0
- [x] simple-scan -> 3.38.0
- [x] rygel -> 0.40.0
- [x] gnome-builder -> 3.38.0
- [x] retro-gtk -> 1.0.0
- [x] gnome-games -> 3.38.0
- [x] budgie-desktop -> (rebuild)

# Other updates (still TODO)

- [x] gnome-panel -> 3.37.1 *unstable*
- [x] metacity -> 3.37.1 *unstable*
- [x] gnome-flashback -> 3.37.2 *unstable*
- [x] polari -> 3.37.3 *unstable*

## Merged

- [x] libsigc++3 -> 3.0.3 (new)
- [x] mm-common -> 1.0.1
- [x] glibmm -> 2.64.2
- [x] pangomm -> 2.42.1
- [x] libnotify -> 0.7.9
- [x] atk -> 2.36.0
- [x] gtk+3 -> 3.24.22
- [x] libportal -> 0.3 (new)
- [x] cogl -> 1.22.28
- [x] geocode-glib -> 3.26.2
- [x] gfbgraph -> 0.2.4
- [x] libgsf -> 1.14.47
- [x] libsecret -> 0.20.3
- [x] libchamplain -> 0.12.20
- [x] gom -> 0.4
- [x] gssdp -> 1.2.3
- [x] gtk-vnc -> 1.0.0 (drops unused gtk2 support)
- [x] gupnp -> 1.2.4
- [x] gnome-video-effects -> 0.5.0
- [x] glib -> 2.66.0
- [x] webkit2gtk -> 2.30.0

A patch file from https://github.com/void-linux/void-packages/pull/24260.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-gnome338-24260.patch --]
[-- Type: text/x-diff, Size: 1175302 bytes --]

From b7e94518e2f4cc5e5bbce6b263080b3a25620135 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 06:23:04 +0200
Subject: [PATCH 001/104] New package: mozjs78-78.1.0

---
 common/shlibs                                 |   1 +
 srcpkgs/mozjs78-devel                         |   1 +
 .../001-silence-sandbox-violations.patch      |  27 +++++
 srcpkgs/mozjs78/patches/002-fix-soname.patch  |  22 ++++
 .../mozjs78/patches/003-fix-wasm-arm.patch    |  16 +++
 .../mozjs78/patches/004-fix-musl-build.patch  |  17 +++
 .../005-spidermonkey-checks-disable.patch     |  12 ++
 .../006-mozjs78.pc-honor-sysroot.patch        |  10 ++
 .../patches/007-fix-mips-sgidefs_h.patch      |  11 ++
 srcpkgs/mozjs78/patches/coverage-api.patch    | 107 ++++++++++++++++++
 srcpkgs/mozjs78/template                      |  73 ++++++++++++
 srcpkgs/mozjs78/update                        |   1 +
 12 files changed, 298 insertions(+)
 create mode 120000 srcpkgs/mozjs78-devel
 create mode 100644 srcpkgs/mozjs78/patches/001-silence-sandbox-violations.patch
 create mode 100644 srcpkgs/mozjs78/patches/002-fix-soname.patch
 create mode 100644 srcpkgs/mozjs78/patches/003-fix-wasm-arm.patch
 create mode 100644 srcpkgs/mozjs78/patches/004-fix-musl-build.patch
 create mode 100644 srcpkgs/mozjs78/patches/005-spidermonkey-checks-disable.patch
 create mode 100644 srcpkgs/mozjs78/patches/006-mozjs78.pc-honor-sysroot.patch
 create mode 100644 srcpkgs/mozjs78/patches/007-fix-mips-sgidefs_h.patch
 create mode 100644 srcpkgs/mozjs78/patches/coverage-api.patch
 create mode 100644 srcpkgs/mozjs78/template
 create mode 100644 srcpkgs/mozjs78/update

diff --git a/common/shlibs b/common/shlibs
index fecf10af09b..8d362e18496 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3538,6 +3538,7 @@ libKF5Syndication.so.5 syndication-5.50.0_1
 liblqr-1.so.0 liblqr-0.4.2_1
 libmozjs-60.so.0 mozjs60-60.0.2_1
 libmozjs-68.so.0 mozjs68-68.8.0_1
+libmozjs-78.so.0 mozjs78-78.1.0_1
 libebur128.so.1 libebur128-1.2.4_1
 libgtksourceview-4.so.0 gtksourceview4-4.0.2_1
 libwx_gtk3u_propgrid-3.0.so.0 wxWidgets-gtk3-3.0.4_1
diff --git a/srcpkgs/mozjs78-devel b/srcpkgs/mozjs78-devel
new file mode 120000
index 00000000000..7713599356f
--- /dev/null
+++ b/srcpkgs/mozjs78-devel
@@ -0,0 +1 @@
+mozjs78
\ No newline at end of file
diff --git a/srcpkgs/mozjs78/patches/001-silence-sandbox-violations.patch b/srcpkgs/mozjs78/patches/001-silence-sandbox-violations.patch
new file mode 100644
index 00000000000..dc01194b646
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/001-silence-sandbox-violations.patch
@@ -0,0 +1,27 @@
+"Carried over + updated from mozjs68"
+Upstream: no
+From 9ad10569e11a2fb96377188f895bc66abcc9511d Mon Sep 17 00:00:00 2001
+From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
+Date: Wed, 5 Sep 2018 15:05:24 +0200
+Subject: [PATCH] silence sandbox violations
+
+Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
+---
+ python/mozbuild/mozbuild/frontend/emitter.py | 5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/python/mozbuild/mozbuild/frontend/emitter.py
++++ b/python/mozbuild/mozbuild/frontend/emitter.py
+@@ -1239,12 +1239,6 @@ class TreeMetadataEmitter(LoggingMixin):
+                                                  'is a filename, but a directory is required: %s '
+                                                  '(resolved to %s)' % (local_include, full_path),
+                                                  context)
+-            if (full_path == context.config.topsrcdir or
+-                    full_path == context.config.topobjdir):
+-                raise SandboxValidationError(
+-                    'Path specified in LOCAL_INCLUDES '
+-                    '(%s) resolves to the topsrcdir or topobjdir (%s), which is '
+-                    'not allowed' % (local_include, full_path), context)
+             include_obj = LocalInclude(context, local_include)
+             local_includes.append(include_obj.path.full_path)
+             yield include_obj
diff --git a/srcpkgs/mozjs78/patches/002-fix-soname.patch b/srcpkgs/mozjs78/patches/002-fix-soname.patch
new file mode 100644
index 00000000000..cc543109398
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/002-fix-soname.patch
@@ -0,0 +1,22 @@
+"Carried over from mozjs68"
+--- a/js/src/build/Makefile.in
++++ b/js/src/build/Makefile.in
+@@ -78,6 +78,8 @@
+ endif
+ ifneq (,$(SHARED_LIBRARY))
+ 	$(SYSINSTALL) $(SHARED_LIBRARY) $(DESTDIR)$(libdir)
++	mv -f $(DESTDIR)$(libdir)/$(SHARED_LIBRARY) $(DESTDIR)$(libdir)/$(SHARED_LIBRARY).0
++	ln -s $(SHARED_LIBRARY).0 $(DESTDIR)$(libdir)/$(SHARED_LIBRARY)
+ ifeq ($(OS_ARCH),Darwin)
+ 	install_name_tool -id $(abspath $(libdir)/$(SHARED_LIBRARY)) $(DESTDIR)$(libdir)/$(SHARED_LIBRARY)
+ endif
+--- a/js/src/build/moz.build
++++ b/js/src/build/moz.build
+@@ -25,6 +25,7 @@
+ if CONFIG['JS_SHARED_LIBRARY']:
+     GeckoSharedLibrary('js', linkage=None)
+     SHARED_LIBRARY_NAME = CONFIG['JS_LIBRARY_NAME']
++    LDFLAGS += ['-Wl,-soname,lib{}.so.0'.format(SHARED_LIBRARY_NAME)]
+ 
+     # Ensure symbol versions of shared library on Linux do not conflict
+     # with those in libxul.
diff --git a/srcpkgs/mozjs78/patches/003-fix-wasm-arm.patch b/srcpkgs/mozjs78/patches/003-fix-wasm-arm.patch
new file mode 100644
index 00000000000..891a7652056
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/003-fix-wasm-arm.patch
@@ -0,0 +1,16 @@
+"Taken from firefox-esr"
+--- a/js/src/wasm/WasmSignalHandlers.cpp
++++ b/js/src/wasm/WasmSignalHandlers.cpp
+@@ -243,9 +243,9 @@
+ // If you run into compile problems on a tier-3 platform, you can disable the
+ // emulation here.
+ 
+-#if defined(__linux__) && defined(__arm__)
+-#  define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
+-#endif
++// #if defined(__linux__) && defined(__arm__)
++// #  define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
++// #endif
+ 
+ #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
+ #  include <sys/user.h>
diff --git a/srcpkgs/mozjs78/patches/004-fix-musl-build.patch b/srcpkgs/mozjs78/patches/004-fix-musl-build.patch
new file mode 100644
index 00000000000..f629fa2ac35
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/004-fix-musl-build.patch
@@ -0,0 +1,17 @@
+"Carried over from mozjs60"
+Upstream: No
+Reason: mozjs68 miscompiles on musl if built with HAVE_THREAD_TLS_KEYWORD:
+https://github.com/void-linux/void-packages/issues/2598
+diff --git a/js/src/old-configure.in b/js/src/old-configure.in
+--- a/js/src/old-configure.in
++++ b/js/src/old-configure.in
+@@ -1272,6 +1272,9 @@
+     *-android*|*-linuxandroid*)
+       :
+       ;;
++    *-musl*)
++      :
++      ;;
+     *)
+       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
+       ;;
diff --git a/srcpkgs/mozjs78/patches/005-spidermonkey-checks-disable.patch b/srcpkgs/mozjs78/patches/005-spidermonkey-checks-disable.patch
new file mode 100644
index 00000000000..f6eababd1f2
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/005-spidermonkey-checks-disable.patch
@@ -0,0 +1,12 @@
+Source:Fedora
+Reason: Checks failed(Todo: Figure out why)
++++ a/config/run_spidermonkey_checks.py
++++ b/config/run_spidermonkey_checks.py
+@@ -11,5 +11,5 @@
+     for script in scripts:
+         retcode = subprocess.call(
+             [sys.executable, script], cwd=buildconfig.topsrcdir)
+-        if retcode != 0:
+-            raise Exception(script + " failed")
++        #if retcode != 0:
++        #    raise Exception(script + " failed")
diff --git a/srcpkgs/mozjs78/patches/006-mozjs78.pc-honor-sysroot.patch b/srcpkgs/mozjs78/patches/006-mozjs78.pc-honor-sysroot.patch
new file mode 100644
index 00000000000..71214b8eccf
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/006-mozjs78.pc-honor-sysroot.patch
@@ -0,0 +1,10 @@
+"Carried over from mozjs60"
+Reason: Fix the '-include' directive, otherwise it tries to use the host's header
+--- a/js/src/build/js.pc.in
++++ b/js/src/build/js.pc.in
+@@ -11,4 +11,4 @@
+ # Use -isystem for includes rather than -I, to mark them as "system headers"
+ # that don't generate warning diagnostics. For justification, see
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1539036
+-Cflags: -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -isystem ${includedir}/@JS_LIBRARY_NAME@
++Cflags: -include ${pc_sysrootdir}${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -isystem ${includedir}/@JS_LIBRARY_NAME@
diff --git a/srcpkgs/mozjs78/patches/007-fix-mips-sgidefs_h.patch b/srcpkgs/mozjs78/patches/007-fix-mips-sgidefs_h.patch
new file mode 100644
index 00000000000..abb140233a0
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/007-fix-mips-sgidefs_h.patch
@@ -0,0 +1,11 @@
+--- a/mfbt/RandomNum.cpp	2020-04-29 23:49:40.000000000 +0200
++++ b/mfbt/RandomNum.cpp	2020-08-04 19:29:36.127471301 +0200
+@@ -52,7 +52,7 @@
+ #  elif defined(__s390__)
+ #    define GETRANDOM_NR 349
+ #  elif defined(__mips__)
+-#    include <sgidefs.h>
++#    include <asm/sgidefs.h>
+ #    if _MIPS_SIM == _MIPS_SIM_ABI32
+ #      define GETRANDOM_NR 4353
+ #    elif _MIPS_SIM == _MIPS_SIM_ABI64
diff --git a/srcpkgs/mozjs78/patches/coverage-api.patch b/srcpkgs/mozjs78/patches/coverage-api.patch
new file mode 100644
index 00000000000..53e947561cf
--- /dev/null
+++ b/srcpkgs/mozjs78/patches/coverage-api.patch
@@ -0,0 +1,107 @@
+From e5a2eb99f653ae03c67e536df1d55d265a0a1605 Mon Sep 17 00:00:00 2001
+From: Evan Welsh <contact@evanwelsh.com>
+Date: Mon, 10 Aug 2020 13:17:36 -0500
+Subject: [PATCH] Bug 1654696 - Implement code coverage JSAPI.
+ r=nbp,ptomato,jwalden
+
+---
+ js/public/experimental/CodeCoverage.h | 25 +++++++++++++++++++++++++
+ js/src/jsfriendapi.cpp                |  3 +++
+ js/src/moz.build                      |  1 +
+ js/src/shell/js.cpp                   | 11 ++++++-----
+ 4 files changed, 35 insertions(+), 5 deletions(-)
+ create mode 100644 js/public/experimental/CodeCoverage.h
+
+diff --git a/js/public/experimental/CodeCoverage.h b/js/public/experimental/CodeCoverage.h
+new file mode 100644
+index 000000000..06cc0c9ca
+--- /dev/null
++++ b/js/public/experimental/CodeCoverage.h
+@@ -0,0 +1,25 @@
++/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++ * vim: set ts=8 sts=2 et sw=2 tw=80:
++ * This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++#ifndef js_experimental_CodeCoverage_h
++#define js_experimental_CodeCoverage_h
++
++#include "jstypes.h"     // JS_FRIEND_API
++
++struct JS_PUBLIC_API JSContext;
++
++namespace js {
++
++/**
++ * Enable the collection of lcov code coverage metrics.
++ * Must be called before a runtime is created and before any calls to
++ * GetCodeCoverageSummary.
++ */
++extern JS_FRIEND_API void EnableCodeCoverage();
++
++}  // namespace js
++
++#endif  // js_experimental_CodeCoverage_h
+diff --git a/js/src/jsfriendapi.cpp b/js/src/jsfriendapi.cpp
+index af7a03bd4..5f20c6576 100644
+--- a/js/src/jsfriendapi.cpp
++++ b/js/src/jsfriendapi.cpp
+@@ -20,6 +20,7 @@
+ #include "gc/PublicIterators.h"
+ #include "gc/WeakMap.h"
+ #include "js/CharacterEncoding.h"
++#include "js/experimental/CodeCoverage.h"  // js::EnableCodeCoverage
+ #include "js/Printf.h"
+ #include "js/Proxy.h"
+ #include "js/Wrapper.h"
+@@ -1465,6 +1466,8 @@ JS_FRIEND_API void js::EnableAccessValidation(JSContext* cx, bool enabled) {
+   cx->enableAccessValidation = enabled;
+ }
+ 
++JS_FRIEND_API void js::EnableCodeCoverage() { js::coverage::EnableLCov(); }
++
+ JS_FRIEND_API void js::SetRealmValidAccessPtr(JSContext* cx,
+                                               JS::HandleObject global,
+                                               bool* accessp) {
+diff --git a/js/src/moz.build b/js/src/moz.build
+index deb15d83a..b4e9e2b02 100755
+--- a/js/src/moz.build
++++ b/js/src/moz.build
+@@ -210,6 +210,7 @@ EXPORTS.js += [
+ ]
+ 
+ EXPORTS.js.experimental += [
++    '../public/experimental/CodeCoverage.h',
+     '../public/experimental/SourceHook.h',
+ ]
+ 
+diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp
+index 4b3f545e6..252dd24f0 100644
+--- a/js/src/shell/js.cpp
++++ b/js/src/shell/js.cpp
+@@ -104,10 +104,11 @@
+ #include "js/CompileOptions.h"
+ #include "js/ContextOptions.h"  // JS::ContextOptions{,Ref}
+ #include "js/Debug.h"
+-#include "js/Equality.h"                 // JS::SameValue
+-#include "js/ErrorReport.h"              // JS::PrintError
+-#include "js/Exception.h"                // JS::StealPendingExceptionStack
+-#include "js/experimental/SourceHook.h"  // js::{Set,Forget,}SourceHook
++#include "js/Equality.h"                   // JS::SameValue
++#include "js/ErrorReport.h"                // JS::PrintError
++#include "js/Exception.h"                  // JS::StealPendingExceptionStack
++#include "js/experimental/CodeCoverage.h"  // js::EnableCodeCoverage
++#include "js/experimental/SourceHook.h"    // js::{Set,Forget,}SourceHook
+ #include "js/GCVector.h"
+ #include "js/Initialization.h"
+ #include "js/JSON.h"
+@@ -11416,7 +11417,7 @@ int main(int argc, char** argv, char** envp) {
+ 
+   enableCodeCoverage = op.getBoolOption("code-coverage");
+   if (enableCodeCoverage) {
+-    coverage::EnableLCov();
++    js::EnableCodeCoverage();
+   }
+ 
+ #ifdef JS_WITHOUT_NSPR
diff --git a/srcpkgs/mozjs78/template b/srcpkgs/mozjs78/template
new file mode 100644
index 00000000000..5aaf07bd7dc
--- /dev/null
+++ b/srcpkgs/mozjs78/template
@@ -0,0 +1,73 @@
+# Template file for 'mozjs78'
+pkgname=mozjs78
+version=78.1.0
+revision=1
+wrksrc="firefox-${version}"
+build_wrksrc=js/src
+build_style=gnu-configure
+hostmakedepends="perl python pkg-config automake autoconf213 autoconf-archive
+ cargo rust llvm clang which python3"
+makedepends="icu-devel libffi-devel nspr-devel python-devel readline-devel
+ zlib-devel python3-devel rust-std"
+depends="nspr>=4.19"
+short_desc="Mozilla JavaScript interpreter and library (78.x series)"
+maintainer="q66 <daniel@octaforge.org>"
+license="MPL-2.0"
+homepage="https://www.mozilla.org/js/"
+distfiles="${MOZILLA_SITE}/firefox/releases/${version}esr/source/firefox-${version}esr.source.tar.xz"
+checksum=3600a396d9312c5e9f637b267926ca4771d84a56b26b960cc7d72e98683b64a2
+patch_args="-Np1"
+
+CXXFLAGS+=" -Wno-class-memaccess"
+LDFLAGS+=" -Wl,-z,stack-size=1048576"
+
+if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
+	makedepends+=" libatomic-devel"
+	LDFLAGS+=" -latomic"
+fi
+
+do_configure() {
+	local _args
+	# use gcc as assembler to avoid errors
+	unset AS
+
+	if [ "$CROSS_BUILD" ]; then
+		export HOST_CC=cc
+		export TARGET_CC="${CC}"
+		export HOST_CFLAGS="-Os"
+		export HOST_CXXFLAGS="-Os"
+		_args+=" --target=$XBPS_CROSS_TRIPLET --enable-linker=bfd"
+	fi
+
+	autoconf-2.13 old-configure.in > old-configure
+
+	touch ${wrksrc}/js/src/configure
+	touch ${wrksrc}/js/src/old-configure
+	SHELL=/bin/bash PYTHON=/usr/bin/python2 ./configure --prefix=/usr \
+		--disable-jemalloc --disable-optimize --enable-ctypes \
+		--enable-readline --enable-shared-js --enable-system-ffi \
+		--enable-tests --with-intl-api --with-system-icu --with-system-nspr \
+		--enable-hardening --enable-release --with-system-zlib \
+		--target=${XBPS_TRIPLET} --host=${XBPS_TRIPLET} \
+		${_args}
+}
+
+do_check() {
+	dist/bin/jsapi-tests --format=none --exclude-random basic
+}
+
+post_install() {
+	# Remove unneeded static library
+	rm -f "${DESTDIR}"/usr/lib/*.ajs
+}
+
+mozjs78-devel_package() {
+	depends="nspr-devel ${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/bin/js78-config
+		vmove usr/include
+		vmove "usr/lib/*.so"
+		vmove usr/lib/pkgconfig
+	}
+}
diff --git a/srcpkgs/mozjs78/update b/srcpkgs/mozjs78/update
new file mode 100644
index 00000000000..1947e19217f
--- /dev/null
+++ b/srcpkgs/mozjs78/update
@@ -0,0 +1 @@
+pkgname='mozjs'

From 9c950c1dea198a1872456465d0369fef77880637 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:54:16 +0200
Subject: [PATCH 002/104] yelp-xsl: update to 3.38.0

---
 srcpkgs/yelp-xsl/template | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/yelp-xsl/template b/srcpkgs/yelp-xsl/template
index f74a7fba67c..260792b5bf5 100644
--- a/srcpkgs/yelp-xsl/template
+++ b/srcpkgs/yelp-xsl/template
@@ -1,8 +1,7 @@
 # Template file for 'yelp-xsl'
 pkgname=yelp-xsl
-version=3.36.0
+version=3.38.0
 revision=1
-archs=noarch
 build_style=gnu-configure
 hostmakedepends="pkg-config intltool itstool libxslt"
 makedepends="libxslt-devel"
@@ -11,4 +10,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Yelp/Xsl"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=4fe51c0233b79a4c204c68498d45f09b342c30ed02c4e418506c0e35f0904ec3
+checksum=13bcc2011c4c55384174d18c7b2f0015a96b04efd24f3f646af2e7167e7ab0d7

From b15123d05713b32a7052d04ca783ec7d93b866b9 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:55:08 +0200
Subject: [PATCH 003/104] yelp-tools: update to 3.38.0

---
 srcpkgs/yelp-tools/template | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/yelp-tools/template b/srcpkgs/yelp-tools/template
index 9e8a670e6b0..350610e3397 100644
--- a/srcpkgs/yelp-tools/template
+++ b/srcpkgs/yelp-tools/template
@@ -1,8 +1,7 @@
 # Template file for 'yelp-tools'
 pkgname=yelp-tools
-version=3.32.2
+version=3.38.0
 revision=1
-archs=noarch
 build_style=gnu-configure
 hostmakedepends="pkg-config itstool libxslt"
 makedepends="yelp-xsl"
@@ -12,4 +11,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="http://www.gnome.org"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=183856b5ed0b0bb2c05dd1204af023946ed436943e35e789afb0295e5e71e8f9
+checksum=607ce4b3ee8517c42db924a01a78660a03317595c75825731ea86a920e2b04b0

From b78e6259d5499a60950aaa5e5cbddc8959cdfe4b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:53:04 +0200
Subject: [PATCH 004/104] yelp: update to 3.38.0

---
 srcpkgs/yelp/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/yelp/template b/srcpkgs/yelp/template
index 63ca7c225c8..d141d80d436 100644
--- a/srcpkgs/yelp/template
+++ b/srcpkgs/yelp/template
@@ -1,6 +1,6 @@
 # Template file for 'yelp'
 pkgname=yelp
-version=3.36.0
+version=3.38.0
 revision=1
 build_style=gnu-configure
 configure_args="--disable-schemas-compile --disable-static"
@@ -13,7 +13,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Yelp"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=fd4b3e23d31ad2bebe42ac8f80242b2d9bef51418bf62b59acdf2440bd94ed24
+checksum=d7cdce0e6dba513b4df109c1fa7effcbf08bb3f4d00d9e792c7edf34544f9658
 
 yelp-devel_package() {
 	depends="yelp-${version}_${revision}"

From f0d3992a0377ff7a43eb0213c68da013a67d2421 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:29:21 +0200
Subject: [PATCH 005/104] vala: update to 0.50.0

---
 common/shlibs         |  2 +-
 srcpkgs/vala/template | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 8d362e18496..78a4d888c01 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3157,7 +3157,7 @@ libsysprof-3.so sysprof-3.34.0_1
 libsysprof-ui-3.so sysprof-3.34.0_1
 libmozjs-52.so mozjs52-52.3.0_1
 libmozjs-52.so.0 mozjs52-52.3.0_1
-libvala-0.48.so.0 libvala-0.48.0_1
+libvala-0.50.so.0 libvala-0.50.0_1
 libvaladoc-0.48.so.0 libvaladoc-0.48.0_1
 libvalaccodegen.so libvala-0.44.0_1
 libphodav-2.0.so.0 phodav-2.2_1
diff --git a/srcpkgs/vala/template b/srcpkgs/vala/template
index e958825f196..6310bf43ccf 100644
--- a/srcpkgs/vala/template
+++ b/srcpkgs/vala/template
@@ -1,7 +1,7 @@
 # Template file for 'vala'
 pkgname=vala
 # Should be kept in sync with 'valadoc' (shared distfiles)
-version=0.48.9
+version=0.50.0
 revision=1
 build_style=gnu-configure
 configure_args="--disable-valadoc"
@@ -12,9 +12,9 @@ short_desc="Compiler for the GObject type system"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/Vala"
-changelog="https://gitlab.gnome.org/GNOME/vala/raw/0.48/NEWS"
+changelog="https://gitlab.gnome.org/GNOME/vala/raw/0.50/NEWS"
 distfiles="${GNOME_SITE}/vala/${version%.*}/vala-${version}.tar.xz"
-checksum=9cea16d3bb3daddbfe0556b99fbfa08146230db7651e1e674cd08b4df5cefea9
+checksum=838adc50ac08881e06cf233fefd93740dec1530312cc1cf12c36d4e0e87d3071
 shlib_provides="libvalaccodegen.so"
 
 post_install() {
@@ -22,8 +22,8 @@ post_install() {
 	# so the package that use it fall into our wrapper.
 	# keep the binary versioned, we don't know the potential
 	# fallout from using the unversioned one
-	vsed -e 's|^vapigen=.*|vapigen=vapigen-0.48|g' \
-		 -i ${DESTDIR}/usr/lib/pkgconfig/vapigen-0.48.pc
+	vsed -e 's|^vapigen=.*|vapigen=vapigen-0.50|g' \
+		 -i ${DESTDIR}/usr/lib/pkgconfig/vapigen-0.50.pc
 }
 
 libvala_package() {

From ade8da51a00ed3306bae929a95f6fb9c00d9b5e3 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:30:32 +0200
Subject: [PATCH 006/104] valadoc: update to 0.50.0

---
 common/shlibs            | 2 +-
 srcpkgs/valadoc/template | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 78a4d888c01..c01cf8bdb81 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3158,7 +3158,7 @@ libsysprof-ui-3.so sysprof-3.34.0_1
 libmozjs-52.so mozjs52-52.3.0_1
 libmozjs-52.so.0 mozjs52-52.3.0_1
 libvala-0.50.so.0 libvala-0.50.0_1
-libvaladoc-0.48.so.0 libvaladoc-0.48.0_1
+libvaladoc-0.50.so.0 libvaladoc-0.50.0_1
 libvalaccodegen.so libvala-0.44.0_1
 libphodav-2.0.so.0 phodav-2.2_1
 libgfshare.so.2 libgfshare-2.0.0_1
diff --git a/srcpkgs/valadoc/template b/srcpkgs/valadoc/template
index 24ca0283655..ce5a1d7a54f 100644
--- a/srcpkgs/valadoc/template
+++ b/srcpkgs/valadoc/template
@@ -1,7 +1,7 @@
 # Template file for 'valadoc'
 pkgname=valadoc
 # Should be kept in sync with 'vala' (shared distfiles)
-version=0.48.9
+version=0.50.0
 revision=1
 wrksrc="vala-${version}"
 build_style=gnu-configure
@@ -13,9 +13,9 @@ short_desc="Vala Documentation Tool"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/Vala"
-changelog="https://gitlab.gnome.org/GNOME/vala/raw/0.42/NEWS"
+changelog="https://gitlab.gnome.org/GNOME/vala/raw/0.50/NEWS"
 distfiles="${GNOME_SITE}/vala/${version%.*}/vala-${version}.tar.xz"
-checksum=9cea16d3bb3daddbfe0556b99fbfa08146230db7651e1e674cd08b4df5cefea9
+checksum=838adc50ac08881e06cf233fefd93740dec1530312cc1cf12c36d4e0e87d3071
 
 pre_configure() {
 	autoreconf -if

From 74b19e73027e6ac73c6b381c7755a79e19e503dc Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:32:13 +0200
Subject: [PATCH 007/104] valabind: rebuild for vala-0.50

---
 srcpkgs/valabind/patches/vala-050.patch | 25 +++++++++++++++++++++++++
 srcpkgs/valabind/template               |  2 +-
 2 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/valabind/patches/vala-050.patch

diff --git a/srcpkgs/valabind/patches/vala-050.patch b/srcpkgs/valabind/patches/vala-050.patch
new file mode 100644
index 00000000000..bd7c6a74345
--- /dev/null
+++ b/srcpkgs/valabind/patches/vala-050.patch
@@ -0,0 +1,25 @@
+From f942315402e3fc38def14a974dd5b210e5d2c38d Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Wed, 16 Sep 2020 20:39:29 +0200
+Subject: [PATCH] fix with vala-0.50
+
+---
+ valabindwriter.vala | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git valabindwriter.vala valabindwriter.vala
+index 165cdf5..c793c9f 100644
+--- valabindwriter.vala
++++ valabindwriter.vala
+@@ -33,7 +33,7 @@ public class ValabindWriter : CodeVisitor {
+ 		if (glibmode)
+ 			context.add_define ("GOBJECT");
+ 		// required to avoid ugly runtime errors
+-		context.profile = Profile.GOBJECT;
++		context.set_target_profile(Profile.GOBJECT);
+ 	}
+ 
+ 	public void parse () {
+-- 
+2.28.0
+
diff --git a/srcpkgs/valabind/template b/srcpkgs/valabind/template
index f6f931c3033..2bf0df336e3 100644
--- a/srcpkgs/valabind/template
+++ b/srcpkgs/valabind/template
@@ -1,7 +1,7 @@
 # Template file for 'valabind'
 pkgname=valabind
 version=1.7.1
-revision=5
+revision=6
 build_style=meson
 hostmakedepends="pkg-config vala-devel git"
 makedepends="vala-devel glib-devel"

From f347c5612248101c48bddb9d6b1cef8d50b597b8 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 008/104] devhelp: update to 3.38.0

---
 srcpkgs/devhelp/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/devhelp/template b/srcpkgs/devhelp/template
index a1c2dcbb762..86b3776adfd 100644
--- a/srcpkgs/devhelp/template
+++ b/srcpkgs/devhelp/template
@@ -1,6 +1,6 @@
 # Template file for 'devhelp'
 pkgname=devhelp
-version=3.36.1
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
@@ -11,7 +11,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Devhelp"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=4cf8ec9302bc4a79e01ac53bd9c8b95a596f71f35351f48b63263227f09a8a3d
+checksum=918efb173122b26d45fa51c194a0b659e63fee7705f6722db2534fabc3452369
 
 devhelp-devel_package() {
 	short_desc+=" - development files"

From 5fca1bbce5e61e418e11e24d3b8164773d95c591 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Mon, 14 Sep 2020 20:22:43 +0700
Subject: [PATCH 009/104] gdl: update to 3.34.0.

---
 srcpkgs/gdl/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gdl/template b/srcpkgs/gdl/template
index d5b180bd43b..35bee803f96 100644
--- a/srcpkgs/gdl/template
+++ b/srcpkgs/gdl/template
@@ -1,7 +1,7 @@
 # Template file for 'gdl'
 pkgname=gdl
-version=3.28.0
-revision=3
+version=3.34.0
+revision=1
 build_style=gnu-configure
 build_helper="gir"
 configure_args="$(vopt_enable gir introspection)"
@@ -12,7 +12,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later, LGPL-2.0-or-later"
 homepage="https://developer.gnome.org/gdl/"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=52cc98ecc105148467b3b2b4e0d27ae484b1b6710d53413f771ed07ef1b737b6
+checksum=858b30f0cdce4c4cb3e8365a7d54ce57c388beff38ea583be5449bc78dda8d02
 
 # Package build options
 build_options="gir"

From 186a512596214e83345aef2d03c3f6b485ca646f Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 21:16:45 +0200
Subject: [PATCH 010/104] libsoup: update to 2.72.0

---
 srcpkgs/libsoup/template | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/srcpkgs/libsoup/template b/srcpkgs/libsoup/template
index f7a98373ac8..1ba8f8a5822 100644
--- a/srcpkgs/libsoup/template
+++ b/srcpkgs/libsoup/template
@@ -1,16 +1,16 @@
 # Template file for 'libsoup'
 pkgname=libsoup
-version=2.70.0
+version=2.72.0
 revision=1
 build_style=meson
 build_helper="gir"
-configure_args="-Dgssapi=disabled -Dntlm=disabled
- -Dintrospection=$(vopt_if gir enabled disabled)
- -Dvapi=$(vopt_if vala enabled disabled) -Dtls_check=false"
+configure_args="-Dgssapi=disabled -Dntlm=disabled -Dsysprof=disabled
+ -Dtls_check=false -Dintrospection=$(vopt_if gir enabled disabled)
+ -Dvapi=$(vopt_if gir enabled disabled)"
 hostmakedepends="gettext-devel glib-devel pkg-config gettext
- $(vopt_if vala 'vala')"
+ $(vopt_if gir vala)"
 makedepends="libglib-devel libxml2-devel sqlite-devel libpsl-devel
- brotli-devel $(vopt_if vala 'vala-devel')"
+ brotli-devel $(vopt_if gir vala-devel)"
 depends="glib-networking"
 short_desc="HTTP library implementation in C"
 maintainer="Enno Boland <gottox@voidlinux.org>"
@@ -18,11 +18,16 @@ license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/libsoup"
 changelog="https://raw.githubusercontent.com/GNOME/libsoup/gnome-3-36/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=54b020f74aefa438918d8e53cff62e2b1e59efe2de53e06b19a4b07b1f4d5342
+checksum=170c3f8446b0f65f8e4b93603349172b1085fb8917c181d10962f02bb85f5387
 
 # Package build options
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
+
+# gio tests can't run in chroot
+do_check() {
+	:
+}
 
 libsoup-devel_package() {
 	depends="${makedepends} libsoup>=${version}_${revision}"
@@ -31,8 +36,6 @@ libsoup-devel_package() {
 		vmove usr/lib/pkgconfig/libsoup-2.4.pc
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0/Soup-2.4.gir
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 		vmove usr/include/libsoup-2.4

From 4efe12c4e9f174f329d595a70d7a04940c44c028 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:10:22 +0200
Subject: [PATCH 011/104] grilo: update to 0.3.13, drop vala option

---
 srcpkgs/grilo/template | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/grilo/template b/srcpkgs/grilo/template
index 4a6ab4cabe3..64bae9bd4e2 100644
--- a/srcpkgs/grilo/template
+++ b/srcpkgs/grilo/template
@@ -1,12 +1,12 @@
 # Template file for 'grilo'
 pkgname=grilo
-version=0.3.12
+version=0.3.13
 revision=1
 build_style=meson
 build_helper="gir"
-configure_args="-Denable-introspection=$(vopt_if gir true false)
- -Denable-vala=$(vopt_if gir true false) -Denable-gtk-doc=false"
-hostmakedepends="gettext pkg-config glib-devel $(vopt_if vala vala)"
+configure_args="$(vopt_bool gir enable-introspection) $(vopt_bool gir vala)
+ -Denable-gtk-doc=false"
+hostmakedepends="gettext pkg-config glib-devel $(vopt_if gir vala)"
 makedepends="gtk+3-devel libxml2-devel libsoup-devel liboauth-devel
  totem-pl-parser-devel"
 short_desc="Framework focused on making media discovery and browsing easy"
@@ -14,11 +14,11 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="http://live.gnome.org/Grilo"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=dbfbd6082103288592af97568180b9cc81a336a274ed5160412f87675ec11a71
+checksum=d14837f22341943ed8a189d9f0827a17016b802d18d0ed080e1413de0fdc927b
 
 # Package build options
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
 
 grilo-devel_package() {
 	depends="${makedepends} grilo>=${version}_${revision}"
@@ -27,8 +27,6 @@ grilo-devel_package() {
 		vmove usr/include
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 		vmove usr/lib/pkgconfig

From 63eee9cb4a5d00b5c2045037fc6fca29ed3f75ad Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:15:35 +0200
Subject: [PATCH 012/104] grilo-plugins: update to 0.3.12

---
 srcpkgs/grilo-plugins/template | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/grilo-plugins/template b/srcpkgs/grilo-plugins/template
index 8bf651366da..55bccf1ffb7 100644
--- a/srcpkgs/grilo-plugins/template
+++ b/srcpkgs/grilo-plugins/template
@@ -1,10 +1,9 @@
 # Template file for 'grilo-plugins'
 pkgname=grilo-plugins
-version=0.3.11
+version=0.3.12
 revision=1
 build_style=meson
-hostmakedepends="pkg-config intltool itstool glib-devel gperf
-	gnome-doc-utils"
+hostmakedepends="pkg-config intltool itstool glib-devel gperf gnome-doc-utils"
 # XXX missing plugins: fakemetadata.
 makedepends="grilo-devel gom-devel gupnp-av-devel json-glib-devel
  libquvi-devel rest-devel sqlite-devel libgcrypt-devel gmime-devel
@@ -16,4 +15,9 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="http://live.gnome.org/Grilo"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=dde2e605b1994341c6bf012493e056b406b08571834dea3b3c671d5b8b1dcd73
+checksum=c6b6df086a164d65c206d70139ce80591f8feca3545612e45b823fb4fe4b2577
+
+# feel free to fix
+do_check() {
+	:
+}

From a958d5cafd74caa1fbf4af95eabf44082b388fe4 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:56:34 +0200
Subject: [PATCH 013/104] gtksourceview4: update to 4.8.0

---
 srcpkgs/gtksourceview4/template | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/srcpkgs/gtksourceview4/template b/srcpkgs/gtksourceview4/template
index 6848716773c..5cfd5ecfbd9 100644
--- a/srcpkgs/gtksourceview4/template
+++ b/srcpkgs/gtksourceview4/template
@@ -1,32 +1,37 @@
 # Template file for 'gtksourceview4'
 pkgname=gtksourceview4
-version=4.2.0
-revision=2
+version=4.8.0
+revision=1
 wrksrc="gtksourceview-${version}"
-build_style=gnu-configure
+build_style=meson
 build_helper="gir"
-configure_args="--enable-glade-catalog $(vopt_enable gir introspection)
- $(vopt_enable vala) $(vopt_enable gtk_doc gtk-doc)"
+configure_args="-Dglade_catalog=true $(vopt_bool gir gir)
+ $(vopt_bool gir vapi) $(vopt_bool gtk_doc gtk_doc)"
 hostmakedepends="gtk+3-devel glib-devel itstool libxslt pkg-config
- $(vopt_if vala vala) $(vopt_if gtk_doc gtk-doc)"
+ $(vopt_if gir vala) $(vopt_if gtk_doc gtk-doc)"
 makedepends="glade3-devel gtk+3-devel libglib-devel libxml2-devel
- $(vopt_if vala vala)"
+ $(vopt_if gir vala)"
 short_desc="Text widget that extends GTK+ GtkTextView widget"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/GtkSourceView"
 distfiles="${GNOME_SITE}/gtksourceview/${version%.*}/gtksourceview-${version}.tar.xz"
-checksum=c431eb234dc83c7819e58f77dd2af973252c7750da1c9d125ddc94268f94f675
+checksum=00a19121500cedf1bae97f35af865d839841fd785d9facf188498e13975b4e1a
 
 # Package build options
-build_options="gir vala gtk_doc"
+build_options="gir gtk_doc"
 desc_option_gtk_doc="Build API docs via gtk-doc"
-build_options_default="gir vala"
+build_options_default="gir"
 
 if [ -z "$CROSS_BUILD" ]; then
 	build_options_default+=" gtk_doc"
 fi
 
+# Needs X
+do_check() {
+	:
+}
+
 gtksourceview4-devel_package() {
 	depends="gtk+3-devel libglib-devel libxml2-devel ${sourcepkg}>=${version}_${revision}"
 	short_desc+=" - development files"
@@ -36,11 +41,9 @@ gtksourceview4-devel_package() {
 		vmove "usr/lib/*.so"
 		vmove usr/share/glade
 		vmove usr/share/gtk-doc
-		if [ "$build_option_vala" ]; then
-			vmove usr/share/vala
-		fi
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0
+			vmove usr/share/vala
 		fi
 	}
 }

From 1b90c81b1df12306fe58e02ba6e778507f772f4d Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sat, 15 Aug 2020 00:12:16 +0200
Subject: [PATCH 014/104] tepl: update to 5.0.0

---
 common/shlibs                     |  2 +-
 srcpkgs/tepl/patches/no-gir.patch | 45 +++++++++++++++++++++++++++++++
 srcpkgs/tepl/template             | 10 +++----
 3 files changed, 51 insertions(+), 6 deletions(-)
 create mode 100644 srcpkgs/tepl/patches/no-gir.patch

diff --git a/common/shlibs b/common/shlibs
index c01cf8bdb81..322bef421ec 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3554,7 +3554,7 @@ libwx_gtk3u_media-3.0.so.0 wxWidgets-gtk3-3.0.4_1
 libwx_gtk3u_ribbon-3.0.so.0 wxWidgets-gtk3-3.0.4_1
 libwx_gtk3u_gl-3.0.so.0 wxWidgets-gtk3-3.0.4_1
 libwx_gtk3u_stc-3.0.so.0 wxWidgets-gtk3-3.0.4_1
-libtepl-4.so.0 tepl-4.2.0_1
+libtepl-5.so.0 tepl-4.2.0_1
 libnomacsCore.so.3 nomacs-3.10.2_4
 libaudit.so.1 libaudit-2.8.4_1
 libauparse.so.0 libauparse-2.8.4_1
diff --git a/srcpkgs/tepl/patches/no-gir.patch b/srcpkgs/tepl/patches/no-gir.patch
new file mode 100644
index 00000000000..e340027b7f1
--- /dev/null
+++ b/srcpkgs/tepl/patches/no-gir.patch
@@ -0,0 +1,45 @@
+From 17e57ed156450fe59001cb0a14f8d87c40d6bf77 Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Sat, 15 Aug 2020 00:09:15 +0200
+Subject: [PATCH] Allow disabling gir
+
+---
+ meson_options.txt | 5 +++++
+ tepl/meson.build  | 4 ++++
+ 2 files changed, 9 insertions(+)
+
+diff --git meson_options.txt meson_options.txt
+index cad97dd..5e99084 100644
+--- meson_options.txt
++++ meson_options.txt
+@@ -3,3 +3,8 @@ option(
+   type: 'boolean', value: false,
+   description: 'Build API reference (requires gtk-doc)'
+ )
++option(
++  'gir',
++  type: 'boolean', value: true,
++  description: 'Build gobject-introspection'
++)
+diff --git tepl/meson.build tepl/meson.build
+index 226d913..b35dd3a 100644
+--- tepl/meson.build
++++ tepl/meson.build
+@@ -164,6 +164,8 @@ PKG_CONFIG.generate(tepl_lib,
+   libraries: TEPL_PUBLIC_DEPS,
+ )
+ 
++if get_option('gir')
++
+ GNOME.generate_gir(
+   tepl_lib,
+   export_packages: 'tepl-@0@'.format(TEPL_API_VERSION),
+@@ -182,3 +184,5 @@ GNOME.generate_gir(
+   # Support for deps being built as subprojects:
+   dependencies: TEPL_DEPS,
+ )
++
++endif
+-- 
+2.28.0
+
diff --git a/srcpkgs/tepl/template b/srcpkgs/tepl/template
index f4d371d603d..798d5cd0077 100644
--- a/srcpkgs/tepl/template
+++ b/srcpkgs/tepl/template
@@ -1,10 +1,10 @@
 # Template file for 'tepl'
 pkgname=tepl
-version=4.4.0
+version=5.0.0
 revision=1
-build_style=gnu-configure
-build_helper="gir"
-configure_args="$(vopt_enable gir introspection)"
+build_style=meson
+build_helper=gir
+configure_args="$(vopt_bool gir gir)"
 hostmakedepends="glib-devel pkg-config"
 makedepends="amtk-devel libglib-devel gtksourceview4-devel gtk+3-devel
  libxml2-devel uchardet-devel"
@@ -13,7 +13,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Projects/Tepl"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=e6f6673a8a27e8f280725db8fbacec79b20676ae0558755239d15a9808faa256
+checksum=c6bd2904f53048b7d0149236610b38f502f2634d395d8b9b3c659553f4045a74
 
 build_options="gir"
 build_options_default="gir"

From 05a27d5aea206bc60ac6a705778640523cb60e03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Mon, 14 Sep 2020 20:27:22 +0700
Subject: [PATCH 015/104] glade3: update to 3.38.0.

---
 common/shlibs                                 |  2 +-
 srcpkgs/glade3/patches/autogen-autoconf.patch | 98 -------------------
 .../patches/configure-shell-quote.patch       | 11 ---
 srcpkgs/glade3/patches/cross.patch            | 40 --------
 srcpkgs/glade3/template                       | 17 ++--
 5 files changed, 7 insertions(+), 161 deletions(-)
 delete mode 100644 srcpkgs/glade3/patches/autogen-autoconf.patch
 delete mode 100644 srcpkgs/glade3/patches/configure-shell-quote.patch
 delete mode 100644 srcpkgs/glade3/patches/cross.patch

diff --git a/common/shlibs b/common/shlibs
index 322bef421ec..db1646f18e0 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -770,7 +770,7 @@ liborc-test-0.4.so.0 orc-0.4.11_1
 libgmime-2.6.so.0 gmime-2.6.4_1
 libtotem-plparser.so.18 totem-pl-parser-3.26.1_1
 libtotem-plparser-mini.so.18 libtotem-plparser-mini-3.26.1_1
-libgladeui-2.so.6 libgladeui3-3.10.0_1
+libgladeui-2.so.13 libgladeui3-3.38.0_1
 libtdb.so.1 libtdb-1.2.2_1
 libgssdp-1.2.so.0 gssdp-1.2.0_1
 libgupnp-1.2.so.0 gupnp-1.2.0_1
diff --git a/srcpkgs/glade3/patches/autogen-autoconf.patch b/srcpkgs/glade3/patches/autogen-autoconf.patch
deleted file mode 100644
index f1dfc342b47..00000000000
--- a/srcpkgs/glade3/patches/autogen-autoconf.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 8341cf78bc6879cb2d50e12b5886ee7dca3d09f2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Javier=20Jard=C3=B3n?= <jjardon@gnome.org>
-Date: Sat, 9 Feb 2019 13:15:17 +0000
-Subject: [PATCH] Use autoreconf instead deprecated gnome-common
-
-See https://wiki.gnome.org/Projects/GnomeCommon/Migration
----
- autogen.sh   | 47 +++++++++++++++++++++++++++++++++--------------
- configure.ac |  6 ++----
- 2 files changed, 35 insertions(+), 18 deletions(-)
-
-diff --git autogen.sh autogen.sh
-index 1d8cd840..fd35663b 100755
---- autogen.sh
-+++ autogen.sh
-@@ -1,22 +1,41 @@
- #!/bin/sh
- # Run this to generate all the initial makefiles, etc.
-+test -n "$srcdir" || srcdir=$(dirname "$0")
-+test -n "$srcdir" || srcdir=.
- 
--srcdir=`dirname $0`
--test -z "$srcdir" && srcdir=.
-+olddir=$(pwd)
- 
--PKG_NAME="glade"
-+cd $srcdir
- 
--(test -f $srcdir/configure.ac \
--  && test -f $srcdir/autogen.sh) || {
--    echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
--    echo " top-level $PKG_NAME directory"
--    exit 1
-+(test -f configure.ac) || {
-+        echo "*** ERROR: Directory '$srcdir' does not look like the top-level project directory ***"
-+        exit 1
- }
- 
--which gnome-autogen.sh || {
--    echo "You need to install gnome-common module and make"
--    echo "sure the gnome-autogen.sh script is in your \$PATH."
--    exit 1
--}
-+# shellcheck disable=SC2016
-+PKG_NAME=$(autoconf --trace 'AC_INIT:$1' configure.ac)
-+
-+if [ "$#" = 0 -a "x$NOCONFIGURE" = "x" ]; then
-+        echo "*** WARNING: I am going to run 'configure' with no arguments." >&2
-+        echo "*** If you wish to pass any to it, please specify them on the" >&2
-+        echo "*** '$0' command line." >&2
-+        echo "" >&2
-+fi
-+
-+aclocal --install || exit 1
-+gtkdocize --copy || exit 1
-+intltoolize --force --copy --automake || exit 1
-+autoreconf --verbose --force --install || exit 1
-+
-+cd "$olddir"
-+if [ "$NOCONFIGURE" = "" ]; then
-+        $srcdir/configure "$@" || exit 1
- 
--. gnome-autogen.sh
-+        if [ "$1" = "--help" ]; then
-+                exit 0
-+        else
-+                echo "Now type 'make' to compile $PKG_NAME" || exit 1
-+        fi
-+else
-+        echo "Skipping configure process."
-+fi
-diff --git configure.ac configure.ac
-index a3524656..638e7801 100644
---- configure.ac
-+++ configure.ac
-@@ -33,6 +33,8 @@ AM_MAINTAINER_MODE([enable])
- # to make
- AM_SILENT_RULES([yes])
- 
-+AX_CHECK_ENABLE_DEBUG([yes],[GNOME_ENABLE_DEBUG])
-+
- # Checks for programs
- AC_PROG_CC
- AC_PROG_INSTALL
-@@ -79,10 +81,6 @@ AM_CONDITIONAL(GLADE_UNSTABLE, test "x$GLADE_UNSTABLE" = "xyes")
- 
- # ================================================================
- 
--GNOME_DEBUG_CHECK
--GNOME_COMPILE_WARNINGS([maximum])
--GNOME_MAINTAINER_MODE_DEFINES
--
- # For the plugins, we don't use the warning flags defined by GNOME_COMPILE_WARNINGS.
- # These flags include -Wmissing-prototypes, which we prefer not to use.
- if test "x$GCC" = "xyes"; then
--- 
-2.24.1
-
diff --git a/srcpkgs/glade3/patches/configure-shell-quote.patch b/srcpkgs/glade3/patches/configure-shell-quote.patch
deleted file mode 100644
index b3c60ccf365..00000000000
--- a/srcpkgs/glade3/patches/configure-shell-quote.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.ac
-+++ configure.ac
-@@ -279,7 +279,7 @@
- dnl Check for GDK Quartz and MacOSX integration package 
- dnl ================================================================
- _gdk_tgt=`$PKG_CONFIG --variable=targets gdk-3.0`
--AM_CONDITIONAL([GDK_TARGET_QUARTZ], [test x$_gdk_tgt = xquartz])
-+AM_CONDITIONAL([GDK_TARGET_QUARTZ], [test "x$_gdk_tgt" = xquartz])
- if test "x$_gdk_tgt" = xquartz; then 
-    PKG_CHECK_MODULES(GTK_MAC, gtk-mac-integration-gtk3)
- 
diff --git a/srcpkgs/glade3/patches/cross.patch b/srcpkgs/glade3/patches/cross.patch
deleted file mode 100644
index 03b1d7e846e..00000000000
--- a/srcpkgs/glade3/patches/cross.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- m4/python.m4
-+++ m4/python.m4
-@@ -43,17 +43,9 @@
- [AC_REQUIRE([AM_PATH_PYTHON])
- AC_MSG_CHECKING(for headers required to compile python extensions)
- dnl deduce PYTHON_INCLUDES
--am_python_print_includes="\
--from distutils import sysconfig as sc
--incldirs = [[]]
--
--for d in sc.get_config_var('INCLDIRSTOMAKE').split():
--    incldirs.append('-I' + d)
--
--print(' '.join(incldirs))
--"
-+xbps_sysroot=`$CC --print-sysroot`
- if test "x$PYTHON_INCLUDES" == x; then
--  PYTHON_INCLUDES=`$PYTHON -c "$am_python_print_includes"`
-+  PYTHON_INCLUDES=`"$xbps_sysroot/$PYTHON-config" --includes`
- fi
- AC_SUBST(PYTHON_INCLUDES)
- dnl check if the headers exist:
-@@ -74,16 +66,11 @@
- [AC_REQUIRE([AM_CHECK_PYTHON_HEADERS])
- AC_MSG_CHECKING(for libraries required to embed python)
- dnl deduce PYTHON_LIBS
--am_python_print_libs="\
--from distutils import sysconfig as sc
--libs = '-L' + sc.get_config_var('LIBDIR').strip()
--libs += ' ' + sc.get_config_var('BLDLIBRARY')
--print(libs)"
- am_python_print_lib_loc="\
- from distutils import sysconfig as sc
- print(sc.get_config_var('LIBDIR'))"
- if test "x$PYTHON_LIBS" == x; then
--	PYTHON_LIBS=`$PYTHON -c "$am_python_print_libs"`
-+	PYTHON_LIBS=`"$xbps_sysroot/$PYTHON-config" --ldflags --embed`
- fi
- if test "x$PYTHON_LIB_LOC" == x; then
- 	PYTHON_LIB_LOC=`$PYTHON -c "$am_python_print_lib_loc"`
diff --git a/srcpkgs/glade3/template b/srcpkgs/glade3/template
index 910c138df6a..d3d8e0d5dcf 100644
--- a/srcpkgs/glade3/template
+++ b/srcpkgs/glade3/template
@@ -1,32 +1,27 @@
 # Template file for 'glade3'
 pkgname=glade3
-version=3.22.2
+version=3.38.0
 revision=1
 wrksrc="glade-${version}"
-build_style=gnu-configure
+build_style=meson
 build_helper="gir"
-configure_args="--disable-static --enable-debug=info PYTHON=/usr/bin/python3
- --enable-gladeui $(vopt_enable gir introspection)"
+configure_args="-Dgtk_doc=true -Dman=true $(vopt_bool gir introspection)"
 hostmakedepends="glib-devel gnome-doc-utils intltool itstool pkg-config
- automake autoconf-archive libtool yelp-tools gettext-devel gtk-doc"
-makedepends="gtk+3-devel python3-gobject-devel webkit2gtk-devel"
+ gjs-devel yelp-tools gettext-devel gtk-doc"
+makedepends="gtk+3-devel python3-gobject-devel webkit2gtk-devel gjs-devel"
 depends="desktop-file-utils hicolor-icon-theme"
 short_desc="User Interface Designer for GTK+3"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="http://glade.gnome.org/"
 distfiles="${GNOME_SITE}/glade/${version%.*}/glade-${version}.tar.xz"
-checksum=edefa6eb24b4d15bd52589121dc109bc08c286157c41288deb74dd9cc3f26a21
+checksum=4a914c5c0b19c2e52fd4ad15077d406dbfd6ad0245e239d7390bf87f27d9103c
 lib32disabled=yes
 
 # Package build options
 build_options="gir"
 build_options_default="gir"
 
-pre_configure() {
-	NOCONFIGURE=1 ./autogen.sh
-}
-
 do_check() {
 	# Require running xserver
 	:

From 54e20e0107fe882c7fb0b4f5d17704a4bbf15469 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Tue, 15 Sep 2020 05:38:55 +0700
Subject: [PATCH 016/104] libhandy: rebuild for glade3-3.38.0, moved to GNOME

---
 srcpkgs/libhandy/template | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/libhandy/template b/srcpkgs/libhandy/template
index 38672f1fb6e..c19c3897efa 100644
--- a/srcpkgs/libhandy/template
+++ b/srcpkgs/libhandy/template
@@ -1,7 +1,7 @@
 # Template file for 'libhandy'
 pkgname=libhandy
 version=0.0.13
-revision=1
+revision=2
 wrksrc="libhandy-v${version}"
 build_style=meson
 build_helper="gir"
@@ -14,14 +14,20 @@ makedepends="gtk+3-devel libglib-devel $(vopt_if glade glade3-devel)"
 short_desc="Library full of GTK+ widgets for mobile phones"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="LGPL-2.0-or-later"
-homepage="https://source.puri.sm/Librem5/libhandy"
-distfiles="https://source.puri.sm/Librem5/libhandy/-/archive/v${version}/libhandy-v${version}.tar.gz"
-checksum=138bec94e66d15a7a19350b65845d4529bcd969ea913ab3eb438f56fe47d5d37
+homepage="https://gitlab.gnome.org/GNOME/libhandy"
+distfiles="$homepage/-/archive/v${version}/libhandy-v${version}.tar.gz"
+checksum=645355a009f23f254eaec7752b9489c3c2f5832397fcec75433a7e00efbfe52f
 
 build_options="gir vala glade"
 desc_option_glade="Generate glade modules and catalog files"
 build_options_default="gir vala glade"
 
+# https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/559
+CFLAGS="-DGPC_OBJECT_DELIMITER=GLADE_PROPERTY_DEF_OBJECT_DELIMITER"
+CFLAGS+=" -Dglade_widget_action_get_class=glade_widget_action_get_def"
+# https://gitlab.gnome.org/GNOME/glade/-/commit/bb626dd
+CFLAGS+=" -DGWA_GET_CLASS=GLADE_WIDGET_ADAPTOR_GET_ADAPTOR_CLASS"
+
 libhandy-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} gtk+3-devel"
 	short_desc+=" - development files"

From e67d71c0a363b75a47aa4237598df00433907ab0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Mon, 14 Sep 2020 20:34:46 +0700
Subject: [PATCH 017/104] libhandy1: update to 1.0.0

---
 srcpkgs/libhandy1/template | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/libhandy1/template b/srcpkgs/libhandy1/template
index 191e698b0d6..547afccaa11 100644
--- a/srcpkgs/libhandy1/template
+++ b/srcpkgs/libhandy1/template
@@ -1,6 +1,6 @@
 # Template file for 'libhandy1'
 pkgname=libhandy1
-version=0.90.0
+version=1.0.0
 revision=1
 wrksrc="libhandy-${version}"
 build_style=meson
@@ -16,12 +16,15 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="LGPL-2.0-or-later"
 homepage="https://source.puri.sm/Librem5/libhandy"
 distfiles="${GNOME_SITE}/libhandy/${version%.*}/libhandy-${version}.tar.xz"
-checksum=6ab0869a3aa483298ea20ec89d4c14c38ba4de416b33181d21e15a6039df5985
+checksum=a9398582f47b7d729205d6eac0c068fef35aaf249fdd57eea3724f8518d26699
 
 build_options="gir glade"
 desc_option_glade="Generate glade modules and catalog files"
 build_options_default="gir glade"
 
+# https://gitlab.gnome.org/GNOME/glade/-/commit/bb626dd
+CFLAGS="-DGWA_GET_CLASS=GLADE_WIDGET_ADAPTOR_GET_ADAPTOR_CLASS"
+
 libhandy1-devel_package() {
 	depends="${sourcepkg}>=${version}_${revision} gtk+3-devel"
 	conflicts="libhandy-devel>=0"

From 5fe62fa727ced5690e03ff3d2e50629370309a4a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Tue, 15 Sep 2020 05:41:01 +0700
Subject: [PATCH 018/104] libxfce4ui: rebuild for glade3-3.38.0

---
 srcpkgs/libxfce4ui/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/libxfce4ui/template b/srcpkgs/libxfce4ui/template
index 25a5c479955..0a62ad182b4 100644
--- a/srcpkgs/libxfce4ui/template
+++ b/srcpkgs/libxfce4ui/template
@@ -1,7 +1,7 @@
 # Template file for 'libxfce4ui'
 pkgname=libxfce4ui
 version=4.14.1
-revision=4
+revision=5
 build_style=gnu-configure
 build_helper="gir"
 configure_args="--disable-static"

From baa8a98cd98591629f1967dda52f381e57148e8c Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 019/104] libdazzle: update to 3.38.0

---
 srcpkgs/libdazzle/template | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/srcpkgs/libdazzle/template b/srcpkgs/libdazzle/template
index 5ac09feefc9..9b807be9474 100644
--- a/srcpkgs/libdazzle/template
+++ b/srcpkgs/libdazzle/template
@@ -1,23 +1,29 @@
 # Template file for 'libdazzle'
 pkgname=libdazzle
-version=3.36.0
+version=3.38.0
 revision=1
 build_style=meson
 build_helper="gir"
-configure_args="-Denable_gtk_doc=false -Dwith_vapi=$(vopt_if vala true false)
- -Dwith_introspection=$(vopt_if gir true false)"
-hostmakedepends="glib-devel pkg-config $(vopt_if vala 'vala')"
+configure_args="-Denable_gtk_doc=false
+ $(vopt_bool gir with_vapi)
+ $(vopt_bool gir with_introspection)"
+hostmakedepends="glib-devel pkg-config $(vopt_if gir vala)"
 makedepends="gtk+3-devel libglib-devel"
 short_desc="Library to delight your users with fancy features"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/libdazzle"
-changelog="https://raw.githubusercontent.com/GNOME/libdazzle/libdazzle-3-32/NEWS"
+changelog="https://gitlab.gnome.org/GNOME/libdazzle/-/raw/${version}/NEWS"
 distfiles="${GNOME_SITE}/libdazzle/${version%.*}/libdazzle-${version}.tar.xz"
-checksum=82b31bbf550fc62970c78bf7f9d55e5fae5b8ea13b24fe2d13c8c6039409d958
+checksum=e18af28217943bcec106585298a91ec3da48aa3ad62fd0992f23f0c70cd1678f
 
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
+
+# needs X
+do_check() {
+	:
+}
 
 libdazzle-devel_package() {
 	depends="${sourcepkg}-${version}_${revision} gtk+3-devel"
@@ -28,8 +34,6 @@ libdazzle-devel_package() {
 		vmove "usr/lib/*.so"
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 	}

From 1586913768b5dd41f194769fe693d5621c891e6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Tue, 15 Sep 2020 05:43:13 +0700
Subject: [PATCH 020/104] anjuta: rebuild for glade3-3.38.0, vala-0.50

---
 srcpkgs/anjuta/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/anjuta/template b/srcpkgs/anjuta/template
index c21c927cd12..b46d58aeafe 100644
--- a/srcpkgs/anjuta/template
+++ b/srcpkgs/anjuta/template
@@ -1,7 +1,7 @@
 # Template file for 'anjuta'
 pkgname=anjuta
 version=3.34.0
-revision=3
+revision=4
 build_style=gnu-configure
 build_helper="gir qemu"
 configure_args="--disable-compile-warnings --disable-schemas-compile

From 43003e434f6ada7f7815eed3b7fe4f7e954f22cc Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 05:28:14 +0200
Subject: [PATCH 021/104] sysprof: update to 3.38.0

---
 common/shlibs                                 |   4 +-
 .../patches/allocs-by-size-gsize-format.patch |  12 --
 srcpkgs/sysprof/patches/build.patch           |  10 ++
 srcpkgs/sysprof/patches/musl.patch            | 125 ++++++++++++++++++
 srcpkgs/sysprof/template                      |   4 +-
 5 files changed, 139 insertions(+), 16 deletions(-)
 delete mode 100644 srcpkgs/sysprof/patches/allocs-by-size-gsize-format.patch
 create mode 100644 srcpkgs/sysprof/patches/build.patch
 create mode 100644 srcpkgs/sysprof/patches/musl.patch

diff --git a/common/shlibs b/common/shlibs
index db1646f18e0..9ad443a5367 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3153,8 +3153,8 @@ libmirage.so.11 libmirage-3.1.0_1
 libwkhtmltox.so.0 libwkhtmltopdf-0.12.5_1
 libixml.so.10 libupnp1.8-1.8.2_1
 libupnp.so.13 libupnp1.8-1.8.4_1
-libsysprof-3.so sysprof-3.34.0_1
-libsysprof-ui-3.so sysprof-3.34.0_1
+libsysprof-4.so sysprof-3.37.90_1
+libsysprof-ui-4.so sysprof-3.37.90_1
 libmozjs-52.so mozjs52-52.3.0_1
 libmozjs-52.so.0 mozjs52-52.3.0_1
 libvala-0.50.so.0 libvala-0.50.0_1
diff --git a/srcpkgs/sysprof/patches/allocs-by-size-gsize-format.patch b/srcpkgs/sysprof/patches/allocs-by-size-gsize-format.patch
deleted file mode 100644
index afee07ebbc2..00000000000
--- a/srcpkgs/sysprof/patches/allocs-by-size-gsize-format.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -rauN src/tests/allocs-by-size.c src/tests/allocs-by-size.c
---- src/tests/allocs-by-size.c	2020-03-22 20:00:12.677048822 +0100
-+++ src/tests/allocs-by-size.c	2020-03-22 20:01:07.000418361 +0100
-@@ -109,7 +109,7 @@
-     {
-       const Item *item = &g_array_index (ar, Item, i);
- 
--      g_print ("%"G_GUINT64_FORMAT",%"G_GUINT64_FORMAT",%"G_GUINT64_FORMAT"\n",
-+      g_print ("%"G_GSIZE_FORMAT",%"G_GSIZE_FORMAT",%"G_GSIZE_FORMAT"\n",
-                item->size, item->cmp, item->count);
-     }
- }
diff --git a/srcpkgs/sysprof/patches/build.patch b/srcpkgs/sysprof/patches/build.patch
new file mode 100644
index 00000000000..ab7c2c1c164
--- /dev/null
+++ b/srcpkgs/sysprof/patches/build.patch
@@ -0,0 +1,10 @@
+--- src/libsysprof-capture/sysprof-capture-condition.c
++++ src/libsysprof-capture/sysprof-capture-condition.c
+@@ -269,6 +269,7 @@ sysprof_capture_condition_copy (const SysprofCaptureCondition *self)
+     }
+ 
+   sysprof_assert_not_reached ();
++  return NULL;
+ }
+ 
+ static void
diff --git a/srcpkgs/sysprof/patches/musl.patch b/srcpkgs/sysprof/patches/musl.patch
new file mode 100644
index 00000000000..51f42128891
--- /dev/null
+++ b/srcpkgs/sysprof/patches/musl.patch
@@ -0,0 +1,125 @@
+From 1d2de32e97bf5569cc33ee9a90c873e1bbd2b1e6 Mon Sep 17 00:00:00 2001
+From: q66 <daniel@octaforge.org>
+Date: Sun, 6 Sep 2020 18:21:37 +0200
+Subject: [PATCH] fix build on musl
+
+---
+ .../sysprof-capture-cursor.c                  |  1 +
+ .../sysprof-capture-reader.c                  |  1 +
+ src/libsysprof-capture/sysprof-capture-util.c |  1 +
+ .../sysprof-capture-writer-cat.c              |  1 +
+ src/libsysprof-capture/sysprof-collector.c    |  1 +
+ src/libsysprof-capture/sysprof-compat.h       | 28 +++++++++++++++++++
+ src/libsysprof-capture/sysprof-platform.c     |  1 +
+ 7 files changed, 34 insertions(+)
+ create mode 100644 src/libsysprof-capture/sysprof-compat.h
+
+diff --git src/libsysprof-capture/sysprof-capture-cursor.c src/libsysprof-capture/sysprof-capture-cursor.c
+index 24563f0..bb77a60 100644
+--- src/libsysprof-capture/sysprof-capture-cursor.c
++++ src/libsysprof-capture/sysprof-capture-cursor.c
+@@ -59,6 +59,7 @@
+ #include <assert.h>
+ #include <stdlib.h>
+ 
++#include "sysprof-compat.h"
+ #include "sysprof-capture-condition.h"
+ #include "sysprof-capture-cursor.h"
+ #include "sysprof-capture-reader.h"
+diff --git src/libsysprof-capture/sysprof-capture-reader.c src/libsysprof-capture/sysprof-capture-reader.c
+index 67c6b28..252d006 100644
+--- src/libsysprof-capture/sysprof-capture-reader.c
++++ src/libsysprof-capture/sysprof-capture-reader.c
+@@ -68,6 +68,7 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+ 
++#include "sysprof-compat.h"
+ #include "sysprof-capture-reader.h"
+ #include "sysprof-capture-util-private.h"
+ #include "sysprof-capture-writer.h"
+diff --git src/libsysprof-capture/sysprof-capture-util.c src/libsysprof-capture/sysprof-capture-util.c
+index 0bbea06..0e5f7e7 100644
+--- src/libsysprof-capture/sysprof-capture-util.c
++++ src/libsysprof-capture/sysprof-capture-util.c
+@@ -56,6 +56,7 @@
+ 
+ #include "config.h"
+ 
++#include <stdint.h>
+ #include <assert.h>
+ #include <errno.h>
+ #include <unistd.h>
+diff --git src/libsysprof-capture/sysprof-capture-writer-cat.c src/libsysprof-capture/sysprof-capture-writer-cat.c
+index 66171b9..9febbbb 100644
+--- src/libsysprof-capture/sysprof-capture-writer-cat.c
++++ src/libsysprof-capture/sysprof-capture-writer-cat.c
+@@ -63,6 +63,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ 
++#include "sysprof-compat.h"
+ #include "sysprof-capture.h"
+ #include "sysprof-macros-internal.h"
+ 
+diff --git src/libsysprof-capture/sysprof-collector.c src/libsysprof-capture/sysprof-collector.c
+index 1d7a0d6..7af6c96 100644
+--- src/libsysprof-capture/sysprof-collector.c
++++ src/libsysprof-capture/sysprof-collector.c
+@@ -73,6 +73,7 @@
+ 
+ #include "mapped-ring-buffer.h"
+ 
++#include "sysprof-compat.h"
+ #include "sysprof-capture-util-private.h"
+ #include "sysprof-collector.h"
+ #include "sysprof-macros-internal.h"
+diff --git src/libsysprof-capture/sysprof-compat.h src/libsysprof-capture/sysprof-compat.h
+new file mode 100644
+index 0000000..ae9bf10
+--- /dev/null
++++ src/libsysprof-capture/sysprof-compat.h
+@@ -0,0 +1,28 @@
++/* added by q66 @ void to fix build on musl */
++
++#pragma once
++
++#ifndef __GLIBC__
++
++#include <stdlib.h>
++#include <errno.h>
++
++/* from glibc */
++#ifndef TEMP_FAILURE_RETRY
++# define TEMP_FAILURE_RETRY(expression) \
++  (__extension__                                                              \
++    ({ long int __result;                                                     \
++       do __result = (long int) (expression);                                 \
++       while (__result == -1L && errno == EINTR);                             \
++       __result; }))
++#endif
++
++static inline void *reallocarray(void *p, size_t nmemb, size_t sz) {
++    if (sz && (nmemb > ((size_t)-1 / sz))) {
++        errno = ENOMEM;
++        return NULL;
++    }
++    return realloc(p, nmemb * sz);
++}
++
++#endif
+diff --git src/libsysprof-capture/sysprof-platform.c src/libsysprof-capture/sysprof-platform.c
+index a80ab89..05bd590 100644
+--- src/libsysprof-capture/sysprof-platform.c
++++ src/libsysprof-capture/sysprof-platform.c
+@@ -60,6 +60,7 @@
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ 
++#include "sysprof-compat.h"
+ #include "sysprof-capture-util-private.h"
+ #include "sysprof-platform.h"
+ 
+-- 
+2.28.0
+
diff --git a/srcpkgs/sysprof/template b/srcpkgs/sysprof/template
index 68bca602553..eae51ea7356 100644
--- a/srcpkgs/sysprof/template
+++ b/srcpkgs/sysprof/template
@@ -1,6 +1,6 @@
 # Template file for 'sysprof'
 pkgname=sysprof
-version=3.36.0
+version=3.38.0
 revision=1
 build_style=meson
 configure_args="-Denable_gtk=true -Dsystemdunitdir=deleteme"
@@ -11,7 +11,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, GPL-3.0-or-later"
 homepage="http://sysprof.com/"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=8670db4dacf7b219d30c575c465b17c8ed6724dbade347f2cde9548bff039108
+checksum=8bcd728dc2f74e6f589410370dfb1b8801468bb3cc1803aa240735a7cff241ce
 
 # for ITS rules
 if [ "$CROSS_BUILD" ]; then

From 9c25a0a3ca3bd42ba699575d523412704890c59a Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 022/104] tracker: update to 2.3.6

---
 .../tracker/patches/failing-test-musl.patch   | 24 +++++++++++++++++++
 srcpkgs/tracker/template                      |  9 +++----
 2 files changed, 29 insertions(+), 4 deletions(-)
 create mode 100644 srcpkgs/tracker/patches/failing-test-musl.patch

diff --git a/srcpkgs/tracker/patches/failing-test-musl.patch b/srcpkgs/tracker/patches/failing-test-musl.patch
new file mode 100644
index 00000000000..ff18f06de9b
--- /dev/null
+++ b/srcpkgs/tracker/patches/failing-test-musl.patch
@@ -0,0 +1,24 @@
+From 5ee7d58f19542d1dac872badd72669ee288bd316 Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Wed, 16 Sep 2020 22:11:50 +0200
+Subject: [PATCH] drop test that fails on musl
+
+---
+ tests/libtracker-common/meson.build | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git tests/libtracker-common/meson.build tests/libtracker-common/meson.build
+index 55b7ada..69688e0 100644
+--- tests/libtracker-common/meson.build
++++ tests/libtracker-common/meson.build
+@@ -2,7 +2,6 @@ libtracker_common_tests = [
+     'date-time',
+     'dbus',
+     'file-utils',
+-    'sched',
+     'type-utils',
+     'utils',
+ ]
+-- 
+2.28.0
+
diff --git a/srcpkgs/tracker/template b/srcpkgs/tracker/template
index 37074cb348d..810675677fe 100644
--- a/srcpkgs/tracker/template
+++ b/srcpkgs/tracker/template
@@ -1,22 +1,23 @@
 # Template file for 'tracker'
 pkgname=tracker
-version=2.3.1
-revision=2
+version=2.3.6
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Ddocs=false -Dfts=true -Dfunctional_tests=false
  -Djournal=true -Dman=true -Dnetwork_manager=enabled -Dstemmer=disabled
  -Dsystemd_user_services=no"
-hostmakedepends="pkg-config glib-devel vala"
+hostmakedepends="gettext pkg-config glib-devel vala"
 makedepends="dbus-devel libglib-devel icu-devel json-glib-devel
  libsoup-devel libxml2-devel sqlite-devel NetworkManager-devel
  bash-completion"
+checkdepends="tar"
 short_desc="Personal search tool and storage system"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://live.gnome.org/Tracker"
 distfiles="${GNOME_SITE}/tracker/${version%.*}/tracker-${version}.tar.xz"
-checksum=b6748726e465ad2f4d991560634b1fd0df8841f3d981b3b837c4162abedf08a1
+checksum=bd1eb4122135296fa7b57b1c3fa0ed602cf7d06c0b8e534d0bd17ff5f97feef2
 
 if [ "$CROSS_BUILD" ]; then
 	hostmakedepends+=" dbus"

From f31a0f71316553868200018993a1adf9e12e0986 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 00:22:11 +0200
Subject: [PATCH 023/104] tracker-miners: update to 2.3.5

---
 srcpkgs/tracker-miners/template | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/srcpkgs/tracker-miners/template b/srcpkgs/tracker-miners/template
index 020c124f322..600d144218c 100644
--- a/srcpkgs/tracker-miners/template
+++ b/srcpkgs/tracker-miners/template
@@ -1,7 +1,7 @@
 # Template file for 'tracker-miners'
 pkgname=tracker-miners
-version=2.3.1
-revision=3
+version=2.3.5
+revision=1
 build_style=meson
 configure_args="-Dtracker_core=system -Ddocs=false -Dextract=true
  -Dfunctional_tests=false -Dcue=enabled -Dexif=enabled -Dflac=enabled
@@ -10,21 +10,22 @@ configure_args="-Dtracker_core=system -Ddocs=false -Dextract=true
  -Dtiff=enabled -Dvorbis=enabled -Dxml=enabled -Dxmp=enabled -Dxps=enabled
  -Dbattery_detection=upower -Dcharset_detection=icu
  -Dgeneric_media_extractor=gstreamer -Dgstreamer_backend=discoverer
- -Dsystemd_user_services=no"
+ -Dsystemd_user_services=no -Dminer_rss=false"
 hostmakedepends="pkg-config glib-devel intltool"
 makedepends="tracker-devel ffmpeg-devel dbus-devel exempi-devel libflac-devel
  libglib-devel libgexiv2-devel gstreamer1-devel icu-devel libcue-devel
  libexif-devel libgsf-devel libgxps-devel libiptcdata-devel libjpeg-turbo-devel
  libosinfo-devel libpng-devel libseccomp-devel tiff-devel libxml2-devel
  libvorbis-devel poppler-glib-devel taglib-devel totem-pl-parser-devel
- upower-devel zlib-devel gst-plugins-base1-devel giflib-devel"
+ upower-devel zlib-devel gst-plugins-base1-devel giflib-devel libharfbuzz"
 short_desc="Data miners for tracker"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://developer.gnome.org/libtracker-miner/stable"
 distfiles="${GNOME_SITE}/tracker-miners/${version%.*}/tracker-miners-${version}.tar.xz"
-checksum=7b1de06a7a79ea1c7813c8a21f8cd1c55f2b95f799cf9f47f0204f3be8a590e0
+checksum=9509d37fb29acd233058f4df5bd1234b692ac6f946bc2e5f7b8dbf51dfe5b9fa
 
-# Missing libgrss
-configure_args+=" -Dminer_rss=false"
-makedepends+=" libharfbuzz"
+# relies on unsupported ops in chroot
+do_check() {
+	:
+}

From 4ee84113417c2a7b7f2d6859495bf1115bbb2580 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 00:15:49 +0200
Subject: [PATCH 024/104] New package: tracker3-3.0.0

---
 common/shlibs             |  3 ++-
 srcpkgs/libtracker3       |  1 +
 srcpkgs/tracker3-devel    |  1 +
 srcpkgs/tracker3/template | 57 +++++++++++++++++++++++++++++++++++++++
 srcpkgs/tracker3/update   |  1 +
 5 files changed, 62 insertions(+), 1 deletion(-)
 create mode 120000 srcpkgs/libtracker3
 create mode 120000 srcpkgs/tracker3-devel
 create mode 100644 srcpkgs/tracker3/template
 create mode 100644 srcpkgs/tracker3/update

diff --git a/common/shlibs b/common/shlibs
index 9ad443a5367..50777751f4c 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3144,6 +3144,8 @@ libcppcms.so.1 cppcms-1.0.5_1
 libcppdb.so.0 cppdb-0.3.1_1
 libtracker-control-2.0.so.0 libtracker-2.0.0_1
 libtracker-sparql-2.0.so.0 libtracker-2.0.0_1
+libtracker-miner-2.0.so.0 libtracker-2.0.1_1
+libtracker-sparql-3.0.so.0 libtracker3-3.0.0_1
 libdockapp.so.3 libdockapp-0.7.2_1
 libkrdccore.so.5 krdc-17.04.3_1
 libArcus.so.3 libArcus-3.1.0_1
@@ -3162,7 +3164,6 @@ libvaladoc-0.50.so.0 libvaladoc-0.50.0_1
 libvalaccodegen.so libvala-0.44.0_1
 libphodav-2.0.so.0 phodav-2.2_1
 libgfshare.so.2 libgfshare-2.0.0_1
-libtracker-miner-2.0.so.0 libtracker-2.0.1_1
 libtacacs.so.1 tacacs-4.0.4.28_1
 libffms2.so.4 libffms2-2.23.1_1
 libddcutil.so.3 ddcutil-0.9.9_1
diff --git a/srcpkgs/libtracker3 b/srcpkgs/libtracker3
new file mode 120000
index 00000000000..59dd6911b3b
--- /dev/null
+++ b/srcpkgs/libtracker3
@@ -0,0 +1 @@
+tracker3
\ No newline at end of file
diff --git a/srcpkgs/tracker3-devel b/srcpkgs/tracker3-devel
new file mode 120000
index 00000000000..59dd6911b3b
--- /dev/null
+++ b/srcpkgs/tracker3-devel
@@ -0,0 +1 @@
+tracker3
\ No newline at end of file
diff --git a/srcpkgs/tracker3/template b/srcpkgs/tracker3/template
new file mode 100644
index 00000000000..1c2100f26ca
--- /dev/null
+++ b/srcpkgs/tracker3/template
@@ -0,0 +1,57 @@
+# Template file for 'tracker3'
+pkgname=tracker3
+version=3.0.0
+revision=1
+wrksrc=tracker-${version}
+build_style=meson
+build_helper="gir"
+configure_args="-Ddocs=false -Dman=true -Dnetwork_manager=enabled
+ -Dstemmer=disabled -Dsystemd_user_services=false"
+hostmakedepends="gettext pkg-config glib-devel vala asciidoc"
+makedepends="dbus-devel libglib-devel icu-devel json-glib-devel
+ libsoup-devel libxml2-devel sqlite-devel NetworkManager-devel
+ bash-completion"
+checkdepends="tar python3-gobject"
+short_desc="Personal search tool and storage system"
+maintainer="q66 <daniel@octaforge.org>"
+license="GPL-2.0-or-later, LGPL-2.1-or-later"
+homepage="https://live.gnome.org/Tracker"
+distfiles="${GNOME_SITE}/tracker/${version%.*}/tracker-${version}.tar.xz"
+checksum=70864515f5752b0596f9c442d7e86585734f42b82a9233e55dae6ac2b0d33837
+
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" dbus"
+fi
+
+# needs a dbus setup
+do_check() {
+	:
+}
+
+post_patch() {
+	if [ "$CROSS_BUILD" ]; then
+		# Tell the build system that we have internal fts5 in sqlite3
+		vsed -i "/\[properties\]/a sqlite3_has_fts5 = 'true'" xbps_meson.cross
+	fi
+}
+
+tracker3-devel_package() {
+	depends="libtracker3>=${version}_${revision} libglib-devel json-glib-devel
+	 libsoup-devel"
+	short_desc+=" - development files"
+	pkg_install() {
+		vmove usr/include
+		vmove usr/share/gir-1.0
+		vmove usr/share/vala
+		vmove usr/lib/pkgconfig
+		vmove "usr/lib/*.so"
+	}
+}
+
+libtracker3_package() {
+	short_desc+=" - shared libraries"
+	pkg_install() {
+		vmove "usr/lib/*.so.*"
+		vmove usr/lib/girepository-1.0
+	}
+}
diff --git a/srcpkgs/tracker3/update b/srcpkgs/tracker3/update
new file mode 100644
index 00000000000..e9847e25b54
--- /dev/null
+++ b/srcpkgs/tracker3/update
@@ -0,0 +1 @@
+pattern="\Qtracker\E-\K[0-9]+\.[0-9]*\.[0-9.]*[0-9](?=)"

From e2538cf7f30cd5157ec09e3355550e1f9c369c14 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 00:16:04 +0200
Subject: [PATCH 025/104] New package: tracker3-miners-3.0.0

---
 srcpkgs/tracker3-miners/patches/build.patch   |  25 +++++
 .../patches/dont-use-malloc-trim.patch        | 104 ++++++++++++++++++
 srcpkgs/tracker3-miners/template              |  34 ++++++
 3 files changed, 163 insertions(+)
 create mode 100644 srcpkgs/tracker3-miners/patches/build.patch
 create mode 100644 srcpkgs/tracker3-miners/patches/dont-use-malloc-trim.patch
 create mode 100644 srcpkgs/tracker3-miners/template

diff --git a/srcpkgs/tracker3-miners/patches/build.patch b/srcpkgs/tracker3-miners/patches/build.patch
new file mode 100644
index 00000000000..d58a0d8c0f8
--- /dev/null
+++ b/srcpkgs/tracker3-miners/patches/build.patch
@@ -0,0 +1,25 @@
+From 8d709c3b55dc92621d5871fb429a02c78cc4b2d8 Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Wed, 16 Sep 2020 23:57:32 +0200
+Subject: [PATCH] fix build
+
+---
+ src/libtracker-miner/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git src/libtracker-miner/meson.build src/libtracker-miner/meson.build
+index a226623..9eacee3 100644
+--- src/libtracker-miner/meson.build
++++ src/libtracker-miner/meson.build
+@@ -40,7 +40,7 @@ endif
+ 
+ libtracker_miner = library(
+     'tracker-miner-' + tracker_api_version,
+-    miner_enums[0], miner_enums[1], miner_sources,
++    miner_enums[0], miner_enums[1], tracker_miners_common_enum_header, miner_sources,
+     c_args: tracker_c_args,
+     install: true,
+     install_dir: tracker_internal_libs_dir,
+-- 
+2.28.0
+
diff --git a/srcpkgs/tracker3-miners/patches/dont-use-malloc-trim.patch b/srcpkgs/tracker3-miners/patches/dont-use-malloc-trim.patch
new file mode 100644
index 00000000000..3f42a912097
--- /dev/null
+++ b/srcpkgs/tracker3-miners/patches/dont-use-malloc-trim.patch
@@ -0,0 +1,104 @@
+Reason: This reverts 191cc5218b53fba85baec1c8c17bb246a74044c0 and
+ccb0b4ebbff4dfacf17ea67ce56bb27c39741811. malloc_trim is glibc specific
+API, so this causes the build to fail on musl.
+Upstream: https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/135
+diff --git a/src/miners/fs/tracker-main.c b/src/miners/fs/tracker-main.c
+index c60070d..220916d 100644
+--- src/miners/fs/tracker-main.c
++++ src/miners/fs/tracker-main.c
+@@ -57,7 +57,6 @@
+ static GMainLoop *main_loop;
+ static GDBusProxy *index_proxy;
+ static GPtrArray *proxy_folders;
+-static guint cleanup_id;
+ 
+ static gint initial_sleep = -1;
+ static gboolean no_daemon;
+@@ -433,37 +432,6 @@ miner_start (TrackerMiner  *miner,
+ 	                                           miner);
+ }
+ 
+-static gboolean
+-cleanup_cb (gpointer user_data)
+-{
+-	/* Reclaim as much memory as possible */
+-	malloc_trim (0);
+-
+-	cleanup_id = 0;
+-
+-	return G_SOURCE_REMOVE;
+-}
+-
+-#if GLIB_CHECK_VERSION (2, 64, 0)
+-static void
+-on_low_memory (GMemoryMonitor            *monitor,
+-               GMemoryMonitorWarningLevel level,
+-               gpointer                   user_data)
+-{
+-	if (level > G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
+-		malloc_trim (0);
+-}
+-#endif
+-
+-static void
+-miner_started_cb (TrackerMinerFS *fs)
+-{
+-	if (cleanup_id) {
+-		g_source_remove (cleanup_id);
+-		cleanup_id = 0;
+-	}
+-}
+-
+ static void
+ miner_finished_cb (TrackerMinerFS *fs,
+                    gdouble         seconds_elapsed,
+@@ -483,8 +451,6 @@ miner_finished_cb (TrackerMinerFS *fs,
+ 							 TRUE);
+ 	}
+ 
+-	cleanup_id = g_timeout_add_seconds (30, cleanup_cb, NULL);
+-
+ 	/* We're not sticking around for file updates, so stop
+ 	 * the mainloop and exit.
+ 	 */
+@@ -941,9 +907,6 @@ main (gint argc, gchar *argv[])
+ 	TrackerEndpointDBus *endpoint;
+ 	TrackerDomainOntology *domain_ontology;
+ 	GCancellable *cancellable;
+-#if GLIB_CHECK_VERSION (2, 64, 0)
+-	GMemoryMonitor *memory_monitor;
+-#endif
+ 	gchar *domain_name, *dbus_name;
+ 
+ 	main_loop = NULL;
+@@ -1129,18 +1092,10 @@ main (gint argc, gchar *argv[])
+ 		tracker_miner_files_set_mtime_checking (TRACKER_MINER_FILES (miner_files), do_mtime_checking);
+ 	}
+ 
+-	g_signal_connect (miner_files, "started",
+-			  G_CALLBACK (miner_started_cb),
+-			  NULL);
+ 	g_signal_connect (miner_files, "finished",
+ 			  G_CALLBACK (miner_finished_cb),
+ 			  NULL);
+ 
+-#if GLIB_CHECK_VERSION (2, 64, 0)
+-	memory_monitor = g_memory_monitor_dup_default ();
+-	g_signal_connect (memory_monitor, "low-memory-warning", on_low_memory, NULL);
+-#endif
+-
+ 	/* Preempt creation of graphs */
+ 	tracker_sparql_connection_update_async (tracker_miner_get_connection (miner_files),
+ 	                                        "CREATE SILENT GRAPH tracker:FileSystem; "
+@@ -1183,11 +1138,6 @@ main (gint argc, gchar *argv[])
+ 	tracker_sparql_connection_close (sparql_conn);
+ 	g_object_unref (sparql_conn);
+ 
+-#if GLIB_CHECK_VERSION (2, 64, 0)
+-	g_signal_handlers_disconnect_by_func (memory_monitor, on_low_memory, NULL);
+-	g_object_unref (memory_monitor);
+-#endif
+-
+ 	g_print ("\nOK\n\n");
+ 
+ 	return EXIT_SUCCESS;
diff --git a/srcpkgs/tracker3-miners/template b/srcpkgs/tracker3-miners/template
new file mode 100644
index 00000000000..0bf14b48479
--- /dev/null
+++ b/srcpkgs/tracker3-miners/template
@@ -0,0 +1,34 @@
+# Template file for 'tracker3-miners'
+pkgname=tracker3-miners
+version=3.0.0
+revision=1
+wrksrc=tracker-miners-${version}
+build_style=meson
+# missing libgrss for miner_rss
+configure_args="-Dtracker_core=system -Ddocs=false -Dextract=true
+ -Dfunctional_tests=false -Dcue=enabled -Dexif=enabled -Dflac=enabled
+ -Dgif=enabled -Dgsf=enabled -Diptc=enabled -Diso=enabled -Djpeg=enabled
+ -Dpdf=enabled -Dplaylist=enabled -Dpng=enabled -Draw=enabled -Dtaglib=enabled
+ -Dtiff=enabled -Dvorbis=enabled -Dxml=enabled -Dxmp=enabled -Dxps=enabled
+ -Dminer_rss=false -Dbattery_detection=upower -Dcharset_detection=icu
+ -Dgeneric_media_extractor=gstreamer -Dgstreamer_backend=discoverer
+ -Dsystemd_user_services=false -Dnetwork_manager=enabled"
+hostmakedepends="pkg-config glib-devel intltool asciidoc"
+makedepends="tracker3-devel ffmpeg-devel dbus-devel exempi-devel libflac-devel
+ libglib-devel libgexiv2-devel gstreamer1-devel icu-devel libcue-devel
+ libexif-devel libgsf-devel libgxps-devel libiptcdata-devel libjpeg-turbo-devel
+ libosinfo-devel libpng-devel libseccomp-devel tiff-devel libxml2-devel
+ libvorbis-devel poppler-glib-devel taglib-devel totem-pl-parser-devel
+ upower-devel zlib-devel gst-plugins-base1-devel giflib-devel
+ NetworkManager-devel libharfbuzz"
+short_desc="Data miners for tracker3"
+maintainer="q66 <daniel@octaforge.org>"
+license="GPL-2.0-or-later"
+homepage="https://developer.gnome.org/libtracker-miner/stable"
+distfiles="${GNOME_SITE}/tracker-miners/${version%.*}/tracker-miners-${version}.tar.xz"
+checksum=bb481a7c23c5def4f215627a0630fbe9d1c64f3319825859d7a73645738f4042
+
+# relies on unsupported ops in chroot
+do_check() {
+	:
+}

From 1fabf03a3422af6aeb4180ef01e6e794344a8eb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <congdanhqx@gmail.com>
Date: Tue, 15 Sep 2020 06:47:56 +0700
Subject: [PATCH 026/104] bijiben: update to 3.36.3.

---
 srcpkgs/bijiben/template | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/bijiben/template b/srcpkgs/bijiben/template
index 730053b5d1c..0bfa6f275ac 100644
--- a/srcpkgs/bijiben/template
+++ b/srcpkgs/bijiben/template
@@ -1,9 +1,10 @@
 # Template file for 'bijiben'
 pkgname=bijiben
-version=3.36.1
+version=3.36.3
 revision=1
 build_helper="gir"
 build_style=meson
+configure_args="-Dzeitgeist=true"
 hostmakedepends="itstool pkg-config gettext"
 makedepends="clutter-gtk-devel evolution-devel tracker-devel webkit2gtk-devel
  zeitgeist-devel libhandy-devel"
@@ -14,5 +15,9 @@ license="GPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Notes"
 changelog="https://raw.githubusercontent.com/GNOME/bijiben/gnome-${version%.*}/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=212f66a3d2c717dfb3d37220426178089395da23ef9f3d051713aaf6597a4110
+checksum=70e9b621e11bf7af6c6248f8c99830f6ffbff605fb43a848d26880e7e1b52dd6
 nocross="evolution-data-server cross"
+
+pre_build() {
+	ninja -C build src/libbiji/biji-marshalers.h
+}

From 12883f5cffb457718483dac0cecd4c84f0f80866 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:20:50 +0200
Subject: [PATCH 027/104] graphene: update to 1.10.2

---
 srcpkgs/graphene/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/graphene/template b/srcpkgs/graphene/template
index f5cc99b4128..e868239bfa0 100644
--- a/srcpkgs/graphene/template
+++ b/srcpkgs/graphene/template
@@ -1,6 +1,6 @@
 # Template file for 'graphene'
 pkgname=graphene
-version=1.10.0
+version=1.10.2
 revision=1
 build_style=meson
 build_helper="gir"
@@ -13,7 +13,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="MIT"
 homepage="https://github.com/ebassi/graphene"
 distfiles="${GNOME_SITE}/graphene/${version%.*}/graphene-${version}.tar.xz"
-checksum=406d97f51dd4ca61e91f84666a00c3e976d3e667cd248b76d92fdb35ce876499
+checksum=e97de8208f1aac4f913d4fa71ab73a7034e807186feb2abe55876e51c425a7f6
 
 case "$XBPS_TARGET_MACHINE" in
 	arm*) configure_args+=" -Darm_neon=false" ;;

From 6e42760068db2a4e6b9cb43cb3488761c2fd0f56 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:22:40 +0200
Subject: [PATCH 028/104] amtk: update to 5.2.0

---
 srcpkgs/amtk/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/amtk/template b/srcpkgs/amtk/template
index 449c57e07e6..433be2b9c54 100644
--- a/srcpkgs/amtk/template
+++ b/srcpkgs/amtk/template
@@ -1,6 +1,6 @@
 # Template file for 'amtk'
 pkgname=amtk
-version=5.1.1
+version=5.2.0
 revision=1
 build_style=gnu-configure
 build_helper="gir"
@@ -12,7 +12,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/Amtk"
 distfiles="${GNOME_SITE}/amtk/${version%.*}/amtk-${version}.tar.xz"
-checksum=f9656bdd4278aabfb8554f029049b9ffaf51b53faa463483a840365463355df1
+checksum=820545bb4cf87ecebc2c3638d6b6e58b8dbd60a419a9b43cf020124e5dad7078
 
 build_options="gir"
 build_options_default="gir"

From a3590f583a1e216d1e43c1e4606f4e68839d2265 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:44:51 +0200
Subject: [PATCH 029/104] io.elementary.code: rebuild for vala-0.50

---
 .../io.elementary.code/patches/vala050.patch  | 25 +++++++++++++++++++
 srcpkgs/io.elementary.code/template           |  2 +-
 2 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/io.elementary.code/patches/vala050.patch

diff --git a/srcpkgs/io.elementary.code/patches/vala050.patch b/srcpkgs/io.elementary.code/patches/vala050.patch
new file mode 100644
index 00000000000..9eeee1fb664
--- /dev/null
+++ b/srcpkgs/io.elementary.code/patches/vala050.patch
@@ -0,0 +1,25 @@
+From a185de0e7716aa2de2bf21de96e6c9af1dca81aa Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Wed, 16 Sep 2020 20:43:07 +0200
+Subject: [PATCH] fix with vala-0.50
+
+---
+ plugins/outline/Vala/ValaSymbolOutline.vala | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git plugins/outline/Vala/ValaSymbolOutline.vala plugins/outline/Vala/ValaSymbolOutline.vala
+index c8db339..31386a6 100644
+--- plugins/outline/Vala/ValaSymbolOutline.vala
++++ plugins/outline/Vala/ValaSymbolOutline.vala
+@@ -61,7 +61,7 @@ public class Code.Plugins.ValaSymbolOutline : Object, Code.Plugins.SymbolOutline
+ 
+     public void parse_symbols () {
+         var context = new Vala.CodeContext ();
+-        context.profile = Vala.Profile.GOBJECT;
++        context.set_target_profile(Vala.Profile.GOBJECT);
+         context.add_source_filename (doc.file.get_path ());
+         context.report = new Report ();
+         if (cancellable != null)
+-- 
+2.28.0
+
diff --git a/srcpkgs/io.elementary.code/template b/srcpkgs/io.elementary.code/template
index 447e7e5f60a..8d43ad4130d 100644
--- a/srcpkgs/io.elementary.code/template
+++ b/srcpkgs/io.elementary.code/template
@@ -1,7 +1,7 @@
 # Template file for 'io.elementary.code'
 pkgname=io.elementary.code
 version=3.4.1
-revision=2
+revision=3
 wrksrc="code-${version}"
 build_style=meson
 hostmakedepends="pkg-config vala intltool glib-devel"

From a11e79a3c3ee2c05c0c50b19f774cc088e95f613 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Wed, 16 Sep 2020 20:52:26 +0200
Subject: [PATCH 030/104] phodav: update to 2.5

---
 srcpkgs/phodav/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/phodav/template b/srcpkgs/phodav/template
index 1a90a1a0e58..13092896899 100644
--- a/srcpkgs/phodav/template
+++ b/srcpkgs/phodav/template
@@ -1,6 +1,6 @@
 # Template file for 'phodav'
 pkgname=phodav
-version=2.4
+version=2.5
 revision=1
 build_style=meson
 configure_args="-Dsystemd=disabled -Davahi=enabled -Dgtk_doc=disabled
@@ -13,7 +13,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/phodav"
 distfiles="${GNOME_SITE}/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
-checksum=7dddc2b75e04d0866bb9c9a83028a597ebd73ef4c37bd6ebe1032a870b43b8c3
+checksum=71f0a9cd70afd4dd1412a0298331dbb8ac71c0377f52117afc15eb88dc6fb910
 
 phodav-devel_package() {
 	depends="libglib-devel libsoup-devel libxml2-devel

From 36cb05eb61e5a140d9b7394dfbbdefa91f24b394 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 031/104] gsettings-desktop-schemas: update to 3.38.0

---
 .../patches/fix-cross-gir.patch                     | 13 -------------
 srcpkgs/gsettings-desktop-schemas/template          |  6 +++---
 2 files changed, 3 insertions(+), 16 deletions(-)
 delete mode 100644 srcpkgs/gsettings-desktop-schemas/patches/fix-cross-gir.patch

diff --git a/srcpkgs/gsettings-desktop-schemas/patches/fix-cross-gir.patch b/srcpkgs/gsettings-desktop-schemas/patches/fix-cross-gir.patch
deleted file mode 100644
index b299d5c9cd0..00000000000
--- a/srcpkgs/gsettings-desktop-schemas/patches/fix-cross-gir.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/headers/meson.build b/headers/meson.build
-index 3ce8b61..1132695 100644
---- headers/meson.build
-+++ headers/meson.build
-@@ -19,7 +19,7 @@ enums_xml = custom_target(
-   install: true,
-   install_dir: schemasdir)
- 
--if not meson.is_cross_build() and get_option('introspection')
-+if get_option('introspection')
-   noinst_lib = shared_library('noinst',
-                               headers,
-                               install: false)
diff --git a/srcpkgs/gsettings-desktop-schemas/template b/srcpkgs/gsettings-desktop-schemas/template
index 49c64cca738..76c4b0e0810 100644
--- a/srcpkgs/gsettings-desktop-schemas/template
+++ b/srcpkgs/gsettings-desktop-schemas/template
@@ -1,7 +1,7 @@
 # Template file for 'gsettings-desktop-schemas'
 pkgname=gsettings-desktop-schemas
-version=3.36.0
-revision=2
+version=3.38.0
+revision=1
 build_helper="gir"
 build_style=meson
 configure_args="-Dintrospection=$(vopt_if gir true false)"
@@ -12,7 +12,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=764ab683286536324533a58d4e95fc57f81adaba7d880dd0ebbbced63e960ea6
+checksum=5704c8266004b296036671f223c705dc046aa694a1b1abb87c67e7d2747a8c67
 
 # Package build options
 build_options="gir"

From 980113496734ce646e89f39424db5799221c33bf Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 05:20:26 +0200
Subject: [PATCH 032/104] glib-networking: update to 2.66.0

---
 srcpkgs/glib-networking/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/glib-networking/template b/srcpkgs/glib-networking/template
index 5eaffa82e64..96f312cff4d 100644
--- a/srcpkgs/glib-networking/template
+++ b/srcpkgs/glib-networking/template
@@ -1,7 +1,7 @@
 # Template file for 'glib-networking'
 pkgname=glib-networking
-version=2.64.1
-revision=2
+version=2.66.0
+revision=1
 build_style=meson
 configure_args="-Dinstalled_tests=false -Dgnutls=enabled -Dlibproxy=enabled
  -Dgnome_proxy=enabled"
@@ -14,7 +14,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://gitlab.gnome.org/GNOME/glib-networking/"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=a4c346def7d817467d79a95c23b3ccf22e4df1548870726b63396400852daf72
+checksum=c5d7be2437fdd196eebfb70c4517b96d3ba7ec13bd496318b8f02dea383e0099
 lib32disabled=yes
 
 post_install() {

From 5b6300834259bf4cfefdefa914737b781afeea0a Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 033/104] at-spi2-core: update to 2.38.0

---
 srcpkgs/at-spi2-core/template | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/at-spi2-core/template b/srcpkgs/at-spi2-core/template
index b383fe99bed..74e60701201 100644
--- a/srcpkgs/at-spi2-core/template
+++ b/srcpkgs/at-spi2-core/template
@@ -1,23 +1,27 @@
 # Template file for 'at-spi2-core'
 pkgname=at-spi2-core
-version=2.34.0
+version=2.38.0
 revision=1
 build_style=meson
 build_helper="gir"
-hostmakedepends="pkg-config dbus glib-devel"
-makedepends="libglib-devel libXext-devel libSM-devel libXtst-devel
- libXevie-devel dbus-devel"
+hostmakedepends="pkg-config dbus glib-devel gettext"
+makedepends="libglib-devel libXext-devel libSM-devel libXtst-devel dbus-devel"
 short_desc="Assistive Technology Service Provider Interface"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/at-spi2-core"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=d629cdbd674e539f8912028512af583990938c7b49e25184c126b00121ef11c6
+checksum=84e36c3fe66862133f5fe229772b76aa2526e10de5014a3778f2fa46ce550da5
 
 # Package build options
 build_options="gir"
 build_options_default="gir"
 
+# non-trivial dbus setup
+do_check() {
+	:
+}
+
 post_install() {
 	rm -rf ${DESTDIR}/usr/lib/systemd
 }

From da5024f62503da0d3cd192973bd18e37ffb6f6e9 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 034/104] at-spi2-atk: update to 2.38.0

---
 srcpkgs/at-spi2-atk/template | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/at-spi2-atk/template b/srcpkgs/at-spi2-atk/template
index 4351b7996f3..cf945dffb26 100644
--- a/srcpkgs/at-spi2-atk/template
+++ b/srcpkgs/at-spi2-atk/template
@@ -1,6 +1,6 @@
 # Template file for 'at-spi2-atk'
 pkgname=at-spi2-atk
-version=2.34.1
+version=2.38.0
 revision=1
 build_style=meson
 hostmakedepends="libtool pkg-config intltool glib-devel"
@@ -10,7 +10,12 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.0-or-later"
 homepage="http://www.gnome.org"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=776df930748fde71c128be6c366a987b98b6ee66d508ed9c8db2355bf4b9cc16
+checksum=cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f
+
+# non-trivial dbus setup
+do_check() {
+	:
+}
 
 at-spi2-atk-devel_package() {
 	depends="${makedepends} ${sourcepkg}>=${version}_${revision}"

From 63724401fced93b17ae59352f4aaf4c0dd56f46b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 035/104] libgweather: update to 3.36.1

---
 srcpkgs/libgweather/template | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/libgweather/template b/srcpkgs/libgweather/template
index 34c64d6e3a1..fcdb5879501 100644
--- a/srcpkgs/libgweather/template
+++ b/srcpkgs/libgweather/template
@@ -1,13 +1,12 @@
 # Template file for 'libgweather'
 pkgname=libgweather
-version=3.36.0
+version=3.36.1
 revision=1
 build_style=meson
 build_helper="gir"
-configure_args="-Denable_vala=$(vopt_if vala true false)
- -Dintrospection=$(vopt_if gir true false)
+configure_args="$(vopt_bool gir enable_vala) $(vopt_bool gir introspection)
  -Dzoneinfo_dir=/usr/share/zoneinfo"
-hostmakedepends="glib-devel intltool pkg-config $(vopt_if vala vala)"
+hostmakedepends="glib-devel intltool pkg-config $(vopt_if gir vala)"
 makedepends="geocode-glib-devel gtk+3-devel libsoup-gnome-devel"
 checkdepends="tzdata"
 short_desc="GNOME Weather information access library"
@@ -15,10 +14,10 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/LibGWeather"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=d2ffeec01788d03d1bbf35113fc2f054c6c3600721088f827bcc31e5c603a32d
+checksum=de2709f0ee233b20116d5fa9861d406071798c4aa37830ca25f5ef2c0083e450
 
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
 
 post_patch() {
 	# This test requires LC_IDENTIFICATION, which is a GLIBC's extension
@@ -35,8 +34,6 @@ libgweather-devel_package() {
 		vmove "usr/lib/*.so"
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 	}

From 4c832b3330c87023132a949a9ff10c9a259ded65 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 036/104] gnome-menus: update to 3.36.0

---
 srcpkgs/gnome-menus/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-menus/template b/srcpkgs/gnome-menus/template
index 29102129c38..e787fb8de6b 100644
--- a/srcpkgs/gnome-menus/template
+++ b/srcpkgs/gnome-menus/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-menus'
 pkgname=gnome-menus
-version=3.32.0
-revision=2
+version=3.36.0
+revision=1
 build_style=gnu-configure
 build_helper="gir"
 configure_args="--disable-static"
@@ -12,7 +12,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, LGPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gnome-menus"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=c850c64b2074265fe59e099a340b8689cf3dd4658dc9feddd2ab5e95f1a74b74
+checksum=d9348f38bde956fc32753b28c1cde19c175bfdbf1f4d5b06003b3aa09153bb1f
 
 build_options="gir"
 build_options_default="gir"

From b27b3508f64d2e46ce41463d9db8ef652c08ed3b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 037/104] gnome-desktop: update to 3.38.0

---
 common/shlibs                             |  2 +-
 srcpkgs/gnome-desktop/patches/build.patch | 18 ++++++++++++++++++
 srcpkgs/gnome-desktop/template            | 11 ++++++++---
 3 files changed, 27 insertions(+), 4 deletions(-)
 create mode 100644 srcpkgs/gnome-desktop/patches/build.patch

diff --git a/common/shlibs b/common/shlibs
index 50777751f4c..df48841c5b5 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -1176,7 +1176,7 @@ libgstbasecamerabinsrc-1.0.so.0 gst-plugins-bad1-1.0.0_1
 libgstcodecparsers-1.0.so.0 gst-plugins-bad1-1.0.0_1
 libgstplayer-1.0.so.0 gst-plugins-bad1-1.0.0_1
 libgstgl-1.0.so.0 gst-plugins-base1-1.14.0_1
-libgnome-desktop-3.so.18 gnome-desktop-3.34.0_1
+libgnome-desktop-3.so.19 gnome-desktop-3.37.90.1_1
 libsecret-1.so.0 libsecret-0.10_1
 libgweather-3.so.16 libgweather-3.34.0_1
 libgnomekbd.so.8 libgnomekbd-3.6.0_1
diff --git a/srcpkgs/gnome-desktop/patches/build.patch b/srcpkgs/gnome-desktop/patches/build.patch
new file mode 100644
index 00000000000..efed00a25dd
--- /dev/null
+++ b/srcpkgs/gnome-desktop/patches/build.patch
@@ -0,0 +1,18 @@
+commit 4f55ff078411993b782e74ea18c5c6ab35adf685
+Author: Daniel Kolesa <daniel@octaforge.org>
+Date:   Wed Aug 12 05:26:00 2020 +0200
+
+    bla
+
+diff --git libgnome-desktop/gnome-rr.h libgnome-desktop/gnome-rr.h
+index 111bab3..7698672 100644
+--- libgnome-desktop/gnome-rr.h
++++ libgnome-desktop/gnome-rr.h
+@@ -28,6 +28,7 @@
+ #error    GnomeRR is unstable API. You must define GNOME_DESKTOP_USE_UNSTABLE_API before including gnomerr.h
+ #endif
+ 
++#include <stdint.h>
+ #include <glib.h>
+ #include <gdk/gdk.h>
+ 
diff --git a/srcpkgs/gnome-desktop/template b/srcpkgs/gnome-desktop/template
index 992cb1ff16a..bd0b2f5c1d9 100644
--- a/srcpkgs/gnome-desktop/template
+++ b/srcpkgs/gnome-desktop/template
@@ -1,10 +1,10 @@
 # Template file for 'gnome-desktop'
 pkgname=gnome-desktop
-version=3.34.1
+version=3.38.0
 revision=1
 build_style=meson
 build_helper="gir"
-configure_args="-Dgnome-distributor=VoidLinux -Dudev=enabled
+configure_args="-Dgnome_distributor=VoidLinux -Dudev=enabled -Dsystemd=disabled
  -Dintrospection=$(vopt_if gir true false)"
 hostmakedepends="gettext itstool pkg-config glib-devel"
 makedepends="eudev-libudev-devel gsettings-desktop-schemas-devel gtk+3-devel
@@ -16,11 +16,16 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gnome-desktop"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=c1dbeb5666dad27166c769e48e2ab41dd5ed74718ea35eb57c8488790662dc5a
+checksum=089dbbe3c66fe5575659a4a385d5d4bbd99cf637034df317f21cf586b5dd6b90
 
 build_options="gir"
 build_options_default="gir"
 
+# needs X
+do_check() {
+	:
+}
+
 gnome-desktop-devel_package() {
 	depends="gtk+3-devel gsettings-desktop-schemas-devel>=3.12
 	 gdk-pixbuf-devel iso-codes libX11-devel libglib-devel libseccomp-devel

From 69d0efbe08c60c6aace613785a2e402d5866f492 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 038/104] gnome-settings-daemon: update to 3.38.0

---
 .../patches/logind-backlight.patch            | 136 ++++++++++++++++++
 srcpkgs/gnome-settings-daemon/template        |  11 +-
 2 files changed, 142 insertions(+), 5 deletions(-)
 create mode 100644 srcpkgs/gnome-settings-daemon/patches/logind-backlight.patch

diff --git a/srcpkgs/gnome-settings-daemon/patches/logind-backlight.patch b/srcpkgs/gnome-settings-daemon/patches/logind-backlight.patch
new file mode 100644
index 00000000000..e5ca6bd43dd
--- /dev/null
+++ b/srcpkgs/gnome-settings-daemon/patches/logind-backlight.patch
@@ -0,0 +1,136 @@
+From 3845b3a7b58f26ec68dbc1c457ead06f4881180b Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Fri, 14 Aug 2020 17:48:21 +0200
+Subject: [PATCH] The new logind brightness code doesn't work with elogind.
+
+https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/cd051e6c7ccfb7e7b0ec440409c559b2e51284e8
+---
+ plugins/power/gsd-backlight.c | 77 ++++-------------------------------
+ 1 file changed, 7 insertions(+), 70 deletions(-)
+
+diff --git plugins/power/gsd-backlight.c plugins/power/gsd-backlight.c
+index ca5f272..4acc2e5 100644
+--- plugins/power/gsd-backlight.c
++++ plugins/power/gsd-backlight.c
+@@ -40,8 +40,6 @@ struct _GsdBacklight
+         gint brightness_step;
+ 
+ #ifdef __linux__
+-        GDBusProxy *logind_proxy;
+-
+         GUdevClient *udev;
+         GUdevDevice *udev_device;
+ 
+@@ -61,10 +59,6 @@ enum {
+         PROP_LAST,
+ };
+ 
+-#define SYSTEMD_DBUS_NAME                       "org.freedesktop.login1"
+-#define SYSTEMD_DBUS_PATH                       "/org/freedesktop/login1/session/auto"
+-#define SYSTEMD_DBUS_INTERFACE                  "org.freedesktop.login1.Session"
+-
+ static GParamSpec *props[PROP_LAST];
+ 
+ static void     gsd_backlight_initable_iface_init (GInitableIface  *iface);
+@@ -482,30 +476,13 @@ gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
+         if (backlight->udev_device != NULL) {
+                 BacklightHelperData *task_data;
+ 
+-                if (backlight->logind_proxy) {
+-                        g_dbus_proxy_call (backlight->logind_proxy,
+-                                           "SetBrightness",
+-                                           g_variant_new ("(ssu)",
+-                                                          "backlight",
+-                                                          g_udev_device_get_name (backlight->udev_device),
+-                                                          backlight->brightness_target),
+-                                           G_DBUS_CALL_FLAGS_NONE,
+-                                           -1, NULL,
+-                                           NULL, NULL);
+-
+-                        percent = ABS_TO_PERCENTAGE (backlight->brightness_min,
+-                                                     backlight->brightness_max,
+-                                                     backlight->brightness_target);
+-                        g_task_return_int (task, percent);
+-                } else {
+-                        task_data = g_new0 (BacklightHelperData, 1);
+-                        task_data->value = backlight->brightness_target;
+-                        g_task_set_task_data (task, task_data, backlight_task_data_destroy);
+-
+-                        /* Task is set up now. Queue it and ensure we are working something. */
+-                        g_queue_push_tail (&backlight->tasks, task);
+-                        gsd_backlight_process_taskqueue (backlight);
+-                }
++                task_data = g_new0 (BacklightHelperData, 1);
++                task_data->value = backlight->brightness_target;
++                g_task_set_task_data (task, task_data, backlight_task_data_destroy);
++
++                /* Task is set up now. Queue it and ensure we are working something. */
++                g_queue_push_tail (&backlight->tasks, task);
++                gsd_backlight_process_taskqueue (backlight);
+ 
+                 return;
+         }
+@@ -823,7 +800,6 @@ gsd_backlight_initable_init (GInitable       *initable,
+ {
+         GsdBacklight *backlight = GSD_BACKLIGHT (initable);
+         GnomeRROutput* output = NULL;
+-        GError *logind_error = NULL;
+ 
+         if (cancellable != NULL) {
+                 g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+@@ -832,44 +808,6 @@ gsd_backlight_initable_init (GInitable       *initable,
+         }
+ 
+ #ifdef __linux__
+-        backlight->logind_proxy =
+-                g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+-                                               0,
+-                                               NULL,
+-                                               SYSTEMD_DBUS_NAME,
+-                                               SYSTEMD_DBUS_PATH,
+-                                               SYSTEMD_DBUS_INTERFACE,
+-                                               NULL, &logind_error);
+-        if (backlight->logind_proxy) {
+-                /* Check that the SetBrightness method does exist */
+-                g_dbus_proxy_call_sync (backlight->logind_proxy,
+-                                        "SetBrightness", NULL,
+-                                        G_DBUS_CALL_FLAGS_NONE, -1,
+-                                        NULL, &logind_error);
+-
+-                if (g_error_matches (logind_error, G_DBUS_ERROR,
+-                                     G_DBUS_ERROR_INVALID_ARGS)) {
+-                        /* We are calling the method with no arguments, so
+-                         * this is expected.
+-                         */
+-                        g_clear_error (&logind_error);
+-                } else if (g_error_matches (logind_error, G_DBUS_ERROR,
+-                                            G_DBUS_ERROR_UNKNOWN_METHOD)) {
+-                        /* systemd version is too old, so ignore.
+-                         */
+-                        g_clear_error (&logind_error);
+-                        g_clear_object (&backlight->logind_proxy);
+-                } else {
+-                        /* Fail on anything else */
+-                        g_clear_object (&backlight->logind_proxy);
+-                }
+-        }
+-
+-        if (logind_error) {
+-                g_warning ("No logind found: %s", logind_error->message);
+-                g_error_free (logind_error);
+-        }
+-
+         /* Try finding a udev device. */
+         if (gsd_backlight_udev_init (backlight))
+                 goto found;
+@@ -911,7 +849,6 @@ gsd_backlight_finalize (GObject *object)
+ #ifdef __linux__
+         g_assert (backlight->active_task == NULL);
+         g_assert (g_queue_is_empty (&backlight->tasks));
+-        g_clear_object (&backlight->logind_proxy);
+         g_clear_object (&backlight->udev);
+         g_clear_object (&backlight->udev_device);
+         if (backlight->idle_update) {
+-- 
+2.28.0
+
diff --git a/srcpkgs/gnome-settings-daemon/template b/srcpkgs/gnome-settings-daemon/template
index a70e28be5fa..b6da28e2554 100644
--- a/srcpkgs/gnome-settings-daemon/template
+++ b/srcpkgs/gnome-settings-daemon/template
@@ -1,10 +1,11 @@
 # Template file for 'gnome-settings-daemon'
 pkgname=gnome-settings-daemon
-version=3.34.1
-revision=2
+version=3.38.0
+revision=1
 build_style=meson
 configure_args+="-Dsystemd=false"
-hostmakedepends="cmake docbook-xsl glib-devel libglib-devel libxslt perl pkg-config"
+hostmakedepends="cmake docbook-xsl gettext glib-devel libglib-devel libxslt
+ perl pkg-config"
 makedepends="NetworkManager-devel alsa-lib-devel colord-devel cups-devel gcr-devel
  geoclue2-devel gnome-desktop-devel ibus-devel libcanberra-devel libgnomekbd-devel
  libgweather-devel libnotify-devel librsvg-devel libwacom-devel nss-devel
@@ -12,13 +13,13 @@ makedepends="NetworkManager-devel alsa-lib-devel colord-devel cups-devel gcr-dev
  xf86-input-wacom-devel"
 depends="hicolor-icon-theme pulseaudio"
 checkdepends="elogind libnotify python3-dbusmock python3-gobject
- python3-pycodestyle"
+ python3-pycodestyle which hwids eudev"
 short_desc="GNOME settings daemon"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gnome-settings-daemon"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=9981a20babf8da7744b7fbe175b9e36078bf08f3bf65fe5aedeb82cfe27ac11f
+checksum=b7ed5b5fab9aad192ceed6a95be2805124e3c63c46891bbae076f7ec3fd6792e
 
 if [ "$CROSS_BUILD" ]; then
 	hostmakedepends+=" polkit"

From 5bb06cbecda815225217a76cb397754ef5a4e778 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 039/104] mutter: update to 3.38.0

---
 common/shlibs                                 |  18 +-
 .../patches/fix-cogl-egl-includes.patch       |  11 -
 srcpkgs/mutter/patches/pipewire-0.3.patch     | 521 ------------------
 srcpkgs/mutter/template                       |  34 +-
 4 files changed, 29 insertions(+), 555 deletions(-)
 delete mode 100644 srcpkgs/mutter/patches/fix-cogl-egl-includes.patch
 delete mode 100644 srcpkgs/mutter/patches/pipewire-0.3.patch

diff --git a/common/shlibs b/common/shlibs
index df48841c5b5..f2a6e9957e4 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3002,15 +3002,15 @@ libdecoration.so.0 compiz-core-0.8.14_1
 libcompizconfig.so.0 libcompizconfig-0.8.14_1
 libemeraldengine.so.0 emerald-0.8.14_1
 libhangul.so.1 libhangul-0.1.0_1
-libmutter-5.so.0 mutter-3.34.1_1
-libmutter-clutter-5.so mutter-3.34.1_1
-libmutter-clutter-5.so.0 mutter-3.34.1_1
-libmutter-cogl-path-5.so mutter-3.34.1_1
-libmutter-cogl-path-5.so.0 mutter-3.34.1_1
-libmutter-cogl-5.so mutter-3.34.1_1
-libmutter-cogl-5.so.0 mutter-3.34.1_1
-libmutter-cogl-pango-5.so mutter-3.34.1_1
-libmutter-cogl-pango-5.so.0 mutter-3.34.1_1
+libmutter-7.so.0 mutter-3.37.90_1
+libmutter-clutter-7.so mutter-3.37.90_1
+libmutter-clutter-7.so.0 mutter-3.37.90_1
+libmutter-cogl-path-7.so mutter-3.37.90_1
+libmutter-cogl-path-7.so.0 mutter-3.37.90_1
+libmutter-cogl-7.so mutter-3.37.90_1
+libmutter-cogl-7.so.0 mutter-3.37.90_1
+libmutter-cogl-pango-7.so mutter-3.37.90_1
+libmutter-cogl-pango-7.so.0 mutter-3.37.90_1
 libgeoclue-2.so.0 geoclue2-2.4.4_1
 libgepub.so.0 libgepub-0.4_1
 libslopy.so.7.5 slop-7.5_1
diff --git a/srcpkgs/mutter/patches/fix-cogl-egl-includes.patch b/srcpkgs/mutter/patches/fix-cogl-egl-includes.patch
deleted file mode 100644
index d90988887c3..00000000000
--- a/srcpkgs/mutter/patches/fix-cogl-egl-includes.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- cogl/cogl/meson.build	2019-10-08 19:15:10.000000000 +0200
-+++ cogl/cogl/meson.build	2019-12-16 15:45:44.037640548 +0100
-@@ -48,7 +48,7 @@
- built_headers += [cogl_gl_header_h]
- 
- if have_egl
--  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>'
-+  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>\n#include <EGL/eglmesaext.h>'
- else
-   cogl_egl_includes_string = ''
- endif
diff --git a/srcpkgs/mutter/patches/pipewire-0.3.patch b/srcpkgs/mutter/patches/pipewire-0.3.patch
deleted file mode 100644
index ebff65fba85..00000000000
--- a/srcpkgs/mutter/patches/pipewire-0.3.patch
+++ /dev/null
@@ -1,521 +0,0 @@
-Build mutter against pipewire-0.3, based on a patch at:
-https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1062
---- meson.build
-+++ meson.build
-@@ -50,7 +50,7 @@ libinput_req = '>= 1.7'
- gbm_req = '>= 10.3'
-
- # screen cast version requirements
--libpipewire_req = '>= 0.2.5'
-+libpipewire_req = '>= 0.3.0'
-
- gnome = import('gnome')
- pkg = import('pkgconfig')
-@@ -241,7 +241,7 @@ endif
-
- have_remote_desktop = get_option('remote_desktop')
- if have_remote_desktop
--  libpipewire_dep = dependency('libpipewire-0.2', version: libpipewire_req)
-+  libpipewire_dep = dependency('libpipewire-0.3', version: libpipewire_req)
- endif
-
- have_introspection = get_option('introspection')
-diff --git a/src/backends/meta-screen-cast-stream-src.c b/src/backends/meta-screen-cast-stream-src.c
-index 82c5cba436..ba1ce94a7e 100644
---- src/backends/meta-screen-cast-stream-src.c
-+++ src/backends/meta-screen-cast-stream-src.c
-@@ -29,6 +29,7 @@
- #include <spa/param/props.h>
- #include <spa/param/format-utils.h>
- #include <spa/param/video/format-utils.h>
-+#include <spa/utils/result.h>
- #include <stdint.h>
- #include <sys/mman.h>
-
-@@ -62,15 +63,6 @@ enum
-
- static guint signals[N_SIGNALS];
-
--typedef struct _MetaSpaType
--{
--  struct spa_type_media_type media_type;
--  struct spa_type_media_subtype media_subtype;
--  struct spa_type_format_video format_video;
--  struct spa_type_video_format video_format;
--  uint32_t meta_cursor;
--} MetaSpaType;
--
- typedef struct _MetaPipeWireSource
- {
-   GSource base;
-@@ -82,19 +74,19 @@ typedef struct _MetaScreenCastStreamSrcPrivate
- {
-   MetaScreenCastStream *stream;
-
-+  struct pw_context *pipewire_context;
-   struct pw_core *pipewire_core;
--  struct pw_remote *pipewire_remote;
--  struct pw_type *pipewire_type;
-   MetaPipeWireSource *pipewire_source;
--  struct spa_hook pipewire_remote_listener;
-+  struct spa_hook pipewire_core_listener;
-
-   gboolean is_enabled;
-
-   struct pw_stream *pipewire_stream;
-   struct spa_hook pipewire_stream_listener;
-+  uint32_t node_id;
-
--  MetaSpaType spa_type;
-   struct spa_video_info_raw video_format;
-+  int video_stride;
-
-   uint64_t last_frame_timestamp_us;
-
-@@ -112,8 +104,6 @@ G_DEFINE_TYPE_WITH_CODE (MetaScreenCastStreamSrc,
-                                                 meta_screen_cast_stream_src_init_initable_iface)
-                          G_ADD_PRIVATE (MetaScreenCastStreamSrc))
-
--#define PROP_RANGE(min, max) 2, (min), (max)
--
- static void
- meta_screen_cast_stream_src_get_specs (MetaScreenCastStreamSrc *src,
-                                        int                     *width,
-@@ -286,9 +276,6 @@ meta_screen_cast_stream_src_set_empty_cursor_sprite_metadata (MetaScreenCastStre
-                                                               int                      x,
-                                                               int                      y)
- {
--  MetaScreenCastStreamSrcPrivate *priv =
--    meta_screen_cast_stream_src_get_instance_private (src);
--  MetaSpaType *spa_type = &priv->spa_type;
-   struct spa_meta_bitmap *spa_meta_bitmap;
-
-   spa_meta_cursor->id = 1;
-@@ -300,7 +287,7 @@ meta_screen_cast_stream_src_set_empty_cursor_sprite_metadata (MetaScreenCastStre
-   spa_meta_bitmap = SPA_MEMBER (spa_meta_cursor,
-                                 spa_meta_cursor->bitmap_offset,
-                                 struct spa_meta_bitmap);
--  spa_meta_bitmap->format = spa_type->video_format.RGBA;
-+  spa_meta_bitmap->format = SPA_VIDEO_FORMAT_RGBA;
-   spa_meta_bitmap->offset = sizeof (struct spa_meta_bitmap);
-
-   spa_meta_cursor->hotspot.x = 0;
-@@ -317,9 +304,6 @@ meta_screen_cast_stream_src_set_cursor_sprite_metadata (MetaScreenCastStreamSrc
-                                                         int                      y,
-                                                         float                    scale)
- {
--  MetaScreenCastStreamSrcPrivate *priv =
--    meta_screen_cast_stream_src_get_instance_private (src);
--  MetaSpaType *spa_type = &priv->spa_type;
-   CoglTexture *cursor_texture;
-   struct spa_meta_bitmap *spa_meta_bitmap;
-   int hotspot_x, hotspot_y;
-@@ -346,7 +330,7 @@ meta_screen_cast_stream_src_set_cursor_sprite_metadata (MetaScreenCastStreamSrc
-   spa_meta_bitmap = SPA_MEMBER (spa_meta_cursor,
-                                 spa_meta_cursor->bitmap_offset,
-                                 struct spa_meta_bitmap);
--  spa_meta_bitmap->format = spa_type->video_format.RGBA;
-+  spa_meta_bitmap->format = SPA_VIDEO_FORMAT_RGBA;
-   spa_meta_bitmap->offset = sizeof (struct spa_meta_bitmap);
-
-   meta_cursor_sprite_get_hotspot (cursor_sprite, &hotspot_x, &hotspot_y);
-@@ -382,12 +366,10 @@ static void
- add_cursor_metadata (MetaScreenCastStreamSrc *src,
-                      struct spa_buffer       *spa_buffer)
- {
--  MetaScreenCastStreamSrcPrivate *priv =
--    meta_screen_cast_stream_src_get_instance_private (src);
--  MetaSpaType *spa_type = &priv->spa_type;
-   struct spa_meta_cursor *spa_meta_cursor;
-
--  spa_meta_cursor = spa_buffer_find_meta (spa_buffer, spa_type->meta_cursor);
-+  spa_meta_cursor = spa_buffer_find_meta_data (spa_buffer, SPA_META_Cursor,
-+                                               sizeof (*spa_meta_cursor));
-   if (spa_meta_cursor)
-     meta_screen_cast_stream_src_set_cursor_metadata (src, spa_meta_cursor);
- }
-@@ -447,14 +429,14 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
-     {
-       data = spa_buffer->datas[0].data;
-     }
--  else if (spa_buffer->datas[0].type == priv->pipewire_type->data.MemFd)
-+  else if (spa_buffer->datas[0].type == SPA_DATA_MemFd)
-     {
-       map = mmap (NULL, spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
-                   PROT_READ | PROT_WRITE, MAP_SHARED,
-                   spa_buffer->datas[0].fd, 0);
-       if (map == MAP_FAILED)
-         {
--          g_warning ("Failed to mmap pipewire stream buffer: %s\n",
-+          g_warning ("Failed to mmap pipewire stream buffer: %s",
-                      strerror (errno));
-           return;
-         }
-@@ -469,28 +451,30 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
-
-   if (meta_screen_cast_stream_src_record_frame (src, data))
-     {
--      struct spa_meta_video_crop *spa_meta_video_crop;
-+      struct spa_meta_region *spa_meta_video_crop;
-
-       spa_buffer->datas[0].chunk->size = spa_buffer->datas[0].maxsize;
-+      spa_buffer->datas[0].chunk->stride = priv->video_stride;
-
-       /* Update VideoCrop if needed */
-       spa_meta_video_crop =
--        spa_buffer_find_meta (spa_buffer, priv->pipewire_type->meta.VideoCrop);
-+        spa_buffer_find_meta_data (spa_buffer, SPA_META_VideoCrop,
-+                                   sizeof (*spa_meta_video_crop));
-       if (spa_meta_video_crop)
-         {
-           if (meta_screen_cast_stream_src_get_videocrop (src, &crop_rect))
-             {
--              spa_meta_video_crop->x = crop_rect.x;
--              spa_meta_video_crop->y = crop_rect.y;
--              spa_meta_video_crop->width = crop_rect.width;
--              spa_meta_video_crop->height = crop_rect.height;
-+              spa_meta_video_crop->region.position.x = crop_rect.x;
-+              spa_meta_video_crop->region.position.y = crop_rect.y;
-+              spa_meta_video_crop->region.size.width = crop_rect.width;
-+              spa_meta_video_crop->region.size.height = crop_rect.height;
-             }
-           else
-             {
--              spa_meta_video_crop->x = 0;
--              spa_meta_video_crop->y = 0;
--              spa_meta_video_crop->width = priv->stream_width;
--              spa_meta_video_crop->height = priv->stream_height;
-+              spa_meta_video_crop->region.position.x = 0;
-+              spa_meta_video_crop->region.position.y = 0;
-+              spa_meta_video_crop->region.size.width = priv->stream_width;
-+              spa_meta_video_crop->region.size.height = priv->stream_height;
-             }
-         }
-     }
-@@ -555,7 +539,6 @@ on_stream_state_changed (void                 *data,
-   MetaScreenCastStreamSrc *src = data;
-   MetaScreenCastStreamSrcPrivate *priv =
-     meta_screen_cast_stream_src_get_instance_private (src);
--  uint32_t node_id;
-
-   switch (state)
-     {
-@@ -563,14 +546,12 @@ on_stream_state_changed (void                 *data,
-       g_warning ("pipewire stream error: %s", error_message);
-       meta_screen_cast_stream_src_notify_closed (src);
-       break;
--    case PW_STREAM_STATE_CONFIGURE:
--      node_id = pw_stream_get_node_id (priv->pipewire_stream);
--      g_signal_emit (src, signals[READY], 0, (unsigned int) node_id);
--      break;
--    case PW_STREAM_STATE_UNCONNECTED:
--    case PW_STREAM_STATE_CONNECTING:
--    case PW_STREAM_STATE_READY:
-     case PW_STREAM_STATE_PAUSED:
-+      if (priv->node_id == SPA_ID_INVALID && priv->pipewire_stream)
-+        {
-+          priv->node_id = pw_stream_get_node_id (priv->pipewire_stream);
-+          g_signal_emit (src, signals[READY], 0, (unsigned int) priv->node_id);
-+        }
-       if (meta_screen_cast_stream_src_is_enabled (src))
-         meta_screen_cast_stream_src_disable (src);
-       break;
-@@ -578,68 +559,69 @@ on_stream_state_changed (void                 *data,
-       if (!meta_screen_cast_stream_src_is_enabled (src))
-         meta_screen_cast_stream_src_enable (src);
-       break;
-+    case PW_STREAM_STATE_UNCONNECTED:
-+    case PW_STREAM_STATE_CONNECTING:
-+      break;
-     }
- }
-
- static void
--on_stream_format_changed (void                 *data,
--                          const struct spa_pod *format)
-+on_stream_param_changed (void                 *data,
-+                         uint32_t              id,
-+                         const struct spa_pod *format)
- {
-   MetaScreenCastStreamSrc *src = data;
-   MetaScreenCastStreamSrcPrivate *priv =
-     meta_screen_cast_stream_src_get_instance_private (src);
--  struct pw_type *pipewire_type = priv->pipewire_type;
-   uint8_t params_buffer[1024];
-   int32_t width, height, stride, size;
-   struct spa_pod_builder pod_builder;
-   const struct spa_pod *params[3];
-   const int bpp = 4;
-
--  if (!format)
--    {
--      pw_stream_finish_format (priv->pipewire_stream, 0, NULL, 0);
--      return;
--    }
-+  if (!format || id != SPA_PARAM_Format)
-+    return;
-
-   spa_format_video_raw_parse (format,
--                              &priv->video_format,
--                              &priv->spa_type.format_video);
-+                              &priv->video_format);
-
-   width = priv->video_format.size.width;
-   height = priv->video_format.size.height;
-   stride = SPA_ROUND_UP_N (width * bpp, 4);
-   size = height * stride;
-
-+  priv->video_stride = stride;
-+
-   pod_builder = SPA_POD_BUILDER_INIT (params_buffer, sizeof (params_buffer));
-
--  params[0] = spa_pod_builder_object (
-+  params[0] = spa_pod_builder_add_object (
-     &pod_builder,
--    pipewire_type->param.idBuffers, pipewire_type->param_buffers.Buffers,
--    ":", pipewire_type->param_buffers.size, "i", size,
--    ":", pipewire_type->param_buffers.stride, "i", stride,
--    ":", pipewire_type->param_buffers.buffers, "iru", 16, PROP_RANGE (2, 16),
--    ":", pipewire_type->param_buffers.align, "i", 16);
--
--  params[1] = spa_pod_builder_object (
-+    SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
-+    SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int (16, 2, 16),
-+    SPA_PARAM_BUFFERS_blocks, SPA_POD_Int (1),
-+    SPA_PARAM_BUFFERS_size, SPA_POD_Int (size),
-+    SPA_PARAM_BUFFERS_stride, SPA_POD_Int (stride),
-+    SPA_PARAM_BUFFERS_align, SPA_POD_Int (16));
-+
-+  params[1] = spa_pod_builder_add_object (
-     &pod_builder,
--    pipewire_type->param.idMeta, pipewire_type->param_meta.Meta,
--    ":", pipewire_type->param_meta.type, "I", pipewire_type->meta.VideoCrop,
--    ":", pipewire_type->param_meta.size, "i", sizeof (struct spa_meta_video_crop));
-+    SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
-+    SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop),
-+    SPA_PARAM_META_size, SPA_POD_Int (sizeof (struct spa_meta_region)));
-
--  params[2] = spa_pod_builder_object (
-+  params[2] = spa_pod_builder_add_object (
-     &pod_builder,
--    pipewire_type->param.idMeta, pipewire_type->param_meta.Meta,
--    ":", pipewire_type->param_meta.type, "I", priv->spa_type.meta_cursor,
--    ":", pipewire_type->param_meta.size, "i", CURSOR_META_SIZE (64, 64));
-+    SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
-+    SPA_PARAM_META_type, SPA_POD_Id (SPA_META_Cursor),
-+    SPA_PARAM_META_size, SPA_POD_Int (CURSOR_META_SIZE (64, 64)));
-
--  pw_stream_finish_format (priv->pipewire_stream, 0,
--                           params, G_N_ELEMENTS (params));
-+  pw_stream_update_params (priv->pipewire_stream, params, G_N_ELEMENTS (params));
- }
-
- static const struct pw_stream_events stream_events = {
-   PW_VERSION_STREAM_EVENTS,
-   .state_changed = on_stream_state_changed,
--  .format_changed = on_stream_format_changed,
-+  .param_changed = on_stream_param_changed,
- };
-
- static struct pw_stream *
-@@ -652,8 +634,6 @@ create_pipewire_stream (MetaScreenCastStreamSrc  *src,
-   uint8_t buffer[1024];
-   struct spa_pod_builder pod_builder =
-     SPA_POD_BUILDER_INIT (buffer, sizeof (buffer));
--  MetaSpaType *spa_type = &priv->spa_type;
--  struct pw_type *pipewire_type = priv->pipewire_type;
-   float frame_rate;
-   MetaFraction frame_rate_fraction;
-   struct spa_fraction max_framerate;
-@@ -661,7 +641,9 @@ create_pipewire_stream (MetaScreenCastStreamSrc  *src,
-   const struct spa_pod *params[1];
-   int result;
-
--  pipewire_stream = pw_stream_new (priv->pipewire_remote,
-+  priv->node_id = SPA_ID_INVALID;
-+
-+  pipewire_stream = pw_stream_new (priv->pipewire_core,
-                                    "meta-screen-cast-src",
-                                    NULL);
-   if (!pipewire_stream)
-@@ -682,17 +664,17 @@ create_pipewire_stream (MetaScreenCastStreamSrc  *src,
-   max_framerate = SPA_FRACTION (frame_rate_fraction.num,
-                                 frame_rate_fraction.denom);
-
--  params[0] = spa_pod_builder_object (
-+  params[0] = spa_pod_builder_add_object (
-     &pod_builder,
--    pipewire_type->param.idEnumFormat, pipewire_type->spa_format,
--    "I", spa_type->media_type.video,
--    "I", spa_type->media_subtype.raw,
--    ":", spa_type->format_video.format, "I", spa_type->video_format.BGRx,
--    ":", spa_type->format_video.size, "R", &SPA_RECTANGLE (priv->stream_width,
--                                                           priv->stream_height),
--    ":", spa_type->format_video.framerate, "F", &SPA_FRACTION (0, 1),
--    ":", spa_type->format_video.max_framerate, "Fru", &max_framerate,
--                                                      PROP_RANGE (&min_framerate,
-+    SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
-+    SPA_FORMAT_mediaType, SPA_POD_Id (SPA_MEDIA_TYPE_video),
-+    SPA_FORMAT_mediaSubtype, SPA_POD_Id (SPA_MEDIA_SUBTYPE_raw),
-+    SPA_FORMAT_VIDEO_format, SPA_POD_Id (SPA_VIDEO_FORMAT_BGRx),
-+    SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle (&SPA_RECTANGLE (priv->stream_width,
-+                                                              priv->stream_height)),
-+    SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)),
-+    SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_CHOICE_RANGE_Fraction (&max_framerate,
-+                                                                  &min_framerate,
-                                                                   &max_framerate));
-
-   pw_stream_add_listener (pipewire_stream,
-@@ -702,7 +684,7 @@ create_pipewire_stream (MetaScreenCastStreamSrc  *src,
-
-   result = pw_stream_connect (pipewire_stream,
-                               PW_DIRECTION_OUTPUT,
--                              NULL,
-+                              SPA_ID_INVALID,
-                               (PW_STREAM_FLAG_DRIVER |
-                                PW_STREAM_FLAG_MAP_BUFFERS),
-                               params, G_N_ELEMENTS (params));
-@@ -717,40 +699,18 @@ create_pipewire_stream (MetaScreenCastStreamSrc  *src,
- }
-
- static void
--on_state_changed (void                 *data,
--                  enum pw_remote_state  old,
--                  enum pw_remote_state  state,
--                  const char           *error_message)
-+on_core_error (void       *data,
-+               uint32_t    id,
-+	       int         seq,
-+	       int         res,
-+	       const char *message)
- {
-   MetaScreenCastStreamSrc *src = data;
--  MetaScreenCastStreamSrcPrivate *priv =
--    meta_screen_cast_stream_src_get_instance_private (src);
--  struct pw_stream *pipewire_stream;
--  GError *error = NULL;
-
--  switch (state)
--    {
--    case PW_REMOTE_STATE_ERROR:
--      g_warning ("pipewire remote error: %s\n", error_message);
--      meta_screen_cast_stream_src_notify_closed (src);
--      break;
--    case PW_REMOTE_STATE_CONNECTED:
--      pipewire_stream = create_pipewire_stream (src, &error);
--      if (!pipewire_stream)
--        {
--          g_warning ("Could not create pipewire stream: %s", error->message);
--          g_error_free (error);
--          meta_screen_cast_stream_src_notify_closed (src);
--        }
--      else
--        {
--          priv->pipewire_stream = pipewire_stream;
--        }
--      break;
--    case PW_REMOTE_STATE_UNCONNECTED:
--    case PW_REMOTE_STATE_CONNECTING:
--      break;
--    }
-+  g_warning ("pipewire remote error: id:%u %s", id, message);
-+
-+  if (id == PW_ID_CORE && res == -EPIPE)
-+    meta_screen_cast_stream_src_notify_closed (src);
- }
-
- static gboolean
-@@ -793,17 +753,6 @@ static GSourceFuncs pipewire_source_funcs =
-   pipewire_loop_source_finalize
- };
-
--static void
--init_spa_type (MetaSpaType         *type,
--               struct spa_type_map *map)
--{
--  spa_type_media_type_map (map, &type->media_type);
--  spa_type_media_subtype_map (map, &type->media_subtype);
--  spa_type_format_video_map (map, &type->format_video);
--  spa_type_video_format_map (map, &type->video_format);
--  type->meta_cursor = spa_type_map_get_id(map, SPA_TYPE_META__Cursor);
--}
--
- static MetaPipeWireSource *
- create_pipewire_source (void)
- {
-@@ -829,9 +778,9 @@ create_pipewire_source (void)
-   return pipewire_source;
- }
-
--static const struct pw_remote_events remote_events = {
--  PW_VERSION_REMOTE_EVENTS,
--  .state_changed = on_state_changed,
-+static const struct pw_core_events core_events = {
-+  PW_VERSION_CORE_EVENTS,
-+  .error = on_core_error,
- };
-
- static gboolean
-@@ -851,37 +800,31 @@ meta_screen_cast_stream_src_initable_init (GInitable     *initable,
-       return FALSE;
-     }
-
--  priv->pipewire_core = pw_core_new (priv->pipewire_source->pipewire_loop,
--                                     NULL);
--  if (!priv->pipewire_core)
-+  priv->pipewire_context = pw_context_new (priv->pipewire_source->pipewire_loop,
-+                                           NULL, 0);
-+  if (!priv->pipewire_context)
-     {
-       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
--                   "Failed to create pipewire core");
-+                   "Failed to create pipewire context");
-       return FALSE;
-     }
-
--  priv->pipewire_remote = pw_remote_new (priv->pipewire_core, NULL, 0);
--  if (!priv->pipewire_remote)
-+  priv->pipewire_core = pw_context_connect (priv->pipewire_context, NULL, 0);
-+  if (!priv->pipewire_core)
-     {
-       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
--                   "Couldn't creat pipewire remote");
-+                   "Couldn't connect pipewire context");
-       return FALSE;
-     }
-
--  pw_remote_add_listener (priv->pipewire_remote,
--                          &priv->pipewire_remote_listener,
--                          &remote_events,
--                          src);
-+  pw_core_add_listener (priv->pipewire_core,
-+                        &priv->pipewire_core_listener,
-+                        &core_events,
-+                        src);
-
--  priv->pipewire_type = pw_core_get_type (priv->pipewire_core);
--  init_spa_type (&priv->spa_type, priv->pipewire_type->map);
--
--  if (pw_remote_connect (priv->pipewire_remote) != 0)
--    {
--      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
--                   "Couldn't connect pipewire remote");
--      return FALSE;
--    }
-+  priv->pipewire_stream = create_pipewire_stream (src, error);
-+  if (!priv->pipewire_stream)
-+    return FALSE;
-
-   return TRUE;
- }
-@@ -912,8 +855,8 @@ meta_screen_cast_stream_src_finalize (GObject *object)
-     meta_screen_cast_stream_src_disable (src);
-
-   g_clear_pointer (&priv->pipewire_stream, pw_stream_destroy);
--  g_clear_pointer (&priv->pipewire_remote, pw_remote_destroy);
--  g_clear_pointer (&priv->pipewire_core, pw_core_destroy);
-+  g_clear_pointer (&priv->pipewire_core, pw_core_disconnect);
-+  g_clear_pointer (&priv->pipewire_context, pw_context_destroy);
-   g_source_destroy (&priv->pipewire_source->base);
-
-   G_OBJECT_CLASS (meta_screen_cast_stream_src_parent_class)->finalize (object);
diff --git a/srcpkgs/mutter/template b/srcpkgs/mutter/template
index 806a3bef9f0..479284034ea 100644
--- a/srcpkgs/mutter/template
+++ b/srcpkgs/mutter/template
@@ -1,34 +1,40 @@
 # Template file for 'mutter'
 pkgname=mutter
-version=3.34.1
-revision=3
+version=3.38.0
+revision=1
 build_helper="gir"
 build_style=meson
 configure_args="-Degl_device=true -Dudev=true -Dnative_backend=true
- -Dprofiler=false -Dintrospection=true -Dxwayland_path=/usr/bin/Xwayland"
+ -Dprofiler=false -Dintrospection=true -Dxwayland_path=/usr/bin/Xwayland
+ -Dxwayland_initfd=disabled"
 hostmakedepends="gettext glib-devel pkg-config zenity wayland-devel xorg-server"
-makedepends="elogind-devel glib-devel gnome-desktop-devel json-glib-devel
- libglib-devel libSM-devel libXtst-devel libcanberra-devel libinput-devel
- MesaLib-devel pipewire-devel startup-notification-devel wayland-protocols
- gnome-settings-daemon-devel"
-depends="desktop-file-utils zenity"
+makedepends="elogind-devel glib-devel gnome-desktop-devel graphene-devel
+ json-glib-devel libglib-devel libSM-devel libXtst-devel libcanberra-devel
+ libinput-devel MesaLib-devel pipewire-devel startup-notification-devel
+ wayland-protocols gnome-settings-daemon-devel"
+depends="gsettings-desktop-schemas desktop-file-utils zenity"
 short_desc="Lightweight GTK+3 window manager"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/Mutter/"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=ba1826cf88bdb81e63943cac014a8e8bcf35ec178c53264401f9c72fdeab758e
-shlib_provides="libmutter-clutter-5.so libmutter-cogl-5.so
- libmutter-cogl-pango-5.so libmutter-cogl-path-5.so"
+checksum=058ed13d102085d3e9b6fa5564c66050a478c364a0cc55bc844fea3ddcd90eab
+shlib_provides="libmutter-clutter-7.so libmutter-cogl-7.so
+ libmutter-cogl-pango-7.so libmutter-cogl-path-7.so"
+
+# needs X
+do_check() {
+	:
+}
 
 mutter-devel_package() {
-	depends="gsettings-desktop-schemas gtk+3-devel clutter-devel libX11-devel
-	 libXtst-devel mutter-${version}_${revision}"
+	depends="gtk+3-devel graphene-devel clutter-devel
+	 libX11-devel libXtst-devel mutter-${version}_${revision}"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
-		vmove "usr/lib/mutter-5/*.gir"
+		vmove "usr/lib/mutter-7/*.gir"
 		vmove "usr/lib/*.so"
 	}
 }

From db0a48a8fd99dcfaca1785f7247d6d76c956ac2e Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 040/104] cheese: update to 3.38.0

---
 srcpkgs/cheese/template | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/srcpkgs/cheese/template b/srcpkgs/cheese/template
index 7a56ba039fb..faa329ee0e4 100644
--- a/srcpkgs/cheese/template
+++ b/srcpkgs/cheese/template
@@ -1,11 +1,10 @@
 # Template file for 'cheese'
 pkgname=cheese
-version=3.34.0
+version=3.38.0
 revision=1
 build_style=meson
 build_helper="gir"
-configure_args="-Dgtk_doc=$(vopt_if gtk_doc 'true' 'false')
- -Dman=$(vopt_if gtk_doc 'true' 'false')"
+configure_args="$(vopt_bool gtk_doc gtk_doc) $(vopt_bool gtk_doc man)"
 hostmakedepends="gettext gdk-pixbuf glib-devel itstool pkg-config vala librsvg
  $(vopt_if gtk_doc 'gtk-doc') $(vopt_if gir 'gobject-introspection')"
 makedepends="clutter-gst3-devel clutter-gtk-devel gnome-desktop-devel
@@ -17,7 +16,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Cheese"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=d1865600ac88012e136b1ec3db72a4634f57bc2035895277be792bb078627e73
+checksum=88d2732b421b903110a2628db25c0d61e219c42bdfb5971151033fba95a8d16f
 
 build_options="gir gtk_doc"
 build_options_default="gir"
@@ -37,11 +36,8 @@ libcheese_package() {
 }
 
 cheese-devel_package() {
-	depends="gst-plugins-bad1-devel
-		 clutter-gst3-devel
-		 clutter-gtk-devel
-		 libcanberra-devel
-		 libcheese>=${version}_${revision}"
+	depends="gst-plugins-bad1-devel clutter-gst3-devel clutter-gtk-devel
+	 libcanberra-devel libcheese>=${version}_${revision}"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include

From 07f2be8d644abf4f755c3729f91e0a8f0ec7c46a Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 041/104] evolution-data-server: update to 3.38.0

---
 common/shlibs                          |  2 +-
 srcpkgs/evolution-data-server/template | 25 +++++++++++++++----------
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index f2a6e9957e4..41c6eb80214 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -626,7 +626,7 @@ libicalss_cxx.so.3 libical-3.0.4_1
 libicalvcal.so.3 libical-3.0.4_1
 libical-glib.so.3 libical-3.0.4_1
 libcamel-1.2.so.62 evolution-data-server-3.30.0_1
-libedataserver-1.2.so.24 evolution-data-server-3.32.0_1
+libedataserver-1.2.so.25 evolution-data-server-3.37.90_1
 libebackend-1.2.so.10 evolution-data-server-3.17.90_1
 libedataserverui-1.2.so.2 evolution-data-server-3.28.0_1
 libebook-contacts-1.2.so.3 evolution-data-server-3.34.0_1
diff --git a/srcpkgs/evolution-data-server/template b/srcpkgs/evolution-data-server/template
index e50292a43ea..8ccf9cb6eb0 100644
--- a/srcpkgs/evolution-data-server/template
+++ b/srcpkgs/evolution-data-server/template
@@ -1,29 +1,34 @@
 # Template file for 'evolution-data-server'
 pkgname=evolution-data-server
-version=3.36.1
-revision=3
+version=3.38.0
+revision=1
 build_style=cmake
-build_helper=gir
+build_helper="gir qemu"
 configure_args="-DENABLE_UOA=OFF
- $(vopt_if gir '-DENABLE_INTROSPECTION=ON -DENABLE_VALA_BINDINGS=ON' '-DENABLE_WEATHER=OFF')"
-hostmakedepends="flex glib-devel gperf intltool pkg-config libglib-devel
- $(vopt_if gir 'gobject-introspection')"
-makedepends="boost-devel libcanberra-devel libgdata-devel $(vopt_if gir libgweather-devel)
- libical-devel libsecret-devel mit-krb5-devel $(vopt_if gir 'vala-devel') webkit2gtk-devel"
-depends="$(vopt_if gir libgweather) libsoup-gnome"
+ $(vopt_if gir '-DENABLE_INTROSPECTION=ON -DENABLE_VALA_BINDINGS=ON')"
+hostmakedepends="flex glib-devel gperf intltool pkg-config libglib-devel"
+makedepends="boost-devel libcanberra-devel libgdata-devel libical-devel
+ libsecret-devel mit-krb5-devel webkit2gtk-devel libgweather-devel
+ $(vopt_if gir vala-devel)"
+depends="libgweather libsoup-gnome"
 short_desc="Centralized access to appointments and contacts"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-only"
 homepage="https://wiki.gnome.org/Apps/Evolution"
 changelog="https://raw.githubusercontent.com/GNOME/evolution-data-server/gnome-3-36/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=13122b2edddb98306207d2a35d5ccae25a90702769ca0a0b51653b5984986796
+checksum=13689a7b55765806c4d5f3b05ef6c24b0bf9957b9ed9240c2dd09a2cdb13b0af
 
 build_options="gir"
 if [ -z "$CROSS_BUILD" ]; then
 	build_options_default="gir"
 fi
 
+# problematic
+do_check() {
+	:
+}
+
 # cmake perfomrms 2 checks using binary runtime, about iconv and sfrtime.
 # musl (1.1.16) does not support "ISO-2022-JP" encoding (see its roadmap),
 # although evolution-data-server is fine with musl.

From 93ebabab52c163d5039dec9638a574fb24207436 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 042/104] folks: update to 0.14.0

---
 common/shlibs          |  7 ++++---
 srcpkgs/folks/template | 28 ++++++++++++++++++----------
 2 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 41c6eb80214..33d2a35fa04 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -831,9 +831,10 @@ libdmr.so.0.1 deepin-movie-reborn-3.2.5_1
 libgjs.so.0 gjs-1.65.2_1
 libtelepathy-glib.so.0 telepathy-glib-0.15.5_1
 libaccountsservice.so.0 accountsservice-0.6.4_1
-libfolks.so.25 folks-0.9.5_1
-libfolks-telepathy.so.25 folks-0.9.5_1
-libfolks-eds.so.25 folks-0.9.5_1
+libfolks.so.25 folks-0.14.0_1
+libfolks-dummy.so.25 folks-0.14.0_1
+libfolks-telepathy.so.25 folks-0.14.0_1
+libfolks-eds.so.25 folks-0.14.0_1
 libnice.so.10 libnice-0.1.0_1
 libgupnp-igd-1.0.so.4 gupnp-igd-0.2.0_1
 libtelepathy-logger.so.3 telepathy-logger-0.6.0_1
diff --git a/srcpkgs/folks/template b/srcpkgs/folks/template
index 3310c54fadd..b076b94bea2 100644
--- a/srcpkgs/folks/template
+++ b/srcpkgs/folks/template
@@ -1,21 +1,27 @@
 # Template file for 'folks'
 pkgname=folks
-version=0.13.1
-revision=2
+version=0.14.0
+revision=1
 build_style=meson
-build_helper=gir
-configure_args="-Db_lto=false -Dlibsocialweb-backend=false"
-hostmakedepends="pkg-config intltool glib-devel vala python gobject-introspection
- evolution-data-server-devel"
+build_helper="gir qemu"
+configure_args="-Db_lto=false"
+hostmakedepends="pkg-config intltool glib-devel python3 python3-dbusmock
+ evolution-data-server-devel $(vopt_if gir vala)"
 makedepends="readline-devel telepathy-glib-devel zeitgeist-devel
- libgee08-devel evolution-data-server-devel tracker-devel"
+ libgee08-devel evolution-data-server-devel tracker-devel
+ $(vopt_if gir vala-devel)"
 depends="zeitgeist"
 short_desc="GObject Library to aggregate people into metacontacts"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/Folks"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=3df1c663b82fe211aead2b31cae1fc41d124e85436375762f6745c45ba46aa5d
+checksum=d6e778da637d3b33fd9a6b45115e8157d8868211dc08b943d1075b5eb7282bb9
+
+build_options="gir"
+if [ -z "$CROSS_BUILD" ]; then
+	build_options_default="gir"
+fi
 
 folks-devel_package() {
 	depends="${makedepends} ${sourcepkg}>=${version}_${revision}"
@@ -24,7 +30,9 @@ folks-devel_package() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
 		vmove "usr/lib/*.so"
-		vmove usr/share/vala
-		vmove usr/share/gir-1.0
+		if [ "$build_option_gir" ]; then
+			vmove usr/share/gir-1.0
+			vmove usr/share/vala
+		fi
 	}
 }

From 018398c0eaeee33c6c0322769d29c315ce692b7d Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 043/104] gnome-online-accounts: update to 3.37.90

---
 srcpkgs/gnome-online-accounts/template | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/srcpkgs/gnome-online-accounts/template b/srcpkgs/gnome-online-accounts/template
index 193a7f9b43f..29980d43424 100644
--- a/srcpkgs/gnome-online-accounts/template
+++ b/srcpkgs/gnome-online-accounts/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-online-accounts'
 pkgname=gnome-online-accounts
-version=3.36.0
-revision=2
+version=3.37.90
+revision=1
 build_style=gnu-configure
 build_helper="gir"
 configure_args="$(vopt_enable gir introspection)
@@ -11,7 +11,7 @@ configure_args="$(vopt_enable gir introspection)
  --enable-owncloud --enable-windows-live --enable-pocket
  --enable-lastfm --enable-media-server"
 hostmakedepends="docbook-xsl gettext-devel glib-devel gnome-common
- libxslt pkg-config $(vopt_if vala vala)"
+ libxslt pkg-config $(vopt_if gir vala)"
 makedepends="gcr-devel gtk+3-devel json-glib-devel libnotify-devel libsecret-devel
  libsoup-devel mit-krb5-devel rest-devel telepathy-glib-devel webkit2gtk-devel"
 depends="hicolor-icon-theme"
@@ -20,10 +20,10 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/GnomeOnlineAccounts"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=1c8f62990833ca41188dbb80c5e99d99b57a62608ca675bbcd37bc2244742f2e
+checksum=9f6982c896e6235a2e85b8a497c7bf63a4a288b5678db40dc373515efbedb1bb
 
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
 
 gnome-online-accounts-devel_package() {
 	depends="gtk+3-devel ${sourcepkg}>=${version}_${revision}"
@@ -35,8 +35,6 @@ gnome-online-accounts-devel_package() {
 		vmove usr/lib/goa-1.0
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 	}

From 7cd982713e53b707b86f0f8083dea7d19f0c21b6 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 21:10:44 +0200
Subject: [PATCH 044/104] gvfs: update to 1.46.0

---
 srcpkgs/gvfs/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/gvfs/template b/srcpkgs/gvfs/template
index 127a0577901..6107023c21e 100644
--- a/srcpkgs/gvfs/template
+++ b/srcpkgs/gvfs/template
@@ -1,6 +1,6 @@
 # Template file for 'gvfs'
 pkgname=gvfs
-version=1.44.1
+version=1.46.0
 revision=1
 build_style=meson
 configure_args="-Dsystemduserunitdir=no -Dtmpfilesdir=no -Dlogind=false
@@ -20,7 +20,7 @@ license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/gvfs"
 changelog="https://gitlab.gnome.org/GNOME/gvfs/raw/gnome-3-34/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=50ef3245d1b03666a40455109169a2a1bd51419fd2d51f9fa6cfd4f89f04fb46
+checksum=78ba73a6da09a21ce3acc776b46c26dd5bea216463a65d65b4052a57f5d970e9
 
 # Manually declare shlibs used by the subpkgs.
 shlib_provides="libgvfscommon.so libgvfsdaemon.so"

From b57995d9b0a2bd1754e30d324293ca96f03a00e4 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 045/104] gnome-control-center: update to 3.38.0

---
 srcpkgs/NetworkManager/template               |  2 +
 .../gnome-control-center/patches/nm122.patch  | 38 +++++++++++++++++++
 srcpkgs/gnome-control-center/template         | 24 +++++++-----
 3 files changed, 54 insertions(+), 10 deletions(-)
 create mode 100644 srcpkgs/gnome-control-center/patches/nm122.patch

diff --git a/srcpkgs/NetworkManager/template b/srcpkgs/NetworkManager/template
index edeb8278579..e482bba98de 100644
--- a/srcpkgs/NetworkManager/template
+++ b/srcpkgs/NetworkManager/template
@@ -1,4 +1,6 @@
 # Template file for 'NetworkManager'
+# when updating to 1.24 or newer, drop the compat
+# patch in gnome-control-center and rebuild it
 pkgname=NetworkManager
 version=1.22.10
 revision=2
diff --git a/srcpkgs/gnome-control-center/patches/nm122.patch b/srcpkgs/gnome-control-center/patches/nm122.patch
new file mode 100644
index 00000000000..833fed3968e
--- /dev/null
+++ b/srcpkgs/gnome-control-center/patches/nm122.patch
@@ -0,0 +1,38 @@
+From 4159f984bd351caf6f0e1adbd90feeb85ab252f4 Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Wed, 16 Sep 2020 22:02:04 +0200
+Subject: [PATCH] restore compatibility with networkmanager 1.22
+
+drop this patch and rebuild gnome-control-center when updating nm
+---
+ panels/network/net-device-wifi.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git panels/network/net-device-wifi.c panels/network/net-device-wifi.c
+index cb86e5b..d63c57c 100644
+--- panels/network/net-device-wifi.c
++++ panels/network/net-device-wifi.c
+@@ -1180,11 +1180,6 @@ nm_client_on_permission_change (NetDeviceWifi *self) {
+         NMClientPermissionResult perm;
+         NMDeviceWifiCapabilities caps;
+ 
+-        if (nm_client_get_permissions_state (self->client) != NM_TERNARY_TRUE) {
+-                /* permissions aren't ready yet */
+-                return;
+-        }
+-
+         /* only enable the button if the user can create a hotspot */
+         perm = nm_client_get_permission_result (self->client, NM_CLIENT_PERMISSION_WIFI_SHARE_OPEN);
+         caps = nm_device_wifi_get_capabilities (NM_DEVICE_WIFI (self->device));
+@@ -1227,8 +1222,6 @@ net_device_wifi_new (CcPanel *panel, NMClient *client, NMDevice *device)
+                                  G_CALLBACK (ap_activated), self, G_CONNECT_SWAPPED);
+         g_signal_connect_object (list, "configure",
+                                  G_CALLBACK (show_details_for_row), self, G_CONNECT_SWAPPED);
+-        g_signal_connect_object (client, "notify",
+-                                 G_CALLBACK(nm_client_on_permission_change), self, G_CONNECT_SWAPPED);
+ 
+         nm_client_on_permission_change(self);
+ 
+-- 
+2.28.0
+
diff --git a/srcpkgs/gnome-control-center/template b/srcpkgs/gnome-control-center/template
index 9fdb853afbf..191101afaad 100644
--- a/srcpkgs/gnome-control-center/template
+++ b/srcpkgs/gnome-control-center/template
@@ -1,22 +1,22 @@
 # Template file for 'gnome-control-center'
 pkgname=gnome-control-center
-version=3.34.1
-revision=2
+version=3.38.0
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Dcheese=$(vopt_if cheese true false)"
-hostmakedepends="glib-devel gsettings-desktop-schemas-devel intltool pkg-config polkit
- python3"
+hostmakedepends="glib-devel gsettings-desktop-schemas-devel intltool pkg-config
+ polkit python3"
 makedepends="ModemManager-devel accountsservice-devel alsa-plugins
  colord-gtk-devel gnome-bluetooth-devel gnome-desktop-devel gnome-menus-devel
  gnome-online-accounts-devel gnome-settings-daemon-devel grilo-devel ibus-devel
- libSM-devel libXxf86misc-devel libgnomekbd-devel libgtop-devel
+ libSM-devel libXxf86misc-devel libgnomekbd-devel libgtop-devel libhandy1-devel
  libpwquality-devel mit-krb5-devel network-manager-applet-devel polkit-devel
  pulseaudio-devel samba-devel tzdata upower-devel vala-devel clutter-gtk-devel
  libxml2-devel libX11-devel gtk+3-devel cups-devel libgudev-devel libwacom-devel
  clutter-devel libsecret-devel libcanberra-devel udisks2-devel gsound-devel
  $(vopt_if cheese cheese-devel)"
-depends="alsa-plugins-pulseaudio desktop-file-utils
+depends="alsa-plugins-pulseaudio desktop-file-utils upower colord cups-pk-helper
  gsettings-desktop-schemas hicolor-icon-theme iso-codes sound-theme-freedesktop
  cracklib"
 short_desc="GNOME control center"
@@ -24,13 +24,17 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gnome-control-center"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=5f82ecd5554136c462248ec5363b82d95358b39dfd6787006d8307b4504e515e
+checksum=f6b6b5b8ef9c38d895ba5af87f31adae02194ad86c9aa6cff2d2b9755c2db1da
 
 build_options="cheese"
+build_options_default="cheese"
+
 desc_option_cheese="Add support for adding user account images with your webcam"
-if [ -z "$CROSS_BUILD" ]; then
-	build_options_default+=" cheese"
-fi
+
+# needs X11 and requires altered filesystem
+do_check() {
+	:
+}
 
 CFLAGS="-fcommon"
 

From d1fa82a91d3d0561f2d3ee6f054fa148f44e6bbc Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 046/104] dconf-editor: update to 3.38.0

---
 srcpkgs/dconf-editor/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/dconf-editor/template b/srcpkgs/dconf-editor/template
index de250bbc8a9..23252b9f74e 100644
--- a/srcpkgs/dconf-editor/template
+++ b/srcpkgs/dconf-editor/template
@@ -1,13 +1,13 @@
 # Template file for 'dconf-editor'
 pkgname=dconf-editor
-version=3.36.0
+version=3.38.0
 revision=1
 build_style=meson
-hostmakedepends="docbook-xsl glib-devel libxslt pkg-config vala"
+hostmakedepends="docbook-xsl glib-devel libxslt pkg-config vala gettext"
 makedepends="dconf-devel gtk+3-devel"
 short_desc="Low-level configuration system - GTK+ editor"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Projects/dconf"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=72eed05670917f8e43200e40ccc6be60211f0a87b017534eac1fd6c7173a0693
+checksum=6d89249a379082de6a8e95a2a202d0ca5fe1c9776bc0d5d3ef065567d8183eb4

From 1219dd9387b3cf083658ed84316ecb82c127a911 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 06:42:02 +0200
Subject: [PATCH 047/104] gjs: update to 1.66.0

---
 srcpkgs/gjs/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gjs/template b/srcpkgs/gjs/template
index ec48baddf11..8a133dd8048 100644
--- a/srcpkgs/gjs/template
+++ b/srcpkgs/gjs/template
@@ -1,27 +1,27 @@
 # Template file for 'gjs'
 pkgname=gjs
-version=1.65.2
+version=1.66.0
 revision=1
 build_style=meson
 build_helper="gir qemu"
 configure_args="-Dskip_dbus_tests=true -Dskip_gtk_tests=true
  -Dprofiler=disabled -Dinstalled_tests=false" # Disable tests because they need dbus, X and GTK.
 hostmakedepends="glib-devel pkg-config"
-makedepends="dbus-glib-devel mozjs68-devel readline-devel sysprof-devel"
+makedepends="dbus-glib-devel mozjs78-devel readline-devel sysprof-devel"
 short_desc="Mozilla-based javascript bindings for the GNOME platform"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="MIT, LGPL-2.0-or-later"
 homepage="https://wiki.gnome.org/action/show/Projects/Gjs"
 changelog="https://gitlab.gnome.org/GNOME/gjs/blob/gnome-3-30/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=a66edad8a5f10027f9b182d88af84b81f13e5ad5840319cfa747d66e77e0214f
+checksum=f30cf90e016db6c8fdd0059749559611760f0721f375b2b61e0b7239b43ab5f8
 
 post_install() {
 	vlicense COPYING
 }
 
 gjs-devel_package() {
-	depends="libgirepository-devel mozjs68-devel ${sourcepkg}>=${version}_${revision}"
+	depends="libgirepository-devel mozjs78-devel ${sourcepkg}>=${version}_${revision}"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include

From 4cb7fcd7391bb8435411d201cc6246a425aee6fc Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 048/104] gnome-shell: update to 3.38.0

---
 srcpkgs/gnome-shell/template | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-shell/template b/srcpkgs/gnome-shell/template
index 96c5b80a194..f27795572ef 100644
--- a/srcpkgs/gnome-shell/template
+++ b/srcpkgs/gnome-shell/template
@@ -1,12 +1,12 @@
 # Template file for 'gnome-shell'
 pkgname=gnome-shell
-version=3.34.1
+version=3.38.0
 revision=1
 build_style=meson
 build_helper=gir
 configure_args="-Dsystemd=false"
 hostmakedepends="gobject-introspection gtk-doc libxslt pkg-config python3 sassc
- asciidoc perl glib-devel mutter-devel"
+ asciidoc perl glib-devel mutter-devel gettext gjs-devel"
 makedepends="at-spi2-atk caribou-devel evolution-data-server-devel folks-devel
  gcr-devel gjs-devel gnome-bluetooth-devel gnome-control-center-devel gnome-desktop-devel
  gnome-menus-devel gsettings-desktop-schemas-devel gstreamer1-devel gtk+3-devel
@@ -21,4 +21,9 @@ license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/GnomeShell"
 changelog="https://raw.githubusercontent.com/GNOME/gnome-shell/gnome-3-30/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=ccd86559b9c897c219d2d2ebfdb8413efa4c1bee846427c750cb8a301b3f6d1e
+checksum=c626403bc0875ee6da8c7a62ac0cee312badb523af073cb166125015a75a0a97
+
+# needs X
+do_check() {
+	:
+}

From af7c9d780af016d09f5d9d61bcec56f89f1db98e Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 049/104] gnome-shell-extensions: update to 3.38.0

---
 srcpkgs/gnome-shell-extensions/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-shell-extensions/template b/srcpkgs/gnome-shell-extensions/template
index 97168b40f66..e4930384fd4 100644
--- a/srcpkgs/gnome-shell-extensions/template
+++ b/srcpkgs/gnome-shell-extensions/template
@@ -1,15 +1,15 @@
 # Template file for 'gnome-shell-extensions'
 pkgname=gnome-shell-extensions
-version=3.34.1
+version=3.38.0
 revision=1
 archs=noarch
 build_style=meson
 configure_args="-Dextension_set=all"
-hostmakedepends="pkg-config"
+hostmakedepends="pkg-config gettext"
 depends="gnome-shell>=${version} nautilus unzip"
 short_desc="Extensions for GNOME shell, including classic mode"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/GnomeShell/Extensions"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=b0ad51143b1bf40def4a10f8fd0ab0ffb47218304800794e62cadd29d0acc75b
+checksum=f726f85bb398b082ad09a7ded306f22bd25d25898c7f18bd775df66400d3919f

From fc9d40d1e9458eee50267f877d5a253e0f15f634 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 050/104] gdm: update to 3.38.0

---
 srcpkgs/gdm/patches/take-out-the-trash.patch | 23 +++++++++++++++++
 srcpkgs/gdm/template                         | 26 +++++++++++---------
 2 files changed, 37 insertions(+), 12 deletions(-)
 create mode 100644 srcpkgs/gdm/patches/take-out-the-trash.patch

diff --git a/srcpkgs/gdm/patches/take-out-the-trash.patch b/srcpkgs/gdm/patches/take-out-the-trash.patch
new file mode 100644
index 00000000000..6927c7277b1
--- /dev/null
+++ b/srcpkgs/gdm/patches/take-out-the-trash.patch
@@ -0,0 +1,23 @@
+--- meson.build
++++ meson.build
+@@ -94,19 +94,8 @@ if xdmcp_dep.found() and get_option('tcp-wrappers')
+   libwrap_dep = cc.find_library('libwrap')
+ endif
+ # systemd
+-systemd_dep = dependency('systemd')
+ libsystemd_dep = dependency('libsystemd')
+-if meson.version().version_compare('>= 0.53')
+-  systemd_multiseat_x = find_program('systemd-multi-seat-x',
+-    required: false,
+-    dirs: [
+-      systemd_dep.get_pkgconfig_variable('systemdutildir'),
+-      '/lib/systemd',
+-      '/usr/lib/systemd',
+-    ])
+-else
+-  systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
+-endif
++systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
+ systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
+ # Plymouth
+ plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
diff --git a/srcpkgs/gdm/template b/srcpkgs/gdm/template
index bb5b48692d4..118881e4c4c 100644
--- a/srcpkgs/gdm/template
+++ b/srcpkgs/gdm/template
@@ -1,27 +1,28 @@
 # Template file for 'gdm'
 pkgname=gdm
-version=3.34.1
+version=3.38.0
 revision=1
 build_helper="gir"
-build_style=gnu-configure
-configure_args="$(vopt_enable gir introspection)
- --disable-schemas-compile --disable-static --with-default-pam-config=arch
- --with-at-spi-registryd-directory=/usr/libexec --without-tcp-wrappers
- --with-screenshot-dir=/var/lib/gdm/greeter --sbindir=/usr/bin --without-plymouth
- --with-xauth-dir=/run/gdm --with-pid-file=/run/gdm/gdm.pid
- --disable-systemd-journal --with-initial-vt=7 --enable-wayland-support"
+build_style=meson
+configure_args="
+ -Ddefault-pam-config=arch -Dat-spi-registryd-dir=/usr/libexec
+ -Dtcp-wrappers=false -Dscreenshot-dir=/var/lib/gdm/greeter
+ -Dplymouth=disabled -Dxauth-dir=/run/gdm -Dpid-file=/run/gdm/gdm.pid
+ -Dsystemd-journal=false -Dinitial-vt=7 -Dwayland-support=true
+ -Dselinux=disabled -Dlibaudit=disabled
+ -Dsystemdsystemunitdir=/tmp -Dsystemduserunitdir=/tmp"
 hostmakedepends="dconf gettext itstool pkg-config"
 makedepends="accountsservice-devel elogind-devel gettext-devel glib-devel
  iso-codes libSM-devel libcanberra-devel nss-devel pam-devel upower-devel"
-depends="gnome-settings-daemon gnome-shell xorg-server xorg-server-xwayland
- xrdb"
+depends="gnome-settings-daemon gnome-shell gnome-session gnome-themes-extra
+ gsettings-desktop-schemas xorg-server xorg-server-xwayland xrdb"
 checkdepends="check-devel"
 short_desc="GNOME Display Manager"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/GDM"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=e85df657aa8d9361af4fb122014d8f123a93bfe45a7662fba2b373d839dbd8d3
+checksum=46d4415c39c94ccee81fbac21102e2ebcd284d39858c893e759900b1e88435ba
 
 conf_files="
 	/etc/gdm/custom.conf
@@ -47,6 +48,7 @@ post_install() {
 	vinstall $FILESDIR/Xsession 755 etc/gdm
 
 	vsed -i "s/pam_systemd\.so/pam_elogind.so/" $DESTDIR/etc/pam.d/*
+	rm -rf ${DESTDIR}/tmp
 
 	# runit service
 	vsv gdm
@@ -60,7 +62,7 @@ libgdm_package() {
 }
 
 gdm-devel_package() {
-	depends="libgdm>=${version}_${revision}"
+	depends="libgdm>=${version}_${revision} elogind-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include

From f1fb072d435ab7c2cb3756d0b8a0e43e2c65ae49 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 051/104] gnome-session: update to 3.38.0

---
 ...-app-Strip-blacklisted-variables-fro.patch | 67 +++++++++++++++++++
 .../patches/no-systemd-dep.patch              | 14 ++++
 srcpkgs/gnome-session/template                | 10 ++-
 3 files changed, 88 insertions(+), 3 deletions(-)
 create mode 100644 srcpkgs/gnome-session/patches/0001-revert-autostart-app-Strip-blacklisted-variables-fro.patch
 create mode 100644 srcpkgs/gnome-session/patches/no-systemd-dep.patch

diff --git a/srcpkgs/gnome-session/patches/0001-revert-autostart-app-Strip-blacklisted-variables-fro.patch b/srcpkgs/gnome-session/patches/0001-revert-autostart-app-Strip-blacklisted-variables-fro.patch
new file mode 100644
index 00000000000..cfd9f4ba6cf
--- /dev/null
+++ b/srcpkgs/gnome-session/patches/0001-revert-autostart-app-Strip-blacklisted-variables-fro.patch
@@ -0,0 +1,67 @@
+From 1de3575a1ea9cdb3579ad538108c51818847797c Mon Sep 17 00:00:00 2001
+From: Rasmus Thomsen <oss@cogitri.dev>
+Date: Fri, 6 Dec 2019 11:48:02 +0100
+Subject: [PATCH] revert: autostart-app: Strip blacklisted variables from
+ autostart environment
+
+This breaks gnome-session on non-systemd systems.
+
+https://gitlab.gnome.org/GNOME/gnome-session/issues/44
+---
+ gnome-session/gsm-autostart-app.c | 5 -----
+ gnome-session/gsm-util.c          | 6 ------
+ gnome-session/gsm-util.h          | 1 -
+ 3 files changed, 12 deletions(-)
+
+diff --git a/gnome-session/gsm-autostart-app.c b/gnome-session/gsm-autostart-app.c
+index 6fd5915..01ba5f9 100644
+--- gnome-session/gsm-autostart-app.c
++++ gnome-session/gsm-autostart-app.c
+@@ -997,7 +997,6 @@ autostart_app_start_spawn (GsmAutostartApp *app,
+         gboolean         success;
+         GError          *local_error;
+         const char      *startup_id;
+-        const char * const *variable_blacklist;
+         const char * const *child_environment;
+         int i;
+         GAppLaunchContext *ctx;
+@@ -1014,10 +1013,6 @@ autostart_app_start_spawn (GsmAutostartApp *app,
+         local_error = NULL;
+         ctx = g_app_launch_context_new ();
+ 
+-        variable_blacklist = gsm_util_get_variable_blacklist ();
+-        for (i = 0; variable_blacklist[i] != NULL; i++)
+-                g_app_launch_context_unsetenv (ctx, variable_blacklist[i]);
+-
+         child_environment = gsm_util_listenv ();
+         for (i = 0; child_environment[i] != NULL; i++) {
+                 char **environment_tuple;
+diff --git a/gnome-session/gsm-util.c b/gnome-session/gsm-util.c
+index 02bc4a5..ada1225 100644
+--- gnome-session/gsm-util.c
++++ gnome-session/gsm-util.c
+@@ -808,9 +808,3 @@ gsm_util_listenv (void)
+         return (const char * const *) child_environment;
+ 
+ }
+-
+-const char * const *
+-gsm_util_get_variable_blacklist (void)
+-{
+-        return variable_blacklist;
+-}
+diff --git a/gnome-session/gsm-util.h b/gnome-session/gsm-util.h
+index bd7b698..8bca5f4 100644
+--- gnome-session/gsm-util.h
++++ gnome-session/gsm-util.h
+@@ -50,7 +50,6 @@ char *      gsm_util_generate_startup_id            (void);
+ void        gsm_util_setenv                         (const char *variable,
+                                                      const char *value);
+ const char * const * gsm_util_listenv               (void);
+-const char * const * gsm_util_get_variable_blacklist(void);
+ 
+ gboolean    gsm_util_export_activation_environment  (GError     **error);
+ #ifdef HAVE_SYSTEMD
+-- 
+2.24.0
+
diff --git a/srcpkgs/gnome-session/patches/no-systemd-dep.patch b/srcpkgs/gnome-session/patches/no-systemd-dep.patch
new file mode 100644
index 00000000000..8e55a0f7987
--- /dev/null
+++ b/srcpkgs/gnome-session/patches/no-systemd-dep.patch
@@ -0,0 +1,14 @@
+--- meson.build
++++ meson.build
+@@ -130,10 +130,7 @@ if enable_systemd or enable_consolekit
+ 
+   # Check for systemd
+   if enable_systemd
+-    systemd_dep = dependency('systemd', version: '>= 242', required: true)
+-    systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
+-                                                             define_variable: ['prefix', prefix])
+-
++    systemd_userunitdir = '/tmp'
+     libsystemd_dep = dependency('libsystemd', version: '>= 209', required: false)
+     session_bin_deps += libsystemd_dep
+ 
diff --git a/srcpkgs/gnome-session/template b/srcpkgs/gnome-session/template
index 4444f162bf1..c9bc4930c39 100644
--- a/srcpkgs/gnome-session/template
+++ b/srcpkgs/gnome-session/template
@@ -1,9 +1,9 @@
 # Template file for 'gnome-session'
 pkgname=gnome-session
-version=3.34.1
+version=3.38.0
 revision=1
 build_style=meson
-configure_args="-Dsystemd_journal=false"
+configure_args="-Dsystemd_journal=false -Dsystemd_session=disable"
 hostmakedepends="glib-devel intltool pkg-config xmlto"
 makedepends="elogind-devel gnome-desktop-devel gtk+3-devel json-glib-devel
  libglib-devel libICE-devel libSM-devel libXtst-devel startup-notification-devel
@@ -15,4 +15,8 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gnome-session"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=d7801fe2d5a751b19cb58081771316a76aabd5c550cd58d4e4c6a5a4ed356660
+checksum=7bcc0eb2cdba4b3f6d1b459b3a30873b7bb65b383c1f6a5f63c3e3b5c7943d67
+
+post_install() {
+	rm -rf ${DESTDIR}/tmp
+}

From 6ff5cf7220b35d965dd72c5f3d6646c427878827 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 052/104] gnome-initial-setup: update to 3.38.0

---
 srcpkgs/gnome-initial-setup/template | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/gnome-initial-setup/template b/srcpkgs/gnome-initial-setup/template
index 55df2f53c1d..63abd3c5c83 100644
--- a/srcpkgs/gnome-initial-setup/template
+++ b/srcpkgs/gnome-initial-setup/template
@@ -1,10 +1,11 @@
 # Template file for 'gnome-initial-setup'
 pkgname=gnome-initial-setup
-version=3.34.1
-revision=3
+version=3.38.0
+revision=1
 build_style=meson
-configure_args="-Dsoftware-sources=disabled -Dsystemd=false"
-hostmakedepends="pkg-config glib-devel"
+configure_args="-Dsoftware-sources=disabled -Dparental_controls=disabled
+ -Dsystemd=false"
+hostmakedepends="pkg-config glib-devel gettext"
 makedepends="NetworkManager-devel accountsservice-devel libglib-devel
  gnome-desktop-devel cheese-devel libgweather-devel webkit2gtk-devel
  gnome-online-accounts-devel gdm-devel libpwquality-devel
@@ -17,4 +18,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Design/OS/InitialSetup"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=e71f10ef6b631cd92ffde774e4130b32b2494b4df5ef288375d8b1957eeabfa1
+checksum=3a857aef5efb689f408632db8469ad27620f762d977070a36035c522c6f82759

From 10038f7c8bcd4690042452c0f72cd8cbafa60113 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 053/104] xdg-desktop-portal-gtk: update to 1.8.0

---
 srcpkgs/xdg-desktop-portal-gtk/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/xdg-desktop-portal-gtk/template b/srcpkgs/xdg-desktop-portal-gtk/template
index dee0e463386..7517d1b32d8 100644
--- a/srcpkgs/xdg-desktop-portal-gtk/template
+++ b/srcpkgs/xdg-desktop-portal-gtk/template
@@ -1,6 +1,6 @@
 # Template file for 'xdg-desktop-portal-gtk'
 pkgname=xdg-desktop-portal-gtk
-version=1.6.0
+version=1.8.0
 revision=1
 build_style=gnu-configure
 hostmakedepends="pkg-config libxslt glib-devel xdg-desktop-portal gettext"
@@ -12,7 +12,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://github.com/flatpak/xdg-desktop-portal-gtk"
 distfiles="https://github.com/flatpak/${pkgname}/releases/download/${version}/${pkgname}-${version}.tar.xz"
-checksum=956fd16608247e7119d4c6d95a6dc6578dce257d2f272d03b3498572257e2f76
+checksum=a52529ed321e044ca9adca5e9718d9ba57c414a2634dd4109df344c5b9eed77f
 
 post_install() {
 	rm -rf "${DESTDIR}/usr/lib/systemd"

From 91944313fb156e39cf9cbf9f58aaf3e02cc1c71c Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 054/104] nautilus: update to 3.38.0

---
 srcpkgs/nautilus/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/nautilus/template b/srcpkgs/nautilus/template
index 537a851973f..de968f01d7c 100644
--- a/srcpkgs/nautilus/template
+++ b/srcpkgs/nautilus/template
@@ -1,6 +1,6 @@
 # Template file for 'nautilus'
 pkgname=nautilus
-version=3.36.1.1
+version=3.38.0
 revision=1
 build_style=meson
 build_helper="gir"
@@ -8,16 +8,16 @@ configure_args="-Dtests=headless -Dintrospection=$(vopt_if gir true false)"
 hostmakedepends="gettext glib-devel libxslt pkg-config"
 makedepends="exempi-devel gnome-autoar-devel gnome-desktop-devel gtk+3-devel
  libexif-devel libgexiv2-devel libglib-devel libnotify-devel libseccomp-devel
- libX11-devel libxml2-devel tracker-devel gst-plugins-base1-devel"
+ libX11-devel libxml2-devel tracker3-devel gst-plugins-base1-devel"
 depends="desktop-file-utils gsettings-desktop-schemas hicolor-icon-theme
- tracker-miners tracker"
-checkdepends="tracker"
+ tracker3-miners tracker3"
+checkdepends="tracker3 tracker3-miners python3-gobject dbus"
 short_desc="GNOME file manager"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Nautilus"
 distfiles="${GNOME_SITE}/${pkgname}/${version::4}/${pkgname}-${version}.tar.xz"
-checksum=f9252f508211d9f368a49db697890f895d080f09590aecaf33803a519def7bde
+checksum=c6f330f9f3f7dbf35afb6ec2094b746ee75d5e928c8f6780dab26672086ccac0
 
 build_options="gir"
 build_options_default="gir"

From 53ee40c1c58d76b3689992d635ee2b22b694147d Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 055/104] gnome-maps: update to 3.38.0

---
 srcpkgs/gnome-maps/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/gnome-maps/template b/srcpkgs/gnome-maps/template
index 0300be60599..3285faf17e4 100644
--- a/srcpkgs/gnome-maps/template
+++ b/srcpkgs/gnome-maps/template
@@ -1,16 +1,16 @@
 # Template file for 'gnome-maps'
 pkgname=gnome-maps
-version=3.36.1
+version=3.38.0
 revision=1
 build_style=meson
-hostmakedepends="glib-devel gobject-introspection intltool pkg-config AppStream"
+build_helper="gir"
+hostmakedepends="glib-devel intltool pkg-config AppStream"
 makedepends="folks-devel geoclue2-devel geocode-glib-devel gjs-devel
- gnome-desktop-devel libchamplain-devel rest-devel"
+ gnome-desktop-devel libchamplain-devel rest-devel libhandy1-devel"
 depends="geoclue2 gfbgraph gjs"
 short_desc="GNOME maps application"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Maps"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=1a32efd96ad898f77a636d2d0463d757009b4b812259c89ffdcb91d6afc052f9
-nocross="evolution-dataserver cross gir doesn't work"
+checksum=55758340ebd084610283bf1f6fec6c042559a186eb8699c056a22dfef1d97f99

From f00a42cc014315fa8429c45d25abf0e0efc9d262 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 056/104] evolution: update to 3.38.0

---
 .../evolution/files/disableRuntimeTests.cmake | 45 -------------------
 srcpkgs/evolution/files/iconv-detect.h        |  5 ---
 srcpkgs/evolution/template                    | 35 +++------------
 3 files changed, 7 insertions(+), 78 deletions(-)
 delete mode 100644 srcpkgs/evolution/files/disableRuntimeTests.cmake
 delete mode 100644 srcpkgs/evolution/files/iconv-detect.h

diff --git a/srcpkgs/evolution/files/disableRuntimeTests.cmake b/srcpkgs/evolution/files/disableRuntimeTests.cmake
deleted file mode 100644
index 8be55b42070..00000000000
--- a/srcpkgs/evolution/files/disableRuntimeTests.cmake
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file was generated by CMake because it detected TRY_RUN() commands
-# in crosscompiling mode. It will be overwritten by the next CMake run.
-# Copy it to a safe location, set the variables to appropriate values
-# and use it then to preset the CMake cache (using -C).
-
-
-# _correct_iconv_EXITCODE
-#    indicates whether the executable would have been able to run on its
-#    target platform. If so, set _correct_iconv_EXITCODE to
-#    the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
-# The _correct_iconv_COMPILED variable holds the build result for this TRY_RUN().
-# 
-# Source file   : /builddir/evolution-data-server-3.26.0/build/CMakeFiles/CMakeTmp/src.c
-# Executable    : /builddir/evolution-data-server-3.26.0/build/CMakeFiles/cmTC_315ee-_correct_iconv_EXITCODE
-# Run arguments : 
-#    Called from: [2]	/usr/share/cmake-3.9/Modules/CheckCSourceRuns.cmake
-#                 [1]	/builddir/evolution-data-server-3.26.0/CMakeLists.txt
-
-set( _correct_iconv_EXITCODE 
-     0
-     CACHE INTERNAL "Result from TRY_RUN" FORCE)
-set(_correct_iconv_EXITCODE__TRYRUN_OUTPUT
-     0
-     CACHE INTERNAL "Result from TRY_RUN" FORCE)
-
-
-# HAVE_LKSTRFTIME_EXITCODE
-#    indicates whether the executable would have been able to run on its
-#    target platform. If so, set HAVE_LKSTRFTIME_EXITCODE to
-#    the exit code (in many cases 0 for success), otherwise enter "FAILED_TO_RUN".
-# The HAVE_LKSTRFTIME_COMPILED variable holds the build result for this TRY_RUN().
-# 
-# Source file   : /builddir/evolution-data-server-3.26.0/build/CMakeFiles/CMakeTmp/src.c
-# Executable    : /builddir/evolution-data-server-3.26.0/build/CMakeFiles/cmTC_d2897-HAVE_LKSTRFTIME_EXITCODE
-# Run arguments : 
-#    Called from: [2]	/usr/share/cmake-3.9/Modules/CheckCSourceRuns.cmake
-#                 [1]	/builddir/evolution-data-server-3.26.0/CMakeLists.txt
-
-set( HAVE_LKSTRFTIME_EXITCODE 
-     0
-     CACHE INTERNAL "Result from TRY_RUN" FORCE)
-set( HAVE_LKSTRFTIME_EXITCODE__TRYRUN_OUTPUT
-     0
-     CACHE INTERNAL "Result from TRY_RUN" FORCE)
-
diff --git a/srcpkgs/evolution/files/iconv-detect.h b/srcpkgs/evolution/files/iconv-detect.h
deleted file mode 100644
index 46f476d5bc9..00000000000
--- a/srcpkgs/evolution/files/iconv-detect.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* This is an auto-generated header, DO NOT EDIT! */
-
-#define ICONV_ISO_D_FORMAT "iso-%d-%d"
-#define ICONV_ISO_S_FORMAT "iso-%d-%s"
-#define ICONV_10646 "iso-10646"
diff --git a/srcpkgs/evolution/template b/srcpkgs/evolution/template
index 560ed93da02..aa3fa34bc4c 100644
--- a/srcpkgs/evolution/template
+++ b/srcpkgs/evolution/template
@@ -1,54 +1,33 @@
 # Template file for 'evolution'
 pkgname=evolution
-version=3.36.1
+version=3.38.0
 revision=1
 build_style=cmake
+build_helper="gir qemu"
 configure_args="-DENABLE_AUTOAR=OFF -DENABLE_LIBCRYPTUI=OFF -DENABLE_GTKSPELL=OFF
- -DENABLE_TEXT_HIGHLIGHT=OFF -DENABLE_PST_IMPORT=OFF
- -DENABLE_WEATHER=$(vopt_if gir ON OFF)"
+ -DENABLE_TEXT_HIGHLIGHT=OFF -DENABLE_PST_IMPORT=OFF -DENABLE_WEATHER=ON"
 hostmakedepends="gnome-doc-utils gobject-introspection intltool itstool
- pkg-config"
+ pkg-config glib-devel"
 makedepends="NetworkManager-devel clutter-gtk-devel enchant2-devel
  evolution-data-server-devel gspell-devel gtkhtml-devel libcanberra-devel
- $(vopt_if gir libgweather-devel) libnotify-devel webkit2gtk-devel ytnef-devel
+ libgweather-devel libnotify-devel webkit2gtk-devel ytnef-devel
  gnome-desktop-devel"
 depends="gnome-keyring"
 short_desc="Integrated mail, addressbook and calendaring for GNOME"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later, LGPL-3.0-or-later, GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Evolution"
-changelog="https://raw.githubusercontent.com/GNOME/evolution/gnome-3-36/NEWS"
+changelog="https://raw.githubusercontent.com/GNOME/evolution/gnome-3-38/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=873acf1dbec38e67e169064645ac3a9b9a944bd2b633161df6e5f05700e36cb8
+checksum=f81cc40f54aa2d059da4f3a94eb09362e81513306c974a41ca7895b9c8957c5d
 shlib_provides="libevolution-calendar.so libevolution-util.so libemail-engine.so
  libevolution-mail.so libevolution-shell.so"
 
 build_options="gir"
 if [ -z "$CROSS_BUILD" ]; then
 	build_options_default="gir"
-else
-	hostmakedepends+=" glib-devel"
 fi
 
-# cmake perfomrms 2 checks using binary runtime, about iconv and sfrtime.
-# musl (1.1.16) does not support "ISO-2022-JP" encoding (see its roadmap),
-# although evolution-data-server is fine with musl.
-# If crossbuild, cmake let disabling runtime checks via specific directives.
-# test iconv-detect.c also generates iconv-detect.h that is required for build.
-# So completly disable test from iconv-detect.c (cmake.patch file) and
-# use a cmake cache file on crossbuild to disable sfrtime running test.
-if [ "$CROSS_BUILD" ]; then
-	configure_args+=" -C disableRuntimeTests.cmake"
-fi
-
-pre_configure() {
-	mkdir -p build
-	cp ${FILESDIR}/iconv-detect.h ${wrksrc}/build/.
-	if [ "$CROSS_BUILD" ]; then
-		cp ${FILESDIR}/disableRuntimeTests.cmake ${wrksrc}/build/.
-	fi
-}
-
 evolution-devel_package() {
 	depends="webkit2gtk-devel gtk+3-devel libglib-devel evolution-data-server-devel
 	 gtkhtml-devel ${sourcepkg}>=${version}_${revision}"

From d03307f8f78a88429f7849d3262c29f512ce04a2 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 057/104] evolution-ews: update to 3.38.0

---
 srcpkgs/evolution-ews/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/evolution-ews/template b/srcpkgs/evolution-ews/template
index 4ff8116466c..98ee3a77fe7 100644
--- a/srcpkgs/evolution-ews/template
+++ b/srcpkgs/evolution-ews/template
@@ -1,6 +1,6 @@
 # Template file for 'evolution-ews'
 pkgname=evolution-ews
-version=3.36.1
+version=3.38.0
 revision=1
 build_style=cmake
 configure_args="-DLIBEXEC_INSTALL_DIR=/usr/lib/evolution"
@@ -10,6 +10,6 @@ short_desc="MS Exchange integration through Exchange Web Services"
 maintainer="Peter Kuchar <masaj@gmx.com>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Apps/Evolution"
-changelog="https://raw.githubusercontent.com/GNOME/evolution-ews/gnome-3-36/NEWS"
+changelog="https://raw.githubusercontent.com/GNOME/evolution-ews/gnome-3-38/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=d0883c7d227827cc5c4468b7e31a3ee370bcd7d41a4dbb950ab5db36c9551ac1
+checksum=59bf59cabb9d193d91076972dd8a6e71ebf34c7bfad01cd6954297347a3077b3

From 58867904f42ee5c6887c5a15a975242b6c0cd1e2 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 058/104] python3-atspi: update to 2.38.0

---
 srcpkgs/python3-atspi/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/python3-atspi/template b/srcpkgs/python3-atspi/template
index a33a374fe18..23fa98934e5 100644
--- a/srcpkgs/python3-atspi/template
+++ b/srcpkgs/python3-atspi/template
@@ -1,7 +1,7 @@
 # Template file for 'python3-atspi'
 pkgname=python3-atspi
-version=2.32.1
-revision=4
+version=2.38.0
+revision=1
 archs=noarch
 wrksrc="pyatspi-${version}"
 build_style=gnu-configure
@@ -13,4 +13,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/pyatspi2"
 distfiles="${GNOME_SITE}/pyatspi/${version%.*}/pyatspi-${version}.tar.xz"
-checksum=84954a5bbeacc83643f05778d8beafcab8208e11b39b24637b4c4dd1f8620389
+checksum=ff809312fd0c2f61e191c181a1a638a30b579b91b682cfb5a05535a55265b43d

From 55f01ab1492fcd8ee8cecac1a5b4b8851c69677b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 059/104] python-atspi: update to 2.38.0

---
 srcpkgs/python-atspi/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/python-atspi/template b/srcpkgs/python-atspi/template
index 0141d97f85d..7505c32ad60 100644
--- a/srcpkgs/python-atspi/template
+++ b/srcpkgs/python-atspi/template
@@ -1,8 +1,8 @@
 # Template file for 'python-atspi'
 # Keep python3-atspi in sync
 pkgname=python-atspi
-version=2.32.1
-revision=4
+version=2.38.0
+revision=1
 archs=noarch
 wrksrc="pyatspi-${version}"
 build_style=gnu-configure
@@ -14,4 +14,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/pyatspi2"
 distfiles="${GNOME_SITE}/pyatspi/${version%.*}/pyatspi-${version}.tar.xz"
-checksum=84954a5bbeacc83643f05778d8beafcab8208e11b39b24637b4c4dd1f8620389
+checksum=ff809312fd0c2f61e191c181a1a638a30b579b91b682cfb5a05535a55265b43d

From 4fc3fbb35ecde0e71879d244df342940d0b6eab7 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 060/104] orca: update to 3.38.0, drop noarch

---
 srcpkgs/orca/template | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/orca/template b/srcpkgs/orca/template
index f70202e6d76..38e92346b86 100644
--- a/srcpkgs/orca/template
+++ b/srcpkgs/orca/template
@@ -1,8 +1,7 @@
 # Template file for 'orca'
 pkgname=orca
-version=3.36.1
+version=3.38.0
 revision=1
-archs=noarch
 build_style=gnu-configure
 hostmakedepends="intltool itstool pkg-config"
 makedepends="at-spi2-atk-devel liblouis-devel python3-gobject-devel"
@@ -13,7 +12,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Projects/Orca"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=c1ac648b6be31488c26ff959114287869df9ce3ca21999e40ded87741c98831f
+checksum=1c3279d79898db10a105bcb705b5a4042b1b51a9c057a6bd0ffd65dac2356fee
 
 if [ "$CROSS_BUILD" ]; then
 	hostmakedepends+=" python3-gobject-devel"

From 7f1099affc79d5ecfa0727452c5f9f0e8b31033c Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 061/104] gnome-weather: bump

---
 srcpkgs/gnome-weather/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gnome-weather/template b/srcpkgs/gnome-weather/template
index d30be9bf192..c028e46ba65 100644
--- a/srcpkgs/gnome-weather/template
+++ b/srcpkgs/gnome-weather/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-weather'
 pkgname=gnome-weather
 version=3.36.1
-revision=1
+revision=2
 build_helper="gir"
 build_style=meson
 hostmakedepends="gettext pkg-config itstool glib-devel gjs"

From 9485f514a5ad9799018765f08c9add8534806739 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 062/104] vte3: update to 0.62.0

---
 srcpkgs/vte3/template | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/srcpkgs/vte3/template b/srcpkgs/vte3/template
index 6116b3cc621..41f9f4e7e9a 100644
--- a/srcpkgs/vte3/template
+++ b/srcpkgs/vte3/template
@@ -1,29 +1,28 @@
 # Template file for 'vte3'
 pkgname=vte3
-version=0.60.3
+version=0.62.0
 revision=1
 wrksrc="vte-${version}"
 build_style=meson
 build_helper="gir"
-configure_args="-Db_ndebug=false -Dgir=$(vopt_if gir true false)
- -Dvapi=$(vopt_if vala true false) -Db_lto=false -D_systemd=false"
+configure_args="-Db_ndebug=false -Db_lto=false -D_systemd=false
+ $(vopt_bool gir gir) $(vopt_bool gir vapi)"
 hostmakedepends="glib-devel gnome-doc-utils gperf intltool pkg-config
- $(vopt_if vala vala)"
-makedepends="gnutls-devel gtk+3-devel pcre2-devel $(vopt_if vala vala-devel)"
-depends="vte"
+ $(vopt_if gir vala)"
+makedepends="gnutls-devel gtk+3-devel pcre2-devel $(vopt_if gir vala-devel)"
 short_desc="Terminal widget with improved accessibility and I18N support"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later, LGPL-2.1-or-later, LGPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Terminal/VTE"
 distfiles="${GNOME_SITE}/vte/${version%.*}/vte-${version}.tar.xz"
-checksum=feb76e1181a357d86112d447a08d127e2081438df76ece83243b18609dd9822a
+checksum=4d2d246ed47f08cc73f6471aa8e9f378998b7d0f7dcb0c433f29da5839dbb016
 
 # Suppress warnings as errors for NULL format strings (musl libc)
 CXXFLAGS="-Wno-error=format="
 
 # Package build options
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
 
 pre_build() {
 	export GIR_EXTRA_LIBS_PATH="${wrksrc}/src/.libs"
@@ -38,8 +37,6 @@ vte3-devel_package() {
 		vmove "usr/lib/*.so"
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gir-1.0
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 	}

From b3ab3c5bc3686653c28ea960d04db8c236b7ab4e Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 063/104] gnome-terminal: update to 3.38.0

---
 srcpkgs/gnome-terminal/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gnome-terminal/template b/srcpkgs/gnome-terminal/template
index bf3d5bcdd42..126ba5956fd 100644
--- a/srcpkgs/gnome-terminal/template
+++ b/srcpkgs/gnome-terminal/template
@@ -1,11 +1,11 @@
 # Template file for 'gnome-terminal'
 pkgname=gnome-terminal
-version=3.36.1.1
+version=3.38.0
 revision=1
 build_style=gnu-configure
 configure_args="--disable-static --with-nautilus-extension"
 hostmakedepends="appdata-tools glib-devel intltool itstool
- pkg-config"
+ pkg-config docbook-xsl"
 makedepends="dconf-devel gnome-shell gsettings-desktop-schemas-devel
  nautilus-devel vte3-devel"
 depends="desktop-file-utils"
@@ -13,8 +13,8 @@ short_desc="GNOME terminal emulator application"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, GFDL-1.3-only"
 homepage="https://wiki.gnome.org/Apps/Terminal"
-distfiles="${GNOME_SITE}/${pkgname}/${version:0:4}/${pkgname}-${version}.tar.xz"
-checksum=f3d708a1e76d77c1c85b126f6e003220a15d4a46a50fd8070e1a3aabe678a376
+distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
+checksum=0a0fc7a8b383c6ffd61469be1dea5ba63cffad812921780e7fad40c2e2ae54f5
 lib32disabled=yes
 
 if [ "$CROSS_BUILD" ]; then

From 16aee88d1bbc6d8151d2f609c08ca7c1500086cb Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 064/104] gnome-getting-started-docs: update to 3.36.2

---
 srcpkgs/gnome-getting-started-docs/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/gnome-getting-started-docs/template b/srcpkgs/gnome-getting-started-docs/template
index 5bec93490ba..bed9b696162 100644
--- a/srcpkgs/gnome-getting-started-docs/template
+++ b/srcpkgs/gnome-getting-started-docs/template
@@ -1,6 +1,6 @@
 # Template file for 'gnome-getting-started-docs'
 pkgname=gnome-getting-started-docs
-version=3.34.0
+version=3.36.2
 revision=1
 archs=noarch
 build_style=gnu-configure
@@ -11,4 +11,4 @@ license="CC-BY-SA-3.0"
 homepage="https://gitlab.gnome.org/GNOME/gnome-getting-started-docs"
 #changelog="https://gitlab.gnome.org/GNOME/gnome-getting-started-docs/raw/master/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=f70ce2ca23ad786215f3c92ec85783e3aabed07e4f78700fa27f9b2cf76e03db
+checksum=0494b8913a946b6450536e120c154abd29238ebba2f52734592b1f645e521dc6

From 3a27da3807095731c608369f374bc51be26450db Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 065/104] gnome-user-docs: update to 3.38.0, drop noarch

---
 srcpkgs/gnome-user-docs/template | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-user-docs/template b/srcpkgs/gnome-user-docs/template
index 4cb55396e37..f9942e24843 100644
--- a/srcpkgs/gnome-user-docs/template
+++ b/srcpkgs/gnome-user-docs/template
@@ -1,8 +1,7 @@
 # Template file for 'gnome-user-docs'
 pkgname=gnome-user-docs
-version=3.34.0
+version=3.38.0
 revision=1
-archs=noarch
 build_style=gnu-configure
 hostmakedepends="gettext pkg-config itstool gnome-doc-utils"
 makedepends="yelp"
@@ -13,4 +12,4 @@ license="CC-BY-3.0"
 homepage="https://github.com/GNOME/gnome-user-docs"
 #changelog="https://raw.githubusercontent.com/GNOME/gnome-user-docs/master/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=8f9907ff15fff97da75ece645cc86766703ac54d716d25563ba67ffed1af24ed
+checksum=38d3db5b5dc5912812a2c6cb29765bfb39242cedcd7ee347df98fca777dcee8a

From 8afaa788942bd60c723ff48ca45c54904e56042f Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 066/104] gnome-epub-thumbnailer: update to 1.6

---
 srcpkgs/gnome-epub-thumbnailer/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/gnome-epub-thumbnailer/template b/srcpkgs/gnome-epub-thumbnailer/template
index b16e705475f..c6e1c02b9d3 100644
--- a/srcpkgs/gnome-epub-thumbnailer/template
+++ b/srcpkgs/gnome-epub-thumbnailer/template
@@ -1,6 +1,6 @@
 # Template file for 'gnome-epub-thumbnailer'
 pkgname=gnome-epub-thumbnailer
-version=1.5
+version=1.6
 revision=1
 build_style=gnu-configure
 hostmakedepends="pkg-config"
@@ -10,4 +10,4 @@ maintainer="Alif Rachmawadi <arch@subosito.com>"
 license="GPL-3"
 homepage="https://git.gnome.org/browse/gnome-epub-thumbnailer"
 distfiles="${GNOME_SITE}/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
-checksum=308210f5800219f64cae4828e59bb8e6e4c53b888048cf487221aeb4337d791a
+checksum=b502420d9b02ea0b0fc7986ef5a091a12b2286be14fed9e47594fe9fa0c5898e

From faa94240ea84736b8b4206590aade21b32672118 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 067/104] gnome-books: bump

---
 srcpkgs/gnome-books/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gnome-books/template b/srcpkgs/gnome-books/template
index 114b9e034c2..1d4974fe183 100644
--- a/srcpkgs/gnome-books/template
+++ b/srcpkgs/gnome-books/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-books'
 pkgname=gnome-books
 version=3.34.0
-revision=1
+revision=2
 build_helper="gir"
 build_style=meson
 hostmakedepends="pkg-config vala glib-devel librsvg docbook-xsl libxslt

From 1bfc2f6bee927e67f3e2d8398f88d5f962f7fcd6 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 068/104] gnome-characters: bump

---
 srcpkgs/gnome-characters/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gnome-characters/template b/srcpkgs/gnome-characters/template
index 89868f4bc04..ac264e51a6a 100644
--- a/srcpkgs/gnome-characters/template
+++ b/srcpkgs/gnome-characters/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-characters'
 pkgname=gnome-characters
 version=3.34.0
-revision=2
+revision=3
 build_style=meson
 build_helper="gir"
 hostmakedepends="gettext gjs glib-devel itstool pkg-config"

From 1898638241fabc21035ab7e96a6ec44e1b642e7b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 069/104] gnome-documents: bump

---
 srcpkgs/gnome-documents/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gnome-documents/template b/srcpkgs/gnome-documents/template
index 97b53d635d7..7e45b825e71 100644
--- a/srcpkgs/gnome-documents/template
+++ b/srcpkgs/gnome-documents/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-documents'
 pkgname=gnome-documents
 version=3.34.0
-revision=1
+revision=2
 build_helper="gir"
 build_style=meson
 hostmakedepends="docbook-xsl gettext itstool pkg-config glib-devel libxslt gdk-pixbuf

From 1af84aab424fc1f38fccd9c9bbcbe5f94102b345 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 070/104] gnome-font-viewer: bump

---
 srcpkgs/gnome-font-viewer/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/gnome-font-viewer/template b/srcpkgs/gnome-font-viewer/template
index 6d035366d44..f74fcbcb000 100644
--- a/srcpkgs/gnome-font-viewer/template
+++ b/srcpkgs/gnome-font-viewer/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-font-viewer'
 pkgname=gnome-font-viewer
 version=3.34.0
-revision=1
+revision=2
 build_style=meson
 hostmakedepends="pkg-config glib-devel"
 makedepends="fontconfig-devel freetype-devel glib-devel gtk+3-devel

From b5e82999f7dea2bf71c409b1efb4d793bdc16aab Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 071/104] totem: update to 3.38.0

---
 srcpkgs/totem/template | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/srcpkgs/totem/template b/srcpkgs/totem/template
index 81522b31488..56fb15270fb 100644
--- a/srcpkgs/totem/template
+++ b/srcpkgs/totem/template
@@ -1,14 +1,14 @@
 # Template file for 'totem'
 pkgname=totem
-version=3.34.1
+version=3.38.0
 revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Denable-python=no -Denable-nautilus=yes
  -Denable-introspection=$(vopt_if gir yes no)
- -Denable-vala=$(vopt_if vala yes no)"
+ -Denable-vala=$(vopt_if gir yes no)"
 hostmakedepends="gnome-doc-utils intltool itstool pkg-config
- $(vopt_if vala vala) gstreamer1 gst-plugins-base1 gst-plugins-good1
+ $(vopt_if gir vala) gstreamer1 gst-plugins-base1 gst-plugins-good1
  glib-devel"
 # XXX missing lirc plugin.
 makedepends="clutter-gst3-devel clutter-gtk-devel dbus-glib-devel
@@ -21,16 +21,18 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.0-or-later, GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Videos"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=6bf89ab096dfc564f260976e484165f09bd886434d184410d2f944bfba611a09
+checksum=a829f2b5aa0435aa431816153193d5547fade9eb8d489f56be22afbe651c432f
 
 # XXX xulrunner plugin.
 # XXX reenable python plugin if pylint pkg exists.
 #pycompile_dirs="usr/lib/totem/plugins"
 
-disable_parallel_build=yes
+do_check() {
+	:
+}
 
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
 
 libtotem_package() {
 	short_desc+=" - runtime library"

From 498c54f98cf1841a7e1554ec01671a20a98e7c2e Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 072/104] gnome-screensaver: bump + fix build

---
 srcpkgs/gnome-screensaver/patches/build.patch | 12 ++++++++++++
 srcpkgs/gnome-screensaver/template            |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/gnome-screensaver/patches/build.patch

diff --git a/srcpkgs/gnome-screensaver/patches/build.patch b/srcpkgs/gnome-screensaver/patches/build.patch
new file mode 100644
index 00000000000..6dcdbe7dd7e
--- /dev/null
+++ b/srcpkgs/gnome-screensaver/patches/build.patch
@@ -0,0 +1,12 @@
+--- src/gs-manager.c
++++ src/gs-manager.c
+@@ -820,8 +820,7 @@ apply_background_to_window (GSManager *manager,
+         surface = gnome_bg_create_surface (manager->priv->bg,
+                                            gdk_window,
+                                            width,
+-                                           height,
+-                                           FALSE);
++                                           height);
+         gs_window_set_background_surface (window, surface);
+         cairo_surface_destroy (surface);
+ }
diff --git a/srcpkgs/gnome-screensaver/template b/srcpkgs/gnome-screensaver/template
index 363fcf12e10..c3a70cfef7c 100644
--- a/srcpkgs/gnome-screensaver/template
+++ b/srcpkgs/gnome-screensaver/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-screensaver'
 pkgname=gnome-screensaver
 version=3.6.1
-revision=2
+revision=3
 build_style=gnu-configure
 configure_args="--enable-compile-warnings=minimum"
 hostmakedepends="pkg-config automake intltool glib-devel"

From 7a4fee1f461a4c605117ac5f75ac772de44f2cfd Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 073/104] gnome-clocks: update to 3.38.0

---
 srcpkgs/gnome-clocks/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-clocks/template b/srcpkgs/gnome-clocks/template
index 3e049b42fb1..72f71f9268c 100644
--- a/srcpkgs/gnome-clocks/template
+++ b/srcpkgs/gnome-clocks/template
@@ -1,12 +1,12 @@
 # Template file for 'gnome-clocks'
 pkgname=gnome-clocks
-version=3.36.0
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
 hostmakedepends="pkg-config intltool itstool glib-devel vala"
 makedepends="glib-devel vala-devel gnome-desktop-devel
- libgweather-devel libhandy-devel libnotify-devel gsound-devel
+ libgweather-devel libhandy1-devel libnotify-devel gsound-devel
  geocode-glib-devel desktop-file-utils hicolor-icon-theme
  geoclue2-devel"
 depends="desktop-file-utils hicolor-icon-theme"
@@ -15,4 +15,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Clocks"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=4c978b0c7f7b9daebd272d0175f8a54415e2078f134f48add5cf24362eef49c6
+checksum=d956cb050f1ca46b443519e4f59ab204290d6270dec91c74b53895aecc794438

From 8ff9a26996de2ded2cd807f72393ee8727082f6c Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 074/104] epiphany: update to 3.38.0

---
 srcpkgs/epiphany/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/epiphany/template b/srcpkgs/epiphany/template
index 5d6ac6a637d..f23b23c6fbe 100644
--- a/srcpkgs/epiphany/template
+++ b/srcpkgs/epiphany/template
@@ -1,19 +1,19 @@
 # Template file for 'epiphany'
 pkgname=epiphany
-version=3.36.2
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
 configure_args="-Ddistributor_name=VoidLinux -Dunit_tests=disabled"
 hostmakedepends="gettext glib-devel itstool pkg-config"
 makedepends="NetworkManager-devel avahi-glib-libs-devel gcr-devel
- gnome-desktop-devel json-glib-devel libdazzle-devel libhandy-devel
+ gnome-desktop-devel json-glib-devel libdazzle-devel libhandy1-devel
  libnotify-devel libsecret-devel libsoup-gnome-devel libwnck-devel libxslt-devel
- nettle-devel nss-devel webkit2gtk-devel"
+ nettle-devel nss-devel webkit2gtk-devel libportal-devel"
 depends="desktop-file-utils hicolor-icon-theme iso-codes webkit2gtk"
 short_desc="Intuitive GNOME web browser"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Web"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=c2e676aa0fe211809a5e7e8a7e461d182890f253c53f4610f2610094b6fbfb5e
+checksum=228e820d7c7f8541e4db5ecc6c81b5a88bde9b1ea17cae4a5f38446f7989c552

From 1f5920a32eab8bf390118ab1778e2554bdb3824b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 075/104] gnome-contacts: update to 3.37.2

---
 srcpkgs/gnome-contacts/template | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/srcpkgs/gnome-contacts/template b/srcpkgs/gnome-contacts/template
index 2a8213a7240..aa4ef940136 100644
--- a/srcpkgs/gnome-contacts/template
+++ b/srcpkgs/gnome-contacts/template
@@ -1,16 +1,15 @@
 # Template file for 'gnome-contacts'
 pkgname=gnome-contacts
-version=3.34.0
-revision=2
-wrksrc="gnome-contacts-${version%.*}"
+version=3.37.2
+revision=1
 build_style=meson
-hostmakedepends="docbook-xsl gettext glib-devel libxslt pkg-config vala"
+hostmakedepends="docbook-xsl folks-devel gettext glib-devel libxslt pkg-config vala"
 makedepends="cheese-devel folks-devel geocode-glib-devel gnome-desktop-devel
- libchamplain-devel libnotify-devel vala-devel libhandy-devel"
+ libchamplain-devel libnotify-devel vala-devel libhandy1-devel"
 depends="desktop-file-utils"
 short_desc="GNOME contacts manager"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Contacts"
-distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version%.*}.tar.xz"
-checksum=99602ec8d660c1f3c92cae6356f64f72fb6db58e55bce27a599330bf7b622f12
+distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
+checksum=1d3469d5e90f23d129d1276b2f9b885459f3d7b43054cd09759b85ac76c918b4

From 16540dda9cdf2ccd27e586afbdb267303602b032 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 076/104] gnome-photos: update to 3.37.91.1, use tracker3

---
 srcpkgs/gnome-photos/patches/tracker3.patch | 4254 +++++++++++++++++++
 srcpkgs/gnome-photos/template               |   11 +-
 2 files changed, 4260 insertions(+), 5 deletions(-)
 create mode 100644 srcpkgs/gnome-photos/patches/tracker3.patch

diff --git a/srcpkgs/gnome-photos/patches/tracker3.patch b/srcpkgs/gnome-photos/patches/tracker3.patch
new file mode 100644
index 00000000000..406dca30fd4
--- /dev/null
+++ b/srcpkgs/gnome-photos/patches/tracker3.patch
@@ -0,0 +1,4254 @@
+From b4a8de1ef79c94c1c11b730787108f305c962e38 Mon Sep 17 00:00:00 2001
+From: Sam Thursfield <sam@afuera.me.uk>
+Date: Wed, 26 Aug 2020 01:57:46 +0200
+Subject: [PATCH 1/4] photos-tracker-controller: Label unit of timing
+ measurements
+
+Otherwise, it's not clear if these are timings or some kind of ID
+number.
+---
+ src/photos-tracker-controller.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/photos-tracker-controller.c b/src/photos-tracker-controller.c
+index a02db077..3a62cf2d 100644
+--- a/src/photos-tracker-controller.c
++++ b/src/photos-tracker-controller.c
+@@ -237,7 +237,7 @@ photos_tracker_controller_cursor_next (GObject *source_object, GAsyncResult *res
+     }
+ 
+   now = g_get_monotonic_time ();
+-  photos_debug (PHOTOS_DEBUG_TRACKER, "Query Cursor: %" G_GINT64_FORMAT, (now - priv->last_query_time) / 1000000);
++  photos_debug (PHOTOS_DEBUG_TRACKER, "Query Cursor: %" G_GINT64_FORMAT " seconds", (now - priv->last_query_time) / 1000000);
+ 
+   photos_item_manager_add_item_for_mode (PHOTOS_ITEM_MANAGER (priv->item_mngr),
+                                          PHOTOS_TRACKER_CONTROLLER_GET_CLASS (self)->base_item_type,
+@@ -346,7 +346,7 @@ photos_tracker_controller_set_query_status (PhotosTrackerController *self, gbool
+   else
+     {
+       photos_debug (PHOTOS_DEBUG_TRACKER,
+-                    "Query Elapsed: %" G_GINT64_FORMAT,
++                    "Query Elapsed: %" G_GINT64_FORMAT " seconds",
+                     (now - priv->last_query_time) / 1000000);
+       priv->last_query_time = 0;
+     }
+-- 
+GitLab
+
+
+From 7c98a884ba6a26795ea25a8780002ac101036887 Mon Sep 17 00:00:00 2001
+From: Sam Thursfield <sam@afuera.me.uk>
+Date: Wed, 27 May 2020 13:07:58 +0200
+Subject: [PATCH 2/4] Fix build failure due to undefined M_PI constant
+
+The <math.h> header needs to be included.
+
+Previously I suppose libtracker-sparql.h pulled this in.
+---
+ src/photos-utils.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/photos-utils.c b/src/photos-utils.c
+index 401f52ba..c638297b 100644
+--- a/src/photos-utils.c
++++ b/src/photos-utils.c
+@@ -30,6 +30,7 @@
+ #include <glib.h>
+ #include <tracker-sparql.h>
+ #include <libgd/gd.h>
++#include <math.h>
+ 
+ #include "photos-application.h"
+ #include "photos-device-item.h"
+-- 
+GitLab
+
+
+From 0e4bd7bbc8056743a8ea07ab3713ad543c00d478 Mon Sep 17 00:00:00 2001
+From: Sam Thursfield <sam@afuera.me.uk>
+Date: Sun, 7 Jun 2020 21:53:20 +0200
+Subject: [PATCH 3/4] Generate queries using SPARQL templates
+
+The code to generate SPARQL queries was split across many different
+source files, making it difficult to make big changes. Now the
+queries are written out as templates and we use template substitution
+to build the SPARQL that we send to Tracker.
+---
+ src/meson.build                             |   5 +
+ src/photos-base-manager.c                   |  15 ++
+ src/photos-base-manager.h                   |   4 +
+ src/photos-filterable.c                     |   8 -
+ src/photos-filterable.h                     |   3 -
+ src/photos-query-builder.c                  | 207 +++++++++-----------
+ src/photos-search-type-manager.c            |  59 +-----
+ src/photos-search-type.c                    |  67 +++----
+ src/photos-search-type.h                    |   6 +-
+ src/photos-sparql-template.c                | 187 ++++++++++++++++++
+ src/photos-sparql-template.h                |  38 ++++
+ src/photos.gresource.xml                    |   4 +
+ src/queries/all.sparql.template             |  31 +++
+ src/queries/collections.sparql.template     |  14 ++
+ src/queries/favorite-photos.sparql.template |  12 ++
+ src/queries/photos.sparql.template          |  11 ++
+ 16 files changed, 446 insertions(+), 225 deletions(-)
+ create mode 100644 src/photos-sparql-template.c
+ create mode 100644 src/photos-sparql-template.h
+ create mode 100644 src/queries/all.sparql.template
+ create mode 100644 src/queries/collections.sparql.template
+ create mode 100644 src/queries/favorite-photos.sparql.template
+ create mode 100644 src/queries/photos.sparql.template
+
+diff --git a/src/meson.build b/src/meson.build
+index 9919f0cf..b5b2759c 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -195,6 +195,7 @@ sources = common_sources + files(
+   'photos-source.c',
+   'photos-source-manager.c',
+   'photos-source-notification.c',
++  'photos-sparql-template.c',
+   'photos-spinner-box.c',
+   'photos-thumbnail-factory.c',
+   'photos-tool.c',
+@@ -290,6 +291,10 @@ resource_data = files(
+   'photos-selection-toolbar.ui',
+   'photos-share-dialog.ui',
+   'photos-zoom-controls.ui',
++  'queries/all.sparql.template',
++  'queries/collections.sparql.template',
++  'queries/favorite-photos.sparql.template',
++  'queries/photos.sparql.template',
+ )
+ 
+ sources += gnome.compile_resources(
+diff --git a/src/photos-base-manager.c b/src/photos-base-manager.c
+index d49d19a5..052638d5 100644
+--- a/src/photos-base-manager.c
++++ b/src/photos-base-manager.c
+@@ -250,6 +250,12 @@ photos_base_manager_default_get_where (PhotosBaseManager *self, gint flags)
+ }
+ 
+ 
++static PhotosSparqlTemplate *
++photos_base_manager_default_get_sparql_template (PhotosBaseManager *self, gint flags)
++{
++  return NULL;
++}
++
+ static void
+ photos_base_manager_default_remove_object_by_id (PhotosBaseManager *self, const gchar *id)
+ {
+@@ -438,6 +444,7 @@ photos_base_manager_class_init (PhotosBaseManagerClass *class)
+   class->get_object_by_id = photos_base_manager_default_get_object_by_id;
+   class->get_previous_object = photos_base_manager_default_get_previous_object;
+   class->get_where = photos_base_manager_default_get_where;
++  class->get_sparql_template = photos_base_manager_default_get_sparql_template;
+   class->remove_object_by_id = photos_base_manager_default_remove_object_by_id;
+   class->set_active_object = photos_base_manager_default_set_active_object;
+ 
+@@ -714,6 +721,14 @@ photos_base_manager_get_where (PhotosBaseManager *self, gint flags)
+ }
+ 
+ 
++PhotosSparqlTemplate *
++photos_base_manager_get_sparql_template (PhotosBaseManager *self, gint flags)
++{
++  g_return_val_if_fail (PHOTOS_IS_BASE_MANAGER (self), NULL);
++  return PHOTOS_BASE_MANAGER_GET_CLASS (self)->get_sparql_template (self, flags);
++}
++
++
+ void
+ photos_base_manager_process_new_objects (PhotosBaseManager *self, GHashTable *new_objects)
+ {
+diff --git a/src/photos-base-manager.h b/src/photos-base-manager.h
+index 99d203e9..04cfa7db 100644
+--- a/src/photos-base-manager.h
++++ b/src/photos-base-manager.h
+@@ -24,6 +24,7 @@
+ #define PHOTOS_BASE_MANAGER_H
+ 
+ #include <glib-object.h>
++#include "photos-sparql-template.h"
+ 
+ G_BEGIN_DECLS
+ 
+@@ -46,6 +47,7 @@ struct _PhotosBaseManagerClass
+   gchar         *(*get_where)              (PhotosBaseManager *self, gint flags);
+   void           (*remove_object_by_id)    (PhotosBaseManager *self, const gchar *id);
+   gboolean       (*set_active_object)      (PhotosBaseManager *self, GObject *object);
++  PhotosSparqlTemplate *(*get_sparql_template) (PhotosBaseManager *self, gint flags);
+ 
+   /* signals */
+   void           (*active_changed)         (PhotosBaseManager *self, GObject *object);
+@@ -80,6 +82,8 @@ const gchar        *photos_base_manager_get_title                (PhotosBaseMana
+ 
+ gchar              *photos_base_manager_get_where                (PhotosBaseManager *self, gint flags);
+ 
++PhotosSparqlTemplate *photos_base_manager_get_sparql_template    (PhotosBaseManager *self, gint flags);
++
+ void                photos_base_manager_process_new_objects      (PhotosBaseManager *self, GHashTable *new_objects);
+ 
+ void                photos_base_manager_remove_object            (PhotosBaseManager *self, GObject *object);
+diff --git a/src/photos-filterable.c b/src/photos-filterable.c
+index 361b1c29..aaa4109c 100644
+--- a/src/photos-filterable.c
++++ b/src/photos-filterable.c
+@@ -69,14 +69,6 @@ photos_filterable_get_id (PhotosFilterable *self)
+ }
+ 
+ 
+-gchar *
+-photos_filterable_get_where (PhotosFilterable *self)
+-{
+-  g_return_val_if_fail (PHOTOS_IS_FILTERABLE (self), NULL);
+-  return PHOTOS_FILTERABLE_GET_IFACE (self)->get_where (self);
+-}
+-
+-
+ gboolean
+ photos_filterable_is_search_criterion (PhotosFilterable *self)
+ {
+diff --git a/src/photos-filterable.h b/src/photos-filterable.h
+index e768bca0..8a3415fc 100644
+--- a/src/photos-filterable.h
++++ b/src/photos-filterable.h
+@@ -37,7 +37,6 @@ struct _PhotosFilterableInterface
+   gboolean (*get_builtin) (PhotosFilterable *self);
+   gchar *(*get_filter) (PhotosFilterable *self);
+   const gchar *(*get_id) (PhotosFilterable *self);
+-  gchar *(*get_where) (PhotosFilterable *self);
+   gboolean (*is_search_criterion) (PhotosFilterable *self);
+ };
+ 
+@@ -47,8 +46,6 @@ gchar              *photos_filterable_get_filter         (PhotosFilterable *self
+ 
+ const gchar        *photos_filterable_get_id             (PhotosFilterable *self);
+ 
+-gchar              *photos_filterable_get_where          (PhotosFilterable *self);
+-
+ gboolean            photos_filterable_is_search_criterion  (PhotosFilterable *self);
+ 
+ G_END_DECLS
+diff --git a/src/photos-query-builder.c b/src/photos-query-builder.c
+index 6b996811..e0735bde 100644
+--- a/src/photos-query-builder.c
++++ b/src/photos-query-builder.c
+@@ -26,112 +26,76 @@
+ #include <string.h>
+ 
+ #include "photos-base-manager.h"
++#include "photos-query.h"
+ #include "photos-query-builder.h"
+ #include "photos-search-type.h"
+ #include "photos-source-manager.h"
+ #include "photos-search-match-manager.h"
+ #include "photos-search-type-manager.h"
+ 
++#define PHOTOS_QUERY_COLLECTIONS_IDENTIFIER "photos:collection:"
++#define PHOTOS_QUERY_LOCAL_COLLECTIONS_IDENTIFIER "photos:collection:local:"
+ 
+-static gchar *
+-photos_query_builder_filter (PhotosSearchContextState *state, gint flags)
+-{
+-  gchar *sparql;
+-  g_autofree gchar *src_mngr_filter = NULL;
+-  g_autofree gchar *srch_mtch_mngr_filter = NULL;
+-  g_autofree gchar *srch_typ_mngr_filter = NULL;
++const gchar *collections_default_filter = \
++  "(fn:starts-with (nao:identifier (?urn), '" PHOTOS_QUERY_COLLECTIONS_IDENTIFIER "')"
++  "   || (?urn = nfo:image-category-screenshot))";
+ 
+-  src_mngr_filter = photos_base_manager_get_filter (state->src_mngr, flags);
+-  srch_mtch_mngr_filter = photos_base_manager_get_filter (state->srch_mtch_mngr, flags);
+-  srch_typ_mngr_filter = photos_base_manager_get_filter (state->srch_typ_mngr, flags);
+ 
+-  sparql = g_strdup_printf ("FILTER (%s && %s && %s)",
+-                            src_mngr_filter,
+-                            srch_mtch_mngr_filter,
+-                            srch_typ_mngr_filter);
+-
+-  return sparql;
+-}
++/* This includes mimetype blocklist */
++const gchar *photos_default_filter = \
++  "(nie:mimeType(?urn) != 'image/gif' && nie:mimeType(?urn) != 'image/x-eps')";
+ 
+ 
+ static gchar *
+-photos_query_builder_optional (void)
+-{
+-  return g_strdup ("OPTIONAL { ?urn nco:creator ?creator . } "
+-                   "OPTIONAL { ?urn nco:publisher ?publisher . }");
+-}
+-
+-
+-static gchar *
+-photos_query_builder_inner_where (PhotosSearchContextState *state, gboolean global, gint flags)
++photos_query_builder_query (PhotosSearchContextState *state,
++                            gboolean global,
++                            gint flags,
++                            PhotosOffsetController *offset_cntrlr)
+ {
+-  g_autofree gchar *item_mngr_where = NULL;
++  PhotosSparqlTemplate *template;
++  const gchar *projection = NULL;
++  g_autofree gchar *item_pattern = NULL;
++  g_autofree gchar *search_filter = NULL;
++  g_autofree gchar *source_filter = NULL;
++  const gchar *order = NULL;
++  g_autofree gchar *offset_limit = NULL;
+   gchar *sparql;
+-  g_autofree gchar *srch_typ_mngr_where = NULL;
+ 
+-  srch_typ_mngr_where = photos_base_manager_get_where (state->srch_typ_mngr, flags);
++  template = photos_base_manager_get_sparql_template (state->srch_typ_mngr, flags);
++
++  projection = "?urn "
++               "nie:url (?urn) "
++               "nfo:fileName (?urn) "
++               "nie:mimeType (?urn) "
++               "nie:title (?urn) "
++               "tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') "
++               "tracker:coalesce (nfo:fileLastModified (?urn), nie:contentLastModified (?urn)) AS ?mtime "
++               "nao:identifier (?urn) "
++               "rdf:type (?urn) "
++               "nie:dataSource(?urn) "
++               "( EXISTS { ?urn nao:hasTag nao:predefined-tag-favorite } ) "
++               "( EXISTS { ?urn nco:contributor ?contributor FILTER ( ?contributor != ?creator ) } ) "
++               "tracker:coalesce(nfo:fileCreated (?urn), nie:contentCreated (?urn)) "
++               "nfo:width (?urn) "
++               "nfo:height (?urn) "
++               "nfo:equipment (?urn) "
++               "nfo:orientation (?urn) "
++               "nmm:exposureTime (?urn) "
++               "nmm:fnumber (?urn) "
++               "nmm:focalLength (?urn) "
++               "nmm:isoSpeed (?urn) "
++               "nmm:flash (?urn) "
++               "slo:location (?urn) ";
++
++  item_pattern = photos_base_manager_get_where (state->item_mngr, flags);
+ 
+   if (!(flags & PHOTOS_QUERY_FLAGS_UNFILTERED))
+     {
+-      if (global)
+-        {
+-          /* TODO: SearchCategoryManager */
+-
+-          item_mngr_where = photos_base_manager_get_where (state->item_mngr, flags);
+-        }
++      source_filter = photos_base_manager_get_filter (state->src_mngr, flags);
++      search_filter = photos_base_manager_get_filter (state->srch_mtch_mngr, flags);
+     }
+ 
+-  sparql = g_strdup_printf ("WHERE { %s %s }",
+-                            srch_typ_mngr_where,
+-                            (item_mngr_where != NULL) ? item_mngr_where : "");
+-
+-  return sparql;
+-}
+-
+-
+-static gchar *
+-photos_query_builder_where (PhotosSearchContextState *state, gboolean global, gint flags)
+-{
+-  const gchar *count_items = "COUNT (?item) AS ?count";
+-  gboolean item_defined;
+-  g_autofree gchar *filter = NULL;
+-  g_autofree gchar *optional = NULL;
+-  gchar *sparql;
+-  g_autofree gchar *where_sparql = NULL;
+-
+-  where_sparql = photos_query_builder_inner_where (state, global, flags);
+-  item_defined = strstr (where_sparql, "?item") != NULL;
+-
+-  optional = photos_query_builder_optional ();
+-
+-  if (!(flags & PHOTOS_QUERY_FLAGS_UNFILTERED))
+-    filter = photos_query_builder_filter (state, flags);
+-
+-  sparql = g_strdup_printf ("WHERE {{"
+-                            "    SELECT ?urn rdf:type (?urn) AS ?type %s %s GROUP BY (?urn)"
+-                            "  }"
+-                            "  %s %s"
+-                            "}",
+-                            item_defined ? count_items : "",
+-                            where_sparql,
+-                            optional,
+-                            (filter != NULL) ? filter : "");
+-
+-  return sparql;
+-}
+-
+-
+-static gchar *
+-photos_query_builder_query (PhotosSearchContextState *state,
+-                            gboolean global,
+-                            gint flags,
+-                            PhotosOffsetController *offset_cntrlr)
+-{
+-  gchar *sparql;
+-  g_autofree gchar *tail_sparql = NULL;
+-  g_autofree gchar *where_sparql = NULL;
+-
+-  where_sparql = photos_query_builder_where (state, global, flags);
++  order = "ORDER BY DESC (?mtime)";
+ 
+   if (global && (flags & PHOTOS_QUERY_FLAGS_UNLIMITED) == 0)
+     {
+@@ -144,35 +108,19 @@ photos_query_builder_query (PhotosSearchContextState *state,
+           step = photos_offset_controller_get_step (offset_cntrlr);
+         }
+ 
+-      tail_sparql = g_strdup_printf ("ORDER BY DESC (?mtime) LIMIT %d OFFSET %d", step, offset);
++      offset_limit = g_strdup_printf ("LIMIT %d OFFSET %d", step, offset);
+     }
+ 
+-  sparql = g_strconcat ("SELECT ?urn "
+-                        "nie:url (?urn) "
+-                        "nfo:fileName (?urn) "
+-                        "nie:mimeType (?urn) "
+-                        "nie:title (?urn) "
+-                        "tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') "
+-                        "tracker:coalesce (nfo:fileLastModified (?urn), nie:contentLastModified (?urn)) AS ?mtime "
+-                        "nao:identifier (?urn) "
+-                        "rdf:type (?urn) "
+-                        "nie:dataSource(?urn) "
+-                        "( EXISTS { ?urn nao:hasTag nao:predefined-tag-favorite } ) "
+-                        "( EXISTS { ?urn nco:contributor ?contributor FILTER ( ?contributor != ?creator ) } ) "
+-                        "tracker:coalesce(nfo:fileCreated (?urn), nie:contentCreated (?urn)) "
+-                        "nfo:width (?urn) "
+-                        "nfo:height (?urn) "
+-                        "nfo:equipment (?urn) "
+-                        "nfo:orientation (?urn) "
+-                        "nmm:exposureTime (?urn) "
+-                        "nmm:fnumber (?urn) "
+-                        "nmm:focalLength (?urn) "
+-                        "nmm:isoSpeed (?urn) "
+-                        "nmm:flash (?urn) "
+-                        "slo:location (?urn) ",
+-                        where_sparql,
+-                        tail_sparql,
+-                        NULL);
++  sparql = photos_sparql_template_get_sparql (template,
++                                              "projection", projection,
++                                              "collections_default_filter", collections_default_filter,
++                                              "item_pattern", item_pattern,
++                                              "photos_default_filter", photos_default_filter,
++                                              "source_filter", source_filter ? source_filter : "",
++                                              "search_filter", search_filter ? search_filter : "",
++                                              "order", order,
++                                              "offset_limit", offset_limit ? offset_limit : "",
++                                              NULL);
+ 
+   return sparql;
+ }
+@@ -231,12 +179,37 @@ photos_query_builder_collection_icon_query (PhotosSearchContextState *state, con
+ PhotosQuery *
+ photos_query_builder_count_query (PhotosSearchContextState *state, gint flags)
+ {
+-  PhotosQuery *query;
++  PhotosSparqlTemplate *template;
++  const gchar *projection = NULL;
++  g_autofree gchar *item_pattern = NULL;
++  g_autofree gchar *search_filter = NULL;
++  g_autofree gchar *source_filter = NULL;
+   g_autofree gchar *sparql = NULL;
+-  g_autofree gchar *where_sparql = NULL;
++  PhotosQuery *query;
++
++  template = photos_base_manager_get_sparql_template (state->srch_typ_mngr, flags);
++
++  projection = "COUNT(?urn) ";
++
++  item_pattern = photos_base_manager_get_where (state->item_mngr, flags);
++
++  if (! (flags & PHOTOS_QUERY_FLAGS_UNFILTERED))
++    {
++      source_filter = photos_base_manager_get_filter (state->src_mngr, flags);
++      search_filter = photos_base_manager_get_filter (state->srch_mtch_mngr, flags);
++    }
++
++  sparql = photos_sparql_template_get_sparql (template,
++                                              "projection", projection,
++                                              "collections_default_filter", collections_default_filter,
++                                              "item_pattern", item_pattern,
++                                              "photos_default_filter", photos_default_filter,
++                                              "source_filter", source_filter ? source_filter : "",
++                                              "search_filter", search_filter ? search_filter : "",
++                                              "order", "",
++                                              "offset_limit", "",
++                                              NULL);
+ 
+-  where_sparql = photos_query_builder_where (state, TRUE, flags);
+-  sparql = g_strconcat ("SELECT DISTINCT COUNT(?urn) ", where_sparql, NULL);
+   query = photos_query_new (state, sparql);
+ 
+   return query;
+diff --git a/src/photos-search-type-manager.c b/src/photos-search-type-manager.c
+index 87f441ed..5c87d4a4 100644
+--- a/src/photos-search-type-manager.c
++++ b/src/photos-search-type-manager.c
+@@ -41,13 +41,6 @@ struct _PhotosSearchTypeManager
+ G_DEFINE_TYPE (PhotosSearchTypeManager, photos_search_type_manager, PHOTOS_TYPE_BASE_MANAGER);
+ 
+ 
+-static const gchar *BLACKLISTED_MIME_TYPES[] =
+-{
+-  "image/gif",
+-  "image/x-eps"
+-};
+-
+-
+ static gchar *
+ photos_search_type_manager_get_filter (PhotosBaseManager *mngr, gint flags)
+ {
+@@ -69,9 +62,8 @@ photos_search_type_manager_get_filter (PhotosBaseManager *mngr, gint flags)
+   return filter;
+ }
+ 
+-
+-static gchar *
+-photos_search_type_manager_get_where (PhotosBaseManager *mngr, gint flags)
++static PhotosSparqlTemplate *
++photos_search_type_manager_get_sparql_template (PhotosBaseManager *mngr, gint flags)
+ {
+   GObject *search_type;
+ 
+@@ -86,74 +78,39 @@ photos_search_type_manager_get_where (PhotosBaseManager *mngr, gint flags)
+   else
+     search_type = photos_base_manager_get_object_by_id (mngr, PHOTOS_SEARCH_TYPE_STOCK_ALL);
+ 
+-  return photos_filterable_get_where (PHOTOS_FILTERABLE (search_type));
++  return photos_search_type_get_sparql_template (PHOTOS_SEARCH_TYPE (search_type));
+ }
+ 
+-
+ static void
+ photos_search_type_manager_init (PhotosSearchTypeManager *self)
+ {
+   PhotosSearchType *search_type;
+-  gchar *item_filter;
+-  gchar *all_filter;
+-  gchar *blacklisted_mime_types_filter;
+-  gchar *col_filter;
+-  gchar **strv;
+-  guint i;
+-  guint n_elements;
+-
+-  n_elements = G_N_ELEMENTS (BLACKLISTED_MIME_TYPES);
+-  strv = (gchar **) g_malloc0_n (n_elements + 1, sizeof (gchar *));
+-  for (i = 0; i < n_elements; i++)
+-    strv[i] = g_strdup_printf ("nie:mimeType(?urn) != '%s'", BLACKLISTED_MIME_TYPES[i]);
+-
+-  blacklisted_mime_types_filter = g_strjoinv (" && ", strv);
+-
+-  item_filter = g_strdup_printf ("(fn:contains (?type, 'nmm#Photo') && %s)", blacklisted_mime_types_filter);
+-  col_filter = g_strdup_printf ("(fn:contains (?type, 'nfo#DataContainer')"
+-                                " && ?count > 0"
+-                                " && (fn:starts-with (nao:identifier (?urn), '%s')"
+-                                "     || (?urn = nfo:image-category-screenshot)))",
+-                                PHOTOS_QUERY_COLLECTIONS_IDENTIFIER);
+-  all_filter = g_strdup_printf ("(%s || %s)", col_filter, item_filter);
+ 
+   search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_ALL,
+                                              _("All"),
+-                                             "?urn a rdfs:Resource. "
+-                                             "OPTIONAL {?item a nmm:Photo; nie:isPartOf ?urn}",
+-                                             all_filter);
++                                             "resource:///org/gnome/Photos/all.sparql.template");
+   photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
+   g_object_unref (search_type);
+ 
+   search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_COLLECTIONS,
+                                              _("Albums"),
+-                                             "?urn a nfo:DataContainer. "
+-                                             "?item a nmm:Photo; nie:isPartOf ?urn.",
+-                                             col_filter);
++                                             "resource:///org/gnome/Photos/collections.sparql.template");
+   photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
+   g_object_unref (search_type);
+ 
+   search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_FAVORITES,
+                                              _("Favorites"),
+-                                             "?urn a nmm:Photo; nao:hasTag nao:predefined-tag-favorite. ",
+-                                             blacklisted_mime_types_filter);
++                                             "resource:///org/gnome/Photos/favorite-photos.sparql.template");
+   photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
+   g_object_unref (search_type);
+ 
+   search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_PHOTOS,
+                                              _("Photos"),
+-                                             "?urn a nmm:Photo",
+-                                             blacklisted_mime_types_filter);
++                                             "resource:///org/gnome/Photos/photos.sparql.template");
+   photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
+   g_object_unref (search_type);
+ 
+   photos_base_manager_set_active_object_by_id (PHOTOS_BASE_MANAGER (self), PHOTOS_SEARCH_TYPE_STOCK_ALL);
+-
+-  g_free (item_filter);
+-  g_free (all_filter);
+-  g_free (blacklisted_mime_types_filter);
+-  g_free (col_filter);
+-  g_strfreev (strv);
+ }
+ 
+ 
+@@ -163,7 +120,7 @@ photos_search_type_manager_class_init (PhotosSearchTypeManagerClass *class)
+   PhotosBaseManagerClass *base_manager_class = PHOTOS_BASE_MANAGER_CLASS (class);
+ 
+   base_manager_class->get_filter = photos_search_type_manager_get_filter;
+-  base_manager_class->get_where = photos_search_type_manager_get_where;
++  base_manager_class->get_sparql_template = photos_search_type_manager_get_sparql_template;
+ }
+ 
+ 
+diff --git a/src/photos-search-type.c b/src/photos-search-type.c
+index 44dc60eb..f3bbae15 100644
+--- a/src/photos-search-type.c
++++ b/src/photos-search-type.c
+@@ -25,24 +25,23 @@
+ 
+ #include "photos-filterable.h"
+ #include "photos-search-type.h"
++#include "photos-sparql-template.h"
+ 
+ 
+ struct _PhotosSearchType
+ {
+   GObject parent_instance;
+-  gchar *filter;
+   gchar *id;
+   gchar *name;
+-  gchar *where;
++  PhotosSparqlTemplate *sparql_template;
+ };
+ 
+ enum
+ {
+   PROP_0,
+-  PROP_FILTER,
+   PROP_ID,
+   PROP_NAME,
+-  PROP_WHERE,
++  PROP_SPARQL_TEMPLATE,
+ };
+ 
+ static void photos_search_type_filterable_iface_init (PhotosFilterableInterface *iface);
+@@ -53,14 +52,6 @@ G_DEFINE_TYPE_WITH_CODE (PhotosSearchType, photos_search_type, G_TYPE_OBJECT,
+                                                 photos_search_type_filterable_iface_init));
+ 
+ 
+-static gchar *
+-photos_search_type_get_filter (PhotosFilterable *iface)
+-{
+-  PhotosSearchType *self = PHOTOS_SEARCH_TYPE (iface);
+-  return g_strdup (self->filter);
+-}
+-
+-
+ static const gchar *
+ photos_search_type_get_id (PhotosFilterable *filterable)
+ {
+@@ -69,14 +60,6 @@ photos_search_type_get_id (PhotosFilterable *filterable)
+ }
+ 
+ 
+-static gchar *
+-photos_search_type_get_where (PhotosFilterable *iface)
+-{
+-  PhotosSearchType *self = PHOTOS_SEARCH_TYPE (iface);
+-  return g_strdup (self->where);
+-}
+-
+-
+ static gboolean
+ photos_search_type_is_search_criterion (PhotosFilterable *iface)
+ {
+@@ -84,15 +67,20 @@ photos_search_type_is_search_criterion (PhotosFilterable *iface)
+ }
+ 
+ 
++PhotosSparqlTemplate *
++photos_search_type_get_sparql_template (PhotosSearchType *self)
++{
++  return self->sparql_template;
++}
++
+ static void
+ photos_search_type_finalize (GObject *object)
+ {
+   PhotosSearchType *self = PHOTOS_SEARCH_TYPE (object);
+ 
+-  g_free (self->filter);
+   g_free (self->id);
+   g_free (self->name);
+-  g_free (self->where);
++  g_clear_object (&self->sparql_template);
+ 
+   G_OBJECT_CLASS (photos_search_type_parent_class)->finalize (object);
+ }
+@@ -113,6 +101,10 @@ photos_search_type_get_property (GObject *object, guint prop_id, GValue *value,
+       g_value_set_string (value, self->name);
+       break;
+ 
++    case PROP_SPARQL_TEMPLATE:
++      g_value_set_object (value, self->sparql_template);
++      break;
++
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -127,10 +119,6 @@ photos_search_type_set_property (GObject *object, guint prop_id, const GValue *v
+ 
+   switch (prop_id)
+     {
+-    case PROP_FILTER:
+-      self->filter = g_value_dup_string (value);
+-      break;
+-
+     case PROP_ID:
+       self->id = g_value_dup_string (value);
+       break;
+@@ -139,8 +127,8 @@ photos_search_type_set_property (GObject *object, guint prop_id, const GValue *v
+       self->name = g_value_dup_string (value);
+       break;
+ 
+-    case PROP_WHERE:
+-      self->where = g_value_dup_string (value);
++    case PROP_SPARQL_TEMPLATE:
++      self->sparql_template = g_object_ref (g_value_get_object (value));
+       break;
+ 
+     default:
+@@ -165,14 +153,6 @@ photos_search_type_class_init (PhotosSearchTypeClass *class)
+   object_class->get_property = photos_search_type_get_property;
+   object_class->set_property = photos_search_type_set_property;
+ 
+-  g_object_class_install_property (object_class,
+-                                   PROP_FILTER,
+-                                   g_param_spec_string ("filter",
+-                                                        "",
+-                                                        "",
+-                                                        "(true)",
+-                                                        G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
+-
+   g_object_class_install_property (object_class,
+                                    PROP_ID,
+                                    g_param_spec_string ("id",
+@@ -190,11 +170,11 @@ photos_search_type_class_init (PhotosSearchTypeClass *class)
+                                                         G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+ 
+   g_object_class_install_property (object_class,
+-                                   PROP_WHERE,
+-                                   g_param_spec_string ("where",
+-                                                        "",
++                                   PROP_SPARQL_TEMPLATE,
++                                   g_param_spec_object ("sparql-template",
+                                                         "",
+                                                         "",
++                                                        PHOTOS_TYPE_SPARQL_TEMPLATE,
+                                                         G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
+ }
+ 
+@@ -202,9 +182,7 @@ photos_search_type_class_init (PhotosSearchTypeClass *class)
+ static void
+ photos_search_type_filterable_iface_init (PhotosFilterableInterface *iface)
+ {
+-  iface->get_filter = photos_search_type_get_filter;
+   iface->get_id = photos_search_type_get_id;
+-  iface->get_where = photos_search_type_get_where;
+   iface->is_search_criterion = photos_search_type_is_search_criterion;
+ }
+ 
+@@ -217,12 +195,13 @@ photos_search_type_new (const gchar *id, const gchar *name)
+ 
+ 
+ PhotosSearchType *
+-photos_search_type_new_full (const gchar *id, const gchar *name, const gchar *where, const gchar *filter)
++photos_search_type_new_full (const gchar *id, const gchar *name, const gchar *template_path)
+ {
++  g_autoptr (PhotosSparqlTemplate) template = photos_sparql_template_new (template_path);
++
+   return g_object_new (PHOTOS_TYPE_SEARCH_TYPE,
+                        "id", id,
+                        "name", name,
+-                       "filter", filter,
+-                       "where", where,
++                       "sparql-template", template,
+                        NULL);
+ }
+diff --git a/src/photos-search-type.h b/src/photos-search-type.h
+index 2f7135bd..7d699dd4 100644
+--- a/src/photos-search-type.h
++++ b/src/photos-search-type.h
+@@ -24,6 +24,7 @@
+ #define PHOTOS_SEARCH_TYPE_H
+ 
+ #include <glib-object.h>
++#include "photos-sparql-template.h"
+ 
+ G_BEGIN_DECLS
+ 
+@@ -39,8 +40,9 @@ PhotosSearchType    *photos_search_type_new                (const gchar *id, con
+ 
+ PhotosSearchType    *photos_search_type_new_full           (const gchar *id,
+                                                             const gchar *name,
+-                                                            const gchar *where,
+-                                                            const gchar *filter);
++                                                            const gchar *template_path);
++
++PhotosSparqlTemplate *photos_search_type_get_sparql_template (PhotosSearchType *self);
+ 
+ G_END_DECLS
+ 
+diff --git a/src/photos-sparql-template.c b/src/photos-sparql-template.c
+new file mode 100644
+index 00000000..b32437c0
+--- /dev/null
++++ b/src/photos-sparql-template.c
+@@ -0,0 +1,187 @@
++/*
++ * Photos - access, organize and share your photos on GNOME
++ * Copyright © 2020 Sam Thursfield <sam@afuera.me.uk>
++ *
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation, either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#include <gio/gio.h>
++
++#include "photos-sparql-template.h"
++
++#define MAX_SPARQL_TEMPLATE_SIZE (1024 * 10)
++
++struct _PhotosSparqlTemplate {
++  GObject parent_instance;
++  gchar *template_path;
++  gchar *template_text;
++};
++
++G_DEFINE_TYPE (PhotosSparqlTemplate, photos_sparql_template, G_TYPE_OBJECT)
++
++enum {
++  PROP_0,
++  PROP_TEMPLATE_PATH,
++  N_PROPS
++};
++
++PhotosSparqlTemplate *
++photos_sparql_template_new (const gchar *template_path)
++{
++  return g_object_new (PHOTOS_TYPE_SPARQL_TEMPLATE, "template-path", template_path, NULL);
++}
++
++static void
++photos_sparql_template_constructed (GObject *object)
++{
++  PhotosSparqlTemplate *self = PHOTOS_SPARQL_TEMPLATE (object);
++  g_autoptr (GFile) file = NULL;
++  g_autoptr (GFileInputStream) stream = NULL;
++  gchar buffer[MAX_SPARQL_TEMPLATE_SIZE + 1];
++  gsize bytes_read;
++  g_autoptr (GError) error = NULL;
++
++  G_OBJECT_CLASS (photos_sparql_template_parent_class)->constructed (object);
++
++  file = g_file_new_for_uri (self->template_path);
++
++  stream = g_file_read (file, NULL, &error);
++
++  if (!stream)
++    {
++      g_critical ("Failed to open template %s: %s", self->template_path, error->message);
++    }
++
++  g_input_stream_read_all (G_INPUT_STREAM (stream), buffer, MAX_SPARQL_TEMPLATE_SIZE, &bytes_read, NULL, &error);
++
++  if (error)
++    {
++      g_critical ("Failed to read template %s: %s", self->template_path, error->message);
++    }
++
++  buffer[bytes_read] = '\0';
++
++  self->template_text  = g_strdup (buffer);
++}
++
++static void
++photos_sparql_template_finalize (GObject *object)
++{
++  G_OBJECT_CLASS (photos_sparql_template_parent_class)->finalize (object);
++}
++
++static void
++photos_sparql_template_get_property (GObject    *object,
++                                     guint       prop_id,
++                                     GValue     *value,
++                                     GParamSpec *pspec)
++{
++  PhotosSparqlTemplate *self = PHOTOS_SPARQL_TEMPLATE (object);
++
++  switch (prop_id)
++    {
++    case PROP_TEMPLATE_PATH:
++      g_value_set_string (value, self->template_path);
++      break;
++
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++    }
++}
++
++static void
++photos_sparql_template_set_property (GObject      *object,
++                                     guint         prop_id,
++                                     const GValue *value,
++                                     GParamSpec   *pspec)
++{
++  PhotosSparqlTemplate *self = PHOTOS_SPARQL_TEMPLATE (object);
++
++  switch (prop_id)
++    {
++    case PROP_TEMPLATE_PATH:
++      self->template_path = g_value_dup_string (value);
++      break;
++
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++    }
++}
++
++static void
++photos_sparql_template_class_init (PhotosSparqlTemplateClass *klass)
++{
++  GObjectClass *object_class = G_OBJECT_CLASS (klass);
++
++  object_class->constructed = photos_sparql_template_constructed;
++  object_class->finalize = photos_sparql_template_finalize;
++  object_class->get_property = photos_sparql_template_get_property;
++  object_class->set_property = photos_sparql_template_set_property;
++
++  g_object_class_install_property (object_class,
++                                   PROP_TEMPLATE_PATH,
++                                   g_param_spec_string ("template-path",
++                                                        "Template path",
++                                                        "Path to the template file.",
++                                                        NULL,
++                                                        G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
++}
++
++static void
++photos_sparql_template_init (PhotosSparqlTemplate *self)
++{
++}
++
++
++gchar *
++photos_sparql_template_get_sparql (PhotosSparqlTemplate *self,
++                                   const gchar          *first_binding_name, ...)
++{
++  va_list va;
++  gchar *sparql;
++
++  sparql = self->template_text;
++
++  /* FIXME: this is an inefficent way to do template substitutions
++   * because we allocate and free a copy of the string for each binding.
++   * We should check https://gitlab.gnome.org/GNOME/template-glib/
++   */
++  if (first_binding_name)
++    {
++      GRegex *regex;
++      gchar *name_regex;
++      const gchar *name;
++      const gchar *value;
++
++      va_start (va, first_binding_name);
++      name = first_binding_name;
++      do {
++        value = va_arg (va, const gchar *);
++
++        if (value == NULL)
++          {
++            g_critical ("Missing value for argument \"%s\"", name);
++            break;
++          }
++
++        name_regex = g_strdup_printf ("{{\\s?%s\\s?}}", name);
++        regex = g_regex_new (name_regex, 0, 0, NULL);
++        sparql = g_regex_replace_literal (regex, sparql, -1, 0, value, 0, NULL) ;
++      } while ((name = va_arg (va, const gchar *)));
++
++      va_end (va);
++    }
++
++  return sparql;
++}
+diff --git a/src/photos-sparql-template.h b/src/photos-sparql-template.h
+new file mode 100644
+index 00000000..66351b38
+--- /dev/null
++++ b/src/photos-sparql-template.h
+@@ -0,0 +1,38 @@
++/*
++ * Photos - access, organize and share your photos on GNOME
++ * Copyright © 2020 Sam Thursfield <sam@afuera.me.uk>
++ *
++ * This program is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation, either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#pragma once
++
++#include <glib-object.h>
++
++G_BEGIN_DECLS
++
++#define PHOTOS_TYPE_SPARQL_TEMPLATE (photos_sparql_template_get_type())
++
++G_DECLARE_FINAL_TYPE (PhotosSparqlTemplate, photos_sparql_template, PHOTOS, SPARQL_TEMPLATE, GObject)
++
++struct _PhotosSparqlTemplateClass
++{
++  GObjectClass parent_class;
++};
++
++PhotosSparqlTemplate *photos_sparql_template_new (const gchar *template_path);
++
++gchar *photos_sparql_template_get_sparql (PhotosSparqlTemplate *self, const gchar *first_binding_name, ...)  G_GNUC_NULL_TERMINATED;
++
++G_END_DECLS
+diff --git a/src/photos.gresource.xml b/src/photos.gresource.xml
+index 1015b11d..39e6d842 100644
+--- a/src/photos.gresource.xml
++++ b/src/photos.gresource.xml
+@@ -35,6 +35,10 @@
+     <file alias="selection-toolbar.ui" preprocess="xml-stripblanks" compressed="true">photos-selection-toolbar.ui</file>
+     <file alias="share-dialog.ui" preprocess="xml-stripblanks" compressed="true">photos-share-dialog.ui</file>
+     <file alias="zoom-controls.ui" preprocess="xml-stripblanks" compressed="true">photos-zoom-controls.ui</file>
++    <file alias="all.sparql.template">queries/all.sparql.template</file>
++    <file alias="collections.sparql.template">queries/collections.sparql.template</file>
++    <file alias="favorite-photos.sparql.template">queries/favorite-photos.sparql.template</file>
++    <file alias="photos.sparql.template">queries/photos.sparql.template</file>
+   </gresource>
+ 
+   <gresource prefix="/org/gnome/Photos/gtk">
+diff --git a/src/queries/all.sparql.template b/src/queries/all.sparql.template
+new file mode 100644
+index 00000000..1cef98e8
+--- /dev/null
++++ b/src/queries/all.sparql.template
+@@ -0,0 +1,31 @@
++SELECT {{projection}}
++{
++    {
++        SELECT {{projection}}
++        {
++            {
++                SELECT ?urn COUNT(?item) AS ?count
++                {
++                    ?urn a nfo:DataContainer.
++                    ?item a nmm:Photo; nie:isPartOf ?urn.
++                } GROUP BY ?urn
++            }
++            FILTER (?count > 0 && {{collections_default_filter}} && {{search_filter}})
++        }
++        GROUP BY ?urn
++    }
++    UNION
++    {
++        SELECT {{projection}}
++        {
++            ?urn a nmm:Photo .
++            OPTIONAL { ?urn nco:creator ?creator . }
++            OPTIONAL { ?urn nco:publisher ?publisher . }
++            {{item_pattern}}
++            FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++        }
++        GROUP BY ?urn
++    }
++}
++{{order}}
++{{offset_limit}}
+diff --git a/src/queries/collections.sparql.template b/src/queries/collections.sparql.template
+new file mode 100644
+index 00000000..20b35cd6
+--- /dev/null
++++ b/src/queries/collections.sparql.template
+@@ -0,0 +1,14 @@
++SELECT {{projection}}
++{
++    {
++        SELECT ?urn COUNT(?item) AS ?count
++        {
++            ?urn a nfo:DataContainer.
++            ?item a nmm:Photo; nie:isPartOf ?urn.
++        } GROUP BY ?urn
++    }
++    FILTER (?count > 0 && {{collections_default_filter}} && {{search_filter}})
++}
++GROUP BY ?urn
++{{order}}
++{{offset_limit}}
+diff --git a/src/queries/favorite-photos.sparql.template b/src/queries/favorite-photos.sparql.template
+new file mode 100644
+index 00000000..0885a08a
+--- /dev/null
++++ b/src/queries/favorite-photos.sparql.template
+@@ -0,0 +1,12 @@
++SELECT {{projection}}
++{
++    ?urn a nmm:Photo .
++    ?urn a nmm:Photo; nao:hasTag nao:predefined-tag-favorite .
++    OPTIONAL { ?urn nco:creator ?creator . }
++    OPTIONAL { ?urn nco:publisher ?publisher . }
++    {{item_pattern}}
++    FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++}
++GROUP BY ?urn
++{{order}}
++{{offset_limit}}
+diff --git a/src/queries/photos.sparql.template b/src/queries/photos.sparql.template
+new file mode 100644
+index 00000000..4eb10b74
+--- /dev/null
++++ b/src/queries/photos.sparql.template
+@@ -0,0 +1,11 @@
++SELECT {{projection}}
++{
++    ?urn a nmm:Photo .
++    OPTIONAL { ?urn nco:creator ?creator . }
++    OPTIONAL { ?urn nco:publisher ?publisher . }
++    {{item_pattern}}
++    FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++}
++GROUP BY ?urn
++{{order}}
++{{offset_limit}}
+-- 
+GitLab
+
+
+From d61d440efe340bda4e195d640066fb29220d0cb5 Mon Sep 17 00:00:00 2001
+From: Sam Thursfield <sam@afuera.me.uk>
+Date: Sat, 23 May 2020 13:36:25 +0200
+Subject: [PATCH 4/4] Port to Tracker 3
+
+Notable changes:
+
+  * User data (favourites, albums) is now stored in a private database in
+    ~/.local/share/gnome-photos. This is combined with the Tracker Miner
+    FS index of photos at query time.
+  * Inside Flatpak, the app connects to Tracker via the new
+    xdg-tracker-portal instead of talking directly over D-Bus. Access is
+    limited by the portal so the app can only see the Pictures graph.
+  * The Flatpak build can use a bundled version of Tracker Miners, if a
+    suitable version is not available on the host.
+  * Change detection is done using TrackerNotifier instead of watching
+    the GraphUpdated D-Bus signal directly.
+
+Closes https://gitlab.gnome.org/GNOME/gnome-photos/-/issues/59
+Closes https://gitlab.gnome.org/GNOME/gnome-photos/-/issues/152
+---
+ data/meson.build                              |   2 +
+ data/tracker/meson.build                      |  33 ++
+ ...e.Photos.Tracker3.Miner.Extract.service.in |   7 +
+ ...ome.Photos.Tracker3.Miner.Files.service.in |   7 +
+ data/tracker/org.gnome.Photos.domain.rule.in  |  20 +
+ flatpak/org.gnome.Photos.json                 |  55 +-
+ meson.build                                   |   3 +-
+ src/meson.build                               |  19 +-
+ ...freedesktop.Tracker3.Miner.Files.Index.xml |  11 +
+ src/org.freedesktop.Tracker3.Miner.xml        |  56 +++
+ src/photos-application.c                      | 184 +++----
+ src/photos-base-item.c                        |  18 +-
+ src/photos-indexing-notification.c            |  53 +-
+ src/photos-item-manager.c                     |  69 +--
+ src/photos-quarks.c                           |  20 +-
+ src/photos-query-builder.c                    | 148 ++++--
+ src/photos-search-context.c                   |   3 +
+ src/photos-search-context.h                   |   1 +
+ src/photos-search-match-manager.c             |   2 +-
+ src/photos-source.c                           |  14 +-
+ src/photos-tracker-change-event.c             | 136 -----
+ src/photos-tracker-change-event.h             |  64 ---
+ src/photos-tracker-change-monitor.c           | 468 ------------------
+ src/photos-tracker-change-monitor.h           |  42 --
+ src/photos-tracker-controller.c               |  12 +-
+ src/photos-tracker-extract-priority.xml       |   2 +-
+ src/photos-tracker-import-controller.c        |  85 ++--
+ src/photos-tracker-queue.c                    | 206 +++++++-
+ src/photos-tracker-queue.h                    |   7 +
+ src/photos-tracker-resources.xml              |  31 --
+ src/photos-utils.c                            |  24 +-
+ src/photos-utils.h                            |   2 +-
+ src/queries/all.sparql.template               |  34 +-
+ src/queries/collections.sparql.template       |  20 +-
+ src/queries/favorite-photos.sparql.template   |  20 +-
+ src/queries/photos.sparql.template            |  22 +-
+ 36 files changed, 754 insertions(+), 1146 deletions(-)
+ create mode 100644 data/tracker/meson.build
+ create mode 100644 data/tracker/org.gnome.Photos.Tracker3.Miner.Extract.service.in
+ create mode 100644 data/tracker/org.gnome.Photos.Tracker3.Miner.Files.service.in
+ create mode 100644 data/tracker/org.gnome.Photos.domain.rule.in
+ create mode 100644 src/org.freedesktop.Tracker3.Miner.Files.Index.xml
+ create mode 100644 src/org.freedesktop.Tracker3.Miner.xml
+ delete mode 100644 src/photos-tracker-change-event.c
+ delete mode 100644 src/photos-tracker-change-event.h
+ delete mode 100644 src/photos-tracker-change-monitor.c
+ delete mode 100644 src/photos-tracker-change-monitor.h
+ delete mode 100644 src/photos-tracker-resources.xml
+
+diff --git a/data/meson.build b/data/meson.build
+index 7898b0cc..f0d85d4b 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -54,3 +54,5 @@ install_data(
+   photos_namespace.to_lower() + '.gschema.xml',
+   install_dir: join_paths(photos_datadir, 'glib-2.0', 'schemas'),
+ )
++
++subdir('tracker')
+diff --git a/data/tracker/meson.build b/data/tracker/meson.build
+new file mode 100644
+index 00000000..accc99c2
+--- /dev/null
++++ b/data/tracker/meson.build
+@@ -0,0 +1,33 @@
++# Files needed for running Tracker inside the Flatpak sandbox, for systems
++# which don't have a suitable version of Tracker in the host OS.
++#
++# We must export the .service files from the sandbox so they work on the
++# session bus. This means the Tracker domain name must correspond with the
++# application ID.
++
++
++domain_ontologies_dir = get_option('datadir') / 'tracker3' / 'domain-ontologies'
++dbus_services_dir = get_option('datadir') / 'dbus-1' / 'services'
++
++tracker_domain_config = configuration_data()
++tracker_domain_config.set('application_id', photos_namespace)
++tracker_domain_config.set('domain_rule', get_option('prefix') / domain_ontologies_dir / photos_namespace + '.domain.rule')
++
++configure_file(
++  input: 'org.gnome.Photos.domain.rule.in',
++  output: photos_namespace + '.domain.rule',
++  configuration: tracker_domain_config,
++  install_dir: domain_ontologies_dir)
++
++configure_file(
++  input: 'org.gnome.Photos.Tracker3.Miner.Extract.service.in',
++  output: photos_namespace + '.Tracker3.Miner.Extract.service',
++  configuration: tracker_domain_config,
++  install_dir: dbus_services_dir)
++
++configure_file(
++  input: 'org.gnome.Photos.Tracker3.Miner.Files.service.in',
++  output: photos_namespace + '.Tracker3.Miner.Files.service',
++  configuration: tracker_domain_config,
++  install_dir: dbus_services_dir)
++
+diff --git a/data/tracker/org.gnome.Photos.Tracker3.Miner.Extract.service.in b/data/tracker/org.gnome.Photos.Tracker3.Miner.Extract.service.in
+new file mode 100644
+index 00000000..eb7a87aa
+--- /dev/null
++++ b/data/tracker/org.gnome.Photos.Tracker3.Miner.Extract.service.in
+@@ -0,0 +1,7 @@
++[D-BUS Service]
++Name=@application_id@.Tracker3.Miner.Extract
++Exec=/app/libexec/tracker-extract-3 --domain-ontology @domain_rule@
++
++# Miner details needed for tracker-control
++Path=/org/freedesktop/Tracker3/Miner/Extract
++NameSuffix=Miner.Files
+diff --git a/data/tracker/org.gnome.Photos.Tracker3.Miner.Files.service.in b/data/tracker/org.gnome.Photos.Tracker3.Miner.Files.service.in
+new file mode 100644
+index 00000000..4fa7371d
+--- /dev/null
++++ b/data/tracker/org.gnome.Photos.Tracker3.Miner.Files.service.in
+@@ -0,0 +1,7 @@
++[D-BUS Service]
++Name=@application_id@.Tracker3.Miner.Files
++Exec=/app/libexec/tracker-miner-fs-3 --domain-ontology @domain_rule@ --initial-sleep 0
++
++# Miner details needed for tracker-control
++Path=/org/freedesktop/Tracker3/Miner/Files
++NameSuffix=Miner.Files
+diff --git a/data/tracker/org.gnome.Photos.domain.rule.in b/data/tracker/org.gnome.Photos.domain.rule.in
+new file mode 100644
+index 00000000..8f5fc4a1
+--- /dev/null
++++ b/data/tracker/org.gnome.Photos.domain.rule.in
+@@ -0,0 +1,20 @@
++# This defines a private Tracker domain for GNOME Photos.
++#
++# It's used to run the Tracker indexer inside a Flatpak sandbox, when Photos is
++# running on a host that doesn't have a suitable version of Tracker installed.
++
++[DomainOntology]
++# Location for the Tracker database
++CacheLocation=$XDG_CACHE_HOME/gnome-photos/miner/files
++
++# Name of the ontology to use, must be one located in
++# $(sharedir)/tracker/ontologies
++OntologyName=nepomuk
++
++# DBus name for the owner (not optional). Tracker will use
++# the domain as the prefix of the DBus name for all the
++# services related to this domain ontology.
++Domain=@application_id@
++
++# List of miners we expect to run in this domain.
++Miners=Miner.Files;Miner.Extract
+diff --git a/flatpak/org.gnome.Photos.json b/flatpak/org.gnome.Photos.json
+index 5d16689c..adfdaf34 100644
+--- a/flatpak/org.gnome.Photos.json
++++ b/flatpak/org.gnome.Photos.json
+@@ -7,7 +7,7 @@
+     "tags": [ "nightly" ],
+     "desktop-file-name-prefix": "(Nightly) ",
+     "finish-args": [
+-        "--env=TRACKER_SPARQL_BACKEND=bus",
++        "--add-policy=Tracker3.dbus:org.freedesktop.Tracker3.Miner.Files=tracker:Pictures",
+         "--filesystem=xdg-download",
+         "--filesystem=xdg-pictures",
+         "--metadata=X-DConf=migrate-path=/org/gnome/photos/",
+@@ -17,8 +17,8 @@
+         "--socket=wayland",
+         "--socket=x11",
+         "--talk-name=org.freedesktop.FileManager1",
+-        "--talk-name=org.freedesktop.Tracker1",
+-        "--talk-name=org.freedesktop.Tracker1.Miner.Extract",
++        "--talk-name=org.freedesktop.Tracker3.Miner.Files",
++        "--talk-name=org.freedesktop.Tracker3.Miner.Files.Index",
+         "--talk-name=com.intel.dleyna-renderer",
+         "--talk-name=org.gnome.ControlCenter",
+         "--talk-name=org.gnome.SettingsDaemon",
+@@ -248,56 +248,22 @@
+                 }
+             ]
+         },
+-        {
+-            "name": "tracker",
+-            "buildsystem": "meson",
+-            "cleanup": [ "/bin", "/etc", "/lib/girepository-1.0", "/libexec", "/share/dbus-1", "/share/gir-1.0" ],
+-            "config-opts": [ "-Dbash_completion=no", "-Ddocs=false", "-Dsystemd_user_services=no" ],
+-            "sources": [
+-                {
+-                    "type": "git",
+-                    "url": "https://gitlab.gnome.org/GNOME/tracker.git",
+-                    "branch": "tracker-2.3"
+-                }
+-            ]
+-        },
+-        {
+-            "name": "intltool",
+-            "cleanup": [ "*" ],
+-            "sources": [
+-                {
+-                    "type": "archive",
+-                    "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz",
+-                    "sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd"
+-                }
+-            ]
+-        },
+         {
+             "name": "tracker-miners",
+             "buildsystem": "meson",
+-            "cleanup": [ "/etc",
+-                         "/lib",
+-                         "/libexec",
+-                         "/share/dbus-1/services/org.freedesktop.Tracker1.Miner.Extract.service",
+-                         "/share/dbus-1/services/org.freedesktop.Tracker1.Writeback.service",
+-                         "/share/tracker/miners/org.freedesktop.Tracker1.Miner.Applications.service",
+-                         "/share/tracker/miners/org.freedesktop.Tracker1.Miner.Extract.service",
+-                         "/share/tracker/miners/org.freedesktop.Tracker1.Miner.RSS.service",
+-                         "/share/tracker-miners",
+-                         "/share/glib-2.0/schemas/org.freedesktop.Tracker.Extract.gschema.xml",
+-                         "/share/glib-2.0/schemas/org.freedesktop.Tracker.Writeback.gschema.xml" ],
+-            "config-opts": [ "-Dextract=false",
+-                             "-Dgeneric_media_extractor=none",
+-                             "-Dminer_apps=false",
++            "cleanup": [ "/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Extract.service",
++                         "/share/dbus-1/services/org.freedesktop.Tracker3.Miner.Files.service",
++                         "/share/dbus-1/services/org.freedesktop.Tracker3.Writeback.service" ],
++            "config-opts": [ "-Dman=false",
+                              "-Dminer_fs=true",
+                              "-Dminer_rss=false",
+-                             "-Dsystemd_user_services=no",
++                             "-Dsystemd_user_services=false",
+                              "-Dwriteback=false" ],
+             "sources": [
+                 {
+                     "type": "git",
+                     "url": "https://gitlab.gnome.org/GNOME/tracker-miners.git",
+-                    "branch": "tracker-miners-2.3"
++                    "branch": "master"
+                 }
+             ]
+         },
+@@ -309,7 +275,8 @@
+                 {
+                     "type": "git",
+                     "url": "https://gitlab.gnome.org/GNOME/gnome-photos.git",
+-                    "disable-shallow-clone": "true"
++                    "disable-shallow-clone": "true",
++                    "branch": "sam/tracker3"
+                 }
+             ]
+         }
+diff --git a/meson.build b/meson.build
+index 70816d24..1c6f2906 100644
+--- a/meson.build
++++ b/meson.build
+@@ -172,8 +172,7 @@ libgdata_dep = dependency('libgdata', version: '>= 0.17.10')
+ libgfgraph_dep = dependency('libgfbgraph-0.2', version: '>= 0.2.1')
+ libjpeg_dep = dependency('libjpeg')
+ libpng_dep = dependency('libpng16')
+-tracker_control_dep = dependency('tracker-control-2.0')
+-tracker_sparql_dep = dependency('tracker-sparql-2.0')
++tracker_sparql_dep = dependency('tracker-sparql-3.0')
+ 
+ dbus_dep = dependency('dbus-1')
+ dbus_service_dir = dbus_dep.get_pkgconfig_variable(
+diff --git a/src/meson.build b/src/meson.build
+index b5b2759c..6b3b7f01 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -205,8 +205,6 @@ sources = common_sources + files(
+   'photos-tool-enhance.c',
+   'photos-tool-filter-button.c',
+   'photos-tool-filters.c',
+-  'photos-tracker-change-event.c',
+-  'photos-tracker-change-monitor.c',
+   'photos-tracker-collection-view-controller.c',
+   'photos-tracker-collections-controller.c',
+   'photos-tracker-controller.c',
+@@ -367,22 +365,18 @@ sources += gnome.gdbus_codegen(
+   autocleanup: 'all',
+ )
+ 
+-tracker_extract_priority = 'photos-tracker-extract-priority'
+-
+ sources += gnome.gdbus_codegen(
+-  tracker_extract_priority,
+-  tracker_extract_priority + '.xml',
+-  interface_prefix: 'org.freedesktop.Tracker1.',
++  'photos-tracker-miner',
++  'org.freedesktop.Tracker3.Miner.xml',
++  interface_prefix: 'org.freedesktop.Tracker3.',
+   namespace: 'Tracker',
+   autocleanup: 'all',
+ )
+ 
+-tracker_resources = 'photos-tracker-resources'
+-
+ sources += gnome.gdbus_codegen(
+-  tracker_resources,
+-  tracker_resources + '.xml',
+-  interface_prefix: 'org.freedesktop.Tracker1.',
++  'photos-tracker-miner-index',
++  'org.freedesktop.Tracker3.Miner.Files.Index.xml',
++  interface_prefix: 'org.freedesktop.Tracker3.',
+   namespace: 'Tracker',
+   autocleanup: 'all',
+ )
+@@ -401,7 +395,6 @@ deps = common_deps + [
+   libgdata_dep,
+   libgfgraph_dep,
+   m_dep,
+-  tracker_control_dep,
+   tracker_sparql_dep,
+ ]
+ 
+diff --git a/src/org.freedesktop.Tracker3.Miner.Files.Index.xml b/src/org.freedesktop.Tracker3.Miner.Files.Index.xml
+new file mode 100644
+index 00000000..e368f1e2
+--- /dev/null
++++ b/src/org.freedesktop.Tracker3.Miner.Files.Index.xml
+@@ -0,0 +1,11 @@
++<node>
++  <interface name='org.freedesktop.Tracker3.Miner.Files.Index'>
++    <method name='IndexLocation'>
++      <arg type='s' name='file_uri' direction='in' />
++      <arg type='as' name='graphs' direction='in' />
++      <arg type='as' name='flags' direction='in'>"
++        <doc:doc><doc:summary>Extension flags, no allowed values at the moment</doc:summary></doc:doc>
++      </arg>
++    </method>
++  </interface>
++</node>
+diff --git a/src/org.freedesktop.Tracker3.Miner.xml b/src/org.freedesktop.Tracker3.Miner.xml
+new file mode 100644
+index 00000000..6fe09c84
+--- /dev/null
++++ b/src/org.freedesktop.Tracker3.Miner.xml
+@@ -0,0 +1,56 @@
++<?xml version="1.0" encoding="UTF-8"?>
++
++<node name="/">
++  <interface name="org.freedesktop.Tracker3.Miner">
++    <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="_tracker_miner_dbus"/>
++    <method name="Start">
++      <annotation name="org.freedesktop.DBus.GLib.Async"  value="true"/>
++    </method>
++    <method name="GetStatus">
++      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
++      <arg type="s" name="status" direction="out" />
++    </method>
++    <method name="GetProgress">
++      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
++      <arg type="d" name="progress" direction="out" />
++    </method>
++    <method name="GetRemainingTime">
++      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
++      <arg type="i" name="remaining_time" direction="out" />
++    </method>
++    <method name="GetPauseDetails">
++      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
++      <arg type="as" name="pause_applications" direction="out" />
++      <arg type="as" name="pause_reasons" direction="out" />
++    </method>
++    <method name="Pause">
++      <annotation name="org.freedesktop.DBus.GLib.Async"  value="true"/>
++      <arg type="s" name="application" direction="in" />
++      <arg type="s" name="reason" direction="in" />
++      <arg type="i" name="cookie" direction="out" />
++    </method>
++    <method name="PauseForProcess">
++      <annotation name="org.freedesktop.DBus.GLib.Async"  value="true"/>
++      <arg type="s" name="application" direction="in" />
++      <arg type="s" name="reason" direction="in" />
++      <arg type="i" name="cookie" direction="out" />
++    </method>
++    <method name="Resume">
++      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
++      <arg type="i" name="cookie" direction="in" />
++    </method>
++
++    <!-- Signals -->
++    <signal name="Started" />
++    <signal name="Stopped">
++      <arg type="b" name="interrupted" />
++    </signal>
++    <signal name="Paused" />
++    <signal name="Resumed" />
++    <signal name="Progress">
++      <arg type="s" name="status" />
++      <arg type="d" name="progress" />
++      <arg type="i" name="remaining_time" />
++    </signal>
++  </interface>
++</node>
+diff --git a/src/photos-application.c b/src/photos-application.c
+index cb114fda..5fbbbef2 100644
+--- a/src/photos-application.c
++++ b/src/photos-application.c
+@@ -36,7 +36,6 @@
+ #include <glib.h>
+ #include <glib/gi18n.h>
+ #include <grilo.h>
+-#include <libtracker-control/tracker-control.h>
+ 
+ #include "photos-application.h"
+ #include "photos-base-item.h"
+@@ -68,7 +67,8 @@
+ #include "photos-share-notification.h"
+ #include "photos-share-point-manager.h"
+ #include "photos-thumbnail-factory.h"
+-#include "photos-tracker-extract-priority.h"
++#include "photos-tracker-miner-index.h"
++#include "photos-tracker-queue.h"
+ #include "photos-utils.h"
+ 
+ 
+@@ -127,7 +127,7 @@ struct _PhotosApplication
+   PhotosSearchProvider *search_provider;
+   PhotosSelectionController *sel_cntrlr;
+   PhotosThumbnailFactory *factory;
+-  TrackerExtractPriority *extract_priority;
++  TrackerMinerFilesIndex *miner_control_proxy;
+   gboolean empty_results;
+   gboolean main_window_deleted;
+   guint create_miners_count;
+@@ -148,7 +148,6 @@ static guint signals[LAST_SIGNAL] = { 0 };
+ 
+ static void photos_application_search_context_iface_init (PhotosSearchContextInterface *iface);
+ 
+-
+ G_DEFINE_TYPE_WITH_CODE (PhotosApplication, photos_application, GTK_TYPE_APPLICATION,
+                          G_IMPLEMENT_INTERFACE (PHOTOS_TYPE_SEARCH_CONTEXT,
+                                                 photos_application_search_context_iface_init));
+@@ -191,11 +190,11 @@ struct _PhotosApplicationCreateData
+ struct _PhotosApplicationImportData
+ {
+   PhotosApplication *application;
++  TrackerMinerFilesIndex *miner_control_proxy;
+   GFile *destination;
+   GFile *import_sub_dir;
+   GList *files;
+   PhotosBaseItem *collection;
+-  TrackerMinerManager *manager;
+   gchar *collection_urn;
+   gint64 ctime_latest;
+ };
+@@ -248,7 +247,7 @@ photos_application_create_data_free (PhotosApplicationCreateData *data)
+ 
+ static PhotosApplicationImportData *
+ photos_application_import_data_new (PhotosApplication *application,
+-                                    TrackerMinerManager *manager,
++                                    TrackerMinerFilesIndex *miner_control_proxy,
+                                     GList *files,
+                                     gint64 ctime_latest)
+ {
+@@ -257,7 +256,7 @@ photos_application_import_data_new (PhotosApplication *application,
+   data = g_slice_new0 (PhotosApplicationImportData);
+   g_application_hold (G_APPLICATION (application));
+   data->application = application;
+-  data->manager = g_object_ref (manager);
++  data->miner_control_proxy = miner_control_proxy;
+   data->files = g_list_copy_deep (files, (GCopyFunc) g_object_ref, NULL);
+   data->ctime_latest = ctime_latest;
+   return data;
+@@ -277,8 +276,8 @@ photos_application_import_data_free (PhotosApplicationImportData *data)
+ 
+   g_clear_object (&data->destination);
+   g_clear_object (&data->import_sub_dir);
++  g_clear_object (&data->miner_control_proxy);
+   g_list_free_full (data->files, g_object_unref);
+-  g_clear_object (&data->manager);
+   g_free (data->collection_urn);
+   g_slice_free (PhotosApplicationImportData, data);
+ }
+@@ -584,27 +583,6 @@ photos_application_actions_update (PhotosApplication *self)
+ }
+ 
+ 
+-static void
+-photos_application_tracker_clear_rdf_types (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+-  PhotosApplication *self = PHOTOS_APPLICATION (user_data);
+-  TrackerExtractPriority *extract_priority = TRACKER_EXTRACT_PRIORITY (source_object);
+-
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    if (!tracker_extract_priority_call_clear_rdf_types_finish (extract_priority, res, &error))
+-      {
+-        g_warning ("Unable to call ClearRdfTypes: %s", error->message);
+-        goto out;
+-      }
+-  }
+-
+- out:
+-  g_application_release (G_APPLICATION (self));
+-}
+-
+-
+ static gboolean
+ photos_application_delete_event (PhotosApplication *self)
+ {
+@@ -641,16 +619,6 @@ photos_application_destroy (PhotosApplication *self)
+   self->create_window_cancellable = g_cancellable_new ();
+ 
+   photos_application_stop_miners (self);
+-
+-  if (self->extract_priority != NULL)
+-    {
+-      g_application_hold (G_APPLICATION (self));
+-      tracker_extract_priority_call_clear_rdf_types (self->extract_priority,
+-                                                     NULL,
+-                                                     photos_application_tracker_clear_rdf_types,
+-                                                     self);
+-      g_clear_object (&self->extract_priority);
+-    }
+ }
+ 
+ 
+@@ -740,60 +708,6 @@ photos_application_gegl_init_fishes_idle (gpointer user_data)
+ }
+ 
+ 
+-static void
+-photos_application_tracker_set_rdf_types (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+-  PhotosApplication *self = PHOTOS_APPLICATION (user_data);
+-  TrackerExtractPriority *extract_priority = TRACKER_EXTRACT_PRIORITY (source_object);
+-
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    if (!tracker_extract_priority_call_set_rdf_types_finish (extract_priority, res, &error))
+-      {
+-        if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+-          g_warning ("Unable to call SetRdfTypes: %s", error->message);
+-
+-        goto out;
+-      }
+-  }
+-
+- out:
+-  g_application_release (G_APPLICATION (self));
+-}
+-
+-
+-static void
+-photos_application_tracker_extract_priority (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+-  PhotosApplication *self = PHOTOS_APPLICATION (user_data);
+-  const gchar *const rdf_types[] = {"nfo:Image", NULL};
+-
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    self->extract_priority = tracker_extract_priority_proxy_new_for_bus_finish (res, &error);
+-    if (error != NULL)
+-      {
+-        if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+-          g_warning ("Unable to create TrackerExtractPriority proxy: %s", error->message);
+-
+-        goto out;
+-      }
+-  }
+-
+-  g_application_hold (G_APPLICATION (self));
+-  tracker_extract_priority_call_set_rdf_types (self->extract_priority,
+-                                               rdf_types,
+-                                               self->create_window_cancellable,
+-                                               photos_application_tracker_set_rdf_types,
+-                                               self);
+-
+- out:
+-  g_application_release (G_APPLICATION (self));
+-}
+-
+-
+ static gboolean
+ photos_application_create_window (PhotosApplication *self)
+ {
+@@ -828,13 +742,6 @@ photos_application_create_window (PhotosApplication *self)
+     self->init_fishes_id = g_idle_add (photos_application_gegl_init_fishes_idle, self);
+ 
+   g_application_hold (G_APPLICATION (self));
+-  tracker_extract_priority_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+-                                              G_DBUS_PROXY_FLAGS_NONE,
+-                                              "org.freedesktop.Tracker1.Miner.Extract",
+-                                              "/org/freedesktop/Tracker1/Extract/Priority",
+-                                              self->create_window_cancellable,
+-                                              photos_application_tracker_extract_priority,
+-                                              self);
+ 
+   photos_application_start_miners (self);
+   return TRUE;
+@@ -1113,18 +1020,18 @@ photos_application_get_state (PhotosSearchContext *context)
+ 
+ 
+ static void
+-photos_application_import_index_file (GObject *source_object, GAsyncResult *res, gpointer user_data)
++photos_application_import_index_location (GObject *source_object, GAsyncResult *res, gpointer user_data)
+ {
+   PhotosApplication *self;
+   g_autoptr (GFile) file = G_FILE (user_data);
+-  TrackerMinerManager *manager = TRACKER_MINER_MANAGER (source_object);
++  TrackerMinerFilesIndex *miner_control_proxy = TRACKER_MINER_FILES_INDEX (source_object);
+ 
+   self = PHOTOS_APPLICATION (g_application_get_default ());
+ 
+   {
+     g_autoptr (GError) error = NULL;
+ 
+-    if (!tracker_miner_manager_index_file_for_process_finish (manager, res, &error))
++    if (!tracker_miner_files_index_call_index_location_finish (miner_control_proxy, res, &error))
+       {
+         g_autofree gchar *uri = NULL;
+ 
+@@ -1323,7 +1230,6 @@ photos_application_import_file_copy (GObject *source_object, GAsyncResult *res,
+   PhotosApplication *self = data->application;
+   g_autoptr (GFile) destination = NULL;
+   GFile *source = G_FILE (source_object);
+-  TrackerMinerManager *manager = data->manager;
+ 
+   {
+     g_autoptr (GError) error = NULL;
+@@ -1348,6 +1254,8 @@ photos_application_import_file_copy (GObject *source_object, GAsyncResult *res,
+   else
+     {
+       g_autofree gchar *destination_uri = NULL;
++      const gchar *tracker_priority_graphs[] = { TRACKER_PICTURES_GRAPH };
++      const gchar *tracker_index_location_flags[] = { "for-process" };
+ 
+       g_assert_true (G_IS_FILE (destination));
+       g_set_object (&data->destination, destination);
+@@ -1364,11 +1272,13 @@ photos_application_import_file_copy (GObject *source_object, GAsyncResult *res,
+ 
+       g_application_hold (G_APPLICATION (self));
+       g_application_mark_busy (G_APPLICATION (self));
+-      tracker_miner_manager_index_file_for_process_async (manager,
+-                                                          destination,
+-                                                          NULL,
+-                                                          photos_application_import_index_file,
+-                                                          g_object_ref (destination));
++      tracker_miner_files_index_call_index_location (self->miner_control_proxy,
++                                                     destination_uri,
++                                                     tracker_priority_graphs,
++                                                     tracker_index_location_flags,
++                                                     NULL,
++                                                     photos_application_import_index_location,
++                                                     g_object_ref (destination));
+     }
+ 
+  out:
+@@ -1509,6 +1419,37 @@ photos_application_import_response (GtkDialog *dialog, gint response_id, gpointe
+ }
+ 
+ 
++static TrackerMinerFilesIndex *
++photos_application_get_miner_fs_control_proxy (GCancellable *cancellable)
++{
++  g_autoptr (PhotosTrackerQueue) tracker_queue = NULL;
++  const gchar *miner_fs_control_busname;
++  g_autoptr (GError) error = NULL;
++  TrackerMinerFilesIndex *miner_control_proxy;
++
++  tracker_queue = photos_tracker_queue_dup_singleton (cancellable, &error);
++
++  if (!tracker_queue) {
++    g_warning ("Error getting Tracker queue: %s. Import will not work.", error->message);
++    return NULL;
++  }
++
++  miner_fs_control_busname = photos_tracker_queue_get_miner_fs_control_busname (tracker_queue);
++  miner_control_proxy = tracker_miner_files_index_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
++                                                                          G_DBUS_PROXY_FLAGS_NONE,
++                                                                          miner_fs_control_busname,
++                                                                          "/org/freedesktop/Tracker3/Miner/Files/Control",
++                                                                          NULL,
++                                                                          &error);
++  if (!miner_control_proxy) {
++    g_warning ("Error getting Tracker Miner FS control proxy: %s. Import will not work", error->message);
++    return NULL;
++  }
++
++  return miner_control_proxy;
++}
++
++
+ static void
+ photos_application_import (PhotosApplication *self)
+ {
+@@ -1519,8 +1460,8 @@ photos_application_import (PhotosApplication *self)
+   GtkWidget *dialog;
+   g_autoptr (PhotosApplicationImportData) data = NULL;
+   PhotosSource *source;
+-  TrackerMinerManager *manager = NULL; /* TODO: use g_autoptr */
+   gint64 ctime_latest = -1;
++  TrackerMinerFilesIndex *miner_control_proxy;
+ 
+   source = PHOTOS_SOURCE (photos_base_manager_get_active_object (self->state->src_mngr));
+   g_return_if_fail (PHOTOS_IS_SOURCE (source));
+@@ -1533,17 +1474,9 @@ photos_application_import (PhotosApplication *self)
+   selection = photos_selection_controller_get_selection (self->sel_cntrlr);
+   g_return_if_fail (selection != NULL);
+ 
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    manager = tracker_miner_manager_new_full (FALSE, &error);
+-    if (error != NULL)
+-      {
+-        g_warning ("Unable to create a TrackerMinerManager, importing from attached devices won't work: %s",
+-                   error->message);
+-        goto out;
+-      }
+-  }
++  miner_control_proxy = photos_application_get_miner_fs_control_proxy (NULL);
++  if (!miner_control_proxy)
++    goto out;
+ 
+   for (l = selection; l != NULL; l = l->next)
+     {
+@@ -1572,14 +1505,14 @@ photos_application_import (PhotosApplication *self)
+   dialog = photos_import_dialog_new (GTK_WINDOW (self->main_window), ctime_latest);
+   gtk_widget_show_all (dialog);
+ 
+-  data = photos_application_import_data_new (self, manager, files, ctime_latest);
++  data = photos_application_import_data_new (self, miner_control_proxy, files, ctime_latest);
++
+   g_signal_connect (dialog,
+                     "response",
+                     G_CALLBACK (photos_application_import_response),
+                     g_steal_pointer (&data));
+ 
+  out:
+-  g_clear_object (&manager);
+   g_list_free_full (files, g_object_unref);
+ }
+ 
+@@ -2974,6 +2907,7 @@ photos_application_dispose (GObject *object)
+   g_clear_object (&self->insta_action);
+   g_clear_object (&self->load_next_action);
+   g_clear_object (&self->load_previous_action);
++  g_clear_object (&self->miner_control_proxy);
+   g_clear_object (&self->open_action);
+   g_clear_object (&self->preview_menu_action);
+   g_clear_object (&self->primary_menu_action);
+@@ -3002,7 +2936,6 @@ photos_application_dispose (GObject *object)
+   g_clear_object (&self->camera_cache);
+   g_clear_object (&self->sel_cntrlr);
+   g_clear_object (&self->factory);
+-  g_clear_object (&self->extract_priority);
+ 
+   if (self->state != NULL)
+     {
+@@ -3130,8 +3063,7 @@ photos_application_get_miners_running (PhotosApplication *self)
+   return self->miners_running;
+ }
+ 
+-
+-gint
++int
+ photos_application_get_scale_factor (PhotosApplication *self)
+ {
+   GList *windows;
+diff --git a/src/photos-base-item.c b/src/photos-base-item.c
+index 143431f9..b34706f2 100644
+--- a/src/photos-base-item.c
++++ b/src/photos-base-item.c
+@@ -2756,6 +2756,16 @@ photos_base_item_update_info_from_type (PhotosBaseItem *self)
+ }
+ 
+ 
++static gdouble
++get_double_with_default (TrackerSparqlCursor *cursor, PhotosQueryColumns column, gdouble default_value)
++{
++  if (tracker_sparql_cursor_is_bound (cursor, column)) {
++    return tracker_sparql_cursor_get_double (cursor, column);
++  } else {
++    return default_value;
++  }
++}
++
+ static void
+ photos_base_item_populate_from_cursor (PhotosBaseItem *self, TrackerSparqlCursor *cursor)
+ {
+@@ -2891,10 +2901,10 @@ photos_base_item_populate_from_cursor (PhotosBaseItem *self, TrackerSparqlCursor
+       priv->width = height;
+     }
+ 
+-  priv->exposure_time = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_EXPOSURE_TIME);
+-  priv->fnumber = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_FNUMBER);
+-  priv->focal_length = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_FOCAL_LENGTH);
+-  priv->iso_speed = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_ISO_SPEED);
++  priv->exposure_time = get_double_with_default (cursor, PHOTOS_QUERY_COLUMNS_EXPOSURE_TIME, 0.0);
++  priv->fnumber = get_double_with_default (cursor, PHOTOS_QUERY_COLUMNS_FNUMBER, 0.0);
++  priv->focal_length = get_double_with_default (cursor, PHOTOS_QUERY_COLUMNS_FOCAL_LENGTH, 0.0);
++  priv->iso_speed = get_double_with_default (cursor, PHOTOS_QUERY_COLUMNS_ISO_SPEED, 0.0);
+ 
+   flash = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_FLASH, NULL);
+   priv->flash = g_quark_from_string (flash);
+diff --git a/src/photos-indexing-notification.c b/src/photos-indexing-notification.c
+index 7b2ea7dd..122d0d91 100644
+--- a/src/photos-indexing-notification.c
++++ b/src/photos-indexing-notification.c
+@@ -26,12 +26,13 @@
+ #include <gio/gio.h>
+ #include <glib.h>
+ #include <glib/gi18n.h>
+-#include <libtracker-control/tracker-control.h>
+ 
+ #include "photos-application.h"
+ #include "photos-gom-miner.h"
+ #include "photos-indexing-notification.h"
+ #include "photos-notification-manager.h"
++#include "photos-tracker-queue.h"
++#include "photos-tracker-miner.h"
+ 
+ 
+ struct _PhotosIndexingNotification
+@@ -41,7 +42,7 @@ struct _PhotosIndexingNotification
+   GtkWidget *primary_label;
+   GtkWidget *secondary_label;
+   GtkWidget *spinner;
+-  TrackerMinerManager *manager;
++  TrackerMiner *miner_fs_proxy;
+   gboolean closed;
+   gboolean on_display;
+   guint timeout_id;
+@@ -56,8 +57,6 @@ enum
+   REMOTE_MINER_TIMEOUT = 10 /* s */
+ };
+ 
+-static const gchar *MINER_FILES = "org.freedesktop.Tracker1.Miner.Files";
+-
+ 
+ static void
+ photos_indexing_notification_remove_timeout (PhotosIndexingNotification *self)
+@@ -180,16 +179,18 @@ photos_indexing_notification_check_notification (PhotosIndexingNotification *sel
+   GSList *running = NULL;
+   gboolean is_indexing_local = FALSE;
+   gboolean is_indexing_remote = FALSE;
++  GError *error = NULL;
++  gdouble progress;
+ 
+-  running = tracker_miner_manager_get_running (self->manager);
+-  if (g_slist_find_custom (running, (gconstpointer) MINER_FILES, (GCompareFunc) g_strcmp0) != NULL)
+-    {
+-      gdouble progress;
++  tracker_miner_call_get_progress_sync (self->miner_fs_proxy, &progress, NULL, &error);
++  if (error) {
++    g_warning ("Couldn't get indexing progress from Tracker Miner FS: %s", error->message);
+ 
+-      tracker_miner_manager_get_status (self->manager, MINER_FILES, NULL, &progress, NULL);
+-      if (progress < 1)
+-        is_indexing_local = TRUE;
+-    }
++    g_clear_error (&error);
++  } else {
++    if (progress < 1)
++      is_indexing_local = TRUE;
++  }
+ 
+   app = g_application_get_default ();
+   miners_running = photos_application_get_miners_running (PHOTOS_APPLICATION (app));
+@@ -222,7 +223,6 @@ photos_indexing_notification_dispose (GObject *object)
+   photos_indexing_notification_remove_timeout (self);
+ 
+   g_clear_object (&self->ntfctn_mngr);
+-  g_clear_object (&self->manager);
+ 
+   G_OBJECT_CLASS (photos_indexing_notification_parent_class)->dispose (object);
+ }
+@@ -240,13 +240,25 @@ photos_indexing_notification_init (PhotosIndexingNotification *self)
+   app = g_application_get_default ();
+ 
+   {
++    g_autoptr (PhotosTrackerQueue) tracker_queue;
+     g_autoptr (GError) error = NULL;
++    const gchar *miner_fs_busname;
++
++    tracker_queue = photos_tracker_queue_dup_singleton (NULL, &error);
++
++    if (tracker_queue) {
++      miner_fs_busname = photos_tracker_queue_get_miner_fs_busname (tracker_queue);
++      self->miner_fs_proxy = tracker_miner_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
++                                                                   G_DBUS_PROXY_FLAGS_NONE,
++                                                                   miner_fs_busname,
++                                                                   "/org/freedesktop/Tracker3/Miner/Files",
++                                                                   NULL,
++                                                                   &error);
++    }
+ 
+-    self->manager = tracker_miner_manager_new_full (FALSE, &error);
+     if (error != NULL)
+       {
+-        g_warning ("Unable to create a TrackerMinerManager, indexing progress notification won't work: %s",
+-                   error->message);
++        g_warning ("Unable to create proxy for Tracker Miner FS, indexing progress notification won't work");
+         return;
+       }
+   }
+@@ -293,10 +305,11 @@ photos_indexing_notification_init (PhotosIndexingNotification *self)
+                            self,
+                            G_CONNECT_SWAPPED);
+ 
+-  g_signal_connect_swapped (self->manager,
+-                            "miner-progress",
+-                            G_CALLBACK (photos_indexing_notification_check_notification),
+-                            self);
++  g_signal_connect_object (self->miner_fs_proxy,
++                           "progress",
++                           G_CALLBACK (photos_indexing_notification_check_notification),
++                           self,
++                           G_CONNECT_SWAPPED);
+ }
+ 
+ 
+diff --git a/src/photos-item-manager.c b/src/photos-item-manager.c
+index c44fbbfc..e4511bb1 100644
+--- a/src/photos-item-manager.c
++++ b/src/photos-item-manager.c
+@@ -41,12 +41,9 @@
+ #include "photos-query.h"
+ #include "photos-search-context.h"
+ #include "photos-single-item-job.h"
+-#include "photos-tracker-change-event.h"
+-#include "photos-tracker-change-monitor.h"
+ #include "photos-tracker-queue.h"
+ #include "photos-utils.h"
+ 
+-
+ struct _PhotosItemManager
+ {
+   PhotosBaseManager parent_instance;
+@@ -60,7 +57,7 @@ struct _PhotosItemManager
+   PhotosBaseItem *active_collection;
+   PhotosBaseManager **item_mngr_chldrn;
+   PhotosLoadState load_state;
+-  PhotosTrackerChangeMonitor *monitor;
++  TrackerNotifier *notifier;
+   PhotosTrackerQueue *queue;
+   PhotosWindowMode mode;
+   gboolean fullscreen;
+@@ -311,7 +308,7 @@ photos_item_manager_add_cursor_for_mode (PhotosItemManager *self,
+   g_return_if_fail (base_item_type == G_TYPE_NONE
+                     || (base_item_type != PHOTOS_TYPE_BASE_ITEM
+                         && g_type_is_a (base_item_type, PHOTOS_TYPE_BASE_ITEM)));
+-  g_return_if_fail (TRACKER_SPARQL_IS_CURSOR (cursor));
++  g_return_if_fail (TRACKER_IS_SPARQL_CURSOR (cursor));
+   g_return_if_fail (mode != PHOTOS_WINDOW_MODE_NONE);
+   g_return_if_fail (mode != PHOTOS_WINDOW_MODE_EDIT);
+   g_return_if_fail (mode != PHOTOS_WINDOW_MODE_PREVIEW);
+@@ -529,21 +526,23 @@ photos_item_manager_item_created (PhotosItemManager *self, const gchar *urn)
+ 
+ 
+ static void
+-photos_item_manager_changes_pending_foreach (gpointer key, gpointer value, gpointer user_data)
++photos_item_manager_changes_pending_foreach (gpointer data,
++                                             gpointer user_data)
+ {
+   PhotosItemManager *self = PHOTOS_ITEM_MANAGER (user_data);
+-  PhotosTrackerChangeEvent *change_event = (PhotosTrackerChangeEvent *) value;
+-  PhotosTrackerChangeEventType change_type;
++  TrackerNotifierEvent *event = (TrackerNotifierEvent *) data;
++  TrackerNotifierEventType change_type;
+   const gchar *change_urn;
+ 
+-  change_type = photos_tracker_change_event_get_type (change_event);
+-  change_urn = photos_tracker_change_event_get_urn (change_event);
++  change_type = tracker_notifier_event_get_event_type (event);
++  change_urn = tracker_notifier_event_get_urn (event);
+ 
+-  if (change_type == PHOTOS_TRACKER_CHANGE_EVENT_CHANGED)
++  if (change_type == TRACKER_NOTIFIER_EVENT_UPDATE)
+     {
+       GObject *object;
+ 
+       object = photos_base_manager_get_object_by_id (PHOTOS_BASE_MANAGER (self), change_urn);
++      g_message ("UPDATE event for %s, object %p", change_urn, object);
+       if (object != NULL)
+         {
+           photos_base_item_refresh (PHOTOS_BASE_ITEM (object));
+@@ -557,15 +556,17 @@ photos_item_manager_changes_pending_foreach (gpointer key, gpointer value, gpoin
+             }
+         }
+     }
+-  else if (change_type == PHOTOS_TRACKER_CHANGE_EVENT_CREATED)
++  else if (change_type == TRACKER_NOTIFIER_EVENT_CREATE)
+     {
++      g_message ("CREATE event for %s", change_urn);
+       photos_item_manager_item_created (self, change_urn);
+     }
+-  else if (change_type == PHOTOS_TRACKER_CHANGE_EVENT_DELETED)
++  else if (change_type == TRACKER_NOTIFIER_EVENT_DELETE)
+     {
+       GObject *object;
+ 
+       object = photos_base_manager_get_object_by_id (PHOTOS_BASE_MANAGER (self), change_urn);
++      g_message ("DELETE event for %s, object %p", change_urn, object);
+       if (object != NULL)
+         {
+           photos_base_item_destroy (PHOTOS_BASE_ITEM (object));
+@@ -577,9 +578,15 @@ photos_item_manager_changes_pending_foreach (gpointer key, gpointer value, gpoin
+ 
+ 
+ static void
+-photos_item_manager_changes_pending (PhotosItemManager *self, GHashTable *changes)
+-{
+-  g_hash_table_foreach (changes, photos_item_manager_changes_pending_foreach, self);
++photos_item_manager_changes_pending (PhotosItemManager *self,
++                                     const gchar       *service,
++                                     const gchar       *graph,
++                                     GPtrArray         *events,
++                                     gpointer           user_data)
++{
++  if (g_str_equal (graph, TRACKER_PICTURES_GRAPH)) {
++    g_ptr_array_foreach (events, photos_item_manager_changes_pending_foreach, self);
++  }
+ }
+ 
+ 
+@@ -717,7 +724,7 @@ photos_item_manager_wait_for_changes_timeout (gpointer user_data)
+       g_autoptr (PhotosQuery) query = NULL;
+       g_autofree gchar *sparql = NULL;
+ 
+-      sparql = g_strdup_printf ("SELECT ?urn nie:url (?urn) WHERE { ?urn nie:url '%s' }", uri);
++      sparql = g_strdup_printf ("SELECT ?urn nie:isStoredAs (?urn) WHERE { ?urn nie:isStoredAs '%s' }", uri);
+       query = photos_query_new (NULL, sparql);
+       photos_tracker_queue_select (self->queue,
+                                    query,
+@@ -1038,7 +1045,7 @@ photos_item_manager_dispose (GObject *object)
+   g_clear_object (&self->active_object);
+   g_clear_object (&self->loader_cancellable);
+   g_clear_object (&self->active_collection);
+-  g_clear_object (&self->monitor);
++  g_clear_object (&self->notifier);
+   g_clear_object (&self->queue);
+ 
+   G_OBJECT_CLASS (photos_item_manager_parent_class)->dispose (object);
+@@ -1093,20 +1100,24 @@ photos_item_manager_init (PhotosItemManager *self)
+ 
+   self->mode = PHOTOS_WINDOW_MODE_NONE;
+ 
+-  self->monitor = photos_tracker_change_monitor_dup_singleton (NULL, NULL);
+-  if (G_LIKELY (self->monitor != NULL))
+-    g_signal_connect_object (self->monitor,
+-                             "changes-pending",
+-                             G_CALLBACK (photos_item_manager_changes_pending),
+-                             self,
+-                             G_CONNECT_SWAPPED);
+-
+   {
+     g_autoptr (GError) error = NULL;
+ 
+     self->queue = photos_tracker_queue_dup_singleton (NULL, &error);
+     if (G_UNLIKELY (error != NULL))
+-      g_warning ("Unable to create PhotosTrackerQueue: %s", error->message);
++      {
++        g_warning ("Unable to create PhotosTrackerQueue: %s", error->message);
++        self->notifier = NULL;
++      }
++    else
++      {
++        self->notifier = photos_tracker_queue_get_notifier (self->queue);
++        g_signal_connect_object (self->notifier,
++                                 "events",
++                                 G_CALLBACK (photos_item_manager_changes_pending),
++                                 self,
++                                 G_CONNECT_SWAPPED);
++      }
+   }
+ 
+   self->fullscreen = FALSE;
+@@ -1241,7 +1252,7 @@ photos_item_manager_add_item (PhotosItemManager *self,
+   g_return_if_fail (base_item_type == G_TYPE_NONE
+                     || (base_item_type != PHOTOS_TYPE_BASE_ITEM
+                         && g_type_is_a (base_item_type, PHOTOS_TYPE_BASE_ITEM)));
+-  g_return_if_fail (TRACKER_SPARQL_IS_CURSOR (cursor));
++  g_return_if_fail (TRACKER_IS_SPARQL_CURSOR (cursor));
+ 
+   id = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_URN, NULL);
+   g_return_if_fail (id != NULL && id[0] != '\0');
+@@ -1370,7 +1381,7 @@ photos_item_manager_create_item (PhotosItemManager *self,
+   g_return_val_if_fail (base_item_type == G_TYPE_NONE
+                         || (base_item_type != PHOTOS_TYPE_BASE_ITEM
+                             && g_type_is_a (base_item_type, PHOTOS_TYPE_BASE_ITEM)), NULL);
+-  g_return_val_if_fail (TRACKER_SPARQL_IS_CURSOR (cursor), NULL);
++  g_return_val_if_fail (TRACKER_IS_SPARQL_CURSOR (cursor), NULL);
+ 
+   id = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_URN, NULL);
+   item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (PHOTOS_BASE_MANAGER (self), id));
+diff --git a/src/photos-quarks.c b/src/photos-quarks.c
+index 0870ef62..5ee25745 100644
+--- a/src/photos-quarks.c
++++ b/src/photos-quarks.c
+@@ -25,68 +25,68 @@
+ GQuark
+ photos_quarks_flash_off_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.tracker-project.org/temp/nmm#flash-off");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nmm#flash-off");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_flash_on_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.tracker-project.org/temp/nmm#flash-on");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nmm#flash-on");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_bottom_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-bottom");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-bottom");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_bottom_mirror_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-bottom-mirror");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-bottom-mirror");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_left_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-left");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-left");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_left_mirror_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-left-mirror");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-left-mirror");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_right_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-right");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-right");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_right_mirror_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-right-mirror");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-right-mirror");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_top_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-top");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-top");
+ }
+ 
+ 
+ GQuark
+ photos_quarks_orientation_top_mirror_quark (void)
+ {
+-  return g_quark_from_static_string ("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#orientation-top-mirror");
++  return g_quark_from_static_string ("http://tracker.api.gnome.org/ontology/v3/nfo#orientation-top-mirror");
+ }
+diff --git a/src/photos-query-builder.c b/src/photos-query-builder.c
+index e0735bde..46d65e8f 100644
+--- a/src/photos-query-builder.c
++++ b/src/photos-query-builder.c
+@@ -25,6 +25,7 @@
+ 
+ #include <string.h>
+ 
++#include "photos-application.h"
+ #include "photos-base-manager.h"
+ #include "photos-query.h"
+ #include "photos-query-builder.h"
+@@ -32,6 +33,7 @@
+ #include "photos-source-manager.h"
+ #include "photos-search-match-manager.h"
+ #include "photos-search-type-manager.h"
++#include "photos-tracker-queue.h"
+ 
+ #define PHOTOS_QUERY_COLLECTIONS_IDENTIFIER "photos:collection:"
+ #define PHOTOS_QUERY_LOCAL_COLLECTIONS_IDENTIFIER "photos:collection:local:"
+@@ -48,12 +50,14 @@ const gchar *photos_default_filter = \
+ 
+ static gchar *
+ photos_query_builder_query (PhotosSearchContextState *state,
+-                            gboolean global,
++                            const gchar *values,
+                             gint flags,
+                             PhotosOffsetController *offset_cntrlr)
+ {
+   PhotosSparqlTemplate *template;
+-  const gchar *projection = NULL;
++  const gchar *miner_fs_busname = NULL;
++  const gchar *main_projection = NULL;
++  const gchar *second_projection = NULL;
+   g_autofree gchar *item_pattern = NULL;
+   g_autofree gchar *search_filter = NULL;
+   g_autofree gchar *source_filter = NULL;
+@@ -63,29 +67,35 @@ photos_query_builder_query (PhotosSearchContextState *state,
+ 
+   template = photos_base_manager_get_sparql_template (state->srch_typ_mngr, flags);
+ 
+-  projection = "?urn "
+-               "nie:url (?urn) "
+-               "nfo:fileName (?urn) "
+-               "nie:mimeType (?urn) "
+-               "nie:title (?urn) "
+-               "tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') "
+-               "tracker:coalesce (nfo:fileLastModified (?urn), nie:contentLastModified (?urn)) AS ?mtime "
+-               "nao:identifier (?urn) "
+-               "rdf:type (?urn) "
+-               "nie:dataSource(?urn) "
+-               "( EXISTS { ?urn nao:hasTag nao:predefined-tag-favorite } ) "
+-               "( EXISTS { ?urn nco:contributor ?contributor FILTER ( ?contributor != ?creator ) } ) "
+-               "tracker:coalesce(nfo:fileCreated (?urn), nie:contentCreated (?urn)) "
+-               "nfo:width (?urn) "
+-               "nfo:height (?urn) "
+-               "nfo:equipment (?urn) "
+-               "nfo:orientation (?urn) "
+-               "nmm:exposureTime (?urn) "
+-               "nmm:fnumber (?urn) "
+-               "nmm:focalLength (?urn) "
+-               "nmm:isoSpeed (?urn) "
+-               "nmm:flash (?urn) "
+-               "slo:location (?urn) ";
++  miner_fs_busname = photos_tracker_queue_get_miner_fs_busname (state->queue);
++
++  main_projection = "?urn "
++                    "?file "
++                    "nfo:fileName (?file) AS ?filename "
++                    "nie:mimeType (?urn) AS ?mimetype "
++                    "nie:title (?urn) AS ?title "
++                    "tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') AS ?author_name "
++                    "tracker:coalesce (nfo:fileLastModified (?file), nie:contentLastModified (?urn)) AS ?mtime "
++                    "nao:identifier (?urn) AS ?identifier "
++                    "rdf:type (?urn) AS ?type "
++                    "nie:dataSource(?urn) AS ?datasource "
++                    "( EXISTS { ?urn nco:contributor ?contributor FILTER ( ?contributor != ?creator ) } ) AS ?has_contributor "
++                    "tracker:coalesce(nfo:fileCreated (?file), nie:contentCreated (?urn)) AS ?ctime "
++                    "nfo:width (?urn) AS ?width "
++                    "nfo:height (?urn) AS ?height "
++                    "nfo:equipment (?urn) AS ?equipment "
++                    "nfo:orientation (?urn) AS ?orientation "
++                    "nmm:exposureTime (?urn) AS ?exposure_time "
++                    "nmm:fnumber (?urn) AS ?fnumber "
++                    "nmm:focalLength (?urn) AS ?focal_length "
++                    "nmm:isoSpeed (?urn) AS ?isospeed "
++                    "nmm:flash (?urn) AS ?flash "
++                    "slo:location (?urn) AS ?location ";
++
++  second_projection = "?urn ?file ?filename ?mimetype ?title ?author_name ?mtime ?identifier ?type ?datasource "
++                      "( EXISTS { ?urn nao:hasTag nao:predefined-tag-favorite } ) AS ?is_favorite "
++                      "?has_contributor ?ctime ?width ?height ?equipment ?orientation ?exposure_time ?fnumber "
++                      "?focal_length ?isospeed ?flash ?location ";
+ 
+   item_pattern = photos_base_manager_get_where (state->item_mngr, flags);
+ 
+@@ -97,7 +107,7 @@ photos_query_builder_query (PhotosSearchContextState *state,
+ 
+   order = "ORDER BY DESC (?mtime)";
+ 
+-  if (global && (flags & PHOTOS_QUERY_FLAGS_UNLIMITED) == 0)
++  if (values == NULL && (flags & PHOTOS_QUERY_FLAGS_UNLIMITED) == 0)
+     {
+       gint offset = 0;
+       gint step = 60;
+@@ -112,12 +122,16 @@ photos_query_builder_query (PhotosSearchContextState *state,
+     }
+ 
+   sparql = photos_sparql_template_get_sparql (template,
+-                                              "projection", projection,
++                                              "miner_fs_busname", miner_fs_busname,
++                                              "main_projection", main_projection,
++                                              "second_projection", second_projection,
++                                              "final_projection", second_projection,
++                                              "values", values ? values : "",
+                                               "collections_default_filter", collections_default_filter,
+                                               "item_pattern", item_pattern,
+                                               "photos_default_filter", photos_default_filter,
+-                                              "source_filter", source_filter ? source_filter : "",
+-                                              "search_filter", search_filter ? search_filter : "",
++                                              "source_filter", source_filter ? source_filter : "(true)",
++                                              "search_filter", search_filter ? search_filter : "(true)",
+                                               "order", order,
+                                               "offset_limit", offset_limit ? offset_limit : "",
+                                               NULL);
+@@ -133,6 +147,7 @@ photos_query_builder_create_collection_query (PhotosSearchContextState *state,
+ {
+   g_autoptr (GDateTime) now = NULL;
+   PhotosQuery *query;
++  g_autoptr (TrackerResource) collection = NULL;
+   g_autofree gchar *identifier = NULL;
+   g_autofree gchar *sparql = NULL;
+   g_autofree gchar *time = NULL;
+@@ -144,13 +159,14 @@ photos_query_builder_create_collection_query (PhotosSearchContextState *state,
+   now = g_date_time_new_now_utc ();
+   time = g_date_time_format_iso8601 (now);
+ 
+-  sparql = g_strdup_printf ("INSERT { _:res a nfo:DataContainer ; a nie:DataObject ; "
+-                            "nie:contentLastModified '%s' ; "
+-                            "nie:title '%s' ; "
+-                            "nao:identifier '%s' }",
+-                            time,
+-                            name,
+-                            identifier);
++  collection = tracker_resource_new ("_:res");
++  tracker_resource_add_uri (collection, "rdf:type", "nfo:DataContainer");
++  tracker_resource_add_uri (collection, "rdf:type", "nie:DataObject");
++  tracker_resource_set_string (collection, "nie:contentLastModified", time);
++  tracker_resource_set_string (collection, "nie:title", name);
++  tracker_resource_set_string (collection, "nao:identifier", identifier);
++
++  sparql = tracker_resource_print_sparql_update (collection, NULL, "tracker:Pictures");
+ 
+   query = photos_query_new (state, sparql);
+ 
+@@ -180,7 +196,9 @@ PhotosQuery *
+ photos_query_builder_count_query (PhotosSearchContextState *state, gint flags)
+ {
+   PhotosSparqlTemplate *template;
+-  const gchar *projection = NULL;
++  const gchar *miner_fs_busname = NULL;
++  const gchar *count_projection = NULL;
++  const gchar *value_projection = NULL;
+   g_autofree gchar *item_pattern = NULL;
+   g_autofree gchar *search_filter = NULL;
+   g_autofree gchar *source_filter = NULL;
+@@ -189,7 +207,10 @@ photos_query_builder_count_query (PhotosSearchContextState *state, gint flags)
+ 
+   template = photos_base_manager_get_sparql_template (state->srch_typ_mngr, flags);
+ 
+-  projection = "COUNT(?urn) ";
++  miner_fs_busname = photos_tracker_queue_get_miner_fs_busname (state->queue);
++
++  value_projection = "?urn ";
++  count_projection = "COUNT(?urn) ";
+ 
+   item_pattern = photos_base_manager_get_where (state->item_mngr, flags);
+ 
+@@ -200,12 +221,16 @@ photos_query_builder_count_query (PhotosSearchContextState *state, gint flags)
+     }
+ 
+   sparql = photos_sparql_template_get_sparql (template,
+-                                              "projection", projection,
++                                              "miner_fs_busname", miner_fs_busname,
++                                              "main_projection", value_projection,
++                                              "second_projection", value_projection,
++                                              "final_projection", count_projection,
++                                              "values", "",
+                                               "collections_default_filter", collections_default_filter,
+                                               "item_pattern", item_pattern,
+                                               "photos_default_filter", photos_default_filter,
+-                                              "source_filter", source_filter ? source_filter : "",
+-                                              "search_filter", search_filter ? search_filter : "",
++                                              "source_filter", source_filter ? source_filter : "(true)",
++                                              "search_filter", search_filter ? search_filter : "(true)",
+                                               "order", "",
+                                               "offset_limit", "",
+                                               NULL);
+@@ -264,7 +289,7 @@ photos_query_builder_fetch_collections_local (PhotosSearchContextState *state)
+   g_autofree gchar *sparql = NULL;
+ 
+   sparql = photos_query_builder_query (state,
+-                                       TRUE,
++                                       NULL,
+                                        PHOTOS_QUERY_FLAGS_COLLECTIONS
+                                        | PHOTOS_QUERY_FLAGS_LOCAL
+                                        | PHOTOS_QUERY_FLAGS_UNLIMITED,
+@@ -284,7 +309,7 @@ photos_query_builder_global_query (PhotosSearchContextState *state,
+   PhotosQuery *query;
+   g_autofree gchar *sparql = NULL;
+ 
+-  sparql = photos_query_builder_query (state, TRUE, flags, offset_cntrlr);
++  sparql = photos_query_builder_query (state, NULL, flags, offset_cntrlr);
+   query = photos_query_new (state, sparql);
+ 
+   return query;
+@@ -313,10 +338,19 @@ photos_query_builder_set_collection_query (PhotosSearchContextState *state,
+   PhotosQuery *query;
+   g_autofree gchar *sparql = NULL;
+ 
+-  sparql = g_strdup_printf ("%s { <%s> nie:isPartOf <%s> }",
+-                            setting ? "INSERT" : "DELETE",
+-                            item_urn,
+-                            collection_urn);
++  if (setting)
++    sparql = g_strdup_printf ("INSERT DATA { "
++                              "  GRAPH tracker:Pictures {"
++                              "    <%s> a nie:DataObject , nmm:Photo ; "
++                              "      nie:isPartOf <%s> "
++                              "  }"
++                              "}", item_urn, collection_urn);
++  else
++    sparql = g_strdup_printf ("DELETE DATA { "
++                              "  GRAPH tracker:Pictures {"
++                              "    <%s> nie:isPartOf <%s> "
++                              "  }"
++                              "}", item_urn, collection_urn);
+   query = photos_query_new (state, sparql);
+ 
+   return query;
+@@ -326,17 +360,14 @@ photos_query_builder_set_collection_query (PhotosSearchContextState *state,
+ PhotosQuery *
+ photos_query_builder_single_query (PhotosSearchContextState *state, gint flags, const gchar *resource)
+ {
+-  g_autoptr (GRegex) regex = NULL;
+   PhotosQuery *query;
+-  g_autofree gchar *replacement = NULL;
+   g_autofree gchar *sparql = NULL;
+-  g_autofree gchar *tmp = NULL;
++  g_autofree gchar *values = NULL;
++
++  values = g_strdup_printf ("VALUES ?urn { <%s> }", resource);
+ 
+-  tmp = photos_query_builder_query (state, FALSE, flags, NULL);
++  sparql = photos_query_builder_query (state, values, flags, NULL);
+ 
+-  regex = g_regex_new ("\\?urn", 0, 0, NULL);
+-  replacement = g_strconcat ("<", resource, ">", NULL);
+-  sparql = g_regex_replace (regex, tmp, -1, 0, replacement, 0, NULL);
+   query = photos_query_new (state, sparql);
+ 
+   return query;
+@@ -354,7 +385,14 @@ photos_query_builder_update_mtime_query (PhotosSearchContextState *state, const
+   now = g_date_time_new_now_utc ();
+   time = g_date_time_format_iso8601 (now);
+ 
+-  sparql = g_strdup_printf ("INSERT OR REPLACE { <%s> nie:contentLastModified '%s' }", resource, time);
++  sparql = g_strdup_printf ("WITH tracker:Pictures "
++                            "DELETE { <%s> nie:contentLastModified ?time } "
++                            "INSERT { "
++                            "  <%s> a nmm:Photo ; "
++                            "    nie:contentLastModified '%s' "
++                            "}"
++                            "WHERE { <%s> nie:contentLastModified ?time }",
++                            resource, resource, time, resource);
+   query = photos_query_new (state, sparql);
+ 
+   return query;
+diff --git a/src/photos-search-context.c b/src/photos-search-context.c
+index 4b503798..6f8694bc 100644
+--- a/src/photos-search-context.c
++++ b/src/photos-search-context.c
+@@ -31,6 +31,7 @@
+ #include "photos-search-match-manager.h"
+ #include "photos-search-type-manager.h"
+ #include "photos-source-manager.h"
++#include "photos-tracker-queue.h"
+ 
+ 
+ G_DEFINE_INTERFACE (PhotosSearchContext, photos_search_context, G_TYPE_OBJECT);
+@@ -54,6 +55,7 @@ photos_search_context_state_new (PhotosSearchContext *self)
+   state->srch_cntrlr = photos_search_controller_new ();
+   state->srch_mtch_mngr = photos_search_match_manager_new (state->srch_cntrlr);
+   state->srch_typ_mngr = photos_search_type_manager_new ();
++  state->queue = photos_tracker_queue_dup_singleton (NULL, NULL);
+ 
+   return state;
+ }
+@@ -68,6 +70,7 @@ photos_search_context_state_free (PhotosSearchContextState *state)
+   g_object_unref (state->srch_mtch_mngr);
+   g_object_unref (state->srch_typ_mngr);
+   g_object_unref (state->srch_cntrlr);
++  g_clear_object (&state->queue);
+   g_slice_free (PhotosSearchContextState, state);
+ }
+ 
+diff --git a/src/photos-search-context.h b/src/photos-search-context.h
+index 2af6cf96..5a18d386 100644
+--- a/src/photos-search-context.h
++++ b/src/photos-search-context.h
+@@ -41,6 +41,7 @@ struct _PhotosSearchContextState
+   gpointer srch_typ_mngr;
+   gpointer offset_cntrlr;
+   gpointer srch_cntrlr;
++  gpointer queue;
+ };
+ 
+ PhotosSearchContextState      *photos_search_context_state_new      (PhotosSearchContext *self);
+diff --git a/src/photos-search-match-manager.c b/src/photos-search-match-manager.c
+index e6dc429a..2ba1fd0f 100644
+--- a/src/photos-search-match-manager.c
++++ b/src/photos-search-match-manager.c
+@@ -148,7 +148,7 @@ photos_search_match_manager_init (PhotosSearchMatchManager *self)
+                   "  tracker:case-fold (tracker:coalesce (nco:fullname (?creator), nco:fullname(?publisher))),"
+                   "  \"%s\")";
+   title_filter = "fn:contains ("
+-                 "  tracker:case-fold (tracker:coalesce (nie:title (?urn), nfo:fileName(?urn))),"
++                 "  tracker:case-fold (tracker:coalesce (nie:title (?urn), nfo:fileName(?file))),"
+                  "  \"%s\")";
+ 
+   search_match = photos_search_match_new (PHOTOS_SEARCH_MATCH_STOCK_ALL,
+diff --git a/src/photos-source.c b/src/photos-source.c
+index db6f2de9..5219652c 100644
+--- a/src/photos-source.c
++++ b/src/photos-source.c
+@@ -62,7 +62,7 @@ G_DEFINE_TYPE_WITH_CODE (PhotosSource, photos_source, G_TYPE_OBJECT,
+ DZL_DEFINE_COUNTER (instances, "PhotosSource", "Instances", "Number of PhotosSource instances")
+ 
+ 
+-static const gchar *TRACKER_SCHEMA = "org.freedesktop.Tracker.Miner.Files";
++static const gchar *TRACKER_SCHEMA = "org.freedesktop.Tracker3.Miner.Files";
+ static const gchar *TRACKER_KEY_RECURSIVE_DIRECTORIES = "index-recursive-directories";
+ 
+ 
+@@ -94,7 +94,7 @@ photos_source_build_filter_local (void)
+         continue;
+ 
+       tracker_uri = photos_utils_convert_path_to_uri (tracker_dirs[i]);
+-      g_string_append_printf (tracker_filter, " || fn:contains (nie:url (?urn), '%s')", tracker_uri);
++      g_string_append_printf (tracker_filter, " || fn:contains (nie:isStoredAs (?urn), '%s')", tracker_uri);
+     }
+ 
+   path = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP);
+@@ -109,11 +109,11 @@ photos_source_build_filter_local (void)
+   export_path = g_build_filename (path, PHOTOS_EXPORT_SUBPATH, NULL);
+   export_uri = photos_utils_convert_path_to_uri (export_path);
+ 
+-  filter = g_strdup_printf ("(((fn:contains (nie:url (?urn), '%s')"
+-                            "   || fn:contains (nie:url (?urn), '%s')"
+-                            "   || fn:contains (nie:url (?urn), '%s')"
++  filter = g_strdup_printf ("(((fn:contains (nie:isStoredAs (?urn), '%s')"
++                            "   || fn:contains (nie:isStoredAs (?urn), '%s')"
++                            "   || fn:contains (nie:isStoredAs (?urn), '%s')"
+                             "   %s)"
+-                            "  && !fn:contains (nie:url (?urn), '%s'))"
++                            "  && !fn:contains (nie:isStoredAs (?urn), '%s'))"
+                             " || fn:starts-with (nao:identifier (?urn), '%s')"
+                             " || (?urn = nfo:image-category-screenshot))",
+                             desktop_uri,
+@@ -146,7 +146,7 @@ photos_source_build_filter_resource (PhotosSource *self)
+ 
+       root = g_mount_get_root (self->mount);
+       uri = g_file_get_uri (root);
+-      filter = g_strdup_printf ("(fn:starts-with (nie:url (?urn), '%s'))", uri);
++      filter = g_strdup_printf ("(fn:starts-with (nie:isStoredAs (?urn), '%s'))", uri);
+     }
+   else
+     {
+diff --git a/src/photos-tracker-change-event.c b/src/photos-tracker-change-event.c
+deleted file mode 100644
+index d5c74ebc..00000000
+--- a/src/photos-tracker-change-event.c
++++ /dev/null
+@@ -1,136 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2012 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- *   + Documents
+- */
+-
+-
+-#include "config.h"
+-
+-#include "photos-tracker-change-event.h"
+-
+-
+-struct _PhotosTrackerChangeEvent
+-{
+-  PhotosTrackerChangeEventType type;
+-  gchar *predicate;
+-  gchar *urn;
+-  gint32 predicate_id;
+-  gint32 urn_id;
+-};
+-
+-
+-static const gchar *RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+-
+-
+-void
+-photos_tracker_change_event_free (PhotosTrackerChangeEvent *self)
+-{
+-  g_free (self->predicate);
+-  g_free (self->urn);
+-  g_slice_free (PhotosTrackerChangeEvent, self);
+-}
+-
+-
+-PhotosTrackerChangeEvent *
+-photos_tracker_change_event_new (gint32 urn_id, gint32 predicate_id, gboolean is_delete)
+-{
+-  PhotosTrackerChangeEvent *self;
+-
+-  self = g_slice_new0 (PhotosTrackerChangeEvent);
+-  self->urn_id = urn_id;
+-  self->predicate_id = predicate_id;
+-
+-  if (is_delete)
+-    self->type = PHOTOS_TRACKER_CHANGE_EVENT_DELETED;
+-  else
+-    self->type = PHOTOS_TRACKER_CHANGE_EVENT_CREATED;
+-
+-  return self;
+-}
+-
+-
+-PhotosTrackerChangeEvent *
+-photos_tracker_change_event_copy (PhotosTrackerChangeEvent *event)
+-{
+-  PhotosTrackerChangeEvent *self;
+-
+-  self = g_slice_new0 (PhotosTrackerChangeEvent);
+-  self->type = event->type;
+-  self->predicate = g_strdup (event->predicate);
+-  self->urn = g_strdup (event->urn);
+-  self->predicate_id = event->predicate_id;
+-  self->urn_id = event->urn_id;
+-
+-  return self;
+-}
+-
+-
+-PhotosTrackerChangeEventType
+-photos_tracker_change_event_get_type (PhotosTrackerChangeEvent *self)
+-{
+-  return self->type;
+-}
+-
+-
+-gint32
+-photos_tracker_change_event_get_predicate_id (PhotosTrackerChangeEvent *self)
+-{
+-  return self->predicate_id;
+-}
+-
+-
+-const gchar *
+-photos_tracker_change_event_get_urn (PhotosTrackerChangeEvent *self)
+-{
+-  return self->urn;
+-}
+-
+-
+-gint32
+-photos_tracker_change_event_get_urn_id (PhotosTrackerChangeEvent *self)
+-{
+-  return self->urn_id;
+-}
+-
+-
+-void
+-photos_tracker_change_event_merge (PhotosTrackerChangeEvent *self, PhotosTrackerChangeEvent *event)
+-{
+-  g_return_if_fail (g_strcmp0 (self->urn, event->urn) == 0);
+-
+-  if (event->type == PHOTOS_TRACKER_CHANGE_EVENT_DELETED || event->type == PHOTOS_TRACKER_CHANGE_EVENT_CREATED)
+-    self->type = event->type;
+-}
+-
+-
+-void
+-photos_tracker_change_event_set_resolved_values (PhotosTrackerChangeEvent *self,
+-                                                 const gchar *urn,
+-                                                 const gchar *predicate)
+-{
+-  g_return_if_fail (self->predicate == NULL);
+-  g_return_if_fail (self->urn == NULL);
+-
+-  self->urn = g_strdup (urn);
+-  self->predicate = g_strdup (predicate);
+-
+-  if (g_strcmp0 (predicate, RDF_TYPE) != 0)
+-    self->type = PHOTOS_TRACKER_CHANGE_EVENT_CHANGED;
+-}
+diff --git a/src/photos-tracker-change-event.h b/src/photos-tracker-change-event.h
+deleted file mode 100644
+index eee4f40c..00000000
+--- a/src/photos-tracker-change-event.h
++++ /dev/null
+@@ -1,64 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2012 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- *   + Documents
+- */
+-
+-#ifndef PHOTOS_TRACKER_CHANGE_EVENT_H
+-#define PHOTOS_TRACKER_CHANGE_EVENT_H
+-
+-#include <glib.h>
+-
+-G_BEGIN_DECLS
+-
+-typedef enum
+-{
+-  PHOTOS_TRACKER_CHANGE_EVENT_CHANGED,
+-  PHOTOS_TRACKER_CHANGE_EVENT_CREATED,
+-  PHOTOS_TRACKER_CHANGE_EVENT_DELETED
+-} PhotosTrackerChangeEventType;
+-
+-typedef struct _PhotosTrackerChangeEvent PhotosTrackerChangeEvent;
+-
+-PhotosTrackerChangeEvent  *photos_tracker_change_event_new        (gint32 urn_id,
+-                                                                   gint32 predicate_id,
+-                                                                   gboolean is_delete);
+-
+-PhotosTrackerChangeEvent  *photos_tracker_change_event_copy       (PhotosTrackerChangeEvent *event);
+-
+-void                       photos_tracker_change_event_free       (PhotosTrackerChangeEvent *self);
+-
+-PhotosTrackerChangeEventType photos_tracker_change_event_get_type (PhotosTrackerChangeEvent *self);
+-
+-gint32                     photos_tracker_change_event_get_predicate_id (PhotosTrackerChangeEvent *self);
+-
+-const gchar               *photos_tracker_change_event_get_urn    (PhotosTrackerChangeEvent *self);
+-
+-gint32                     photos_tracker_change_event_get_urn_id (PhotosTrackerChangeEvent *self);
+-
+-void                       photos_tracker_change_event_merge      (PhotosTrackerChangeEvent *self,
+-                                                                   PhotosTrackerChangeEvent *event);
+-
+-void                       photos_tracker_change_event_set_resolved_values (PhotosTrackerChangeEvent *self,
+-                                                                            const gchar *urn,
+-                                                                            const gchar *predicate);
+-
+-G_END_DECLS
+-
+-#endif /* PHOTOS_TRACKER_CHANGE_EVENT_H */
+diff --git a/src/photos-tracker-change-monitor.c b/src/photos-tracker-change-monitor.c
+deleted file mode 100644
+index 2e9810aa..00000000
+--- a/src/photos-tracker-change-monitor.c
++++ /dev/null
+@@ -1,468 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2012 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- *   + Documents
+- */
+-
+-
+-#include "config.h"
+-
+-#include <glib.h>
+-#include <tracker-sparql.h>
+-
+-#include "photos-tracker-change-event.h"
+-#include "photos-tracker-change-monitor.h"
+-#include "photos-tracker-queue.h"
+-#include "photos-tracker-resources.h"
+-#include "photos-query.h"
+-
+-
+-struct _PhotosTrackerChangeMonitor
+-{
+-  GObject parent_instance;
+-  GHashTable *pending_changes;
+-  GHashTable *unresolved_ids;
+-  GQueue *pending_events;
+-  PhotosTrackerQueue *queue;
+-  TrackerResources *resource_service;
+-  guint outstanding_ops;
+-  guint pending_events_id;
+-};
+-
+-enum
+-{
+-  CHANGES_PENDING,
+-  LAST_SIGNAL
+-};
+-
+-static guint signals[LAST_SIGNAL] = { 0 };
+-
+-static void photos_tracker_change_monitor_initable_iface_init (GInitableIface *iface);
+-
+-
+-G_DEFINE_TYPE_EXTENDED (PhotosTrackerChangeMonitor, photos_tracker_change_monitor, G_TYPE_OBJECT, 0,
+-                        G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, photos_tracker_change_monitor_initable_iface_init));
+-
+-
+-enum
+-{
+-  CHANGE_MONITOR_TIMEOUT = 500, /* ms */
+-  CHANGE_MONITOR_MAX_ITEMS = 500
+-};
+-
+-
+-typedef struct _PhotosTrackerChangeMonitorQueryData PhotosTrackerChangeMonitorQueryData;
+-typedef struct _TrackerResourcesEvent TrackerResourcesEvent;
+-
+-struct _PhotosTrackerChangeMonitorQueryData
+-{
+-  PhotosTrackerChangeMonitor *self;
+-  GHashTable *id_table;
+-  GQueue *events;
+-};
+-
+-struct _TrackerResourcesEvent
+-{
+-  gint32 graph;
+-  gint32 subject;
+-  gint32 predicate;
+-  gint32 object;
+-};
+-
+-
+-static void
+-photos_tracker_change_monitor_query_data_free (PhotosTrackerChangeMonitorQueryData *data)
+-{
+-  g_clear_object (&data->self);
+-
+-  if (data->id_table != NULL)
+-    g_hash_table_unref (data->id_table);
+-
+-  if (data->events != NULL)
+-    g_queue_free_full (data->events, (GDestroyNotify) photos_tracker_change_event_free);
+-
+-  g_slice_free (PhotosTrackerChangeMonitorQueryData, data);
+-}
+-
+-
+-static PhotosTrackerChangeMonitorQueryData *
+-photos_tracker_change_monitor_query_data_new (PhotosTrackerChangeMonitor *self,
+-                                              GHashTable *id_table,
+-                                              GQueue *events)
+-{
+-  PhotosTrackerChangeMonitorQueryData *data;
+-
+-  data = g_slice_new0 (PhotosTrackerChangeMonitorQueryData);
+-  data->self = g_object_ref (self);
+-  data->id_table = id_table;
+-  data->events = events;
+-
+-  return data;
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_add_event (PhotosTrackerChangeMonitor *self, PhotosTrackerChangeEvent *change_event)
+-{
+-  PhotosTrackerChangeEvent *old_change_event;
+-  const gchar *urn;
+-
+-  urn = photos_tracker_change_event_get_urn (change_event);
+-  old_change_event = (PhotosTrackerChangeEvent *) g_hash_table_lookup (self->pending_changes, urn);
+-
+-  if (old_change_event != NULL)
+-    photos_tracker_change_event_merge (old_change_event, change_event);
+-  else
+-    g_hash_table_insert (self->pending_changes, g_strdup (urn), photos_tracker_change_event_copy (change_event));
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_remove_timeout (PhotosTrackerChangeMonitor *self)
+-{
+-  if (self->pending_events_id != 0)
+-    {
+-      g_source_remove (self->pending_events_id);
+-      self->pending_events_id = 0;
+-    }
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_send_events (PhotosTrackerChangeMonitor *self, GHashTable *id_table, GQueue *events)
+-{
+-  GList *l;
+-
+-  for (l = events->head; l != NULL; l = l->next)
+-    {
+-      PhotosTrackerChangeEvent *change_event = (PhotosTrackerChangeEvent *) l->data;
+-      const gchar *predicate;
+-      const gchar *urn;
+-      gint32 predicate_id;
+-      gint32 urn_id;
+-
+-      predicate_id = photos_tracker_change_event_get_predicate_id (change_event);
+-      urn_id = photos_tracker_change_event_get_urn_id (change_event);
+-
+-      predicate = (gchar *) g_hash_table_lookup (id_table, GINT_TO_POINTER (predicate_id));
+-      if (G_UNLIKELY (predicate == NULL))
+-        continue;
+-
+-      urn = (gchar *) g_hash_table_lookup (id_table, GINT_TO_POINTER (urn_id));
+-      if (G_UNLIKELY (urn == NULL))
+-        continue;
+-
+-      photos_tracker_change_event_set_resolved_values (change_event, urn, predicate);
+-      photos_tracker_change_monitor_add_event (self, change_event);
+-    }
+-
+-  g_signal_emit (self, signals[CHANGES_PENDING], 0, self->pending_changes);
+-  g_hash_table_remove_all (self->pending_changes);
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_cursor_next (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+-  PhotosTrackerChangeMonitorQueryData *data = (PhotosTrackerChangeMonitorQueryData *) user_data;
+-  PhotosTrackerChangeMonitor *self = data->self;
+-  TrackerSparqlCursor *cursor = TRACKER_SPARQL_CURSOR (source_object);
+-  GHashTableIter iter;
+-  gboolean valid;
+-
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    valid = tracker_sparql_cursor_next_finish (cursor, res, &error);
+-    if (error != NULL)
+-      g_warning ("Unable to resolve item URNs for graph changes: %s", error->message);
+-  }
+-
+-  if (valid)
+-    {
+-      guint idx;
+-
+-      idx = 0;
+-      g_hash_table_iter_init (&iter, data->id_table);
+-      while (g_hash_table_iter_next (&iter, NULL, NULL))
+-        {
+-          const gchar *str;
+-
+-          str = tracker_sparql_cursor_get_string (cursor, idx, NULL);
+-          g_hash_table_iter_replace (&iter, g_strdup (str));
+-          idx++;
+-        }
+-
+-      photos_tracker_change_monitor_send_events (self, data->id_table, data->events);
+-    }
+-
+-  tracker_sparql_cursor_close (cursor);
+-  photos_tracker_change_monitor_query_data_free (data);
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_query_executed (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+-  PhotosTrackerChangeMonitorQueryData *data = (PhotosTrackerChangeMonitorQueryData *) user_data;
+-  TrackerSparqlConnection *connection = TRACKER_SPARQL_CONNECTION (source_object);
+-  TrackerSparqlCursor *cursor; /* TODO: Use g_autoptr */
+-
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    cursor = tracker_sparql_connection_query_finish (connection, res, &error);
+-    if (error != NULL)
+-      {
+-        g_warning ("Unable to resolve item URNs for graph changes: %s", error->message);
+-        photos_tracker_change_monitor_query_data_free (data);
+-        return;
+-      }
+-  }
+-
+-  tracker_sparql_cursor_next_async (cursor, NULL, photos_tracker_change_monitor_cursor_next, data);
+-  g_object_unref (cursor);
+-}
+-
+-
+-static gboolean
+-photos_tracker_change_monitor_process_events (PhotosTrackerChangeMonitor *self)
+-{
+-  GHashTable *id_table;
+-  GHashTableIter iter;
+-  GQueue *events;
+-  g_autoptr (GString) sparql = NULL;
+-  PhotosTrackerChangeMonitorQueryData *data;
+-  g_autoptr (PhotosQuery) query = NULL;
+-  gpointer id;
+-
+-  events = self->pending_events;
+-  self->pending_events = g_queue_new ();
+-
+-  id_table = self->unresolved_ids;
+-  self->unresolved_ids = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
+-
+-  self->pending_events_id = 0;
+-
+-  sparql = g_string_new ("SELECT");
+-
+-  g_hash_table_iter_init (&iter, id_table);
+-  while (g_hash_table_iter_next (&iter, &id, NULL))
+-    g_string_append_printf (sparql, " tracker:uri(%d)", GPOINTER_TO_INT (id));
+-
+-  g_string_append (sparql, " {}");
+-
+-  query = photos_query_new (NULL, sparql->str);
+-
+-  data = photos_tracker_change_monitor_query_data_new (self, id_table, events);
+-  photos_tracker_queue_select (self->queue,
+-                               query,
+-                               NULL,
+-                               photos_tracker_change_monitor_query_executed,
+-                               data,
+-                               NULL);
+-
+-  return G_SOURCE_REMOVE;
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_add_pending_event (PhotosTrackerChangeMonitor *self,
+-                                                 const TrackerResourcesEvent *event,
+-                                                 gboolean is_delete)
+-{
+-  PhotosTrackerChangeEvent *change_event;
+-
+-  photos_tracker_change_monitor_remove_timeout (self);
+-
+-  g_hash_table_insert (self->unresolved_ids, GINT_TO_POINTER (event->subject), NULL);
+-  g_hash_table_insert (self->unresolved_ids, GINT_TO_POINTER (event->predicate), NULL);
+-
+-  change_event = photos_tracker_change_event_new (event->subject, event->predicate, is_delete);
+-  g_queue_push_tail (self->pending_events, change_event);
+-
+-  if (self->pending_events->length >= CHANGE_MONITOR_MAX_ITEMS)
+-    photos_tracker_change_monitor_process_events (self);
+-  else
+-    self->pending_events_id = g_timeout_add (CHANGE_MONITOR_TIMEOUT,
+-                                             (GSourceFunc) photos_tracker_change_monitor_process_events,
+-                                             self);
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_graph_updated (TrackerResources *resource_service,
+-                                             const gchar *class_name,
+-                                             GVariant *delete_events,
+-                                             GVariant *insert_events,
+-                                             gpointer user_data)
+-{
+-  PhotosTrackerChangeMonitor *self = PHOTOS_TRACKER_CHANGE_MONITOR (user_data);
+-  const TrackerResourcesEvent *events;
+-  gsize i;
+-  gsize n_elements;
+-
+-  events = (const TrackerResourcesEvent *) g_variant_get_fixed_array (delete_events,
+-                                                                      &n_elements,
+-                                                                      sizeof (TrackerResourcesEvent));
+-  for (i = 0; i < n_elements; i++)
+-    photos_tracker_change_monitor_add_pending_event (self, &events[i], TRUE);
+-
+-  events = (const TrackerResourcesEvent *) g_variant_get_fixed_array (insert_events,
+-                                                                      &n_elements,
+-                                                                      sizeof (TrackerResourcesEvent));
+-  for (i = 0; i < n_elements; i++)
+-    photos_tracker_change_monitor_add_pending_event (self, &events[i], FALSE);
+-}
+-
+-
+-static GObject *
+-photos_tracker_change_monitor_constructor (GType type,
+-                                           guint n_construct_params,
+-                                           GObjectConstructParam *construct_params)
+-{
+-  static GObject *self = NULL;
+-
+-  if (self == NULL)
+-    {
+-      self = G_OBJECT_CLASS (photos_tracker_change_monitor_parent_class)->constructor (type,
+-                                                                                       n_construct_params,
+-                                                                                       construct_params);
+-      g_object_add_weak_pointer (self, (gpointer) &self);
+-      return self;
+-    }
+-
+-  return g_object_ref (self);
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_dispose (GObject *object)
+-{
+-  PhotosTrackerChangeMonitor *self = PHOTOS_TRACKER_CHANGE_MONITOR (object);
+-
+-  photos_tracker_change_monitor_remove_timeout (self);
+-
+-  g_clear_object (&self->queue);
+-  g_clear_object (&self->resource_service);
+-
+-  G_OBJECT_CLASS (photos_tracker_change_monitor_parent_class)->dispose (object);
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_finalize (GObject *object)
+-{
+-  PhotosTrackerChangeMonitor *self = PHOTOS_TRACKER_CHANGE_MONITOR (object);
+-
+-  g_hash_table_unref (self->pending_changes);
+-  g_hash_table_unref (self->unresolved_ids);
+-
+-  g_queue_free_full (self->pending_events, (GDestroyNotify) photos_tracker_change_event_free);
+-
+-  G_OBJECT_CLASS (photos_tracker_change_monitor_parent_class)->finalize (object);
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_init (PhotosTrackerChangeMonitor *self)
+-{
+-  self->pending_changes = g_hash_table_new_full (g_str_hash,
+-                                                 g_str_equal,
+-                                                 g_free,
+-                                                 (GDestroyNotify) photos_tracker_change_event_free);
+-
+-  self->unresolved_ids = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
+-
+-  self->pending_events = g_queue_new ();
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_class_init (PhotosTrackerChangeMonitorClass *class)
+-{
+-  GObjectClass *object_class = G_OBJECT_CLASS (class);
+-
+-  object_class->constructor = photos_tracker_change_monitor_constructor;
+-  object_class->dispose = photos_tracker_change_monitor_dispose;
+-  object_class->finalize = photos_tracker_change_monitor_finalize;
+-
+-  signals[CHANGES_PENDING] = g_signal_new ("changes-pending",
+-                                           G_TYPE_FROM_CLASS (class),
+-                                           G_SIGNAL_RUN_LAST,
+-                                           0,
+-                                           NULL, /*accumulator */
+-                                           NULL, /*accu_data */
+-                                           g_cclosure_marshal_VOID__BOXED,
+-                                           G_TYPE_NONE,
+-                                           1,
+-                                           G_TYPE_HASH_TABLE);
+-}
+-
+-
+-static gboolean
+-photos_tracker_change_monitor_initable_init (GInitable *initable, GCancellable *cancellable, GError **error)
+-{
+-  PhotosTrackerChangeMonitor *self = PHOTOS_TRACKER_CHANGE_MONITOR (initable);
+-  gboolean ret_val = TRUE;
+-
+-  if (G_LIKELY (self->queue != NULL && self->resource_service != NULL))
+-    goto out;
+-
+-  self->queue = photos_tracker_queue_dup_singleton (cancellable, error);
+-  if (G_UNLIKELY (self->queue == NULL))
+-    {
+-      ret_val = FALSE;
+-      goto out;
+-    }
+-
+-  self->resource_service = tracker_resources_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
+-                                                                     G_DBUS_PROXY_FLAGS_NONE,
+-                                                                     "org.freedesktop.Tracker1",
+-                                                                     "/org/freedesktop/Tracker1/Resources",
+-                                                                     cancellable,
+-                                                                     error);
+-  if (G_UNLIKELY (self->resource_service == NULL))
+-    {
+-      ret_val = FALSE;
+-      goto out;
+-    }
+-
+-  g_signal_connect (self->resource_service,
+-                    "graph-updated",
+-                    G_CALLBACK (photos_tracker_change_monitor_graph_updated),
+-                    self);
+-
+- out:
+-  return ret_val;
+-}
+-
+-
+-static void
+-photos_tracker_change_monitor_initable_iface_init (GInitableIface *iface)
+-{
+-  iface->init = photos_tracker_change_monitor_initable_init;
+-}
+-
+-
+-PhotosTrackerChangeMonitor *
+-photos_tracker_change_monitor_dup_singleton (GCancellable *cancellable, GError **error)
+-{
+-  return g_initable_new (PHOTOS_TYPE_TRACKER_CHANGE_MONITOR, cancellable, error, NULL);
+-}
+diff --git a/src/photos-tracker-change-monitor.h b/src/photos-tracker-change-monitor.h
+deleted file mode 100644
+index 9740b046..00000000
+--- a/src/photos-tracker-change-monitor.h
++++ /dev/null
+@@ -1,42 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2012 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- *   + Documents
+- */
+-
+-#ifndef PHOTOS_TRACKER_CHANGE_MONITOR_H
+-#define PHOTOS_TRACKER_CHANGE_MONITOR_H
+-
+-#include <gio/gio.h>
+-
+-G_BEGIN_DECLS
+-
+-#define PHOTOS_TYPE_TRACKER_CHANGE_MONITOR (photos_tracker_change_monitor_get_type ())
+-G_DECLARE_FINAL_TYPE (PhotosTrackerChangeMonitor,
+-                      photos_tracker_change_monitor,
+-                      PHOTOS,
+-                      TRACKER_CHANGE_MONITOR,
+-                      GObject);
+-
+-PhotosTrackerChangeMonitor  *photos_tracker_change_monitor_dup_singleton    (GCancellable *cancellable,
+-                                                                             GError **error);
+-
+-G_END_DECLS
+-
+-#endif /* PHOTOS_TRACKER_CHANGE_MONITOR_H */
+diff --git a/src/photos-tracker-controller.c b/src/photos-tracker-controller.c
+index 3a62cf2d..f0b81e02 100644
+--- a/src/photos-tracker-controller.c
++++ b/src/photos-tracker-controller.c
+@@ -292,6 +292,12 @@ photos_tracker_controller_perform_current_query (PhotosTrackerController *self)
+ 
+   priv = photos_tracker_controller_get_instance_private (self);
+ 
++  if (G_UNLIKELY (priv->queue == NULL))
++    {
++      photos_tracker_controller_query_error (self, priv->queue_error);
++      goto out;
++    }
++
+   g_clear_object (&priv->current_query);
+   priv->current_query = PHOTOS_TRACKER_CONTROLLER_GET_CLASS (self)->get_query (self);
+   g_return_if_fail (priv->current_query != NULL);
+@@ -303,12 +309,6 @@ photos_tracker_controller_perform_current_query (PhotosTrackerController *self)
+   g_object_unref (priv->cancellable);
+   priv->cancellable = g_cancellable_new ();
+ 
+-  if (G_UNLIKELY (priv->queue == NULL))
+-    {
+-      photos_tracker_controller_query_error (self, priv->queue_error);
+-      goto out;
+-    }
+-
+   photos_tracker_queue_select (priv->queue,
+                                priv->current_query,
+                                priv->cancellable,
+diff --git a/src/photos-tracker-extract-priority.xml b/src/photos-tracker-extract-priority.xml
+index 7e3b9b0c..2b562299 100644
+--- a/src/photos-tracker-extract-priority.xml
++++ b/src/photos-tracker-extract-priority.xml
+@@ -21,7 +21,7 @@
+ -->
+ 
+ <node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
+-  <interface name="org.freedesktop.Tracker1.Extract.Priority">
++  <interface name="org.freedesktop.Tracker3.Extract.Priority">
+     <method name="ClearRdfTypes" />
+     <method name="SetRdfTypes">
+       <arg name="rdf_types" type="as" direction="in" />
+diff --git a/src/photos-tracker-import-controller.c b/src/photos-tracker-import-controller.c
+index 085ace3a..d7ed9b20 100644
+--- a/src/photos-tracker-import-controller.c
++++ b/src/photos-tracker-import-controller.c
+@@ -24,7 +24,6 @@
+ #include "config.h"
+ 
+ #include <gio/gio.h>
+-#include <libtracker-control/tracker-control.h>
+ 
+ #include "photos-base-manager.h"
+ #include "photos-debug.h"
+@@ -34,6 +33,8 @@
+ #include "photos-query-builder.h"
+ #include "photos-search-context.h"
+ #include "photos-tracker-import-controller.h"
++#include "photos-tracker-miner-index.h"
++#include "photos-tracker-queue.h"
+ #include "photos-utils.h"
+ 
+ 
+@@ -45,7 +46,7 @@ struct _PhotosTrackerImportController
+   PhotosBaseManager *item_mngr;
+   PhotosBaseManager *src_mngr;
+   PhotosOffsetController *offset_cntrlr;
+-  TrackerMinerManager *manager;
++  TrackerMinerFilesIndex *miner_control_proxy;
+ };
+ 
+ 
+@@ -76,12 +77,12 @@ static void
+ photos_tracker_import_controller_index (GObject *source_object, GAsyncResult *res, gpointer user_data)
+ {
+   g_autoptr (GFile) file = G_FILE (user_data);
+-  TrackerMinerManager *manager = TRACKER_MINER_MANAGER (source_object);
++  TrackerMinerFilesIndex *miner_control_proxy = TRACKER_MINER_FILES_INDEX (source_object);
+ 
+   {
+     g_autoptr (GError) error = NULL;
+ 
+-    if (!tracker_miner_manager_index_file_for_process_finish (manager, res, &error))
++    if (!tracker_miner_files_index_call_index_location_finish (miner_control_proxy, res, &error))
+       {
+         if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+           {
+@@ -102,6 +103,8 @@ photos_tracker_import_controller_next_files (GObject *source_object, GAsyncResul
+   GFileEnumerator *enumerator = G_FILE_ENUMERATOR (source_object);
+   GList *infos = NULL;
+   GList *l;
++  const gchar *tracker_priority_graphs[] = { TRACKER_PICTURES_GRAPH };
++  const gchar *tracker_index_location_flags[] = { "for-process" };
+ 
+   {
+     g_autoptr (GError) error = NULL;
+@@ -187,11 +190,13 @@ photos_tracker_import_controller_next_files (GObject *source_object, GAsyncResul
+                     if (g_content_type_equals (mime_type, IMPORTABLE_MIME_TYPES[i])
+                         || g_content_type_is_a (mime_type, IMPORTABLE_MIME_TYPES[i]))
+                       {
+-                        tracker_miner_manager_index_file_for_process_async (self->manager,
+-                                                                            file,
+-                                                                            self->cancellable,
+-                                                                            photos_tracker_import_controller_index,
+-                                                                            g_object_ref (file));
++                        tracker_miner_files_index_call_index_location (self->miner_control_proxy,
++                                                                       uri,
++                                                                       tracker_priority_graphs,
++                                                                       tracker_index_location_flags,
++                                                                       self->cancellable,
++                                                                       photos_tracker_import_controller_index,
++                                                                       g_object_ref (file));
+                         indexing = TRUE;
+                       }
+                   }
+@@ -291,28 +296,6 @@ photos_tracker_import_controller_source_active_changed (PhotosTrackerImportContr
+     {
+       g_return_if_fail (g_queue_is_empty (self->pending_directories));
+ 
+-      if (G_LIKELY (self->manager != NULL))
+-        {
+-          g_autoptr (GFile) root = NULL;
+-          g_autofree gchar *uri = NULL;
+-
+-          root = g_mount_get_root (mount);
+-          g_queue_push_tail (self->pending_directories, g_object_ref (root));
+-
+-          uri = g_file_get_uri (root);
+-          photos_debug (PHOTOS_DEBUG_IMPORT, "Enumerating device directory %s", uri);
+-
+-          g_file_enumerate_children_async (root,
+-                                           G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE","
+-                                           G_FILE_ATTRIBUTE_STANDARD_NAME","
+-                                           G_FILE_ATTRIBUTE_STANDARD_TYPE,
+-                                           G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+-                                           G_PRIORITY_DEFAULT,
+-                                           self->cancellable,
+-                                           photos_tracker_import_controller_enumerate_children,
+-                                           self);
+-        }
+-
+       photos_tracker_controller_refresh_for_object (PHOTOS_TRACKER_CONTROLLER (self));
+     }
+ }
+@@ -379,7 +362,6 @@ photos_tracker_import_controller_dispose (GObject *object)
+ 
+   g_clear_object (&self->src_mngr);
+   g_clear_object (&self->offset_cntrlr);
+-  g_clear_object (&self->manager);
+ 
+   G_OBJECT_CLASS (photos_tracker_import_controller_parent_class)->dispose (object);
+ }
+@@ -397,6 +379,37 @@ photos_tracker_import_controller_finalize (GObject *object)
+ }
+ 
+ 
++static TrackerMinerFilesIndex *
++photos_tracker_import_controller_get_miner_fs_control_proxy (GCancellable *cancellable)
++{
++  g_autoptr (PhotosTrackerQueue) tracker_queue = NULL;
++  const gchar *miner_fs_control_busname;
++  g_autoptr (GError) error = NULL;
++  TrackerMinerFilesIndex *miner_control_proxy;
++
++  tracker_queue = photos_tracker_queue_dup_singleton (cancellable, &error);
++
++  if (!tracker_queue) {
++    g_warning ("Error getting Tracker queue: %s. Import will not work.", error->message);
++    return NULL;
++  }
++
++  miner_fs_control_busname = photos_tracker_queue_get_miner_fs_control_busname (tracker_queue);
++  miner_control_proxy = tracker_miner_files_index_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
++                                                                          G_DBUS_PROXY_FLAGS_NONE,
++                                                                          miner_fs_control_busname,
++                                                                          "/org/freedesktop/Tracker3/Miner/Files/Control",
++                                                                          NULL,
++                                                                          &error);
++  if (!miner_control_proxy) {
++    g_warning ("Error getting Tracker Miner FS control proxy: %s. Import will not work", error->message);
++    return NULL;
++  }
++
++  return miner_control_proxy;
++}
++
++
+ static void
+ photos_tracker_import_controller_init (PhotosTrackerImportController *self)
+ {
+@@ -421,13 +434,7 @@ photos_tracker_import_controller_init (PhotosTrackerImportController *self)
+ 
+   self->offset_cntrlr = photos_offset_import_controller_dup_singleton ();
+ 
+-  {
+-    g_autoptr (GError) error = NULL;
+-
+-    self->manager = tracker_miner_manager_new_full (FALSE, &error);
+-    if (error != NULL)
+-      g_warning ("Unable to create a TrackerMinerManager, indexing attached devices won't work: %s", error->message);
+-  }
++  self->miner_control_proxy = photos_tracker_import_controller_get_miner_fs_control_proxy (NULL);
+ }
+ 
+ 
+diff --git a/src/photos-tracker-queue.c b/src/photos-tracker-queue.c
+index 6ac829cd..a5f4c91a 100644
+--- a/src/photos-tracker-queue.c
++++ b/src/photos-tracker-queue.c
+@@ -37,9 +37,20 @@ struct _PhotosTrackerQueue
+   GObject parent_instance;
+   GError *initialization_error;
+   GQueue *queue;
+-  TrackerSparqlConnection *connection;
++  TrackerSparqlConnection *local_connection;
++  TrackerSparqlConnection *miner_fs_connection;
+   gboolean is_initialized;
+   gboolean running;
++  gboolean miner_fs_ready;
++  const gchar *miner_fs_busname;
++  const gchar *miner_fs_control_busname;
++};
++
++enum
++{
++  PROP_0,
++  PROP_MINER_FS_READY,
++  PROP_MINER_FS_BUSNAME
+ };
+ 
+ static void photos_tracker_queue_initable_iface_init (GInitableIface *iface);
+@@ -90,7 +101,6 @@ photos_tracker_queue_data_free (PhotosTrackerQueueData *data)
+ 
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC (PhotosTrackerQueueData, photos_tracker_queue_data_free);
+ 
+-
+ static PhotosTrackerQueueData *
+ photos_tracker_queue_data_new (PhotosQuery *query,
+                                PhotosTrackerQueryType query_type,
+@@ -179,7 +189,7 @@ photos_tracker_queue_check (PhotosTrackerQueue *self)
+   switch (data->query_type)
+     {
+     case PHOTOS_TRACKER_QUERY_SELECT:
+-      tracker_sparql_connection_query_async (self->connection,
++      tracker_sparql_connection_query_async (self->local_connection,
+                                              sparql,
+                                              data->cancellable,
+                                              photos_tracker_queue_collector,
+@@ -187,18 +197,16 @@ photos_tracker_queue_check (PhotosTrackerQueue *self)
+       break;
+ 
+     case PHOTOS_TRACKER_QUERY_UPDATE:
+-      tracker_sparql_connection_update_async (self->connection,
++      tracker_sparql_connection_update_async (self->local_connection,
+                                               sparql,
+-                                              G_PRIORITY_DEFAULT,
+                                               data->cancellable,
+                                               photos_tracker_queue_collector,
+                                               g_object_ref (self));
+       break;
+ 
+     case PHOTOS_TRACKER_QUERY_UPDATE_BLANK:
+-      tracker_sparql_connection_update_blank_async (self->connection,
++      tracker_sparql_connection_update_blank_async (self->local_connection,
+                                                     sparql,
+-                                                    G_PRIORITY_DEFAULT,
+                                                     data->cancellable,
+                                                     photos_tracker_queue_collector,
+                                                     g_object_ref (self));
+@@ -211,6 +219,53 @@ photos_tracker_queue_check (PhotosTrackerQueue *self)
+ }
+ 
+ 
++static gboolean
++photos_tracker_queue_start_session_miner_fs (PhotosTrackerQueue *self, GError **error)
++{
++  const gchar *busname = "org.freedesktop.Tracker3.Miner.Files";
++  const gchar *control_busname = "org.freedesktop.Tracker3.Miner.Files.Control";
++
++  photos_debug (PHOTOS_DEBUG_TRACKER, "Connecting to %s", busname);
++  self->miner_fs_connection = tracker_sparql_connection_bus_new (busname, NULL, NULL, error);
++  if (*error)
++    {
++      g_warning ("Unable to create connection for session-wide Tracker indexer at %s: %s", busname, (*error)->message);
++      return FALSE;
++    }
++
++  self->miner_fs_busname = busname;
++  self->miner_fs_control_busname = control_busname;
++
++  return TRUE;
++}
++
++
++static gboolean
++photos_tracker_queue_start_local_miner_fs (PhotosTrackerQueue *self, GError **error)
++{
++  const gchar *busname = "org.gnome.Photos.Tracker3.Miner.Files";
++  const gchar *control_busname = "org.gnome.Photos.Tracker3.Miner.Files.Control";
++
++  photos_debug (PHOTOS_DEBUG_TRACKER, "Connecting to %s", busname);
++  self->miner_fs_connection = tracker_sparql_connection_bus_new (busname, NULL, NULL, error);
++  if (*error)
++    {
++      g_critical ("Could not start local Tracker indexer at %s: %s", busname, (*error)->message);
++      return FALSE;
++    }
++
++  self->miner_fs_busname = busname;
++  self->miner_fs_control_busname = control_busname;
++
++  return TRUE;
++}
++
++static gboolean
++inside_flatpak (void)
++{
++    return g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS);
++}
++
+ static GObject *
+ photos_tracker_queue_constructor (GType type, guint n_construct_params, GObjectConstructParam *construct_params)
+ {
+@@ -234,7 +289,8 @@ photos_tracker_queue_dispose (GObject *object)
+ {
+   PhotosTrackerQueue *self = PHOTOS_TRACKER_QUEUE (object);
+ 
+-  g_clear_object (&self->connection);
++  g_clear_object (&self->local_connection);
++  g_clear_object (&self->miner_fs_connection);
+ 
+   G_OBJECT_CLASS (photos_tracker_queue_parent_class)->dispose (object);
+ }
+@@ -258,6 +314,38 @@ photos_tracker_queue_init (PhotosTrackerQueue *self)
+   self->queue = g_queue_new ();
+ }
+ 
++static void
++photos_tracker_queue_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
++{
++  PhotosTrackerQueue *self = PHOTOS_TRACKER_QUEUE (object);
++
++  switch (prop_id)
++    {
++    case PROP_MINER_FS_READY:
++      g_value_set_boolean (value, self->miner_fs_ready);
++      break;
++
++    case PROP_MINER_FS_BUSNAME:
++      g_value_set_string (value, self->miner_fs_busname);
++      break;
++
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++      break;
++    }
++}
++
++static void
++photos_tracker_queue_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
++{
++  switch (prop_id)
++    {
++    /* All properties are read only */
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++      break;
++    }
++}
+ 
+ static void
+ photos_tracker_queue_class_init (PhotosTrackerQueueClass *class)
+@@ -267,6 +355,24 @@ photos_tracker_queue_class_init (PhotosTrackerQueueClass *class)
+   object_class->constructor = photos_tracker_queue_constructor;
+   object_class->dispose = photos_tracker_queue_dispose;
+   object_class->finalize = photos_tracker_queue_finalize;
++  object_class->get_property = photos_tracker_queue_get_property;
++  object_class->set_property = photos_tracker_queue_set_property;
++
++  g_object_class_install_property (object_class,
++                                   PROP_MINER_FS_READY,
++                                   g_param_spec_boolean ("tracker-miner-fs-ready",
++                                                         "Tracker Miner FS ready",
++                                                         "TRUE if it is possible to query Tracker indexer",
++                                                         FALSE,
++                                                         G_PARAM_READABLE));
++
++  g_object_class_install_property (object_class,
++                                   PROP_MINER_FS_BUSNAME,
++                                   g_param_spec_string ("tracker-miner-fs-busname",
++                                                        "Tracker Miner FS busname",
++                                                        "D-Bus name of the Tracker indexer daemon",
++                                                        "",
++                                                        G_PARAM_READABLE));
+ }
+ 
+ 
+@@ -274,13 +380,16 @@ static gboolean
+ photos_tracker_queue_initable_init (GInitable *initable, GCancellable *cancellable, GError **error)
+ {
+   PhotosTrackerQueue *self = PHOTOS_TRACKER_QUEUE (initable);
++  TrackerSparqlConnectionFlags tracker_flags;
++  g_autoptr (GFile) store = NULL;
+   gboolean ret_val = FALSE;
++  gboolean miner_ok = FALSE;
+ 
+   G_LOCK (init_lock);
+ 
+   if (self->is_initialized)
+     {
+-      if (self->connection != NULL)
++      if (self->local_connection != NULL && self->miner_fs_connection != NULL)
+         ret_val = TRUE;
+       else
+         g_assert_nonnull (self->initialization_error);
+@@ -290,11 +399,49 @@ photos_tracker_queue_initable_init (GInitable *initable, GCancellable *cancellab
+ 
+   g_assert_no_error (self->initialization_error);
+ 
+-  self->connection = tracker_sparql_connection_get (cancellable, &self->initialization_error);
++  /* Connect to the local database which stores user data.
++   *
++   * Same flags that tracker-miner-fs uses by default. See:
++   * https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/src/miners/fs/tracker-main.c#L735 and
++   * https://gitlab.gnome.org/GNOME/tracker-miners/-/blob/master/data/org.freedesktop.Tracker.FTS.gschema.xml */
++  tracker_flags = TRACKER_SPARQL_CONNECTION_FLAGS_FTS_ENABLE_UNACCENT |
++                  TRACKER_SPARQL_CONNECTION_FLAGS_FTS_ENABLE_STOP_WORDS |
++                  TRACKER_SPARQL_CONNECTION_FLAGS_FTS_IGNORE_NUMBERS;
++
++  store = g_file_new_build_filename (g_get_user_data_dir (), "gnome-photos", NULL);
++
++  photos_debug (PHOTOS_DEBUG_TRACKER, "Opening local database at %s", g_file_peek_path (store));
++  self->local_connection = tracker_sparql_connection_new (tracker_flags,
++                                                          store,
++                                                          tracker_sparql_get_ontology_nepomuk (),
++                                                          cancellable,
++                                                          &self->initialization_error);
++
+   if (G_UNLIKELY (self->initialization_error != NULL))
+     goto out;
+ 
+-  ret_val = TRUE;
++  /* Connect to filesystem indexer. */
++  miner_ok = photos_tracker_queue_start_session_miner_fs (self, &self->initialization_error);
++
++  if (!miner_ok && inside_flatpak ())
++    {
++      g_clear_error (&self->initialization_error);
++      miner_ok = photos_tracker_queue_start_local_miner_fs (self, &self->initialization_error);
++    }
++
++  if (miner_ok)
++    {
++      photos_debug (PHOTOS_DEBUG_TRACKER, "Using %s as tracker-miner-fs", self->miner_fs_busname);
++      ret_val = TRUE;
++    }
++  else
++    {
++      photos_debug (PHOTOS_DEBUG_TRACKER, "Initialization failed due to %s", self->initialization_error->message);
++      g_clear_object (&self->miner_fs_connection);
++      g_clear_object (&self->local_connection);
++      ret_val = FALSE;
++    }
++
+ 
+  out:
+   self->is_initialized = TRUE;
+@@ -319,10 +466,44 @@ photos_tracker_queue_initable_iface_init (GInitableIface *iface)
+ PhotosTrackerQueue *
+ photos_tracker_queue_dup_singleton (GCancellable *cancellable, GError **error)
+ {
++  GObject *singleton;
++
+   g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
+   g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ 
+-  return g_initable_new (PHOTOS_TYPE_TRACKER_QUEUE, cancellable, error, NULL);
++  singleton = g_object_new (PHOTOS_TYPE_TRACKER_QUEUE, NULL);
++
++  if (g_initable_init (G_INITABLE (singleton), cancellable, error))
++      return PHOTOS_TRACKER_QUEUE (singleton);
++
++  /* On error we deliberately don't unref the object so that we won't try
++   * and re-initialize Tracker when called again.
++   */
++  return NULL;
++}
++
++
++const gchar *
++photos_tracker_queue_get_miner_fs_busname (PhotosTrackerQueue *self)
++{
++  return self->miner_fs_busname;
++}
++
++
++const gchar *
++photos_tracker_queue_get_miner_fs_control_busname (PhotosTrackerQueue *self)
++{
++  return self->miner_fs_control_busname;
++}
++
++
++TrackerNotifier *
++photos_tracker_queue_get_notifier (PhotosTrackerQueue *self)
++{
++  /* We want notifications on filesystem changes, we don't need them for the
++   * local database which we manage ourselves.
++   */
++  return tracker_sparql_connection_create_notifier (self->miner_fs_connection);
+ }
+ 
+ 
+@@ -351,6 +532,7 @@ photos_tracker_queue_select (PhotosTrackerQueue *self,
+ }
+ 
+ 
++
+ void
+ photos_tracker_queue_update (PhotosTrackerQueue *self,
+                              PhotosQuery *query,
+diff --git a/src/photos-tracker-queue.h b/src/photos-tracker-queue.h
+index 93d97306..6e31ecf6 100644
+--- a/src/photos-tracker-queue.h
++++ b/src/photos-tracker-queue.h
+@@ -24,16 +24,23 @@
+ #define PHOTOS_TRACKER_QUEUE_H
+ 
+ #include <gio/gio.h>
++#include <libtracker-sparql/tracker-sparql.h>
+ 
+ #include "photos-query.h"
+ 
+ G_BEGIN_DECLS
+ 
++#define TRACKER_PICTURES_GRAPH "http://tracker.api.gnome.org/ontology/v3/tracker#Pictures"
++
+ #define PHOTOS_TYPE_TRACKER_QUEUE (photos_tracker_queue_get_type ())
+ G_DECLARE_FINAL_TYPE (PhotosTrackerQueue, photos_tracker_queue, PHOTOS, TRACKER_QUEUE, GObject);
+ 
+ PhotosTrackerQueue    *photos_tracker_queue_dup_singleton          (GCancellable *cancellable, GError **error);
+ 
++const gchar *          photos_tracker_queue_get_miner_fs_busname         (PhotosTrackerQueue *self);
++const gchar *          photos_tracker_queue_get_miner_fs_control_busname (PhotosTrackerQueue *self);
++TrackerNotifier *      photos_tracker_queue_get_notifier                 (PhotosTrackerQueue *self);
++
+ void                   photos_tracker_queue_select                 (PhotosTrackerQueue *self,
+                                                                     PhotosQuery *query,
+                                                                     GCancellable *cancellable,
+diff --git a/src/photos-tracker-resources.xml b/src/photos-tracker-resources.xml
+deleted file mode 100644
+index 18177aa0..00000000
+--- a/src/photos-tracker-resources.xml
++++ /dev/null
+@@ -1,31 +0,0 @@
+-<!DOCTYPE node PUBLIC
+-"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+-"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+-
+-<!--
+- Photos - access, organize and share your photos on GNOME
+- Copyright © 2012 – 2019 Red Hat, Inc.
+-
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation, either version 3 of the License, or
+- (at your option) any later version.
+-
+- This program is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- GNU General Public License for more details.
+-
+- You should have received a copy of the GNU General Public License
+- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--->
+-
+-<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
+-  <interface name="org.freedesktop.Tracker1.Resources">
+-    <signal name="GraphUpdated">
+-      <arg name="className" type="s" />
+-      <arg name="deleteEvents" type="a(iiii)" />
+-      <arg name="insertEvents" type="a(iiii)" />
+-    </signal>
+-  </interface>
+-</node>
+diff --git a/src/photos-utils.c b/src/photos-utils.c
+index c638297b..cc8593d8 100644
+--- a/src/photos-utils.c
++++ b/src/photos-utils.c
+@@ -1261,7 +1261,13 @@ photos_utils_set_edited_name (const gchar *urn, const gchar *title)
+   g_autoptr (PhotosTrackerQueue) queue = NULL;
+   g_autofree gchar *sparql = NULL;
+ 
+-  sparql = g_strdup_printf ("INSERT OR REPLACE { <%s> nie:title \"%s\" }", urn, title);
++  sparql = g_strdup_printf ("WITH tracker:Pictures "
++                            "DELETE { <%s> nie:title ?title } "
++                            "INSERT { "
++                            "  <%s> a nmm:Photo ; "
++                            "    nie:title \"%s\" . "
++                            "}"
++                            "WHERE { <%s> nie:title ?title }", urn, urn, title, urn);
+   query = photos_query_new (NULL, sparql);
+ 
+   {
+@@ -1289,9 +1295,19 @@ photos_utils_set_favorite (const gchar *urn, gboolean is_favorite)
+   g_autoptr (PhotosTrackerQueue) queue = NULL;
+   g_autofree gchar *sparql = NULL;
+ 
+-  sparql = g_strdup_printf ("%s { <%s> nao:hasTag nao:predefined-tag-favorite }",
+-                            (is_favorite) ? "INSERT OR REPLACE" : "DELETE",
+-                            urn);
++  if (is_favorite)
++    sparql = g_strdup_printf ("INSERT DATA { "
++                              "  GRAPH tracker:Pictures {"
++                              "    <%s> a nmm:Photo ; "
++                              "      nao:hasTag nao:predefined-tag-favorite "
++                              "  } "
++                              "}", urn);
++  else
++    sparql = g_strdup_printf ("DELETE DATA {"
++                              "  GRAPH tracker:Pictures {"
++                              "    <%s> nao:hasTag nao:predefined-tag-favorite "
++                              "  } "
++                              "}", urn);
+   query = photos_query_new (NULL, sparql);
+ 
+   {
+diff --git a/src/photos-utils.h b/src/photos-utils.h
+index 78ec3668..f1450f7d 100644
+--- a/src/photos-utils.h
++++ b/src/photos-utils.h
+@@ -46,7 +46,7 @@ G_BEGIN_DECLS
+ #define PHOTOS_TRACKER_CONTROLLER_EXTENSION_POINT_NAME "photos-tracker-controller"
+ 
+ #define PHOTOS_COLLECTION_SCREENSHOT \
+-  "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#image-category-screenshot"
++  "http://tracker.api.gnome.org/ontology/v3/nfo#image-category-screenshot"
+ #define PHOTOS_EXPORT_SUBPATH "Exports"
+ 
+ typedef enum
+diff --git a/src/queries/all.sparql.template b/src/queries/all.sparql.template
+index 1cef98e8..14e08027 100644
+--- a/src/queries/all.sparql.template
++++ b/src/queries/all.sparql.template
+@@ -1,30 +1,42 @@
+-SELECT {{projection}}
++SELECT {{final_projection}}
++FROM NAMED tracker:Pictures
+ {
+     {
+-        SELECT {{projection}}
++        SELECT {{main_projection}}
+         {
+             {
+                 SELECT ?urn COUNT(?item) AS ?count
+                 {
++                    {{values}}
++                    VALUES (?file ?filename ?creator ?publisher) { ("" "" "" "") }
+                     ?urn a nfo:DataContainer.
+-                    ?item a nmm:Photo; nie:isPartOf ?urn.
+-                } GROUP BY ?urn
++                    ?item a nmm:Photo ;
++                       nie:isPartOf ?urn .
++                    {{item_pattern}}
++                }
++                GROUP BY ?urn
+             }
+             FILTER (?count > 0 && {{collections_default_filter}} && {{search_filter}})
+         }
+-        GROUP BY ?urn
+     }
+     UNION
+     {
+-        SELECT {{projection}}
++        SELECT {{second_projection}}
+         {
+-            ?urn a nmm:Photo .
+-            OPTIONAL { ?urn nco:creator ?creator . }
+-            OPTIONAL { ?urn nco:publisher ?publisher . }
+             {{item_pattern}}
+-            FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++            SERVICE <dbus:{{miner_fs_busname}}>
++            {
++                SELECT {{main_projection}}
++                {
++                    {{values}}
++                    ?urn a nmm:Photo ;
++                        nie:isStoredAs ?file .
++                    OPTIONAL { ?urn nco:creator ?creator . }
++                    OPTIONAL { ?urn nco:publisher ?publisher . }
++                    FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++                }
++            }
+         }
+-        GROUP BY ?urn
+     }
+ }
+ {{order}}
+diff --git a/src/queries/collections.sparql.template b/src/queries/collections.sparql.template
+index 20b35cd6..4dfb345a 100644
+--- a/src/queries/collections.sparql.template
++++ b/src/queries/collections.sparql.template
+@@ -1,14 +1,20 @@
+-SELECT {{projection}}
++SELECT {{final_projection}}
+ {
++    SELECT {{main_projection}}
+     {
+-        SELECT ?urn COUNT(?item) AS ?count
+         {
+-            ?urn a nfo:DataContainer.
+-            ?item a nmm:Photo; nie:isPartOf ?urn.
+-        } GROUP BY ?urn
++            SELECT ?urn COUNT(?item) AS ?count
++            {
++                {{values}}
++                VALUES (?file ?filename ?creator ?publisher) { ("" "" "" "") }
++                ?urn a nfo:DataContainer .
++                ?item a nmm:Photo ;
++                   nie:isPartOf ?urn .
++            }
++            GROUP BY ?urn
++        }
++        FILTER (?count > 0 && {{collections_default_filter}} && {{search_filter}})
+     }
+-    FILTER (?count > 0 && {{collections_default_filter}} && {{search_filter}})
+ }
+-GROUP BY ?urn
+ {{order}}
+ {{offset_limit}}
+diff --git a/src/queries/favorite-photos.sparql.template b/src/queries/favorite-photos.sparql.template
+index 0885a08a..9a0d7806 100644
+--- a/src/queries/favorite-photos.sparql.template
++++ b/src/queries/favorite-photos.sparql.template
+@@ -1,12 +1,20 @@
+-SELECT {{projection}}
++SELECT {{final_projection}}
++FROM tracker:Pictures
+ {
+     ?urn a nmm:Photo .
+     ?urn a nmm:Photo; nao:hasTag nao:predefined-tag-favorite .
+-    OPTIONAL { ?urn nco:creator ?creator . }
+-    OPTIONAL { ?urn nco:publisher ?publisher . }
+-    {{item_pattern}}
+-    FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++    SERVICE <dbus:{{miner_fs_busname}}>
++    {
++        SELECT {{main_projection}}
++        {
++            ?urn a nmm:Photo ;
++                nie:isStoredAs ?file .
++            OPTIONAL { ?urn nco:creator ?creator . }
++            OPTIONAL { ?urn nco:publisher ?publisher . }
++            {{item_pattern}}
++            FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++        }
++    }
+ }
+-GROUP BY ?urn
+ {{order}}
+ {{offset_limit}}
+diff --git a/src/queries/photos.sparql.template b/src/queries/photos.sparql.template
+index 4eb10b74..6ade35e2 100644
+--- a/src/queries/photos.sparql.template
++++ b/src/queries/photos.sparql.template
+@@ -1,11 +1,19 @@
+-SELECT {{projection}}
++SELECT {{final_projection}}
++FROM tracker:Pictures
+ {
+-    ?urn a nmm:Photo .
+-    OPTIONAL { ?urn nco:creator ?creator . }
+-    OPTIONAL { ?urn nco:publisher ?publisher . }
+-    {{item_pattern}}
+-    FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++    SERVICE <dbus:{{miner_fs_busname}}>
++    {
++        SELECT {{main_projection}}
++        {
++            {{values}}
++            ?urn a nmm:Photo ;
++                nie:isStoredAs ?file .
++            OPTIONAL { ?urn nco:creator ?creator . }
++            OPTIONAL { ?urn nco:publisher ?publisher . }
++            {{item_pattern}}
++            FILTER ({{photos_default_filter}} && {{source_filter}} && {{search_filter}})
++        }
++    }
+ }
+-GROUP BY ?urn
+ {{order}}
+ {{offset_limit}}
+-- 
+GitLab
+
diff --git a/srcpkgs/gnome-photos/template b/srcpkgs/gnome-photos/template
index 1ed8b9861ec..7c83a2e75d4 100644
--- a/srcpkgs/gnome-photos/template
+++ b/srcpkgs/gnome-photos/template
@@ -1,22 +1,23 @@
 # Template file for 'gnome-photos'
 pkgname=gnome-photos
-version=3.34.2
+version=3.37.91.1
 revision=1
 build_helper="gir"
 build_style=meson
 configure_args="-Ddogtail=false"
 hostmakedepends="pkg-config gettext itstool glib-devel gdk-pixbuf librsvg"
 makedepends="gtk+3-devel babl-devel exempi-devel lcms2-devel
- gfbgraph-devel tracker-devel libexif-devel librsvg-devel grilo-devel
+ gfbgraph-devel tracker3-devel libexif-devel librsvg-devel grilo-devel
  libgexiv2-devel gnome-online-accounts-devel gnome-desktop-devel libgdata-devel
  geocode-glib-devel libdazzle-devel gegl-devel"
-depends="desktop-file-utils tracker tracker-miners"
+depends="desktop-file-utils tracker3 tracker3-miners"
 short_desc="Access, organize, and share your photos on GNOME"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Photos"
-distfiles="${GNOME_SITE}/gnome-photos/${version%.*}/gnome-photos-${version}.tar.xz"
-checksum=3c59c76ef28618ec055a1799d1040287b90a0b021feb0a02b1eac28e9c2eb41a
+distfiles="${GNOME_SITE}/gnome-photos/${version%.*.*}/gnome-photos-${version}.tar.xz"
+checksum=278da23234e27c543020dae943ad52086b9ecaa5ee3aad0b031b86ee04d394aa
+patch_args="-Np1"
 
 build_options="gir"
 build_options_default="gir"

From 8a600fae3febac0d73a534dc7cbe2c668c35bcb7 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 077/104] eog: update to 3.38.0

---
 srcpkgs/eog/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/eog/template b/srcpkgs/eog/template
index e4cacb7079e..2759273872e 100644
--- a/srcpkgs/eog/template
+++ b/srcpkgs/eog/template
@@ -1,20 +1,20 @@
 # Template file for 'eog'
 pkgname=eog
-version=3.36.1
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
 configure_args="-Dintrospection=$(vopt_if gir true false)"
 hostmakedepends="gettext glib-devel itstool pkg-config"
 makedepends="exempi-devel gnome-desktop-devel libexif-devel libpeas-devel
- librsvg-devel lcms2-devel"
+ librsvg-devel lcms2-devel libportal-devel"
 depends="desktop-file-utils hicolor-icon-theme shared-mime-info"
 short_desc="Eye of GNOME graphics viewer program"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/EyeOfGnome"
 distfiles="${GNOME_SITE}/eog/${version%.*}/eog-${version}.tar.xz"
-checksum=e454a1a7aa5e3a3321eab0116778110e5a7a7b63bcf21676eda1a7be187c9c95
+checksum=e1a3a47c38688cd538deda627c0eff113d05c316b1dde6243150437259d2d963
 shlib_provides="libeog.so"
 lib32disabled=yes
 

From 684561890c5b543b6eb882d1d348cda6bfb0c21c Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 078/104] evince: update to 3.38.0

---
 srcpkgs/evince/template | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/srcpkgs/evince/template b/srcpkgs/evince/template
index 4035f15c690..0eb80750253 100644
--- a/srcpkgs/evince/template
+++ b/srcpkgs/evince/template
@@ -1,13 +1,13 @@
 # Template file for 'evince'
 pkgname=evince
-version=3.36.7
+version=3.38.0
 revision=1
 build_helper="gir"
-build_style=gnu-configure
-configure_args="$(vopt_enable gir introspection) --disable-schemas-compile
- --enable-comics --disable-static --enable-xps --disable-t1lib
- --disable-browser-plugin --enable-ps"
-hostmakedepends="adwaita-icon-theme gettext glib-devel gnome-doc-utils
+build_style=meson
+configure_args="$(vopt_bool gir introspection)
+ -Dcomics=enabled -Dps=enabled -Dxps=enabled -Ddvi=disabled
+ -Dt1lib=disabled -Dbrowser_plugin=false"
+hostmakedepends="adwaita-icon-theme gettext gtk-doc glib-devel gnome-doc-utils
  itstool pkg-config perl-XML-Parser appstream-glib"
 # XXX missing packages for DVI backend.
 makedepends="adwaita-icon-theme djvulibre-devel gnome-desktop-devel libSM-devel
@@ -19,7 +19,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Evince"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=65d61a423e3fbbe07001f65e87422dfb7d2e42b9edf0ca6a1d427af9a04b8f32
+checksum=26df897a417545b476d2606b14731122e84278ae994bd64ea535449c3cf01948
 
 build_options="gir"
 build_options_default="gir"

From 891a45af547bec7160a637e73782ebbf35f840fb Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 079/104] file-roller: update to 3.38.0

---
 srcpkgs/file-roller/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/file-roller/template b/srcpkgs/file-roller/template
index 03622a22313..f856c324229 100644
--- a/srcpkgs/file-roller/template
+++ b/srcpkgs/file-roller/template
@@ -1,6 +1,6 @@
 # Template file for 'file-roller'
 pkgname=file-roller
-version=3.36.0
+version=3.38.0
 revision=1
 build_style=meson
 hostmakedepends="gettext glib-devel itstool pkg-config"
@@ -12,6 +12,6 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/FileRoller"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=b9144de8f536f583ec29d703c2c170bf2d00c6c166cd5e3f7efabda551f10478
+checksum=723d1c6e567d35dad5eeeaeb86b8d18705658ee73e0b3b97ea16adc7a4dc331a
 
 CFLAGS="-fcommon"

From a1d9c161c3f338eb82cd8d4f949d3761b6963b2b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 13 Aug 2020 18:48:08 +0200
Subject: [PATCH 080/104] gnome-calendar: update to 3.38.0

---
 srcpkgs/gnome-calendar/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/gnome-calendar/template b/srcpkgs/gnome-calendar/template
index 9c91c8b5f4d..d3c76b97f0d 100644
--- a/srcpkgs/gnome-calendar/template
+++ b/srcpkgs/gnome-calendar/template
@@ -1,6 +1,6 @@
 # Template file for 'gnome-calendar'
 pkgname=gnome-calendar
-version=3.36.2
+version=3.38.0
 revision=1
 build_style=meson
 hostmakedepends="gettext glib-devel pkg-config $(vopt_if gir 'gobject-introspection')"
@@ -13,7 +13,7 @@ license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Calendar"
 changelog="https://gitlab.gnome.org/GNOME/gnome-calendar/raw/master/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=d0b05345c0555a085e6e5426eab49494aba2826c856eb06fd7fdb762ec0c4c1f
+checksum=c3684252a72bb59089d071514458a4aeba417f9551ff5d548e1a5984e47b4733
 
 build_options="gir"
 build_options_default="gir"

From e8c83d7741b5397f65aca616efaa49e6a7c84780 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Fri, 14 Aug 2020 16:51:55 +0200
Subject: [PATCH 081/104] gnome-music: update to 3.38.0

---
 srcpkgs/gnome-music/template | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gnome-music/template b/srcpkgs/gnome-music/template
index 12511736407..85a7561059e 100644
--- a/srcpkgs/gnome-music/template
+++ b/srcpkgs/gnome-music/template
@@ -1,19 +1,20 @@
 # Template file for 'gnome-music'
 pkgname=gnome-music
-version=3.36.1
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
 hostmakedepends="gettext glib-devel itstool pkg-config"
 makedepends="gnome-desktop-devel grilo-devel libmediaart-devel
- python3-gobject-devel python3-dbus tracker-devel gnome-online-accounts-devel
+ python3-gobject-devel python3-dbus tracker3-devel gnome-online-accounts-devel
  libdazzle-devel grilo-plugins python3-cairo-devel"
 depends="desktop-file-utils python3-dbus python3-gobject python3-requests
- tracker tracker-miners gst-plugins-good1 grilo-plugins libdazzle"
+ tracker3 tracker3-miners gst-plugins-good1 grilo-plugins libdazzle
+ libmediaart"
 short_desc="GNOME music playing application"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Music"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=7b80f630d158334935a8760296550cc91b50d604fa68b402fe5165b1531ec332
+checksum=370aa97ee4610d11b4b8f691e5c9ce30fa55665870bf6d5f2319658bdfacd705
 lib32disabled=yes

From b15c26c71b857207f5e3e694e77e1d0fdec20310 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sat, 15 Aug 2020 00:15:50 +0200
Subject: [PATCH 082/104] gedit: update to 3.38.0

---
 common/shlibs          |  2 +-
 srcpkgs/gedit/template | 21 ++++++++++-----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 33d2a35fa04..28c9cd39e2c 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3683,7 +3683,7 @@ libqhttpengine.so.1 qhttpengine-1.0.1_1
 libqmdnsengine.so.0 qmdnsengine-0.1.0_1
 libyang.so.1 libyang-1.0r5_1
 libhtp.so.2 libhtp-0.5.30_1
-libgedit-3.36.so gedit-3.36.1_1
+libgedit-3.38.so gedit-3.37.3_1
 libchewing.so.3 libchewing-0.5.1_1
 libdwarves.so.1 pahole-1.12_1
 libdwarves_emit.so.1 pahole-1.12_1
diff --git a/srcpkgs/gedit/template b/srcpkgs/gedit/template
index 4e273aaf182..dc2de8b4c48 100644
--- a/srcpkgs/gedit/template
+++ b/srcpkgs/gedit/template
@@ -1,14 +1,14 @@
 # Template file for 'gedit'
 pkgname=gedit
-version=3.36.1
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
 pycompile_dirs="usr/lib/gedit/plugins"
-configure_args="-Dplugins=true -Dvapi=$(vopt_if vala true false)
- -Dintrospection=$(vopt_if gir true false)"
+configure_args="-Dplugins=true
+ $(vopt_bool gir vapi) $(vopt_bool gir introspection)"
 hostmakedepends="itstool pkg-config glib-devel gdk-pixbuf perl gettext
- $(vopt_if vala vala)"
+ $(vopt_if gir vala)"
 makedepends="gsettings-desktop-schemas-devel gspell-devel gtksourceview4-devel
  libpeas-devel libsoup-devel tepl-devel $(vopt_if gir 'python3-gobject-devel')"
 depends="desktop-file-utils gsettings-desktop-schemas iso-codes"
@@ -17,23 +17,22 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Gedit"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=6dc38eda227d1c368e039e9bff485d0bee9a49d5f9560c387ee08f5818a4e387
-shlib_provides="libgedit-3.36.so"
+checksum=46cf06806de58f6e5e95e34fd98ad0b2c0c50b3dae6d23ca57d16d5cc41856f8
+shlib_provides="libgedit-3.38.so"
 python_version=3
 
-build_options="gir vala"
-build_options_default="gir vala"
+build_options="gir"
+build_options_default="gir"
 
 gedit-devel_package() {
-	depends="${sourcepkg}>=${version}_${revision} gtksourceview-devel libpeas-devel"
+	depends="${sourcepkg}>=${version}_${revision} gtksourceview4-devel
+	 libpeas-devel tepl-devel"
 	short_desc+=" - development files"
 	pkg_install() {
 		vmove usr/include
 		vmove usr/lib/pkgconfig
 		if [ "$build_option_gir" ]; then
 			vmove usr/share/gedit/gir-1.0
-		fi
-		if [ "$build_option_vala" ]; then
 			vmove usr/share/vala
 		fi
 	}

From 8b33f002a30bd186d3867048a7761ae72a016271 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sat, 15 Aug 2020 00:18:49 +0200
Subject: [PATCH 083/104] gedit-plugins: update to 3.38.0

---
 srcpkgs/gedit-plugins/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gedit-plugins/template b/srcpkgs/gedit-plugins/template
index f2f94e63f59..b7833db12de 100644
--- a/srcpkgs/gedit-plugins/template
+++ b/srcpkgs/gedit-plugins/template
@@ -1,11 +1,11 @@
 # Template file for 'gedit-plugins'
 pkgname=gedit-plugins
-version=3.36.2
+version=3.38.0
 revision=1
 build_style=meson
 pycompile_dirs="usr/lib/gedit/plugins"
-hostmakedepends="gettext glib-devel itstool pkg-config vala appstream-glib python3-gobject
- gucharmap-devel vte3-devel"
+hostmakedepends="gettext glib-devel itstool pkg-config vala appstream-glib
+ python3-gobject gucharmap-devel vte3-devel"
 makedepends="gedit-devel gtksourceview4-devel gtk+3-devel libgit2-glib-devel
  libglib-devel libpeas-devel python-dbus-devel python3-devel zeitgeist-devel"
 depends="python3-gobject gucharmap vte3"
@@ -14,5 +14,5 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/action/show/Apps/Gedit/PluginsLists"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=1151b955393f75b5ee59b51154fda4f1928f498fe986a5584d3cd440876a6af6
+checksum=bda2bd5ad7ebdd535d1cc6c8700c295dec64b227c9173c0d2bae0067516259fb
 python_version=3

From dfc399627b9a0ef37aa51c164cbff0e1350ed0db Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sat, 15 Aug 2020 00:33:49 +0200
Subject: [PATCH 084/104] gnome-latex: update to 3.38.0

---
 srcpkgs/gnome-latex/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-latex/template b/srcpkgs/gnome-latex/template
index 90d60be860a..83a16f9d4a2 100644
--- a/srcpkgs/gnome-latex/template
+++ b/srcpkgs/gnome-latex/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-latex'
 pkgname=gnome-latex
-version=3.32.0
-revision=2
+version=3.38.0
+revision=1
 build_helper="gir"
 build_style=gnu-configure
 configure_args="--disable-appstream-util --disable-dconf-migration
@@ -15,7 +15,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Apps/GNOME-LaTeX"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=0f069c7b4c6754255a1c7e3e3b050925d8076f55458526a30ab59e0a7d52acc9
+checksum=a82a9fc6f056929ea18d6dffd121e71b2c21768808c86ef1f34da0f86e220d77
 
 build_options="gir"
 build_options_default="gir"

From 8e662e741ea950047d6f87cad5a9b0282901721d Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:23:33 +0200
Subject: [PATCH 085/104] baobab: update to 3.38.0

---
 srcpkgs/baobab/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/baobab/template b/srcpkgs/baobab/template
index a028be4cd5b..882155356a4 100644
--- a/srcpkgs/baobab/template
+++ b/srcpkgs/baobab/template
@@ -1,6 +1,6 @@
 # Template file for 'baobab'
 pkgname=baobab
-version=3.34.1
+version=3.38.0
 revision=1
 build_style=meson
 hostmakedepends="gettext pkg-config itstool glib-devel vala"
@@ -11,4 +11,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, GFDL-1.1-or-later"
 homepage="https://wiki.gnome.org/action/show/Apps/DiskUsageAnalyzer"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=7f981d4f135e4f80fba3f66e86b0eeedc94a2434649262ff01a5f0cb027b20c5
+checksum=048468147860816b97f15d50b3c84e9acf0539c1441cfeb63703d112e8728329

From 6f313b9029796154427e11267f2e6c5b04e5c575 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:31:53 +0200
Subject: [PATCH 086/104] gnome-boxes: update to 3.38.0

---
 srcpkgs/gnome-boxes/template | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-boxes/template b/srcpkgs/gnome-boxes/template
index 0fa2ae76c72..e51d2d19a5d 100644
--- a/srcpkgs/gnome-boxes/template
+++ b/srcpkgs/gnome-boxes/template
@@ -1,6 +1,6 @@
 # Template file for 'gnome-boxes'
 pkgname=gnome-boxes
-version=3.36.5
+version=3.38.0
 revision=1
 build_helper="gir"
 build_style=meson
@@ -8,7 +8,8 @@ hostmakedepends="gettext itstool pkg-config vala glib-devel"
 makedepends="clutter-gtk-devel freerdp-devel gtk-vnc-devel libarchive-devel
  libglib-devel libgudev-devel libosinfo-devel libsecret-devel libsoup-devel
  libusb-devel libvirt-glib-devel libxml2-devel spice-gtk-devel spice-protocol
- tracker-devel vala-devel webkit2gtk-devel vte3-devel"
+ tracker-devel vala-devel webkit2gtk-devel vte3-devel gtksourceview4-devel
+ libhandy-devel"
 depends="desktop-file-utils hicolor-icon-theme libosinfo libvirt-glib qemu tracker"
 short_desc="GNOME 3 application to access remote or virtual systems"
 maintainer="Enno Boland <gottox@voidlinux.org>"
@@ -16,4 +17,4 @@ license="LGPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Boxes"
 changelog="https://raw.githubusercontent.com/GNOME/gnome-boxes/gnome-3-36/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=4c54cabe355e878d0457517346e4247a860b6883413d3bf77681dcd11ef41bce
+checksum=696b599fc21af941975679205f2b129cffa03632c444810dd94b1409d041a38b

From c6acc55e754d2aa506819b09fa76fb712b470adb Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:35:24 +0200
Subject: [PATCH 087/104] gnome-calculator: update to 3.38.0

---
 srcpkgs/gnome-calculator/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-calculator/template b/srcpkgs/gnome-calculator/template
index 06214b08d9b..de81e48969e 100644
--- a/srcpkgs/gnome-calculator/template
+++ b/srcpkgs/gnome-calculator/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-calculator'
 pkgname=gnome-calculator
-version=3.36.0
-revision=2
+version=3.38.0
+revision=1
 build_style=meson
 build_helper="gir"
 hostmakedepends="cmake gettext glib-devel itstool pkg-config vala"
@@ -14,4 +14,4 @@ license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Calculator"
 changelog="https://raw.githubusercontent.com/GNOME/gnome-calculator/gnome-3-32/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=a2e830f9c9856fad65dad1d6c0ae6abad0f0b496c9984ac005315c5cc4220db3
+checksum=902e23ff550692b02459e14d6ebba8b670663a9f4af0d98ee52fadea895b57fe

From ee130b2d83c73cd0a3bb6228e943cac48e684734 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:44:58 +0200
Subject: [PATCH 088/104] gnome-disk-utility: update to 3.38.0

---
 srcpkgs/gnome-disk-utility/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-disk-utility/template b/srcpkgs/gnome-disk-utility/template
index dc67bbba785..6ef7be6103e 100644
--- a/srcpkgs/gnome-disk-utility/template
+++ b/srcpkgs/gnome-disk-utility/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-disk-utility'
 pkgname=gnome-disk-utility
-version=3.36.1
-revision=2
+version=3.38.0
+revision=1
 build_style=meson
 configure_args="-Dlogind=none"
 hostmakedepends="glib-devel gtk-doc intltool pkg-config libxslt"
@@ -13,5 +13,5 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Disks"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=791b18f231bcbc6d941af3837ca5be14f2157e5ce3d32bdc5b9eb8947e12b414
+checksum=7734ce668d9ec31286abd7944f95190210288fbc54704f05bc55cbd0340b5223
 lib32disabled=yes

From f5da77d06864488fcb006cc44ce71cb52ed0a72e Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:49:26 +0200
Subject: [PATCH 089/104] gnome-screenshot: update to 3.38.0

---
 srcpkgs/gnome-screenshot/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gnome-screenshot/template b/srcpkgs/gnome-screenshot/template
index 99cab62eee1..a39483bc437 100644
--- a/srcpkgs/gnome-screenshot/template
+++ b/srcpkgs/gnome-screenshot/template
@@ -1,14 +1,14 @@
 # Template file for 'gnome-screenshot'
 pkgname=gnome-screenshot
-version=3.36.0
-revision=2
+version=3.38.0
+revision=1
 build_style=meson
 hostmakedepends="appdata-tools gettext glib-devel itstool pkg-config"
-makedepends="libcanberra-devel"
+makedepends="libcanberra-devel libhandy1-devel"
 depends="desktop-file-utils"
 short_desc="Screenshot capture utility for GNOME"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/gnome-screenshot"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=33495d892707179254b743f8f70c9a82cde5c5f2c7ea3db634a2ba7ea7331266
+checksum=e556d3dd134d91344d2857c066434bfb64f7c85bdec7bc33739366b9bcd29fc0

From c29e6d347d1d7a829249c57f305621219fd30964 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 04:51:00 +0200
Subject: [PATCH 090/104] gnome-system-monitor: update to 3.38.0

---
 srcpkgs/gnome-system-monitor/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/gnome-system-monitor/template b/srcpkgs/gnome-system-monitor/template
index ff11b3590a4..506036687c4 100644
--- a/srcpkgs/gnome-system-monitor/template
+++ b/srcpkgs/gnome-system-monitor/template
@@ -1,6 +1,6 @@
 # Template file for 'gnome-system-monitor'
 pkgname=gnome-system-monitor
-version=3.36.1
+version=3.38.0
 revision=1
 build_style=meson
 configure_args="-Dsystemd=false"
@@ -11,4 +11,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/SystemMonitor"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=866b47ab0f4c75b0ec57d6300337a7373463aaad5df95eddfe5354c22be7bca1
+checksum=73bf7ab4d5503c2567d76f831c9ae3fe27c31495761889ad3b351ef4c068aff4

From fa477af829cd2ce3c6f15bf0e201493b95157709 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 18:24:02 +0200
Subject: [PATCH 091/104] adwaita-icon-theme: update to 3.38.0, drop noarch

---
 srcpkgs/adwaita-icon-theme/template | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/adwaita-icon-theme/template b/srcpkgs/adwaita-icon-theme/template
index febd2915be6..8ddcde9b787 100644
--- a/srcpkgs/adwaita-icon-theme/template
+++ b/srcpkgs/adwaita-icon-theme/template
@@ -1,8 +1,7 @@
 # Template file for 'adwaita-icon-theme'
 pkgname=adwaita-icon-theme
-version=3.36.1
-revision=2
-archs=noarch
+version=3.38.0
+revision=1
 build_style=gnu-configure
 hostmakedepends="pkg-config"
 depends="librsvg"
@@ -11,4 +10,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-3.0-or-later, CC-BY-SA-3.0"
 homepage="https://gitlab.gnome.org/GNOME/adwaita-icon-theme"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=e498518627044dfd7db7d79a5b3d437848caf1991ef4ef036a2d3a2ac2c1f14d
+checksum=6683a1aaf2430ccd9ea638dd4bfe1002bc92b412050c3dba20e480f979faaf97

From e73aab1bd3f42cfaa4d79def0f4e21e4e8e550aa Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 19:57:43 +0200
Subject: [PATCH 092/104] gnome-backgrounds: update to 3.38.0, drop noarch

---
 srcpkgs/gnome-backgrounds/template | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gnome-backgrounds/template b/srcpkgs/gnome-backgrounds/template
index 0b1ee427353..0fac0bb3bee 100644
--- a/srcpkgs/gnome-backgrounds/template
+++ b/srcpkgs/gnome-backgrounds/template
@@ -1,8 +1,7 @@
 # Template file for 'gnome-backgrounds'
 pkgname=gnome-backgrounds
-version=3.36.0
-revision=2
-archs=noarch
+version=3.38.0
+revision=1
 build_style=meson
 hostmakedepends=gettext
 short_desc="Set of background images for the GNOME Desktop"
@@ -10,4 +9,4 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, CC-BY-2.0, CC-BY-SA-2.0, CC-BY-SA-3.0"
 homepage="https://gitlab.gnome.org/GNOME/gnome-backgrounds"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=b8cb81e4cf9d085fbb23540635b492d5c124a1f8611c2aa9ac6384111d77bb0b
+checksum=f7712a873a80c9a9fcf3952611effeb2d9aed23a3e8abfcda8afb15c427d1ee3

From f0382c0b7d969b83072383c676e820e15796a39a Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 21:23:24 +0200
Subject: [PATCH 093/104] simple-scan: update to 3.38.0

---
 srcpkgs/simple-scan/template | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/simple-scan/template b/srcpkgs/simple-scan/template
index 4ae3b8643fd..c617c9f15d3 100644
--- a/srcpkgs/simple-scan/template
+++ b/srcpkgs/simple-scan/template
@@ -1,7 +1,6 @@
 # Template file for 'simple-scan'
 pkgname=simple-scan
-_gnome_version=3.36
-version=3.36.4
+version=3.38.0
 revision=1
 build_style=meson
 hostmakedepends="gettext glib-devel itstool pkg-config vala"
@@ -11,5 +10,5 @@ short_desc="GTK Simple scanning utility"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/simple-scan"
-distfiles="${GNOME_SITE}/${pkgname}/${_gnome_version}/${pkgname}-${version}.tar.xz"
-checksum=56af18291a7763f763da5f0eded247d2f8ebf9112c286ef89013374969fef525
+distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
+checksum=4356affd035f01a57b182199effd9808700efccb498bdc8367bf09bce404c311

From 8b1f175b177af7c8cb98c95f88ef0a8813fa959d Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 21:20:58 +0200
Subject: [PATCH 094/104] rygel: update to 0.40.0

---
 srcpkgs/rygel/template | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/rygel/template b/srcpkgs/rygel/template
index d28dbc2ce08..65149751f5a 100644
--- a/srcpkgs/rygel/template
+++ b/srcpkgs/rygel/template
@@ -1,22 +1,22 @@
 # Template file for 'rygel'
 pkgname=rygel
-version=0.38.3
-revision=2
+version=0.40.0
+revision=1
 build_style=meson
 build_helper="gir"
 configure_args="-Dexamples=false -Dtests=false
  -Dsystemd-user-units-dir=none"
 hostmakedepends="pkg-config glib-devel vala"
 makedepends="sqlite-devel gtk+3-devel libsoup-devel libgee08-devel
- gupnp-av-devel gupnp-dlna-devel tracker-devel libmediaart-devel
- gssdp-devel"
+ gupnp-av-devel gupnp-dlna-devel tracker-devel tracker3-devel
+ libmediaart-devel gssdp-devel gst1-editing-services-devel"
 depends="hicolor-icon-theme desktop-file-utils"
 short_desc="GNOME home media solution"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/Rygel"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=08c21a577f7bdad26446a75ffa32778b26842c3b1188165f0b19818559747d00
+checksum=d67ecc834ed060337e8fab8cb55a4f3d0c0cce4457e0cd307903a2539f6e2b77
 
 conf_files="/etc/rygel.conf"
 

From 73c337e821d16c0bf1b1be53d4cb86f23f491460 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 05:23:38 +0200
Subject: [PATCH 095/104] gnome-builder: update to 3.38.0

---
 .../gnome-builder/patches/libgit2-1.0.0.patch |  22 --
 srcpkgs/gnome-builder/patches/meson052.patch  | 334 ------------------
 srcpkgs/gnome-builder/template                |  15 +-
 3 files changed, 10 insertions(+), 361 deletions(-)
 delete mode 100644 srcpkgs/gnome-builder/patches/libgit2-1.0.0.patch
 delete mode 100644 srcpkgs/gnome-builder/patches/meson052.patch

diff --git a/srcpkgs/gnome-builder/patches/libgit2-1.0.0.patch b/srcpkgs/gnome-builder/patches/libgit2-1.0.0.patch
deleted file mode 100644
index 7b9b4a2bf1a..00000000000
--- a/srcpkgs/gnome-builder/patches/libgit2-1.0.0.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 44136a2e5c52623b0e62c38846f511f307615ce2
-Author: q66 <daniel@octaforge.org>
-Date:   Sun May 3 19:52:09 2020 +0200
-
-    fix build with libgit2-1.0.0
-
-diff --git a/src/plugins/git/daemon/ipc-git-repository-impl.c b/src/plugins/git/daemon/ipc-git-repository-impl.c
-index 7f01042..2ccc4df 100644
---- a/src/plugins/git/daemon/ipc-git-repository-impl.c
-+++ b/src/plugins/git/daemon/ipc-git-repository-impl.c
-@@ -33,11 +33,7 @@
- #include "ipc-git-types.h"
- #include "ipc-git-util.h"
- 
--#if LIBGIT2_SOVERSION >= 28
- G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (git_buf, git_buf_dispose)
--#else
--G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (git_buf, git_buf_free)
--#endif
- 
- typedef enum
- {
diff --git a/srcpkgs/gnome-builder/patches/meson052.patch b/srcpkgs/gnome-builder/patches/meson052.patch
deleted file mode 100644
index 68c28e82c1e..00000000000
--- a/srcpkgs/gnome-builder/patches/meson052.patch
+++ /dev/null
@@ -1,334 +0,0 @@
-From c8b862b491cfbbb4f79b24d7cd90e4fb1f37cb9f Mon Sep 17 00:00:00 2001
-From: Diego Escalante Urrelo <diegoe@gnome.org>
-Date: Fri, 25 Oct 2019 04:49:15 -0500
-Subject: [PATCH] WIP: build: Fix link_whole usage for meson 0.52.0
-
-Meson 0.52.0 changed how link_whole behaves and in doing so broke our
-usage of link_whole internally.
-
-A quick glance over mesonbuild/backend/ninjabackend.py seems to confirm
-Christian's suspicion that link_with is what we want for internal use,
-and link_whole for the final binary.
-
-You can see some more references to this and similar issues in the
-following jhbuild commit:
-https://gitlab.gnome.org/GNOME/jhbuild/commit/dbe679045ff5982577f22e7af8dc8fdfbd1c6311
-
-Fixes: https://gitlab.gnome.org/GNOME/gnome-builder/issues/1057
----
- src/libide/code/meson.build       |  2 +-
- src/libide/core/meson.build       |  2 +-
- src/libide/debugger/meson.build   |  2 +-
- src/libide/editor/meson.build     |  2 +-
- src/libide/foundry/meson.build    |  2 +-
- src/libide/greeter/meson.build    |  2 +-
- src/libide/gui/meson.build        |  2 +-
- src/libide/io/meson.build         |  2 +-
- src/libide/lsp/meson.build        |  2 +-
- src/libide/plugins/meson.build    |  2 +-
- src/libide/projects/meson.build   |  2 +-
- src/libide/search/meson.build     |  2 +-
- src/libide/sourceview/meson.build |  2 +-
- src/libide/terminal/meson.build   |  2 +-
- src/libide/themes/meson.build     |  2 +-
- src/libide/threading/meson.build  |  2 +-
- src/libide/tree/meson.build       |  2 +-
- src/libide/vcs/meson.build        |  2 +-
- src/libide/webkit/meson.build     |  2 +-
- src/meson.build                   | 26 +++++++++++++++++++++++++-
- 20 files changed, 44 insertions(+), 20 deletions(-)
-
-diff --git a/src/libide/code/meson.build b/src/libide/code/meson.build
-index ddacdc162..1a4fc5d26 100644
---- a/src/libide/code/meson.build
-+++ b/src/libide/code/meson.build
-@@ -175,7 +175,7 @@ libide_code = static_library('ide-code-' + libide_api_version,
- libide_code_dep = declare_dependency(
-               sources: libide_code_private_headers + libide_code_generated_headers,
-          dependencies: libide_code_deps,
--           link_whole: libide_code,
-+            link_with: libide_code,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/core/meson.build b/src/libide/core/meson.build
-index 1fa82fad9..bb75cbf26 100644
---- a/src/libide/core/meson.build
-+++ b/src/libide/core/meson.build
-@@ -117,7 +117,7 @@ libide_core = static_library('ide-core-' + libide_api_version, libide_core_sourc
- libide_core_dep = declare_dependency(
-               sources: libide_core_private_headers + libide_core_generated_headers,
-          dependencies: libide_core_deps,
--           link_whole: libide_core,
-+            link_with: libide_core,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/debugger/meson.build b/src/libide/debugger/meson.build
-index dffca20ca..b5e72d5c0 100644
---- a/src/libide/debugger/meson.build
-+++ b/src/libide/debugger/meson.build
-@@ -84,7 +84,7 @@ libide_debugger = static_library('ide-debugger-' + libide_api_version,
- libide_debugger_dep = declare_dependency(
-               sources: libide_debugger_private_headers + libide_debugger_generated_headers,
-          dependencies: libide_debugger_deps,
--           link_whole: libide_debugger,
-+            link_with: libide_debugger,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/editor/meson.build b/src/libide/editor/meson.build
-index 2838425b7..808ed784f 100644
---- a/src/libide/editor/meson.build
-+++ b/src/libide/editor/meson.build
-@@ -107,7 +107,7 @@ libide_editor = static_library('ide-editor-' + libide_api_version, libide_editor
- 
- libide_editor_dep = declare_dependency(
-          dependencies: libide_editor_deps,
--           link_whole: libide_editor,
-+            link_with: libide_editor,
-   include_directories: include_directories('.'),
-               sources: libide_editor_generated_headers,
- )
-diff --git a/src/libide/foundry/meson.build b/src/libide/foundry/meson.build
-index 226397c15..d4878aa11 100644
---- a/src/libide/foundry/meson.build
-+++ b/src/libide/foundry/meson.build
-@@ -178,7 +178,7 @@ libide_foundry = static_library('ide-foundry-' + libide_api_version,
- 
- libide_foundry_dep = declare_dependency(
-          dependencies: libide_foundry_deps,
--           link_whole: libide_foundry,
-+            link_with: libide_foundry,
-   include_directories: include_directories('.'),
-               sources: libide_foundry_generated_headers,
- )
-diff --git a/src/libide/greeter/meson.build b/src/libide/greeter/meson.build
-index 3968ca41e..121d498d0 100644
---- a/src/libide/greeter/meson.build
-+++ b/src/libide/greeter/meson.build
-@@ -83,7 +83,7 @@ libide_greeter = static_library('ide-greeter-' + libide_api_version,
- libide_greeter_dep = declare_dependency(
-               sources: libide_greeter_private_headers + libide_greeter_generated_headers,
-          dependencies: libide_greeter_deps,
--           link_whole: libide_greeter,
-+            link_with: libide_greeter,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/gui/meson.build b/src/libide/gui/meson.build
-index 9f469d2fa..94311282f 100644
---- a/src/libide/gui/meson.build
-+++ b/src/libide/gui/meson.build
-@@ -204,7 +204,7 @@ libide_gui = static_library('ide-gui-' + libide_api_version, libide_gui_sources,
- libide_gui_dep = declare_dependency(
-               sources: libide_gui_private_headers + libide_gui_generated_headers,
-          dependencies: libide_gui_deps,
--           link_whole: libide_gui,
-+            link_with: libide_gui,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/io/meson.build b/src/libide/io/meson.build
-index b5b6f4c68..f48b3bd8d 100644
---- a/src/libide/io/meson.build
-+++ b/src/libide/io/meson.build
-@@ -63,7 +63,7 @@ libide_io = static_library('ide-io-' + libide_api_version, libide_io_sources,
- 
- libide_io_dep = declare_dependency(
-          dependencies: [ libgio_dep, libide_core_dep, libide_threading_dep ],
--           link_whole: libide_io,
-+            link_with: libide_io,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/lsp/meson.build b/src/libide/lsp/meson.build
-index 23aba74fa..c8140ca03 100644
---- a/src/libide/lsp/meson.build
-+++ b/src/libide/lsp/meson.build
-@@ -84,7 +84,7 @@ libide_lsp = static_library('ide-lsp-' + libide_api_version, libide_lsp_sources,
- libide_lsp_dep = declare_dependency(
-               sources: libide_lsp_private_headers,
-          dependencies: libide_lsp_deps,
--           link_whole: libide_lsp,
-+            link_with: libide_lsp,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/plugins/meson.build b/src/libide/plugins/meson.build
-index a33c528c9..fff599db3 100644
---- a/src/libide/plugins/meson.build
-+++ b/src/libide/plugins/meson.build
-@@ -51,7 +51,7 @@ libide_plugins = static_library('ide-plugins-' + libide_api_version,
- libide_plugins_dep = declare_dependency(
-               sources: libide_plugins_private_headers,
-          dependencies: libide_plugins_deps,
--           link_whole: libide_plugins,
-+            link_with: libide_plugins,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/projects/meson.build b/src/libide/projects/meson.build
-index 463ff06bc..3cc9725c6 100644
---- a/src/libide/projects/meson.build
-+++ b/src/libide/projects/meson.build
-@@ -79,7 +79,7 @@ libide_projects = static_library('ide-projects-' + libide_api_version, libide_pr
- libide_projects_dep = declare_dependency(
-               sources: libide_projects_private_headers,
-          dependencies: libide_projects_deps,
--           link_whole: libide_projects,
-+            link_with: libide_projects,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/search/meson.build b/src/libide/search/meson.build
-index e5b3b43ab..cf73aa91d 100644
---- a/src/libide/search/meson.build
-+++ b/src/libide/search/meson.build
-@@ -51,7 +51,7 @@ libide_search = static_library('ide-search-' + libide_api_version, libide_search
- 
- libide_search_dep = declare_dependency(
-          dependencies: libide_search_deps,
--           link_whole: libide_search,
-+            link_with: libide_search,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/sourceview/meson.build b/src/libide/sourceview/meson.build
-index c4ba12d1f..99641298b 100644
---- a/src/libide/sourceview/meson.build
-+++ b/src/libide/sourceview/meson.build
-@@ -158,7 +158,7 @@ libide_sourceview = static_library('ide-sourceview-' + libide_api_version,
- libide_sourceview_dep = declare_dependency(
-               sources: libide_sourceview_private_headers + libide_sourceview_generated_headers,
-          dependencies: libide_sourceview_deps,
--           link_whole: libide_sourceview,
-+            link_with: libide_sourceview,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/terminal/meson.build b/src/libide/terminal/meson.build
-index 1d7c9f727..6affcae14 100644
---- a/src/libide/terminal/meson.build
-+++ b/src/libide/terminal/meson.build
-@@ -93,7 +93,7 @@ libide_terminal = static_library('ide-terminal-' + libide_api_version,
- libide_terminal_dep = declare_dependency(
-               sources: libide_terminal_generated_headers,
-          dependencies: libide_terminal_deps,
--           link_whole: libide_terminal,
-+            link_with: libide_terminal,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/themes/meson.build b/src/libide/themes/meson.build
-index 9d6c8e247..d883a4b86 100644
---- a/src/libide/themes/meson.build
-+++ b/src/libide/themes/meson.build
-@@ -46,7 +46,7 @@ libide_themes = static_library('ide-themes-' + libide_api_version,
- libide_themes_dep = declare_dependency(
-               sources: libide_themes_resources[1],
-          dependencies: libide_themes_deps,
--           link_whole: libide_themes,
-+            link_with: libide_themes,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/threading/meson.build b/src/libide/threading/meson.build
-index d38ddfb64..d628be2ff 100644
---- a/src/libide/threading/meson.build
-+++ b/src/libide/threading/meson.build
-@@ -66,7 +66,7 @@ libide_threading = static_library('ide-threading-' + libide_api_version, libide_
- libide_threading_dep = declare_dependency(
-               sources: libide_threading_private_headers,
-          dependencies: libide_threading_deps,
--           link_whole: libide_threading,
-+            link_with: libide_threading,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/tree/meson.build b/src/libide/tree/meson.build
-index 7b9922828..5a591106c 100644
---- a/src/libide/tree/meson.build
-+++ b/src/libide/tree/meson.build
-@@ -61,7 +61,7 @@ libide_tree = static_library('ide-tree-' + libide_api_version, libide_tree_sourc
- libide_tree_dep = declare_dependency(
-               sources: libide_tree_private_headers,
-          dependencies: libide_tree_deps,
--           link_whole: libide_tree,
-+            link_with: libide_tree,
-   include_directories: include_directories('.'),
- )
- 
-diff --git a/src/libide/vcs/meson.build b/src/libide/vcs/meson.build
-index 6b0e157c4..c762afb64 100644
---- a/src/libide/vcs/meson.build
-+++ b/src/libide/vcs/meson.build
-@@ -84,7 +84,7 @@ libide_vcs = static_library('ide-vcs-' + libide_api_version,
- 
- libide_vcs_dep = declare_dependency(
-          dependencies: libide_vcs_deps,
--           link_whole: libide_vcs,
-+            link_with: libide_vcs,
-   include_directories: include_directories('.'),
-               sources: libide_vcs_generated_headers,
- )
-diff --git a/src/libide/webkit/meson.build b/src/libide/webkit/meson.build
-index e1767ae46..fce477b36 100644
---- a/src/libide/webkit/meson.build
-+++ b/src/libide/webkit/meson.build
-@@ -39,7 +39,7 @@ libide_webkit = static_library('ide-webkit-' + libide_api_version, libide_webkit
- 
- libide_webkit_dep = declare_dependency(
-          dependencies: libide_webkit_deps,
--           link_whole: libide_webkit,
-+            link_with: libide_webkit,
-   include_directories: include_directories('.'),
-               sources: libide_webkit_generated_headers,
- )
-diff --git a/src/meson.build b/src/meson.build
-index 3eb9ba535..113a142ad 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -48,6 +48,30 @@ gnome_builder_deps = [
-   libide_tree_dep,
- ]
- 
-+gnome_builder_static = [
-+  libide_code,
-+  libide_core,
-+  libide_debugger,
-+  libide_editor,
-+  libide_foundry,
-+  libide_greeter,
-+  libide_gui,
-+  libide_io,
-+  libide_lsp,
-+  libide_plugins,
-+  libide_projects,
-+  libide_search,
-+  libide_sourceview,
-+  libide_terminal,
-+  libide_themes,
-+  libide_threading,
-+  libide_tree,
-+  libide_vcs,
-+  libide_webkit,
-+
-+  plugins,
-+]
-+
- if libsysprof_capture.found()
-   gnome_builder_deps += libsysprof_capture
- endif
-@@ -77,7 +101,7 @@ gnome_builder = executable('gnome-builder', 'main.c', 'bug-buddy.c',
-             c_args: libide_args + exe_c_args + release_args,
-          link_args: exe_link_args,
-                pie: true,
--        link_whole: plugins,
-+        link_whole: gnome_builder_static,
-      install_rpath: pkglibdir_abs,
-       dependencies: gnome_builder_deps,
- )
--- 
-2.24.1
-
diff --git a/srcpkgs/gnome-builder/template b/srcpkgs/gnome-builder/template
index 8c8c015d8a3..ad2d4b6d03a 100644
--- a/srcpkgs/gnome-builder/template
+++ b/srcpkgs/gnome-builder/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-builder'
 pkgname=gnome-builder
-version=3.34.1
-revision=6
+version=3.38.0
+revision=1
 build_style=meson
 build_helper=qemu
 configure_args="-Dwith_webkit=true -Dwith_sysprof=true -Dhelp=true"
@@ -11,15 +11,15 @@ makedepends="cairo-devel clang devhelp-devel enchant2-devel flatpak-devel
  gspell-devel gtksourceview4-devel gtk+3-devel json-glib-devel jsonrpc-glib-devel
  libdazzle-devel libgit2-glib-devel libglib-devel libostree-devel libpeas-devel
  libxml2-devel template-glib-devel vala-devel vte3-devel webkit2gtk-devel
- python3-gobject-devel sysprof-devel glade3-devel"
+ python3-gobject-devel sysprof-devel glade3-devel libportal-devel"
 depends="desktop-file-utils flatpak-builder python3-lxml devhelp python3-gobject"
 short_desc="IDE for GNOME"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Builder"
-changelog="https://gitlab.gnome.org/GNOME/gnome-builder/raw/gnome-builder-3-34/NEWS"
+changelog="https://gitlab.gnome.org/GNOME/gnome-builder/raw/gnome-builder-3-36/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=0b6e461057ea8151e80524c0ea7ef1cb948e92afda9dc6bd33ae3392f04501a4
+checksum=d689538baf8efb1acf7ea607268b1aaa1418d5517d92d4f6946a3dbf814eae55
 patch_args="-Np1"
 
 case "$XBPS_TARGET_MACHINE" in
@@ -28,3 +28,8 @@ case "$XBPS_TARGET_MACHINE" in
 		LIBS+=" -lexecinfo"
 		;;
 esac
+
+pre_configure() {
+	# this test needs X
+	vsed -i "s/test('test-text-iter'/#&/" src/tests/meson.build
+}

From 1ab0f7b79abaea4257cc22ec5fddd0eb6daffceb Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:21:53 +0200
Subject: [PATCH 096/104] retro-gtk: update to 1.0.0

---
 common/shlibs              |  2 +-
 srcpkgs/retro-gtk/template | 12 +++++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 28c9cd39e2c..8dee21c9db3 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3574,7 +3574,7 @@ libwlroots.so.6 wlroots-0.11.0_1
 libbaseencode.so.1 libbaseencode-1.0.9_1
 libcotp.so.12 libcotp-1.2.1_1
 libunarr.so.1 libunarr-1.0.1_1
-libretro-gtk-0.14.so.0 retro-gtk-0.16.0_1
+libretro-gtk-1.so.0 retro-gtk-1.0.0_1
 libmanette-0.2.so.0 libmanette-0.2.1_1
 libfmt.so.6 fmt-5.2.1_1
 libelementary-calendar.so.0 libio.elementary.calendar-4.2.3_1
diff --git a/srcpkgs/retro-gtk/template b/srcpkgs/retro-gtk/template
index da0aeccd243..04ad9cf051b 100644
--- a/srcpkgs/retro-gtk/template
+++ b/srcpkgs/retro-gtk/template
@@ -1,22 +1,28 @@
 # Template file for 'retro-gtk'
 pkgname=retro-gtk
-version=0.18.0
+version=1.0.0
 revision=1
 build_style=meson
 build_helper="gir"
 configure_args="$(vopt_bool gir introspection)"
 hostmakedepends="glib-devel pkg-config vala"
-makedepends="gtk+3-devel libepoxy-devel libglib-devel pulseaudio-devel"
+makedepends="gtk+3-devel libepoxy-devel libglib-devel pulseaudio-devel
+ libsamplerate-devel"
 short_desc="GTK+ Libretro frontend framework"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/retro-gtk"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=cedb881174c42e88954eecb5dfac78954a1981aaeebdc8918c8861c6c08a4512
+checksum=5c7437a768125a6f627d063ed890e9328d4108db52a6d5aa10e52d2f25bb88db
 
 build_options="gir"
 build_options_default="gir"
 
+# needs X
+do_check() {
+	:
+}
+
 retro-gtk-devel_package() {
 	depends="libglib-devel ${sourcepkg}>=${version}_${revision}"
 	short_desc+=" - development files"

From 52340655e28300ea2ac8710d87fed98d3430c3c1 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 01:26:01 +0200
Subject: [PATCH 097/104] gnome-games: update to 3.38.0

---
 srcpkgs/gnome-games/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/gnome-games/template b/srcpkgs/gnome-games/template
index 2731df0f6d9..58f31156d06 100644
--- a/srcpkgs/gnome-games/template
+++ b/srcpkgs/gnome-games/template
@@ -1,15 +1,15 @@
 # Template file for 'gnome-games'
 pkgname=gnome-games
-version=3.34.0
+version=3.38.0
 revision=1
 build_style=meson
 hostmakedepends="gettext glib-devel pkg-config vala-devel"
 makedepends="libarchive-devel grilo-devel gtk+3-devel libglib-devel
  libmanette-devel librsvg-devel libsoup-devel libxml2-devel retro-gtk-devel
- sqlite-devel tracker-devel libhandy-devel"
+ sqlite-devel tracker-devel libhandy1-devel"
 short_desc="Browse and play your games"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Games"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=0fd7246d61ce21c0fc121c5488051a5866c19de2c2835ad7fe4b18c06627dcba
+checksum=5c868fd6eb0b8d23b995039633043e90d8d93856d315832de3a315d7b1e54e48

From 398879c68b8552dfd1f97f09891a00b21611d570 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Fri, 14 Aug 2020 23:22:34 +0200
Subject: [PATCH 098/104] gnome-panel: update to 3.37.1

---
 common/shlibs                | 2 +-
 srcpkgs/gnome-panel/template | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 8dee21c9db3..0618868508a 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -564,7 +564,7 @@ libpackagekit-glib2.so.18 PackageKit-1.1.12_1
 libpsl.so.5 libpsl-0.20.2_1
 libsoup-2.4.so.1 libsoup-2.34.0_1
 libsoup-gnome-2.4.so.1 libsoup-gnome-2.34.0_1
-libpanel-applet.so.3 gnome-panel-3.30.0_1
+libgnome-panel.so.0 gnome-panel-3.37.1_1
 libuninum.so.5 libuninum-2.7_1
 libunique-3.0.so.0 libunique-2.91.4_1
 libwebkit2gtk-4.0.so.37 webkit2gtk-2.6.2_1
diff --git a/srcpkgs/gnome-panel/template b/srcpkgs/gnome-panel/template
index 70f23b8b551..24d9d2b9eb5 100644
--- a/srcpkgs/gnome-panel/template
+++ b/srcpkgs/gnome-panel/template
@@ -1,7 +1,7 @@
 # Template file for 'gnome-panel'
 pkgname=gnome-panel
-version=3.34.1
-revision=3
+version=3.37.1
+revision=1
 build_style=gnu-configure
 configure_args="ax_cv_zoneinfo_tzdir=/usr/share/zoneinfo"
 hostmakedepends="gettext-devel glib-devel itstool pkg-config tzdata gettext"
@@ -14,7 +14,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, GFDL-1.1-or-later, LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/GnomePanel"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=a6bc0255252eeb4b964bcbe55fd7908b69f914c062c5ec8dff5ac0262d29b90d
+checksum=1d598fd68933e76018f2fb116a7871cbc0033c1f109bfbfe08a1ecb56067d152
 patch_args="-Np1"
 
 gnome-panel-devel_package() {

From b1f35f09d43d2719cf077420a907c43b06eba8ec Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Fri, 14 Aug 2020 23:24:51 +0200
Subject: [PATCH 099/104] metacity: update to 3.37.1

---
 srcpkgs/metacity/template | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/srcpkgs/metacity/template b/srcpkgs/metacity/template
index 5aa231492e7..4309776bd54 100644
--- a/srcpkgs/metacity/template
+++ b/srcpkgs/metacity/template
@@ -1,18 +1,17 @@
 # Template file for 'metacity'
 pkgname=metacity
-reverts="3.37.1_1"
-version=3.34.1
+version=3.37.1
 revision=1
 build_style=gnu-configure
 hostmakedepends="gettext gettext-devel glib-devel itstool pkg-config yelp-tools zenity"
 makedepends="gsettings-desktop-schemas-devel gtk+3-devel libcanberra-devel
  libglib-devel libgtop-devel libSM-devel libXcomposite-devel libXdamage-devel
- libXfixes-devel libXinerama-devel libXrender-devel libX11-devel pango-devel
- startup-notification-devel Vulkan-Headers vulkan-loader"
+ libXfixes-devel libXinerama-devel libXrender-devel libX11-devel libXres-devel
+ pango-devel startup-notification-devel Vulkan-Headers vulkan-loader"
 depends="zenity"
 short_desc="Window Manager for the GNOME environment"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://gitlab.gnome.org/GNOME/metacity"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=31c7d1045c390afb3bf405735b0b26c459197cbf43af37c469eb8918ce3a453d
+checksum=80d6f3d95a4328fb26d0a6471f575b742b36b8f2721f8f3c1807197fa900a126

From b0f8dccfdd8bc2ab592aaad923a79140876a73a9 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Fri, 14 Aug 2020 23:40:34 +0200
Subject: [PATCH 100/104] gnome-flashback: update to 3.37.2

Added PAM config as suggested by mnabid.
---
 .../gnome-flashback/files/gnome-flashback.pam |  6 ++++
 srcpkgs/gnome-flashback/template              | 34 ++++++++++++++-----
 2 files changed, 31 insertions(+), 9 deletions(-)
 create mode 100644 srcpkgs/gnome-flashback/files/gnome-flashback.pam

diff --git a/srcpkgs/gnome-flashback/files/gnome-flashback.pam b/srcpkgs/gnome-flashback/files/gnome-flashback.pam
new file mode 100644
index 00000000000..f776f0b3632
--- /dev/null
+++ b/srcpkgs/gnome-flashback/files/gnome-flashback.pam
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth     include  system-auth
+auth     optional pam_gnome_keyring.so
+account  include  system-auth
+password include  system-auth
+session  include  system-auth
diff --git a/srcpkgs/gnome-flashback/template b/srcpkgs/gnome-flashback/template
index d32120cab6f..68a1a674acf 100644
--- a/srcpkgs/gnome-flashback/template
+++ b/srcpkgs/gnome-flashback/template
@@ -1,20 +1,36 @@
 # Template file for 'gnome-flashback'
 pkgname=gnome-flashback
-version=3.34.2
+version=3.37.2
 revision=1
 build_helper=gir
 build_style=gnu-configure
-configure_args="--enable-compile-warnings=minimum"
-hostmakedepends="pkg-config automake glib-devel gettext"
-makedepends="gtk+3-devel gsettings-desktop-schemas-devel
- libglib-devel gdk-pixbuf-devel upower-devel ibus-devel polkit-devel
- pulseaudio-devel libcanberra-devel libxcb-devel libX11-devel pango-devel
- libxkbfile-devel gnome-bluetooth-devel gnome-desktop-devel"
+configure_args="--with-compiz-session --enable-compile-warnings=minimum"
+hostmakedepends="pkg-config gettext gettext-devel automake libtool glib-devel"
+makedepends="pam-devel elogind-devel upower-devel ibus-devel polkit-devel
+ pulseaudio-devel libcanberra-devel libxcb-devel libX11-devel libxkbfile-devel
+ libcompizconfig-devel libglib-devel pango-devel gtk+3-devel gdk-pixbuf-devel
+ gdm-devel gnome-bluetooth-devel gnome-desktop-devel gnome-panel-devel
+ gsettings-desktop-schemas-devel"
 depends="gnome-bluetooth gnome-session gnome-settings-daemon
- gnome-panel gnome-themes-standard metacity"
+ gnome-panel gnome-themes-extra metacity"
 short_desc="GNOME 3 session with similar user experience to the GNOME 2.x series"
 maintainer="shizonic <realtiaz@gmail.com>"
 license="GPL-3.0-or-later"
 homepage="https://wiki.gnome.org/Projects/GnomeFlashback"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=3be65388cd2c8f39741bcc05da87ef40035183a9a39502d67696242c2aeb469c
+checksum=ab0de00b0f6c9bf30c19651564bd9a74bbdfb7d76dd2119b2631a3671f8be653
+
+post_extract() {
+	vsed -i 's/libcompizconfig >= 0\.9\.14\.0/libcompizconfig >= 0.8.16.0/' \
+		configure.ac
+}
+
+pre_configure() {
+	autoreconf -if
+}
+
+post_install() {
+	vinstall ${FILESDIR}/gnome-flashback.pam 644 /etc/pam.d gnome-flashback
+	vsed -i -e "s/ --systemd//g" \
+		${DESTDIR}/usr/libexec/gnome-flashback-{compiz,metacity}
+}

From 02bc647c99e0943352b300fe55e0387ec0b1fe5b Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 16 Aug 2020 21:05:11 +0200
Subject: [PATCH 101/104] polari: update to 3.37.3

---
 srcpkgs/polari/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/polari/template b/srcpkgs/polari/template
index 0767bac97b8..41d08ee81b5 100644
--- a/srcpkgs/polari/template
+++ b/srcpkgs/polari/template
@@ -1,6 +1,6 @@
 # Template file for 'polari'
 pkgname=polari
-version=3.36.3
+version=3.37.3
 revision=1
 build_style=meson
 hostmakedepends="pkg-config itstool gobject-introspection gettext"
@@ -13,7 +13,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="GPL-2.0-or-later"
 homepage="https://wiki.gnome.org/Apps/Polari"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=4f26647e981c5d0bf42df582adac20bbfdacdfe8c4fe150af0ca03d2e0cef53a
+checksum=7905b9ddb3f811dcc23b307501187ead4ddc78ed0a6529afcddcb9443ba12908
 
 if [ "$CROSS_BUILD" ] ; then
 	hostmakedepends+=" glib-devel prelink-cross qemu-user-static"

From 5c99e3cdb847a567ec7d62d75fc01d828e80b812 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Tue, 18 Aug 2020 05:35:06 +0200
Subject: [PATCH 102/104] budgie-desktop: rebuild for mutter-7

[ci skip]
---
 .../budgie-desktop/patches/appsys-build.patch |    11 +
 .../budgie-desktop/patches/gnome-338.patch    | 13472 ++++++++++++++++
 srcpkgs/budgie-desktop/template               |     2 +-
 3 files changed, 13484 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/budgie-desktop/patches/appsys-build.patch
 create mode 100644 srcpkgs/budgie-desktop/patches/gnome-338.patch

diff --git a/srcpkgs/budgie-desktop/patches/appsys-build.patch b/srcpkgs/budgie-desktop/patches/appsys-build.patch
new file mode 100644
index 00000000000..b6625f046de
--- /dev/null
+++ b/srcpkgs/budgie-desktop/patches/appsys-build.patch
@@ -0,0 +1,11 @@
+--- src/appsys/AppSystem.vala
++++ src/appsys/AppSystem.vala
+@@ -70,7 +70,7 @@ public class AppSystem : GLib.Object
+     }
+ 
+     private void signal_received(GLib.DBusConnection connection,
+-                                 string sender,
++                                 string? sender,
+                                  string object_path,
+                                  string interface_name,
+                                  string signal_name,
diff --git a/srcpkgs/budgie-desktop/patches/gnome-338.patch b/srcpkgs/budgie-desktop/patches/gnome-338.patch
new file mode 100644
index 00000000000..92fa76a17b0
--- /dev/null
+++ b/srcpkgs/budgie-desktop/patches/gnome-338.patch
@@ -0,0 +1,13472 @@
+From 30ba0b5a4986d6be3687a1d7fb482906185ea8c9 Mon Sep 17 00:00:00 2001
+From: David Mohammed <fossfreedom@users.noreply.github.com>
+Date: Tue, 18 Feb 2020 06:40:12 +0000
+Subject: [PATCH] gnome 3.38 compatibility
+
+Squashed by @q66 from:
+
+https://github.com/solus-project/budgie-desktop/pull/1987
+
+plus an assortment of older mutter updates from git master
+---
+ meson.build                                   |   16 +-
+ meson_options.txt                             |    1 -
+ src/applets/status/StatusApplet.vala          |    6 -
+ src/applets/status/meson.build                |   13 +-
+ src/wm/background.vala                        |   15 +-
+ src/wm/meson.build                            |   30 +-
+ src/wm/shim.vala                              |   10 +-
+ src/wm/wm.vala                                |   10 +-
+ ...{Clutter-5.metadata => Clutter-6.metadata} |    0
+ ...{Clutter-4.metadata => Clutter-7.metadata} |   43 -
+ vapi/{Cogl-4.metadata => Cogl-6.metadata}     |    0
+ vapi/{Cogl-5.metadata => Cogl-7.metadata}     |    2 -
+ vapi/Meta-3.metadata                          |   66 -
+ vapi/{Meta-5.metadata => Meta-6.metadata}     |    0
+ vapi/{Meta-4.metadata => Meta-7.metadata}     |   25 +-
+ vapi/generate-mutter-vapi.sh                  |    2 +-
+ vapi/graphene-gobject-1.0.vapi                |  691 +++++++
+ vapi/libmutter-2.deps                         |    9 -
+ vapi/libmutter-2.vapi                         | 1325 --------------
+ vapi/libmutter-3-custom.vala                  |    6 -
+ vapi/libmutter-3.deps                         |    9 -
+ vapi/libmutter-4.deps                         |    8 -
+ vapi/libmutter-4.vapi                         | 1425 ---------------
+ vapi/{libmutter-5.deps => libmutter-6.deps}   |    3 +-
+ vapi/{libmutter-5.vapi => libmutter-6.vapi}   |   45 +-
+ vapi/libmutter-7-custom.vala                  |    7 +
+ vapi/libmutter-7.deps                         |    6 +
+ vapi/{libmutter-3.vapi => libmutter-7.vapi}   |  390 ++--
+ vapi/libmutter-cogl-4.vapi                    | 1272 -------------
+ vapi/mutter-clutter-5-custom.vala             |  158 --
+ ...stom.vala => mutter-clutter-6-custom.vala} |   11 -
+ ...r-clutter-5.deps => mutter-clutter-6.deps} |    2 +-
+ ...r-clutter-5.vapi => mutter-clutter-6.vapi} |  806 ++------
+ ...r-clutter-4.deps => mutter-clutter-7.deps} |    3 +-
+ ...r-clutter-4.vapi => mutter-clutter-7.vapi} | 1615 ++++-------------
+ ...-custom.vala => mutter-cogl-6-custom.vala} |    0
+ ...{mutter-cogl-4.deps => mutter-cogl-6.deps} |    0
+ ...{mutter-cogl-5.vapi => mutter-cogl-6.vapi} |  422 +----
+ ...-custom.vala => mutter-cogl-7-custom.vala} |   20 +-
+ ...{mutter-cogl-5.deps => mutter-cogl-7.deps} |    0
+ ...{mutter-cogl-4.vapi => mutter-cogl-7.vapi} |  671 +++----
+ vapi/polkit-gobject-1.vapi                    |   31 +-
+ 42 files changed, 1920 insertions(+), 7254 deletions(-)
+ rename vapi/{Clutter-5.metadata => Clutter-6.metadata} (100%)
+ rename vapi/{Clutter-4.metadata => Clutter-7.metadata} (78%)
+ rename vapi/{Cogl-4.metadata => Cogl-6.metadata} (100%)
+ rename vapi/{Cogl-5.metadata => Cogl-7.metadata} (91%)
+ delete mode 100644 vapi/Meta-3.metadata
+ rename vapi/{Meta-5.metadata => Meta-6.metadata} (100%)
+ rename vapi/{Meta-4.metadata => Meta-7.metadata} (76%)
+ create mode 100644 vapi/graphene-gobject-1.0.vapi
+ delete mode 100644 vapi/libmutter-2.deps
+ delete mode 100644 vapi/libmutter-2.vapi
+ delete mode 100644 vapi/libmutter-3-custom.vala
+ delete mode 100644 vapi/libmutter-3.deps
+ delete mode 100644 vapi/libmutter-4.deps
+ delete mode 100644 vapi/libmutter-4.vapi
+ rename vapi/{libmutter-5.deps => libmutter-6.deps} (50%)
+ rename vapi/{libmutter-5.vapi => libmutter-6.vapi} (97%)
+ create mode 100644 vapi/libmutter-7-custom.vala
+ create mode 100644 vapi/libmutter-7.deps
+ rename vapi/{libmutter-3.vapi => libmutter-7.vapi} (75%)
+ delete mode 100644 vapi/libmutter-cogl-4.vapi
+ delete mode 100644 vapi/mutter-clutter-5-custom.vala
+ rename vapi/{mutter-clutter-4-custom.vala => mutter-clutter-6-custom.vala} (92%)
+ rename vapi/{mutter-clutter-5.deps => mutter-clutter-6.deps} (63%)
+ rename vapi/{mutter-clutter-5.vapi => mutter-clutter-6.vapi} (93%)
+ rename vapi/{mutter-clutter-4.deps => mutter-clutter-7.deps} (54%)
+ rename vapi/{mutter-clutter-4.vapi => mutter-clutter-7.vapi} (86%)
+ rename vapi/{mutter-cogl-5-custom.vala => mutter-cogl-6-custom.vala} (100%)
+ rename vapi/{mutter-cogl-4.deps => mutter-cogl-6.deps} (100%)
+ rename vapi/{mutter-cogl-5.vapi => mutter-cogl-6.vapi} (68%)
+ rename vapi/{mutter-cogl-4-custom.vala => mutter-cogl-7-custom.vala} (81%)
+ rename vapi/{mutter-cogl-5.deps => mutter-cogl-7.deps} (100%)
+ rename vapi/{mutter-cogl-4.vapi => mutter-cogl-7.vapi} (59%)
+
+diff --git meson.build meson.build
+index 2a0e0316..3c4c6ac1 100644
+--- meson.build
++++ meson.build
+@@ -32,16 +32,16 @@ am_cflags = [
+ add_global_arguments(am_cflags, language: 'c')
+ meson.add_install_script('meson_post_install.sh')
+ 
+-# Budgie needs a minimum 3.22 GNOME stack
+-gnome_minimum_version = '>= 3.22.0'
++# Budgie needs a minimum 3.24 GNOME stack
++gnome_minimum_version = '>= 3.24.0'
+ 
+ dep_gtk3 = dependency('gtk+-3.0', version: gnome_minimum_version)
+-dep_glib = dependency('glib-2.0', version: '>= 2.46.0')
+-dep_giounix = dependency('gio-unix-2.0', version: '>= 2.46.0')
+-dep_peas = dependency('libpeas-1.0', version: '>= 1.8.0')
++dep_glib = dependency('glib-2.0', version: '>= 2.62.0')
++dep_giounix = dependency('gio-unix-2.0', version: '>= 2.62.0')
++dep_peas = dependency('libpeas-1.0', version: '>= 1.24.0')
+ dep_gdkx11 = dependency('gdk-x11-3.0', version: gnome_minimum_version)
+ dep_libuuid = dependency('uuid')
+-dep_vala = dependency('vapigen', version: '>= 0.40.0')
++dep_vala = dependency('vapigen', version: '>= 0.46.0')
+ 
+ # Needed for keyboardy bits
+ dep_ibus = dependency('ibus-1.0', version: '>= 1.5.10')
+@@ -51,10 +51,10 @@ dep_gsettings = dependency('gsettings-desktop-schemas', version: gnome_minimum_v
+ dep_gsd = dependency('gnome-settings-daemon', version: '>=3.28.0')
+ 
+ # wnck used all over the place..
+-dep_wnck = dependency('libwnck-3.0', version: '>= 3.14.0')
++dep_wnck = dependency('libwnck-3.0', version: '>= 3.32.0')
+ 
+ # accountsservice in multiple applets
+-dep_accountsservice = dependency('accountsservice', version: '>= 0.6.40')
++dep_accountsservice = dependency('accountsservice', version: '>= 0.6.55')
+ 
+ # Create config.h
+ cdata = configuration_data()
+diff --git meson_options.txt meson_options.txt
+index d71b09b5..dca91296 100644
+--- meson_options.txt
++++ meson_options.txt
+@@ -1,5 +1,4 @@
+ option('with-stateless', type: 'boolean', value: false, description: 'Enable stateless XDG paths')
+ option('with-polkit', type: 'boolean', value: true, description: 'Enable PolKit support')
+-option('with-bluetooth', type: 'boolean', value: true, description: 'Enable gnome-bluetooth support')
+ option('with-gtk-doc', type: 'boolean', value: true, description: 'Build gtk-doc documentation')
+ option('with-desktop-icons', type: 'combo', choices: ['nautilus', 'none'], value: 'nautilus', description: 'Desktop icon handling')
+diff --git src/applets/status/StatusApplet.vala src/applets/status/StatusApplet.vala
+index b9826394..71f287c9 100644
+--- src/applets/status/StatusApplet.vala
++++ src/applets/status/StatusApplet.vala
+@@ -20,9 +20,7 @@ public class StatusApplet : Budgie.Applet
+ {
+ 
+     protected Gtk.Box widget;
+-#if WITH_BLUETOOTH
+     protected BluetoothIndicator blue;
+-#endif
+     protected SoundIndicator sound;
+     protected PowerIndicator power;
+     protected Gtk.EventBox? wrap;
+@@ -68,12 +66,10 @@ public class StatusApplet : Budgie.Applet
+         this.setup_popover(power.ebox, power.popover);
+         this.setup_popover(sound.ebox, sound.popover);
+ 
+-#if WITH_BLUETOOTH
+         blue = new BluetoothIndicator();
+         widget.pack_start(blue, false, false, 2);
+         blue.show_all();
+         this.setup_popover(blue.ebox, blue.popover);
+-#endif
+     }
+ 
+     public override void panel_position_changed(Budgie.PanelPosition position)
+@@ -91,9 +87,7 @@ public class StatusApplet : Budgie.Applet
+         this.manager = manager;
+         manager.register_popover(power.ebox, power.popover);
+         manager.register_popover(sound.ebox, sound.popover);
+-#if WITH_BLUETOOTH
+         manager.register_popover(blue.ebox, blue.popover);
+-#endif
+     }
+ } // End class
+ 
+diff --git src/applets/status/meson.build src/applets/status/meson.build
+index 699fb8f4..b4d2706c 100644
+--- src/applets/status/meson.build
++++ src/applets/status/meson.build
+@@ -10,6 +10,7 @@ custom_target('plugin-file-status',
+     install_dir : applet_status_dir)
+ 
+ applet_status_sources = [
++    'BluetoothIndicator.vala',
+     'StatusApplet.vala',
+     'PowerIndicator.vala',
+     'SoundIndicator.vala',
+@@ -20,22 +21,13 @@ applet_status_deps = [
+     dep_gtk3,
+     dep_peas,
+     dep_accountsservice,
++    dependency('gnome-bluetooth-1.0', version: gnome_minimum_version),
+     dependency('upower-glib', version: '>= 0.99.0'),
+     link_libplugin,
+     gvc.get_variable('libgvc_dep'),
+     meson.get_compiler('c').find_library('m', required: false),
+ ]
+ 
+-# Bluetooth is optional to allow smaller builds
+-with_bluetooth = get_option('with-bluetooth')
+-applet_status_vala_args = []
+-
+-if with_bluetooth == true
+-    applet_status_deps += dependency('gnome-bluetooth-1.0', version: gnome_minimum_version)
+-    applet_status_sources += 'BluetoothIndicator.vala'
+-    applet_status_vala_args += ['-D', 'WITH_BLUETOOTH']
+-endif
+-
+ shared_library(
+     'statusapplet',
+     applet_status_sources,
+@@ -50,7 +42,6 @@ shared_library(
+         '--pkg', 'gvc-1.0',
+         '--pkg', 'gio-unix-2.0',
+         '--vapidir', join_paths(meson.source_root(), 'vapi'),
+-        applet_status_vala_args,
+     ],
+     install: true,
+     install_dir: applet_status_dir,
+diff --git src/wm/background.vala src/wm/background.vala
+index 084aa9ab..b331e0c4 100644
+--- src/wm/background.vala
++++ src/wm/background.vala
+@@ -204,8 +204,13 @@ public class BudgieBackground : Clutter.Actor
+ 
+         var actor = new Meta.BackgroundActor(display, index);
+         var background = new Meta.Background(display);
++#if HAVE_MUTTER_6
+         actor.set_background(background);
+-
++#else
++        var content = actor.get_content();
++        unowned Meta.BackgroundContent background_content = (Meta.BackgroundContent) content;
++        background_content.set_background(background);
++#endif
+         rect = display.get_monitor_geometry(index);
+         actor.set_size(rect.width, rect.height);
+         actor.set("opacity", 0);
+@@ -221,13 +226,21 @@ public class BudgieBackground : Clutter.Actor
+         shading_direction = (GDesktop.BackgroundShading)settings.get_enum(COLOR_SHADING_TYPE_KEY);
+         var color_str = settings.get_string(PRIMARY_COLOR_KEY);
+         if (color_str != null && color_str != "") {
++#if HAVE_MUTTER_6
+             primary_color = Clutter.Color.from_string(color_str);
++#else
++            Clutter.Color.from_string(out primary_color, color_str);
++#endif
+             color_str = null;
+         }
+ 
+         color_str = settings.get_string(SECONDARY_COLOR_KEY);
+         if (color_str != null && color_str != "") {
++#if HAVE_MUTTER_6
+             secondary_color = Clutter.Color.from_string(color_str);
++#else
++            Clutter.Color.from_string(out secondary_color, color_str);
++#endif
+             color_str = null;
+         }
+ 
+diff --git src/wm/meson.build src/wm/meson.build
+index e39b8678..583ce790 100644
+--- src/wm/meson.build
++++ src/wm/meson.build
+@@ -17,20 +17,18 @@ budgie_wm_sources = [
+ 
+ budgie_wm_status_vala_args = []
+ 
+-vapi_mutter = 'libmutter-3'
+-dep_mutter = dependency('libmutter-3', version: gnome_minimum_version, required: false)
+-if not dep_mutter.found()
+-    dep_mutter = dependency('libmutter-4', version: gnome_minimum_version, required: false)
++dep_graphene = dependency('graphene-gobject-1.0', version: '>= 1.10')
++dep_mutter = dependency('libmutter-7', version: gnome_minimum_version, required: false)
++if dep_mutter.found()
++    budgie_wm_status_vala_args += ['-D', 'HAVE_MUTTER_7']
++    message('Using new libmutter-7 ABI from GNOME 3.38')
++    vapi_mutter = 'libmutter-7'
++else
++    dep_mutter = dependency('libmutter-6', version: gnome_minimum_version)
++    budgie_wm_status_vala_args += ['-D', 'HAVE_MUTTER_6']
+     if dep_mutter.found()
+-        message('Using new libmutter-4 ABI from GNOME 3.32')
+-        vapi_mutter = 'libmutter-4'
+-    else
+-        dep_mutter = dependency('libmutter-5', version: gnome_minimum_version)
+-        if dep_mutter.found()
+-            message('Using new libmutter-5 ABI from GNOME 3.34')
+-            vapi_mutter = 'libmutter-5'
+-            budgie_wm_status_vala_args += ['-D', 'HAVE_MUTTER_5']
+-        endif
++        message('Using new libmutter-6 ABI from GNOME 3.36')
++        vapi_mutter = 'libmutter-6'
+     endif
+ endif
+ 
+@@ -42,8 +40,8 @@ budgie_wm_deps = [
+     dep_ibus,
+ ]
+ 
+-if dep_gsd.version().version_compare('>=3.31.91')
+-    budgie_wm_status_vala_args += ['-D', 'HAVE_GSD_332']
++if dep_gsd.version().version_compare('>=3.36.0')
++    budgie_wm_status_vala_args += ['-D', 'HAVE_GSD_SUPPORTED']
+ endif
+ 
+ budgie_wm_vala_args =  [
+@@ -60,7 +58,7 @@ budgie_wm_vala_args =  [
+ 
+ rpath = ''
+ 
+-if dep_mutter.version().version_compare('>=3.28.0')
++if dep_mutter.version().version_compare('>=3.36.0')
+     rpath = dep_mutter.get_pkgconfig_variable('typelibdir')
+     budgie_wm_vala_args += ['--girdir', rpath]
+ endif
+diff --git src/wm/shim.vala src/wm/shim.vala
+index 4cdfa0b0..fc24b289 100644
+--- src/wm/shim.vala
++++ src/wm/shim.vala
+@@ -14,7 +14,7 @@ namespace Budgie {
+ public struct GsdAccel {
+     string accelerator;
+     uint flags;
+-#if HAVE_GSD_332
++#if HAVE_GSD_SUPPORTED
+     Meta.KeyBindingFlags grab_flags;
+ #endif
+ }
+@@ -193,11 +193,7 @@ public class ShellShim : GLib.Object
+         osd_proxy = null;
+     }
+ 
+-#if HAVE_MUTTER_5
+     private void on_accelerator_activated(uint action, Clutter.InputDevice dev, uint device_id)
+-#else
+-    private void on_accelerator_activated(uint action, uint device_id)
+-#endif
+     {
+         HashTable<string,Variant> params = new HashTable<string,Variant>(str_hash, str_equal);
+ 
+@@ -230,7 +226,7 @@ public class ShellShim : GLib.Object
+         }
+     }
+ 
+-#if HAVE_GSD_332
++#if HAVE_GSD_SUPPORTED
+     private uint _grab(string sender, string seq, uint flag, Meta.KeyBindingFlags grab_flags)
+     {
+         var ret = display.grab_accelerator(seq, grab_flags);
+@@ -273,7 +269,7 @@ public class ShellShim : GLib.Object
+             on_bus_acquired, null, null);
+     }
+ 
+-#if HAVE_GSD_332
++#if HAVE_GSD_SUPPORTED
+     public uint GrabAccelerator(BusName sender, string accelerator, uint flags, Meta.KeyBindingFlags grab_flags)
+     {
+         return _grab(sender, accelerator, flags, grab_flags);
+diff --git src/wm/wm.vala src/wm/wm.vala
+index fee89443..bccf3b95 100644
+--- src/wm/wm.vala
++++ src/wm/wm.vala
+@@ -137,8 +137,8 @@ public class BudgieWM : Meta.Plugin
+     public static string[]? old_args;
+     public static bool wayland = false;
+ 
+-    static Clutter.Point PV_CENTER;
+-    static Clutter.Point PV_NORM;
++    static Graphene.Point PV_CENTER;
++    static Graphene.Point PV_NORM;
+ 
+     private Meta.BackgroundGroup? background_group;
+ 
+@@ -171,10 +171,10 @@ public class BudgieWM : Meta.Plugin
+             license = "GPL-2.0",
+             description = "Budgie Window Manager"
+         };
+-        PV_CENTER = Clutter.Point.alloc();
++        PV_CENTER = Graphene.Point();
++        PV_NORM = Graphene.Point();
+         PV_CENTER.x = 0.5f;
+         PV_CENTER.y = 0.5f;
+-        PV_NORM = Clutter.Point.alloc();
+         PV_NORM.x = 0.0f;
+         PV_NORM.y = 0.0f;
+     }
+@@ -1001,7 +1001,7 @@ public class BudgieWM : Meta.Plugin
+         tile_preview.set("scale-x", NOTIFICATION_MAP_SCALE_X, "scale-y", NOTIFICATION_MAP_SCALE_Y,
+             "pivot-point", PV_CENTER);
+ 
+-        tile_preview.lower(win_actor);
++        //tile_preview.lower(win_actor);
+         tile_preview.tile_rect = tile_rect;
+ 
+         tile_preview.show();
+diff --git vapi/Clutter-5.metadata vapi/Clutter-6.metadata
+similarity index 100%
+rename from vapi/Clutter-5.metadata
+rename to vapi/Clutter-6.metadata
+diff --git vapi/Clutter-4.metadata vapi/Clutter-7.metadata
+similarity index 78%
+rename from vapi/Clutter-4.metadata
+rename to vapi/Clutter-7.metadata
+index 5c212e85..1855274d 100644
+--- vapi/Clutter-4.metadata
++++ vapi/Clutter-7.metadata
+@@ -1,13 +1,10 @@
+ // Non mini-object
+ ActorBox struct
+ Color struct
+-Fog struct
+-Geometry struct
+ Knot struct
+ PathNode struct
+ Perspective struct
+ Units struct
+-Vertex struct
+ 
+ *.ref unowned
+ 
+@@ -17,7 +14,6 @@ init_with_args
+ Actor
+ 	.apply_transform.matrix ref
+ 	.get_abs_allocation_vertices.verts out=false
+-	.get_allocation_vertices.verts out=false
+ Canvas
+ 	.new symbol_type="constructor"
+ Event.type#method name="get_type"
+@@ -27,7 +23,6 @@ Image
+ // ???
+ Actor.has_pointer#method name="get_has_pointer"
+ InitError errordomain=false
+-redraw skip
+ 
+ // Not all backing symbols are deprecated
+ Actor.pick deprecated=false
+@@ -55,7 +50,6 @@ Container
+ 	.lower virtual
+ 	.raise virtual
+ 	.*_child_meta#virtual_method virtual
+-	.foreach_with_internals#virtual_method virtual
+ 
+ // Default values
+ Container
+@@ -70,32 +64,21 @@ Text
+ // Reparented funcs methods can't be instance methods
+ feature_available skip
+ feature_get_all skip
+-FeatureFlags.texture_npot skip
+ 
+ // Skipped by g-i for unknown reasons
+ LayoutManager
+ 	.create_child_meta skip=false
+-Model
+-	.insert_row skip=false
+ 
+ // Variadic arguments
+-Actor
+-	.animate skip=false
+-	.animate_with_alpha skip=false
+-	.animate_with_timeline skip=false
+-Animator
+-	.set skip=false
+ Box
+ 	.pack skip=false
+ 	.pack_after skip=false
+ 	.pack_at skip=false
+ 	.pack_before skip=false
+ Container
+-	.add_valist skip=false
+ 	.child_get skip=false
+ 	.child_set skip=false
+ 	.remove skip=false
+-	.remove_valist skip=false
+ Interval
+ 	.new skip=false
+ 	.get_interval skip=false
+@@ -105,15 +88,6 @@ Interval
+ LayoutManager
+ 	.child_get skip=false
+ 	.child_set skip=false
+-ListModel
+-	.new skip=false
+-Model
+-	.append skip=false
+-	.insert skip=false
+-	.prepend skip=false
+-ModelIter
+-	.get skip=false
+-	.set skip=false
+ Script
+ 	.get_objects skip=false
+ 
+@@ -122,17 +96,11 @@ Texture
+ 	.new_from_file throws="Clutter.TextureError"
+ 
+ // Skipped upstream for unknown reasons
+-Alpha.register_func skip=false
+-TimeoutPool skip=false
+ Interval.register_progress_func skip=false
+-frame_source_* skip=false
+ get_option_group skip=false
+ get_option_group_without_init skip=false
+-threads_add_frame_source skip=false
+-threads_add_frame_source_full skip=false
+ threads_add_idle skip=false
+ threads_add_idle_full skip=false
+-threads_set_lock_functions skip=false
+ threads_add_timeout skip=false
+ threads_add_timeout_full skip=false
+ 
+@@ -143,15 +111,12 @@ ActorBox
+ Units.from_* skip
+ Color
+ 	.new skip
+-Vertex.new skip
+ 
+ // Class methods
+ container_class_find_child_property skip
+ container_class_list_child_properties skip
+ 
+ // Move symbols
+-get_actor_by_gid parent="Clutter.Actor" name="get_by_gid"
+-get_input_device_for_id parent="Clutter.InputDevice" name="get_for_id"
+ units_from_* skip
+ 
+ // Classes marked as out but not double ptr
+@@ -202,23 +167,15 @@ PATH_RELATIVE skip=false
+ PRIORITY_REDRAW skip=false
+ 
+ // Clutter devs don't like us creating nested namespaces
+-frame_source_* name="frame_source_(.+)" parent="Clutter.FrameSource"
+ value_* name="value_(.+)" parent="Clutter.Value"
+ threads_* name="threads_(.+)" parent="Clutter.Threads"
+-threads_add_frame_source name="add" parent="Clutter.Threads.FrameSource"
+-threads_add_frame_source_full name="add_full" parent="Clutter.Threads.FrameSource"
+ threads_add_idle name="add" parent="Clutter.Threads.Idle"
+ threads_add_idle_full name="add_full" parent="Clutter.Threads.Idle"
+ threads_add_timeout name="add" parent="Clutter.Threads.Timeout"
+ threads_add_timeout_full name="add_full" parent="Clutter.Threads.Timeout"
+-util_next_p2 name="next_power_of_2" parent="Clutter.Util"
+ 
+ // Backwards compatibility
+ Color.alloc symbol_type="function"
+-Point.alloc symbol_type="function"
+-Rect.alloc symbol_type="function"
+-Size.alloc symbol_type="function"
+-Vertex.alloc symbol_type="function"
+ 
+ BinAlignment deprecated=false deprecated_since=null
+ BinAlignment.* deprecated
+diff --git vapi/Cogl-4.metadata vapi/Cogl-6.metadata
+similarity index 100%
+rename from vapi/Cogl-4.metadata
+rename to vapi/Cogl-6.metadata
+diff --git vapi/Cogl-5.metadata vapi/Cogl-7.metadata
+similarity index 91%
+rename from vapi/Cogl-5.metadata
+rename to vapi/Cogl-7.metadata
+index 092b5e29..e52bfa35 100644
+--- vapi/Cogl-5.metadata
++++ vapi/Cogl-7.metadata
+@@ -9,12 +9,10 @@ create_shader skip
+ 
+ 
+ is_bitmap skip
+-is_material skip
+ is_offscreen skip
+ is_program skip
+ is_shader skip
+ is_texture skip
+-is_vertex_buffer skip
+ 
+ Matrix struct
+   .get_array array=true array_length_idx=-1
+diff --git vapi/Meta-3.metadata vapi/Meta-3.metadata
+deleted file mode 100644
+index 370d4996..00000000
+--- vapi/Meta-3.metadata
++++ /dev/null
+@@ -1,66 +0,0 @@
+-Backend cheader_filename="meta/meta-backend.h"
+-Background cheader_filename="meta/meta-background.h"
+-BackgroundActor cheader_filename="meta/meta-background-actor.h"
+-BackgroundGroup cheader_filename="meta/meta-background-group.h"
+-BackgroundImageCache cheader_filename="meta/meta-background-image.h"
+-Display cheader_filename="meta/display.h"
+-Meta cheader_filename="meta/main.h"
+-MonitorManager cheader_filename="meta/meta-monitor-manager.h"
+-Rectangle struct
+-Plugin cheader_filename="meta/meta-plugin.h"
+-PluginInfo cheader_filename="meta/meta-plugin.h"
+-prefs_* cheader_filename="meta/prefs.h" parent="Meta.Prefs"
+-add_verbose_topic parent="Meta.Util" cheader_filename="meta/util.h"
+-bug parent="Meta.Util" cheader_filename="meta/util.h"
+-debug_spew_real parent="Meta.Util" cheader_filename="meta/util.h"
+-empty_stage_input_region parent="Meta.Util" cheader_filename="meta/util.h"
+-x11_error_trap_pop parent="Meta.Util" cheader_filename="meta/util.h"
+-x11_error_trap_push parent="Meta.Util" cheader_filename="meta/util.h"
+-x11_error_trap_pop_with_return parent="Meta.Util" cheader_filename="meta/util.h"
+-external_binding_name_for_action parent="Meta.Util" cheader_filename="meta/util.h"
+-free_gslist_and_elements parent="Meta.Util" cheader_filename="meta/util.h"
+-g_utf8_strndup parent="Meta.Util" cheader_filename="meta/util.h"
+-get_locale_direction parent="Meta.Util" cheader_filename="meta/util.h"
+-get_overlay_window parent="Meta.Util" cheader_filename="meta/util.h"
+-gravity_to_string parent="Meta.Util" cheader_filename="meta/util.h"
+-is_debugging parent="Meta.Util" cheader_filename="meta/util.h"
+-is_syncing parent="Meta.Util" cheader_filename="meta/util.h"
+-is_verbose parent="Meta.Util" cheader_filename="meta/util.h"
+-is_wayland_compositor parent="Meta.Util" cheader_filename="meta/util.h"
+-later_add parent="Meta.Util" cheader_filename="meta/util.h"
+-later_remove parent="Meta.Util" cheader_filename="meta/util.h"
+-pop_no_msg_prefix parent="Meta.Util" cheader_filename="meta/util.h"
+-push_no_msg_prefix parent="Meta.Util" cheader_filename="meta/util.h"
+-rect parent="Meta.Util" cheader_filename="meta/util.h"
+-remove_verbose_topic parent="Meta.Util" cheader_filename="meta/util.h"
+-set_stage_input_region parent="Meta.Util" cheader_filename="meta/util.h"
+-show_dialog parent="Meta.Util" cheader_filename="meta/util.h"
+-topic_real parent="Meta.Util" cheader_filename="meta/util.h"
+-unsigned_long_equal parent="Meta.Util" cheader_filename="meta/util.h"
+-unsigned_long_hash parent="Meta.Util" cheader_filename="meta/util.h"
+-verbose_real parent="Meta.Util" cheader_filename="meta/util.h"
+-warning parent="Meta.Util" cheader_filename="meta/util.h"
+-show_dialog parent="Meta.Util" cheader_filename="meta/util.h"
+-get_stage_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-get_window_actors parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-get_window_group_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-get_top_window_group_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-get_feedback_group_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-disable_unredirect_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-enable_unredirect_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-set_stage_input_region parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-empty_stage_input_region parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-focus_stage_window parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-stage_is_focused parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-keybindings_set_custom_handler parent="Meta.KeyBinding" name="set_custom_handler"
+-KeyHandlerFunc.event type="Clutter.KeyEvent?"
+-get_backend parent="Meta.Backend"
+-Window.focus#signal skip=true
+-Window.get_xwindow skip=false
+-get_option_context skip=false
+-set_gnome_wm_keybindings skip=false
+-set_wm_name skip=false
+-init skip=false
+-run skip=false
+-show_dialog skip=false
+-get_backend cheader_filename="meta/meta-backend.h"
+diff --git vapi/Meta-5.metadata vapi/Meta-6.metadata
+similarity index 100%
+rename from vapi/Meta-5.metadata
+rename to vapi/Meta-6.metadata
+diff --git vapi/Meta-4.metadata vapi/Meta-7.metadata
+similarity index 76%
+rename from vapi/Meta-4.metadata
+rename to vapi/Meta-7.metadata
+index ae2a7817..72629fba 100644
+--- vapi/Meta-4.metadata
++++ vapi/Meta-7.metadata
+@@ -1,26 +1,21 @@
+ Backend cheader_filename="meta/meta-backend.h"
+ Background cheader_filename="meta/meta-background.h"
+ BackgroundActor cheader_filename="meta/meta-background-actor.h"
++BackgroundContent cheader_filename="meta/meta-background-content.h"
+ BackgroundGroup cheader_filename="meta/meta-background-group.h"
+ BackgroundImage cheader_filename="meta/meta-background-image.h"
+ BackgroundImageCache cheader_filename="meta/meta-background-image.h"
+ Barrier cheader_filename="meta/barrier.h"
+ BarrierEvent cheader_filename="meta/barrier.h"
+-Boxes cheader_filename="meta/boxes.h"
+ CloseDialog cheader_filename="meta/meta-close-dialog.h"
+-Compositor cheader_filename="meta/compositor.h"
+-CompositorMutter cheader_filename="meta/compositor-mutter.h"
+ CursorTracker cheader_filename="meta/meta-cursor-tracker.h"
+ Display cheader_filename="meta/display.h"
+ Dnd cheader_filename="meta/meta-dnd.h"
+-Group cheader_filename="meta/group.h"
+ IdleMonitor cheader_filename="meta/meta-idle-monitor.h"
+ InhibitShortcutsDialog cheader_filename="meta/meta-inhibit-shortcuts-dialog.h"
+-Keybindings cheader_filename="meta/keybindings.h"
+ LaunchContext cheader_filename="meta/meta-launch-context.h"
+ Meta cheader_filename="meta/main.h"
+ MonitorManager cheader_filename="meta/meta-monitor-manager.h"
+-Plugin cheader_filename="meta/meta-plugin.h"
+ Preference cheader_filename="meta/prefs.h"
+ RemoteAccessController cheader_filename="meta/meta-remote-access-controller.h"
+ RemoteAccessHandle cheader_filename="meta/meta-remote-access-controller.h"
+@@ -31,9 +26,7 @@ SoundPlayer cheader_filename="meta/meta-sound-player.h"
+ Stage cheader_filename="meta/meta-stage.h"
+ StartupNotification cheader_filename="meta/meta-startup-notification.h"
+ Theme cheader_filename="meta/theme.h"
+-Types cheader_filename="meta/types.h"
+-Util cheader_filename="meta/util.h"
+-Version cheader_filename="meta/meta-version.h"
++WaylandClient cheader_filename="meta/meta-wayland-client.h"
+ Window cheader_filename="meta/window.h"
+ WindowActor cheader_filename="meta/meta-window-actor.h"
+ WindowGroup cheader_filename="meta/meta-window-group.h"
+@@ -46,17 +39,11 @@ Plugin cheader_filename="meta/meta-plugin.h"
+ PluginInfo cheader_filename="meta/meta-plugin.h"
+ prefs_* cheader_filename="meta/prefs.h" parent="Meta.Prefs"
+ add_verbose_topic parent="Meta.Util" cheader_filename="meta/util.h"
+-bug parent="Meta.Util" cheader_filename="meta/util.h"
+-debug_spew_real parent="Meta.Util" cheader_filename="meta/util.h"
+-empty_stage_input_region parent="Meta.Util" cheader_filename="meta/util.h"
+ x11_error_trap_pop parent="Meta.Util" cheader_filename="meta/util.h"
+ x11_error_trap_push parent="Meta.Util" cheader_filename="meta/util.h"
+ x11_error_trap_pop_with_return parent="Meta.Util" cheader_filename="meta/util.h"
+ external_binding_name_for_action parent="Meta.Util" cheader_filename="meta/util.h"
+-free_gslist_and_elements parent="Meta.Util" cheader_filename="meta/util.h"
+-g_utf8_strndup parent="Meta.Util" cheader_filename="meta/util.h"
+ get_locale_direction parent="Meta.Util" cheader_filename="meta/util.h"
+-get_overlay_window parent="Meta.Util" cheader_filename="meta/util.h"
+ gravity_to_string parent="Meta.Util" cheader_filename="meta/util.h"
+ is_debugging parent="Meta.Util" cheader_filename="meta/util.h"
+ is_syncing parent="Meta.Util" cheader_filename="meta/util.h"
+@@ -68,13 +55,8 @@ pop_no_msg_prefix parent="Meta.Util" cheader_filename="meta/util.h"
+ push_no_msg_prefix parent="Meta.Util" cheader_filename="meta/util.h"
+ rect parent="Meta.Util" cheader_filename="meta/util.h"
+ remove_verbose_topic parent="Meta.Util" cheader_filename="meta/util.h"
+-set_stage_input_region parent="Meta.Util" cheader_filename="meta/util.h"
+-show_dialog parent="Meta.Util" cheader_filename="meta/util.h"
+-topic_real parent="Meta.Util" cheader_filename="meta/util.h"
+ unsigned_long_equal parent="Meta.Util" cheader_filename="meta/util.h"
+ unsigned_long_hash parent="Meta.Util" cheader_filename="meta/util.h"
+-verbose_real parent="Meta.Util" cheader_filename="meta/util.h"
+-warning parent="Meta.Util" cheader_filename="meta/util.h"
+ show_dialog parent="Meta.Util" cheader_filename="meta/util.h"
+ get_stage_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+ get_window_actors parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+@@ -83,10 +65,7 @@ get_top_window_group_for_display parent="Meta.Compositor" cheader_filename="meta
+ get_feedback_group_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+ disable_unredirect_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+ enable_unredirect_for_display parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-set_stage_input_region parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-empty_stage_input_region parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+ focus_stage_window parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+-stage_is_focused parent="Meta.Compositor" cheader_filename="meta/compositor-mutter.h"
+ keybindings_set_custom_handler parent="Meta.KeyBinding" name="set_custom_handler"
+ KeyHandlerFunc.event type="Clutter.KeyEvent?"
+ get_backend parent="Meta.Backend"
+diff --git vapi/generate-mutter-vapi.sh vapi/generate-mutter-vapi.sh
+index 6b070240..b233e586 100755
+--- vapi/generate-mutter-vapi.sh
++++ vapi/generate-mutter-vapi.sh
+@@ -1,7 +1,7 @@
+ #!/bin/bash
+ set -xe
+ 
+-version=${1-4}
++version=${6-7}
+ girdir=$(pkg-config libmutter-$version --variable=girdir)
+ 
+ cd $(dirname $0)
+diff --git vapi/graphene-gobject-1.0.vapi vapi/graphene-gobject-1.0.vapi
+new file mode 100644
+index 00000000..69801535
+--- /dev/null
++++ vapi/graphene-gobject-1.0.vapi
+@@ -0,0 +1,691 @@
++/* graphene-gobject-1.0.vapi generated by vapigen, do not modify. */
++
++[CCode (cprefix = "Graphene", gir_namespace = "Graphene", gir_version = "1.0", lower_case_cprefix = "graphene_")]
++namespace Graphene {
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_box_t", type_id = "graphene_box_get_type ()")]
++	[Version (since = "1.2")]
++	public struct Box {
++		public bool contains_box (Graphene.Box b);
++		public bool contains_point (Graphene.Point3D point);
++		public static unowned Graphene.Box? empty ();
++		public bool equal (Graphene.Box b);
++		public Graphene.Box expand (Graphene.Point3D point);
++		public Graphene.Box expand_scalar (float scalar);
++		public Graphene.Box expand_vec3 (Graphene.Vec3 vec);
++		public Graphene.Sphere get_bounding_sphere ();
++		public Graphene.Point3D get_center ();
++		public float get_depth ();
++		public float get_height ();
++		public Graphene.Point3D get_max ();
++		public Graphene.Point3D get_min ();
++		public Graphene.Vec3 get_size ();
++		public void get_vertices ([CCode (array_length = false)] ref Graphene.Vec3 vertices[8]);
++		public float get_width ();
++		public static unowned Graphene.Box? infinite ();
++		public unowned Graphene.Box? init (Graphene.Point3D? min, Graphene.Point3D? max);
++		public unowned Graphene.Box? init_from_box (Graphene.Box src);
++		public unowned Graphene.Box? init_from_points ([CCode (array_length_cname = "n_points", array_length_pos = 0.5, array_length_type = "guint")] Graphene.Point3D[] points);
++		public unowned Graphene.Box? init_from_vec3 (Graphene.Vec3? min, Graphene.Vec3? max);
++		public unowned Graphene.Box? init_from_vectors ([CCode (array_length_cname = "n_vectors", array_length_pos = 0.5, array_length_type = "guint")] Graphene.Vec3[] vectors);
++		public bool intersection (Graphene.Box b, out Graphene.Box res);
++		public static unowned Graphene.Box? minus_one ();
++		public static unowned Graphene.Box? one ();
++		public static unowned Graphene.Box? one_minus_one ();
++		public Graphene.Box union (Graphene.Box b);
++		public static unowned Graphene.Box? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_euler_t", type_id = "graphene_euler_get_type ()")]
++	[Version (since = "1.2")]
++	public struct Euler {
++		public bool equal (Graphene.Euler b);
++		[Version (since = "1.10")]
++		public float get_alpha ();
++		[Version (since = "1.10")]
++		public float get_beta ();
++		[Version (since = "1.10")]
++		public float get_gamma ();
++		public Graphene.EulerOrder get_order ();
++		public float get_x ();
++		public float get_y ();
++		public float get_z ();
++		public unowned Graphene.Euler? init (float x, float y, float z);
++		public unowned Graphene.Euler? init_from_euler (Graphene.Euler? src);
++		public unowned Graphene.Euler? init_from_matrix (Graphene.Matrix? m, Graphene.EulerOrder order);
++		public unowned Graphene.Euler? init_from_quaternion (Graphene.Quaternion? q, Graphene.EulerOrder order);
++		[Version (since = "1.10")]
++		public unowned Graphene.Euler? init_from_radians (float x, float y, float z, Graphene.EulerOrder order);
++		public unowned Graphene.Euler? init_from_vec3 (Graphene.Vec3? v, Graphene.EulerOrder order);
++		public unowned Graphene.Euler? init_with_order (float x, float y, float z, Graphene.EulerOrder order);
++		public Graphene.Euler reorder (Graphene.EulerOrder order);
++		public Graphene.Matrix to_matrix ();
++		[Version (since = "1.10")]
++		public Graphene.Quaternion to_quaternion ();
++		public Graphene.Vec3 to_vec3 ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_frustum_t", type_id = "graphene_frustum_get_type ()")]
++	[Version (since = "1.2")]
++	public struct Frustum {
++		public bool contains_point (Graphene.Point3D point);
++		[Version (since = "1.6")]
++		public bool equal (Graphene.Frustum b);
++		public void get_planes ([CCode (array_length = false)] ref Graphene.Plane planes[6]);
++		public unowned Graphene.Frustum? init (Graphene.Plane p0, Graphene.Plane p1, Graphene.Plane p2, Graphene.Plane p3, Graphene.Plane p4, Graphene.Plane p5);
++		public unowned Graphene.Frustum? init_from_frustum (Graphene.Frustum src);
++		public unowned Graphene.Frustum? init_from_matrix (Graphene.Matrix matrix);
++		public bool intersects_box (Graphene.Box box);
++		public bool intersects_sphere (Graphene.Sphere sphere);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_matrix_t", type_id = "graphene_matrix_get_type ()")]
++	public struct Matrix {
++		public bool decompose (out Graphene.Vec3 translate, out Graphene.Vec3 scale, out Graphene.Quaternion rotate, out Graphene.Vec3 shear, out Graphene.Vec4 perspective);
++		[Version (since = "1.0")]
++		public float determinant ();
++		[Version (since = "1.10")]
++		public bool equal (Graphene.Matrix b);
++		[Version (since = "1.10")]
++		public bool equal_fast (Graphene.Matrix b);
++		[Version (since = "1.0")]
++		public Graphene.Vec4 get_row (uint index_);
++		[Version (since = "1.0")]
++		public float get_value (uint row, uint col);
++		[Version (since = "1.0")]
++		public float get_x_scale ();
++		[Version (since = "1.10")]
++		public float get_x_translation ();
++		[Version (since = "1.0")]
++		public float get_y_scale ();
++		[Version (since = "1.10")]
++		public float get_y_translation ();
++		[Version (since = "1.0")]
++		public float get_z_scale ();
++		[Version (since = "1.10")]
++		public float get_z_translation ();
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_from_2d (double xx, double yx, double xy, double yy, double x_0, double y_0);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_from_float ([CCode (array_length = false)] float v[16]);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_from_matrix (Graphene.Matrix src);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_from_vec4 (Graphene.Vec4 v0, Graphene.Vec4 v1, Graphene.Vec4 v2, Graphene.Vec4 v3);
++		[Version (since = "1.2")]
++		public unowned Graphene.Matrix? init_frustum (float left, float right, float bottom, float top, float z_near, float z_far);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_identity ();
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_look_at (Graphene.Vec3 eye, Graphene.Vec3 center, Graphene.Vec3 up);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_ortho (float left, float right, float top, float bottom, float z_near, float z_far);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_perspective (float fovy, float aspect, float z_near, float z_far);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_rotate (float angle, Graphene.Vec3 axis);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_scale (float x, float y, float z);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_skew (float x_skew, float y_skew);
++		[Version (since = "1.0")]
++		public unowned Graphene.Matrix? init_translate (Graphene.Point3D p);
++		[Version (since = "1.0")]
++		public Graphene.Matrix interpolate (Graphene.Matrix b, double factor);
++		[Version (since = "1.0")]
++		public bool inverse (out Graphene.Matrix res);
++		[Version (since = "1.0")]
++		public bool is_2d ();
++		[Version (since = "1.0")]
++		public bool is_backface_visible ();
++		[Version (since = "1.0")]
++		public bool is_identity ();
++		[Version (since = "1.0")]
++		public bool is_singular ();
++		[Version (since = "1.0")]
++		public Graphene.Matrix multiply (Graphene.Matrix b);
++		[Version (since = "1.10")]
++		public bool near (Graphene.Matrix b, float epsilon);
++		[Version (since = "1.0")]
++		public Graphene.Matrix normalize ();
++		[Version (since = "1.0")]
++		public Graphene.Matrix perspective (float depth);
++		[Version (since = "1.0")]
++		public void print ();
++		[Version (since = "1.0")]
++		public Graphene.Point project_point (Graphene.Point p);
++		[Version (since = "1.2")]
++		public Graphene.Quad project_rect (Graphene.Rect r);
++		[Version (since = "1.0")]
++		public Graphene.Rect project_rect_bounds (Graphene.Rect r);
++		[Version (since = "1.0")]
++		public void rotate (float angle, Graphene.Vec3 axis);
++		[Version (since = "1.2")]
++		public void rotate_euler (Graphene.Euler e);
++		[Version (since = "1.2")]
++		public void rotate_quaternion (Graphene.Quaternion q);
++		[Version (since = "1.0")]
++		public void rotate_x (float angle);
++		[Version (since = "1.0")]
++		public void rotate_y (float angle);
++		[Version (since = "1.0")]
++		public void rotate_z (float angle);
++		[Version (since = "1.0")]
++		public void scale (float factor_x, float factor_y, float factor_z);
++		[Version (since = "1.0")]
++		public void skew_xy (float factor);
++		[Version (since = "1.0")]
++		public void skew_xz (float factor);
++		[Version (since = "1.0")]
++		public void skew_yz (float factor);
++		[Version (since = "1.0")]
++		public bool to_2d (out double xx, out double yx, out double xy, out double yy, out double x_0, out double y_0);
++		[Version (since = "1.0")]
++		public void to_float ([CCode (array_length = false)] ref float v[16]);
++		[Version (since = "1.0")]
++		public Graphene.Rect transform_bounds (Graphene.Rect r);
++		[Version (since = "1.2")]
++		public Graphene.Box transform_box (Graphene.Box b);
++		[Version (since = "1.0")]
++		public Graphene.Point transform_point (Graphene.Point p);
++		[Version (since = "1.2")]
++		public Graphene.Point3D transform_point3d (Graphene.Point3D p);
++		[Version (since = "1.4")]
++		public Graphene.Ray transform_ray (Graphene.Ray r);
++		[Version (since = "1.0")]
++		public Graphene.Quad transform_rect (Graphene.Rect r);
++		[Version (since = "1.2")]
++		public Graphene.Sphere transform_sphere (Graphene.Sphere s);
++		[Version (since = "1.0")]
++		public Graphene.Vec3 transform_vec3 (Graphene.Vec3 v);
++		[Version (since = "1.0")]
++		public Graphene.Vec4 transform_vec4 (Graphene.Vec4 v);
++		[Version (since = "1.0")]
++		public void translate (Graphene.Point3D pos);
++		[Version (since = "1.0")]
++		public Graphene.Matrix transpose ();
++		[Version (since = "1.2")]
++		public Graphene.Point3D unproject_point3d (Graphene.Matrix modelview, Graphene.Point3D point);
++		[Version (since = "1.0")]
++		public Graphene.Rect untransform_bounds (Graphene.Rect r, Graphene.Rect bounds);
++		[Version (since = "1.0")]
++		public bool untransform_point (Graphene.Point p, Graphene.Rect bounds, out Graphene.Point res);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_plane_t", type_id = "graphene_plane_get_type ()")]
++	[Version (since = "1.2")]
++	public struct Plane {
++		public float distance (Graphene.Point3D point);
++		public bool equal (Graphene.Plane b);
++		public float get_constant ();
++		public Graphene.Vec3 get_normal ();
++		public unowned Graphene.Plane? init (Graphene.Vec3? normal, float constant);
++		public unowned Graphene.Plane? init_from_plane (Graphene.Plane src);
++		public unowned Graphene.Plane? init_from_point (Graphene.Vec3 normal, Graphene.Point3D point);
++		public unowned Graphene.Plane? init_from_points (Graphene.Point3D a, Graphene.Point3D b, Graphene.Point3D c);
++		public unowned Graphene.Plane? init_from_vec4 (Graphene.Vec4 src);
++		public Graphene.Plane negate ();
++		public Graphene.Plane normalize ();
++		[Version (since = "1.10")]
++		public Graphene.Plane transform (Graphene.Matrix matrix, Graphene.Matrix? normal_matrix);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_point_t", type_id = "graphene_point_get_type ()")]
++	[Version (since = "1.0")]
++	public struct Point {
++		public float x;
++		public float y;
++		public float distance (Graphene.Point b, out float d_x, out float d_y);
++		public bool equal (Graphene.Point b);
++		public unowned Graphene.Point? init (float x, float y);
++		public unowned Graphene.Point? init_from_point (Graphene.Point src);
++		[Version (since = "1.4")]
++		public unowned Graphene.Point? init_from_vec2 (Graphene.Vec2 src);
++		public Graphene.Point interpolate (Graphene.Point b, double factor);
++		public bool near (Graphene.Point b, float epsilon);
++		[Version (since = "1.4")]
++		public Graphene.Vec2 to_vec2 ();
++		public static unowned Graphene.Point? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_point3d_t", lower_case_csuffix = "point3d", type_id = "graphene_point3d_get_type ()")]
++	[Version (since = "1.0")]
++	public struct Point3D {
++		public float x;
++		public float y;
++		public float z;
++		public Graphene.Point3D cross (Graphene.Point3D b);
++		[Version (since = "1.4")]
++		public float distance (Graphene.Point3D b, out Graphene.Vec3 delta);
++		public float dot (Graphene.Point3D b);
++		public bool equal (Graphene.Point3D b);
++		public unowned Graphene.Point3D? init (float x, float y, float z);
++		public unowned Graphene.Point3D? init_from_point (Graphene.Point3D src);
++		public unowned Graphene.Point3D? init_from_vec3 (Graphene.Vec3 v);
++		public Graphene.Point3D interpolate (Graphene.Point3D b, double factor);
++		public float length ();
++		public bool near (Graphene.Point3D b, float epsilon);
++		public Graphene.Point3D normalize ();
++		[Version (since = "1.4")]
++		public Graphene.Point3D normalize_viewport (Graphene.Rect viewport, float z_near, float z_far);
++		public Graphene.Point3D scale (float factor);
++		public Graphene.Vec3 to_vec3 ();
++		public static unowned Graphene.Point3D? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_quad_t", type_id = "graphene_quad_get_type ()")]
++	[Version (since = "1.0")]
++	public struct Quad {
++		public Graphene.Rect bounds ();
++		public bool contains (Graphene.Point p);
++		public unowned Graphene.Point? get_point (uint index_);
++		public unowned Graphene.Quad? init (Graphene.Point p1, Graphene.Point p2, Graphene.Point p3, Graphene.Point p4);
++		[Version (since = "1.2")]
++		public unowned Graphene.Quad? init_from_points ([CCode (array_length = false)] Graphene.Point points[4]);
++		public unowned Graphene.Quad? init_from_rect (Graphene.Rect r);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_quaternion_t", type_id = "graphene_quaternion_get_type ()")]
++	[Version (since = "1.0")]
++	public struct Quaternion {
++		[Version (since = "1.10")]
++		public Graphene.Quaternion add (Graphene.Quaternion b);
++		public float dot (Graphene.Quaternion b);
++		public bool equal (Graphene.Quaternion b);
++		public unowned Graphene.Quaternion? init (float x, float y, float z, float w);
++		public unowned Graphene.Quaternion? init_from_angle_vec3 (float angle, Graphene.Vec3 axis);
++		public unowned Graphene.Quaternion? init_from_angles (float deg_x, float deg_y, float deg_z);
++		[Version (since = "1.2")]
++		public unowned Graphene.Quaternion? init_from_euler (Graphene.Euler e);
++		public unowned Graphene.Quaternion? init_from_matrix (Graphene.Matrix m);
++		public unowned Graphene.Quaternion? init_from_quaternion (Graphene.Quaternion src);
++		public unowned Graphene.Quaternion? init_from_radians (float rad_x, float rad_y, float rad_z);
++		public unowned Graphene.Quaternion? init_from_vec4 (Graphene.Vec4 src);
++		public unowned Graphene.Quaternion? init_identity ();
++		public Graphene.Quaternion invert ();
++		[Version (since = "1.10")]
++		public Graphene.Quaternion multiply (Graphene.Quaternion b);
++		public Graphene.Quaternion normalize ();
++		[Version (since = "1.10")]
++		public Graphene.Quaternion scale (float factor);
++		public Graphene.Quaternion slerp (Graphene.Quaternion b, float factor);
++		public void to_angle_vec3 (out float angle, out Graphene.Vec3 axis);
++		[Version (since = "1.2")]
++		public void to_angles (out float deg_x, out float deg_y, out float deg_z);
++		public Graphene.Matrix to_matrix ();
++		[Version (since = "1.2")]
++		public void to_radians (out float rad_x, out float rad_y, out float rad_z);
++		public Graphene.Vec4 to_vec4 ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_ray_t", type_id = "graphene_ray_get_type ()")]
++	[Version (since = "1.4")]
++	public struct Ray {
++		public bool equal (Graphene.Ray b);
++		public Graphene.Point3D get_closest_point_to_point (Graphene.Point3D p);
++		public Graphene.Vec3 get_direction ();
++		public float get_distance_to_plane (Graphene.Plane p);
++		public float get_distance_to_point (Graphene.Point3D p);
++		public Graphene.Point3D get_origin ();
++		public Graphene.Point3D get_position_at (float t);
++		public unowned Graphene.Ray? init (Graphene.Point3D? origin, Graphene.Vec3? direction);
++		public unowned Graphene.Ray? init_from_ray (Graphene.Ray src);
++		public unowned Graphene.Ray? init_from_vec3 (Graphene.Vec3? origin, Graphene.Vec3? direction);
++		[Version (since = "1.10")]
++		public Graphene.RayIntersectionKind intersect_box (Graphene.Box b, out float t_out);
++		[Version (since = "1.10")]
++		public Graphene.RayIntersectionKind intersect_sphere (Graphene.Sphere s, out float t_out);
++		[Version (since = "1.10")]
++		public Graphene.RayIntersectionKind intersect_triangle (Graphene.Triangle t, out float t_out);
++		[Version (since = "1.10")]
++		public bool intersects_box (Graphene.Box b);
++		[Version (since = "1.10")]
++		public bool intersects_sphere (Graphene.Sphere s);
++		[Version (since = "1.10")]
++		public bool intersects_triangle (Graphene.Triangle t);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_rect_t", type_id = "graphene_rect_get_type ()")]
++	[Version (since = "1.0")]
++	public struct Rect {
++		public Graphene.Point origin;
++		public Graphene.Size size;
++		public static Graphene.Rect? alloc ();
++		public bool contains_point (Graphene.Point p);
++		public bool contains_rect (Graphene.Rect b);
++		public bool equal (Graphene.Rect b);
++		[Version (since = "1.4")]
++		public Graphene.Rect expand (Graphene.Point p);
++		[Version (since = "1.10")]
++		public float get_area ();
++		public Graphene.Point get_bottom_left ();
++		public Graphene.Point get_bottom_right ();
++		public Graphene.Point get_center ();
++		public float get_height ();
++		public Graphene.Point get_top_left ();
++		public Graphene.Point get_top_right ();
++		[Version (since = "1.4")]
++		public void get_vertices ([CCode (array_length = false)] ref Graphene.Vec2 vertices[4]);
++		public float get_width ();
++		public float get_x ();
++		public float get_y ();
++		public unowned Graphene.Rect? init (float x, float y, float width, float height);
++		public unowned Graphene.Rect? init_from_rect (Graphene.Rect src);
++		public unowned Graphene.Rect? inset (float d_x, float d_y);
++		[Version (since = "1.4")]
++		public Graphene.Rect inset_r (float d_x, float d_y);
++		public Graphene.Rect interpolate (Graphene.Rect b, double factor);
++		public bool intersection (Graphene.Rect b, out Graphene.Rect res);
++		public unowned Graphene.Rect? normalize ();
++		[Version (since = "1.4")]
++		public Graphene.Rect normalize_r ();
++		public unowned Graphene.Rect? offset (float d_x, float d_y);
++		[Version (since = "1.4")]
++		public Graphene.Rect offset_r (float d_x, float d_y);
++		[Version (deprecated = true, deprecated_since = "1.10", since = "1.4")]
++		public Graphene.Rect round ();
++		[Version (since = "1.10")]
++		public Graphene.Rect round_extents ();
++		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
++		public unowned Graphene.Rect? round_to_pixel ();
++		[Version (since = "1.10")]
++		public Graphene.Rect scale (float s_h, float s_v);
++		public Graphene.Rect union (Graphene.Rect b);
++		[Version (since = "1.4")]
++		public static unowned Graphene.Rect? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_simd4f_t", has_type_id = false)]
++	public struct Simd4F {
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_simd4x4f_t", has_type_id = false)]
++	public struct Simd4X4F {
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_size_t", type_id = "graphene_size_get_type ()")]
++	[Version (since = "1.0")]
++	public struct Size {
++		public float width;
++		public float height;
++		public bool equal (Graphene.Size b);
++		public unowned Graphene.Size? init (float width, float height);
++		public unowned Graphene.Size? init_from_size (Graphene.Size src);
++		public Graphene.Size interpolate (Graphene.Size b, double factor);
++		public Graphene.Size scale (float factor);
++		public static unowned Graphene.Size? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_sphere_t", type_id = "graphene_sphere_get_type ()")]
++	[Version (since = "1.2")]
++	public struct Sphere {
++		public bool contains_point (Graphene.Point3D point);
++		public float distance (Graphene.Point3D point);
++		public bool equal (Graphene.Sphere b);
++		public Graphene.Box get_bounding_box ();
++		public Graphene.Point3D get_center ();
++		public float get_radius ();
++		public unowned Graphene.Sphere? init (Graphene.Point3D? center, float radius);
++		public unowned Graphene.Sphere? init_from_points ([CCode (array_length_cname = "n_points", array_length_pos = 0.5, array_length_type = "guint")] Graphene.Point3D[] points, Graphene.Point3D? center);
++		public unowned Graphene.Sphere? init_from_vectors ([CCode (array_length_cname = "n_vectors", array_length_pos = 0.5, array_length_type = "guint")] Graphene.Vec3[] vectors, Graphene.Point3D? center);
++		public bool is_empty ();
++		public Graphene.Sphere translate (Graphene.Point3D point);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_triangle_t", type_id = "graphene_triangle_get_type ()")]
++	[Version (since = "1.2")]
++	public struct Triangle {
++		public bool contains_point (Graphene.Point3D p);
++		public bool equal (Graphene.Triangle b);
++		public float get_area ();
++		public bool get_barycoords (Graphene.Point3D? p, out Graphene.Vec2 res);
++		public Graphene.Box get_bounding_box ();
++		public Graphene.Point3D get_midpoint ();
++		public Graphene.Vec3 get_normal ();
++		public Graphene.Plane get_plane ();
++		public void get_points (out Graphene.Point3D a, out Graphene.Point3D b, out Graphene.Point3D c);
++		[Version (since = "1.10")]
++		public bool get_uv (Graphene.Point3D? p, Graphene.Vec2 uv_a, Graphene.Vec2 uv_b, Graphene.Vec2 uv_c, out Graphene.Vec2 res);
++		public void get_vertices (out Graphene.Vec3 a, out Graphene.Vec3 b, out Graphene.Vec3 c);
++		[Version (since = "1.10")]
++		public unowned Graphene.Triangle? init_from_float ([CCode (array_length = false)] float a[3], [CCode (array_length = false)] float b[3], [CCode (array_length = false)] float c[3]);
++		public unowned Graphene.Triangle? init_from_point3d (Graphene.Point3D? a, Graphene.Point3D? b, Graphene.Point3D? c);
++		public unowned Graphene.Triangle? init_from_vec3 (Graphene.Vec3? a, Graphene.Vec3? b, Graphene.Vec3? c);
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_vec2_t", type_id = "graphene_vec2_get_type ()")]
++	public struct Vec2 {
++		[Version (since = "1.0")]
++		public Graphene.Vec2 add (Graphene.Vec2 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec2 divide (Graphene.Vec2 b);
++		[Version (since = "1.0")]
++		public float dot (Graphene.Vec2 b);
++		[Version (since = "1.2")]
++		public bool equal (Graphene.Vec2 v2);
++		[Version (since = "1.0")]
++		public float get_x ();
++		[Version (since = "1.0")]
++		public float get_y ();
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec2? init (float x, float y);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec2? init_from_float ([CCode (array_length = false)] float src[2]);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec2? init_from_vec2 (Graphene.Vec2 src);
++		[Version (since = "1.10")]
++		public Graphene.Vec2 interpolate (Graphene.Vec2 v2, double factor);
++		[Version (since = "1.0")]
++		public float length ();
++		[Version (since = "1.0")]
++		public Graphene.Vec2 max (Graphene.Vec2 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec2 min (Graphene.Vec2 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec2 multiply (Graphene.Vec2 b);
++		[Version (since = "1.2")]
++		public bool near (Graphene.Vec2 v2, float epsilon);
++		[Version (since = "1.2")]
++		public Graphene.Vec2 negate ();
++		[Version (since = "1.0")]
++		public Graphene.Vec2 normalize ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec2? one ();
++		[Version (since = "1.2")]
++		public Graphene.Vec2 scale (float factor);
++		[Version (since = "1.0")]
++		public Graphene.Vec2 subtract (Graphene.Vec2 b);
++		[Version (since = "1.0")]
++		public void to_float ([CCode (array_length = false)] ref float dest[2]);
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec2? x_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec2? y_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec2? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_vec3_t", type_id = "graphene_vec3_get_type ()")]
++	public struct Vec3 {
++		[Version (since = "1.0")]
++		public Graphene.Vec3 add (Graphene.Vec3 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec3 cross (Graphene.Vec3 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec3 divide (Graphene.Vec3 b);
++		[Version (since = "1.0")]
++		public float dot (Graphene.Vec3 b);
++		[Version (since = "1.2")]
++		public bool equal (Graphene.Vec3 v2);
++		[Version (since = "1.0")]
++		public float get_x ();
++		[Version (since = "1.0")]
++		public Graphene.Vec2 get_xy ();
++		[Version (since = "1.0")]
++		public Graphene.Vec3 get_xy0 ();
++		[Version (since = "1.0")]
++		public Graphene.Vec4 get_xyz0 ();
++		[Version (since = "1.0")]
++		public Graphene.Vec4 get_xyz1 ();
++		[Version (since = "1.0")]
++		public Graphene.Vec4 get_xyzw (float w);
++		[Version (since = "1.0")]
++		public float get_y ();
++		[Version (since = "1.0")]
++		public float get_z ();
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec3? init (float x, float y, float z);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec3? init_from_float ([CCode (array_length = false)] float src[3]);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec3? init_from_vec3 (Graphene.Vec3 src);
++		[Version (since = "1.10")]
++		public Graphene.Vec3 interpolate (Graphene.Vec3 v2, double factor);
++		[Version (since = "1.0")]
++		public float length ();
++		[Version (since = "1.0")]
++		public Graphene.Vec3 max (Graphene.Vec3 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec3 min (Graphene.Vec3 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec3 multiply (Graphene.Vec3 b);
++		[Version (since = "1.2")]
++		public bool near (Graphene.Vec3 v2, float epsilon);
++		[Version (since = "1.2")]
++		public Graphene.Vec3 negate ();
++		[Version (since = "1.0")]
++		public Graphene.Vec3 normalize ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec3? one ();
++		[Version (since = "1.2")]
++		public Graphene.Vec3 scale (float factor);
++		[Version (since = "1.0")]
++		public Graphene.Vec3 subtract (Graphene.Vec3 b);
++		[Version (since = "1.0")]
++		public void to_float ([CCode (array_length = false)] ref float dest[3]);
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec3? x_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec3? y_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec3? z_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec3? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_vec4_t", type_id = "graphene_vec4_get_type ()")]
++	public struct Vec4 {
++		[Version (since = "1.0")]
++		public Graphene.Vec4 add (Graphene.Vec4 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec4 divide (Graphene.Vec4 b);
++		[Version (since = "1.0")]
++		public float dot (Graphene.Vec4 b);
++		[Version (since = "1.2")]
++		public bool equal (Graphene.Vec4 v2);
++		[Version (since = "1.0")]
++		public float get_w ();
++		[Version (since = "1.0")]
++		public float get_x ();
++		[Version (since = "1.0")]
++		public Graphene.Vec2 get_xy ();
++		[Version (since = "1.0")]
++		public Graphene.Vec3 get_xyz ();
++		[Version (since = "1.0")]
++		public float get_y ();
++		[Version (since = "1.0")]
++		public float get_z ();
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec4? init (float x, float y, float z, float w);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec4? init_from_float ([CCode (array_length = false)] float src[4]);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec4? init_from_vec2 (Graphene.Vec2 src, float z, float w);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec4? init_from_vec3 (Graphene.Vec3 src, float w);
++		[Version (since = "1.0")]
++		public unowned Graphene.Vec4? init_from_vec4 (Graphene.Vec4 src);
++		[Version (since = "1.10")]
++		public Graphene.Vec4 interpolate (Graphene.Vec4 v2, double factor);
++		[Version (since = "1.0")]
++		public float length ();
++		[Version (since = "1.0")]
++		public Graphene.Vec4 max (Graphene.Vec4 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec4 min (Graphene.Vec4 b);
++		[Version (since = "1.0")]
++		public Graphene.Vec4 multiply (Graphene.Vec4 b);
++		[Version (since = "1.2")]
++		public bool near (Graphene.Vec4 v2, float epsilon);
++		[Version (since = "1.2")]
++		public Graphene.Vec4 negate ();
++		[Version (since = "1.0")]
++		public Graphene.Vec4 normalize ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec4? one ();
++		[Version (since = "1.2")]
++		public Graphene.Vec4 scale (float factor);
++		[Version (since = "1.0")]
++		public Graphene.Vec4 subtract (Graphene.Vec4 b);
++		[Version (since = "1.0")]
++		public void to_float ([CCode (array_length = false)] ref float dest[4]);
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec4? w_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec4? x_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec4? y_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec4? z_axis ();
++		[Version (since = "1.0")]
++		public static unowned Graphene.Vec4? zero ();
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_euler_order_t", cprefix = "GRAPHENE_EULER_ORDER_", has_type_id = false)]
++	[Version (since = "1.2")]
++	public enum EulerOrder {
++		DEFAULT,
++		XYZ,
++		YZX,
++		ZXY,
++		XZY,
++		YXZ,
++		ZYX,
++		SXYZ,
++		SXYX,
++		SXZY,
++		SXZX,
++		SYZX,
++		SYZY,
++		SYXZ,
++		SYXY,
++		SZXY,
++		SZXZ,
++		SZYX,
++		SZYZ,
++		RZYX,
++		RXYX,
++		RYZX,
++		RXZX,
++		RXZY,
++		RYZY,
++		RZXY,
++		RYXY,
++		RYXZ,
++		RZXZ,
++		RXYZ,
++		RZYZ
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "graphene_ray_intersection_kind_t", cprefix = "GRAPHENE_RAY_INTERSECTION_KIND_", has_type_id = false)]
++	[Version (since = "1.10")]
++	public enum RayIntersectionKind {
++		NONE,
++		ENTER,
++		LEAVE
++	}
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_HAS_GCC")]
++	public const int HAS_GCC;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_HAS_SCALAR")]
++	public const int HAS_SCALAR;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_HAS_SSE")]
++	public const int HAS_SSE;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_PI")]
++	public const double PI;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_PI_2")]
++	public const double PI_2;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_SIMD_S")]
++	public const string SIMD_S;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_VEC2_LEN")]
++	[Version (since = "1.0")]
++	public const int VEC2_LEN;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_VEC3_LEN")]
++	[Version (since = "1.0")]
++	public const int VEC3_LEN;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "GRAPHENE_VEC4_LEN")]
++	[Version (since = "1.0")]
++	public const int VEC4_LEN;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "false")]
++	public const int @false;
++	[CCode (cheader_filename = "graphene-gobject.h", cname = "true")]
++	public const int @true;
++}
+diff --git vapi/libmutter-2.deps vapi/libmutter-2.deps
+deleted file mode 100644
+index 1f3c9079..00000000
+--- vapi/libmutter-2.deps
++++ /dev/null
+@@ -1,9 +0,0 @@
+-cairo
+-gsettings-desktop-schemas
+-gdk-3.0
+-gdk-pixbuf-2.0
+-gtk+-3.0
+-x11
+-xfixes-4.0
+-clutter-1.0
+-cogl-1.0
+diff --git vapi/libmutter-2.vapi vapi/libmutter-2.vapi
+deleted file mode 100644
+index 0a6c4357..00000000
+--- vapi/libmutter-2.vapi
++++ /dev/null
+@@ -1,1325 +0,0 @@
+-/* libmutter.vapi generated by vapigen, do not modify. */
+-
+-[CCode (cprefix = "Meta", gir_namespace = "Meta", gir_version = "3.0", lower_case_cprefix = "meta_")]
+-namespace Meta {
+-	namespace Prefs {
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void add_listener (Meta.PrefsChangedFunc func);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool bell_is_audible ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void change_workspace_name (int i, string name);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static GDesktop.TitlebarAction get_action_double_click_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static GDesktop.TitlebarAction get_action_middle_click_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static GDesktop.TitlebarAction get_action_right_click_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_attach_modal_dialogs ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_auto_maximize ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_auto_raise ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_auto_raise_delay ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static Meta.ButtonLayout get_button_layout ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_center_new_windows ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_compositing_manager ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_cursor_size ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static unowned string get_cursor_theme ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_disable_workarounds ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_drag_threshold ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_draggable_border_width ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_dynamic_workspaces ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_edge_tiling ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_focus_change_on_pointer_rest ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static GDesktop.FocusMode get_focus_mode ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static GDesktop.FocusNewWindows get_focus_new_windows ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_force_fullscreen ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_gnome_accessibility ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_gnome_animations ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_ignore_request_hide_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static Meta.KeyBindingAction get_keybinding_action (string name);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_mouse_button_menu ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static Meta.VirtualModifier get_mouse_button_mods ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_mouse_button_resize ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static int get_num_workspaces ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_raise_on_click ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_show_fallback_app_menu ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static unowned Pango.FontDescription get_titlebar_font ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_visual_bell ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static GDesktop.VisualBellType get_visual_bell_type ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static unowned string get_workspace_name (int i);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static bool get_workspaces_only_on_primary ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void init ();
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void override_preference_schema (string key, string schema);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void remove_listener (Meta.PrefsChangedFunc func);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void set_force_fullscreen (bool whether);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void set_ignore_request_hide_titlebar (bool whether);
+-		[CCode (cheader_filename = "meta/prefs.h")]
+-		public static void set_num_workspaces (int n_workspaces);
+-	}
+-	namespace Util {
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_add_verbose_topic")]
+-		public static void add_verbose_topic (Meta.DebugTopic topic);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_bug")]
+-		public static void bug (string format, ...);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_debug_spew_real")]
+-		public static void debug_spew_real (string format, ...);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_disable_unredirect_for_screen")]
+-		public static void disable_unredirect_for_screen (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_empty_stage_input_region")]
+-		public static void empty_stage_input_region (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_enable_unredirect_for_screen")]
+-		public static void enable_unredirect_for_screen (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_error_trap_pop")]
+-		public static void error_trap_pop (Meta.Display display);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_error_trap_push")]
+-		public static void error_trap_push (Meta.Display display);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_error_trap_push_with_return")]
+-		public static void error_trap_push_with_return (Meta.Display display);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_external_binding_name_for_action")]
+-		public static string external_binding_name_for_action (uint keybinding_action);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_fatal")]
+-		public static void fatal (string format, ...);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_free_gslist_and_elements")]
+-		public static void free_gslist_and_elements (GLib.SList<void*> list_to_deep_free);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_g_utf8_strndup")]
+-		public static string g_utf8_strndup (string src, size_t n);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_get_locale_direction")]
+-		public static Meta.LocaleDirection get_locale_direction ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_get_overlay_window")]
+-		public static X.Window get_overlay_window (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_gravity_to_string")]
+-		public static unowned string gravity_to_string (int gravity);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_is_debugging")]
+-		public static bool is_debugging ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_is_syncing")]
+-		public static bool is_syncing ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_is_verbose")]
+-		public static bool is_verbose ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_is_wayland_compositor")]
+-		public static bool is_wayland_compositor ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_later_add")]
+-		public static uint later_add (Meta.LaterType when, owned GLib.SourceFunc func);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_later_remove")]
+-		public static void later_remove (uint later_id);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_pop_no_msg_prefix")]
+-		public static void pop_no_msg_prefix ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_push_no_msg_prefix")]
+-		public static void push_no_msg_prefix ();
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_rect")]
+-		public static Meta.Rectangle? rect (int x, int y, int width, int height);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_remove_verbose_topic")]
+-		public static void remove_verbose_topic (Meta.DebugTopic topic);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_set_stage_input_region")]
+-		public static void set_stage_input_region (Meta.Screen screen, X.XserverRegion region);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_show_dialog")]
+-		public static GLib.Pid show_dialog (string type, string message, string? timeout = null, string? display = null, string? ok_text = null, string? cancel_text = null, string? icon_name = null, int transient_for = 0, GLib.SList<string>? columns = null, GLib.SList<string>? entries = null);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_topic_real")]
+-		public static void topic_real (Meta.DebugTopic topic, string format, ...);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_unsigned_long_equal")]
+-		public static int unsigned_long_equal (void* v1, void* v2);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_unsigned_long_hash")]
+-		public static uint unsigned_long_hash (void* v);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_verbose_real")]
+-		public static void verbose_real (string format, ...);
+-		[CCode (cheader_filename = "meta/main.h", cname = "meta_warning")]
+-		public static void warning (string format, ...);
+-	}
+-	[CCode (cheader_filename = "meta/main.h", type_id = "meta_backend_get_type ()")]
+-	public abstract class Backend : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Backend ();
+-		[CCode (cheader_filename = "meta/meta-backend.h", cname = "meta_get_backend")]
+-		public static unowned Meta.Backend get_backend ();
+-		public unowned Clutter.Actor get_stage ();
+-		public void lock_layout_group (uint idx);
+-		public void set_keymap (string layouts, string variants, string options);
+-		public signal void keymap_changed ();
+-		public signal void keymap_layout_group_changed (uint object);
+-		public signal void last_device_changed (int object);
+-	}
+-	[CCode (cheader_filename = "meta/meta-background.h", type_id = "meta_background_get_type ()")]
+-	public class Background : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		public Background (Meta.Screen screen);
+-		public static void refresh_all ();
+-		public void set_blend (GLib.File file1, GLib.File file2, double blend_factor, GDesktop.BackgroundStyle style);
+-		public void set_color (Clutter.Color color);
+-		public void set_file (GLib.File file, GDesktop.BackgroundStyle style);
+-		public void set_gradient (GDesktop.BackgroundShading shading_direction, Clutter.Color color, Clutter.Color second_color);
+-		[NoAccessorMethod]
+-		public Meta.Screen meta_screen { owned get; construct; }
+-		public signal void changed ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-actor.h", type_id = "meta_background_actor_get_type ()")]
+-	public class BackgroundActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		public BackgroundActor (Meta.Screen screen, int monitor);
+-		public void set_background (Meta.Background background);
+-		public void set_vignette (bool enabled, double brightness, double sharpness);
+-		[NoAccessorMethod]
+-		public Meta.Background background { owned get; set; }
+-		[NoAccessorMethod]
+-		public double brightness { get; set; }
+-		[NoAccessorMethod]
+-		public Meta.Screen meta_screen { owned get; construct; }
+-		[NoAccessorMethod]
+-		public int monitor { get; construct; }
+-		[NoAccessorMethod]
+-		public bool vignette { get; set; }
+-		[NoAccessorMethod]
+-		public double vignette_sharpness { get; set; }
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-group.h", type_id = "meta_background_group_get_type ()")]
+-	public class BackgroundGroup : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		public BackgroundGroup ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-image.h", type_id = "meta_background_image_get_type ()")]
+-	public class BackgroundImage : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected BackgroundImage ();
+-		public bool get_success ();
+-		public unowned Cogl.Texture get_texture ();
+-		public bool is_loaded ();
+-		public signal void loaded ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-image.h", type_id = "meta_background_image_cache_get_type ()")]
+-	public class BackgroundImageCache : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected BackgroundImageCache ();
+-		public static unowned Meta.BackgroundImageCache get_default ();
+-		public Meta.BackgroundImage load (GLib.File file);
+-		public void purge (GLib.File file);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h", type_id = "meta_barrier_get_type ()")]
+-	public class Barrier : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Barrier ();
+-		public void destroy ();
+-		public bool is_active ();
+-		public void release (Meta.BarrierEvent event);
+-		[NoAccessorMethod]
+-		public Meta.BarrierDirection directions { get; construct; }
+-		[NoAccessorMethod]
+-		public Meta.Display display { owned get; construct; }
+-		[NoAccessorMethod]
+-		public int x1 { get; construct; }
+-		[NoAccessorMethod]
+-		public int x2 { get; construct; }
+-		[NoAccessorMethod]
+-		public int y1 { get; construct; }
+-		[NoAccessorMethod]
+-		public int y2 { get; construct; }
+-		public signal void hit (Meta.BarrierEvent event);
+-		public signal void left (Meta.BarrierEvent event);
+-	}
+-	[CCode (cheader_filename = "meta/main.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_barrier_event_get_type ()")]
+-	[Compact]
+-	public class BarrierEvent {
+-		public int dt;
+-		public double dx;
+-		public double dy;
+-		public int event_id;
+-		public bool grabbed;
+-		public bool released;
+-		public uint32 time;
+-		public double x;
+-		public double y;
+-	}
+-	[CCode (cheader_filename = "meta/compositor.h")]
+-	[Compact]
+-	public class Compositor {
+-		public void add_window (Meta.Window window);
+-		public void destroy ();
+-		public bool filter_keybinding (Meta.KeyBinding binding);
+-		public void flash_screen (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_focus_stage_window")]
+-		public static void focus_stage_window (Meta.Screen screen, uint32 timestamp);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_feedback_group_for_screen")]
+-		public static unowned Clutter.Actor get_feedback_group_for_screen (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_stage_for_screen")]
+-		public static unowned Clutter.Actor? get_stage_for_screen (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_top_window_group_for_screen")]
+-		public static unowned Clutter.Actor? get_top_window_group_for_screen (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_window_actors")]
+-		public static unowned GLib.List<weak Meta.WindowActor>? get_window_actors (Meta.Screen screen);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_window_group_for_screen")]
+-		public static unowned Clutter.Actor? get_window_group_for_screen (Meta.Screen screen);
+-		public void hide_tile_preview ();
+-		public void hide_window (Meta.Window window, Meta.CompEffect effect);
+-		public void manage ();
+-		[CCode (cheader_filename = "meta/main.h")]
+-		public static unowned Meta.Compositor @new (Meta.Display display);
+-		public void queue_frame_drawn (Meta.Window window, bool no_delay_frame);
+-		public void remove_window (Meta.Window window);
+-		public void show_tile_preview (Meta.Window window, Meta.Rectangle tile_rect, int tile_monitor_number);
+-		public void show_window (Meta.Window window, Meta.CompEffect effect);
+-		public void show_window_menu (Meta.Window window, Meta.WindowMenuType menu, int x, int y);
+-		public void show_window_menu_for_rect (Meta.Window window, Meta.WindowMenuType menu, Meta.Rectangle rect);
+-		public void size_change_window (Meta.Window window, Meta.SizeChange which_change, Meta.Rectangle old_frame_rect, Meta.Rectangle old_buffer_rect);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_stage_is_focused")]
+-		public static bool stage_is_focused (Meta.Screen screen);
+-		public void switch_workspace (Meta.Workspace from, Meta.Workspace to, Meta.MotionDirection direction);
+-		public void sync_stack (GLib.List<Meta.WindowActor> stack);
+-		public void sync_updates_frozen (Meta.Window window);
+-		public void sync_window_geometry (Meta.Window window, bool did_placement);
+-		public void unmanage ();
+-		public void window_opacity_changed (Meta.Window window);
+-		public void window_shape_changed (Meta.Window window);
+-		public void window_surface_changed (Meta.Window window);
+-	}
+-	[CCode (cheader_filename = "meta/meta-cursor-tracker.h", type_id = "meta_cursor_tracker_get_type ()")]
+-	public class CursorTracker : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected CursorTracker ();
+-		public static unowned Meta.CursorTracker get_for_screen (Meta.Screen screen);
+-		public void get_hot (out int x, out int y);
+-		public void get_pointer (int x, int y, Clutter.ModifierType mods);
+-		public unowned Cogl.Texture get_sprite ();
+-		public void set_pointer_visible (bool visible);
+-		public signal void cursor_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/display.h", type_id = "meta_display_get_type ()")]
+-	public class Display : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Display ();
+-		public void add_ignored_crossing_serial (ulong serial);
+-		public uint add_keybinding (string name, GLib.Settings settings, Meta.KeyBindingFlags flags, owned Meta.KeyHandlerFunc handler);
+-		public bool begin_grab_op (Meta.Screen screen, Meta.Window window, Meta.GrabOp op, bool pointer_already_grabbed, bool frame_action, int button, ulong modmask, uint32 timestamp, int root_x, int root_y);
+-		public void clear_mouse_mode ();
+-		public void end_grab_op (uint32 timestamp);
+-		public void focus_the_no_focus_window (Meta.Screen screen, uint32 timestamp);
+-		public void freeze_keyboard (uint32 timestamp);
+-		public unowned Meta.Compositor get_compositor ();
+-		public uint32 get_current_time ();
+-		public uint32 get_current_time_roundtrip ();
+-		public int get_damage_event_base ();
+-		public unowned Meta.Window get_focus_window ();
+-		public Meta.GrabOp get_grab_op ();
+-		public uint get_keybinding_action (uint keycode, ulong mask);
+-		public uint32 get_last_user_time ();
+-		public int get_shape_event_base ();
+-		public unowned Meta.Window get_tab_current (Meta.TabList type, Meta.Workspace workspace);
+-		public GLib.List<weak Meta.Window> get_tab_list (Meta.TabList type, Meta.Workspace? workspace);
+-		public unowned Meta.Window get_tab_next (Meta.TabList type, Meta.Workspace workspace, Meta.Window? window, bool backward);
+-		public unowned X.Display get_xdisplay ();
+-		public int get_xinput_opcode ();
+-		public uint grab_accelerator (string accelerator);
+-		public bool has_shape ();
+-		public bool is_pointer_emulating_sequence (Clutter.EventSequence? sequence);
+-		public unowned Meta.Group lookup_group (X.Window group_leader);
+-		public bool remove_keybinding (string name);
+-		public void set_input_focus_window (Meta.Window window, bool focus_frame, uint32 timestamp);
+-		public GLib.SList<weak Meta.Window> sort_windows_by_stacking (GLib.SList<Meta.Window> windows);
+-		public bool supports_extended_barriers ();
+-		public void unfreeze_keyboard (uint32 timestamp);
+-		public bool ungrab_accelerator (uint action_id);
+-		public void ungrab_keyboard (uint32 timestamp);
+-		public void unmanage_screen (Meta.Screen screen, uint32 timestamp);
+-		public bool xserver_time_is_before (uint32 time1, uint32 time2);
+-		public bool xwindow_is_a_no_focus_window (X.Window xwindow);
+-		public signal void accelerator_activated (uint object, uint p0, uint p1);
+-		public signal void grab_op_begin (Meta.Screen object, Meta.Window p0, Meta.GrabOp p1);
+-		public signal void grab_op_end (Meta.Screen object, Meta.Window p0, Meta.GrabOp p1);
+-		public signal bool modifiers_accelerator_activated ();
+-		public signal void overlay_key ();
+-		public signal bool restart ();
+-		public signal bool show_resize_popup (bool object, Meta.Rectangle p0, int p1, int p2);
+-		public signal bool show_restart_message (string? message);
+-		public signal void window_created (Meta.Window object);
+-		public signal void window_demands_attention (Meta.Window object);
+-		public signal void window_marked_urgent (Meta.Window object);
+-	}
+-	[CCode (cheader_filename = "meta/common.h")]
+-	[Compact]
+-	public class Frame {
+-	}
+-	[CCode (cheader_filename = "meta/group.h")]
+-	[Compact]
+-	public class Group {
+-		public int get_size ();
+-		public unowned string get_startup_id ();
+-		public GLib.SList<weak Meta.Window> list_windows ();
+-		public bool property_notify (X.Event event);
+-		public void update_layers ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-idle-monitor.h", type_id = "meta_idle_monitor_get_type ()")]
+-	public class IdleMonitor : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected IdleMonitor ();
+-		public uint add_idle_watch (uint64 interval_msec, owned Meta.IdleMonitorWatchFunc? callback);
+-		public uint add_user_active_watch (owned Meta.IdleMonitorWatchFunc? callback);
+-		public static unowned Meta.IdleMonitor get_core ();
+-		public static unowned Meta.IdleMonitor get_for_device (int device_id);
+-		public int64 get_idletime ();
+-		public void remove_watch (uint id);
+-		[NoAccessorMethod]
+-		public int device_id { get; construct; }
+-	}
+-	[CCode (cheader_filename = "meta/keybindings.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_key_binding_get_type ()")]
+-	[Compact]
+-	public class KeyBinding {
+-		public uint get_mask ();
+-		public Meta.VirtualModifier get_modifiers ();
+-		public unowned string get_name ();
+-		public bool is_builtin ();
+-		public bool is_reversed ();
+-		[CCode (cheader_filename = "meta/keybindings.h", cname = "meta_keybindings_set_custom_handler")]
+-		public static bool set_custom_handler (string name, owned Meta.KeyHandlerFunc? handler);
+-	}
+-	[CCode (cheader_filename = "meta/meta-monitor-manager.h", type_id = "meta_monitor_manager_get_type ()")]
+-	public abstract class MonitorManager : GLib.DBusInterfaceSkeleton, GLib.DBusInterface {
+-		[CCode (has_construct_function = false)]
+-		protected MonitorManager ();
+-		public static unowned Meta.MonitorManager @get ();
+-		public int get_monitor_for_output (uint id);
+-		public signal void confirm_display_change ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", type_id = "meta_plugin_get_type ()")]
+-	public abstract class Plugin : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Plugin ();
+-		public bool begin_modal (Meta.ModalOptions options, uint32 timestamp);
+-		public void complete_display_change (bool ok);
+-		[NoWrapper]
+-		public virtual void confirm_display_change ();
+-		[NoWrapper]
+-		public virtual void destroy (Meta.WindowActor actor);
+-		public void destroy_completed (Meta.WindowActor actor);
+-		public void end_modal (uint32 timestamp);
+-		public unowned Meta.PluginInfo? get_info ();
+-		public unowned Meta.Screen get_screen ();
+-		[NoWrapper]
+-		public virtual void hide_tile_preview ();
+-		[NoWrapper]
+-		public virtual bool keybinding_filter (Meta.KeyBinding binding);
+-		[NoWrapper]
+-		public virtual void kill_switch_workspace ();
+-		[NoWrapper]
+-		public virtual void kill_window_effects (Meta.WindowActor actor);
+-		public static void manager_set_plugin_type (GLib.Type gtype);
+-		[NoWrapper]
+-		public virtual void map (Meta.WindowActor actor);
+-		public void map_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual void minimize (Meta.WindowActor actor);
+-		public void minimize_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual unowned Meta.PluginInfo? plugin_info ();
+-		[NoWrapper]
+-		public virtual void show_tile_preview (Meta.Window window, Meta.Rectangle tile_rect, int tile_monitor_number);
+-		[NoWrapper]
+-		public virtual void show_window_menu (Meta.Window window, Meta.WindowMenuType menu, int x, int y);
+-		[NoWrapper]
+-		public virtual void show_window_menu_for_rect (Meta.Window window, Meta.WindowMenuType menu, Meta.Rectangle rect);
+-		[NoWrapper]
+-		public virtual void size_change (Meta.WindowActor actor, Meta.SizeChange which_change, Meta.Rectangle old_frame_rect, Meta.Rectangle old_buffer_rect);
+-		public void size_change_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual void start ();
+-		[NoWrapper]
+-		public virtual void switch_workspace (int from, int to, Meta.MotionDirection direction);
+-		public void switch_workspace_completed ();
+- 		[NoWrapper]
+-		public virtual void unminimize (Meta.WindowActor actor);
+-		public void unminimize_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual bool xevent_filter (X.Event event);
+-	}
+-	[CCode (cheader_filename = "meta/screen.h", type_id = "meta_screen_get_type ()")]
+-	public class Screen : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Screen ();
+-		public unowned Meta.Workspace? append_new_workspace (bool activate, uint32 timestamp);
+-		public void focus_default_window (uint32 timestamp);
+-		public unowned Meta.Workspace get_active_workspace ();
+-		public int get_active_workspace_index ();
+-		public int get_current_monitor ();
+-		public int get_current_monitor_for_pos (int x, int y);
+-		public unowned Meta.Display get_display ();
+-		public Meta.Rectangle get_monitor_geometry (int monitor);
+-		public bool get_monitor_in_fullscreen (int monitor);
+-		public int get_monitor_index_for_rect (Meta.Rectangle rect);
+-		public int get_monitor_neighbor_index (int which_monitor, Meta.ScreenDirection dir);
+-		public int get_n_monitors ();
+-		public int get_n_workspaces ();
+-		public int get_primary_monitor ();
+-		public int get_screen_number ();
+-		public void get_size (out int width, out int height);
+-		public unowned Meta.Workspace? get_workspace_by_index (int index);
+-		public unowned GLib.List<Meta.Workspace> get_workspaces ();
+-		public X.Window get_xroot ();
+-		public void override_workspace_layout (Meta.ScreenCorner starting_corner, bool vertical_layout, int n_rows, int n_columns);
+-		public void remove_workspace (Meta.Workspace workspace, uint32 timestamp);
+-		public void set_cm_selection ();
+-		public void set_cursor (Meta.Cursor cursor);
+-		public int n_workspaces { get; }
+-		public signal void in_fullscreen_changed ();
+-		public signal void monitors_changed ();
+-		public signal void restacked ();
+-		public signal void startup_sequence_changed (void* object);
+-		public signal void window_entered_monitor (int object, Meta.Window p0);
+-		public signal void window_left_monitor (int object, Meta.Window p0);
+-		public signal void workareas_changed ();
+-		public signal void workspace_added (int object);
+-		public signal void workspace_removed (int object);
+-		public signal void workspace_switched (int object, int p0, Meta.MotionDirection p1);
+-	}
+-	[CCode (cheader_filename = "meta/meta-shadow-factory.h", ref_function = "meta_shadow_ref", type_id = "meta_shadow_get_type ()", unref_function = "meta_shadow_unref")]
+-	[Compact]
+-	public class Shadow {
+-		public void get_bounds (int window_x, int window_y, int window_width, int window_height, Cairo.RectangleInt bounds);
+-		public void paint (int window_x, int window_y, int window_width, int window_height, uint8 opacity, Cairo.Region? clip, bool clip_strictly);
+-		public Meta.Shadow @ref ();
+-		public void unref ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-shadow-factory.h", type_id = "meta_shadow_factory_get_type ()")]
+-	public class ShadowFactory : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		public ShadowFactory ();
+-		public static unowned Meta.ShadowFactory get_default ();
+-		public Meta.ShadowParams get_params (string class_name, bool focused);
+-		public Meta.Shadow get_shadow (Meta.WindowShape shape, int width, int height, string class_name, bool focused);
+-		public void set_params (string class_name, bool focused, Meta.ShadowParams @params);
+-		public signal void changed ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-shaped-texture.h", type_id = "meta_shaped_texture_get_type ()")]
+-	public class ShapedTexture : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected ShapedTexture ();
+-		public Cairo.Surface get_image (Cairo.RectangleInt clip);
+-		public unowned Cogl.Texture get_texture ();
+-		public void set_create_mipmaps (bool create_mipmaps);
+-		public void set_mask_texture (Cogl.Texture mask_texture);
+-		public void set_opaque_region (owned Cairo.Region opaque_region);
+-		public bool update_area (int x, int y, int width, int height);
+-		public signal void size_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/theme.h")]
+-	[Compact]
+-	public class Theme {
+-		public void free ();
+-		[CCode (cheader_filename = "meta/main.h")]
+-		public static unowned Meta.Theme get_default ();
+-		[CCode (cheader_filename = "meta/main.h")]
+-		public static unowned Meta.Theme @new ();
+-	}
+-	[CCode (cheader_filename = "meta/window.h", type_id = "meta_window_get_type ()")]
+-	public abstract class Window : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Window ();
+-		public void activate (uint32 current_time);
+-		public void activate_with_workspace (uint32 current_time, Meta.Workspace workspace);
+-		public bool allows_move ();
+-		public bool allows_resize ();
+-		public void begin_grab_op (Meta.GrabOp op, bool frame_action, uint32 timestamp);
+-		public bool can_close ();
+-		public bool can_maximize ();
+-		public bool can_minimize ();
+-		public bool can_shade ();
+-		public void change_workspace (Meta.Workspace workspace);
+-		public void change_workspace_by_index (int space_index, bool append);
+-		public void check_alive (uint32 timestamp);
+-		public Meta.Rectangle client_rect_to_frame_rect (Meta.Rectangle client_rect);
+-		public void compute_group ();
+-		public void @delete (uint32 timestamp);
+-		public unowned Meta.Window find_root_ancestor ();
+-		public void focus (uint32 timestamp);
+-		public void foreach_ancestor (Meta.WindowForeachFunc func);
+-		public void foreach_transient (Meta.WindowForeachFunc func);
+-		public Meta.Rectangle frame_rect_to_client_rect (Meta.Rectangle frame_rect);
+-		[CCode (array_length_pos = 0.1, array_length_type = "gsize")]
+-		public int[] get_all_monitors ();
+-		public Meta.Rectangle get_buffer_rect ();
+-		public unowned string get_client_machine ();
+-		public unowned GLib.Object get_compositor_private ();
+-		public unowned string get_description ();
+-		public unowned Meta.Display get_display ();
+-		public unowned Meta.Frame get_frame ();
+-		public unowned Cairo.Region? get_frame_bounds ();
+-		public Meta.Rectangle get_frame_rect ();
+-		public Meta.FrameType get_frame_type ();
+-		public unowned Meta.Group get_group ();
+-		public unowned string get_gtk_app_menu_object_path ();
+-		public unowned string get_gtk_application_id ();
+-		public unowned string get_gtk_application_object_path ();
+-		public unowned string get_gtk_menubar_object_path ();
+-		public unowned string get_gtk_theme_variant ();
+-		public unowned string get_gtk_unique_bus_name ();
+-		public unowned string get_gtk_window_object_path ();
+-		public bool get_icon_geometry (out Meta.Rectangle rect);
+-		public Meta.StackLayer get_layer ();
+-		public Meta.MaximizeFlags get_maximized ();
+-		public int get_monitor ();
+-		public unowned string get_mutter_hints ();
+-		public int get_pid ();
+-		public unowned string get_role ();
+-		public unowned Meta.Screen get_screen ();
+-		public uint get_stable_sequence ();
+-		public unowned string get_startup_id ();
+-		public unowned Meta.Window? get_tile_match ();
+-		public unowned string get_title ();
+-		public unowned Meta.Window get_transient_for ();
+-		public uint32 get_user_time ();
+-		public Meta.WindowType get_window_type ();
+-		public unowned string get_wm_class ();
+-		public unowned string get_wm_class_instance ();
+-		public Meta.Rectangle get_work_area_all_monitors ();
+-		public Meta.Rectangle get_work_area_current_monitor ();
+-		public Meta.Rectangle get_work_area_for_monitor (int which_monitor);
+-		public unowned Meta.Workspace get_workspace ();
+-		public X.Window get_xwindow ();
+-		public void group_leader_changed ();
+-		public bool has_focus ();
+-		public bool is_above ();
+-		public bool is_always_on_all_workspaces ();
+-		public bool is_ancestor_of_transient (Meta.Window transient);
+-		public bool is_attached_dialog ();
+-		public bool is_fullscreen ();
+-		public bool is_hidden ();
+-		public bool is_monitor_sized ();
+-		public bool is_on_all_workspaces ();
+-		public bool is_on_primary_monitor ();
+-		public bool is_override_redirect ();
+-		public bool is_remote ();
+-		public bool is_screen_sized ();
+-		public bool is_shaded ();
+-		public bool is_skip_taskbar ();
+-		public void kill ();
+-		public bool located_on_workspace (Meta.Workspace workspace);
+-		public void lower ();
+-		public void make_above ();
+-		public void make_fullscreen ();
+-		public void maximize (Meta.MaximizeFlags directions);
+-		public void minimize ();
+-		public void move_frame (bool user_op, int root_x_nw, int root_y_nw);
+-		public void move_resize_frame (bool user_op, int root_x_nw, int root_y_nw, int w, int h);
+-		public void move_to_monitor (int monitor);
+-		public void raise ();
+-		public bool requested_bypass_compositor ();
+-		public bool requested_dont_bypass_compositor ();
+-		public void set_compositor_private (GLib.Object priv);
+-		public void set_demands_attention ();
+-		public void set_icon_geometry (Meta.Rectangle? rect);
+-		public void shade (uint32 timestamp);
+-		public void shove_titlebar_onscreen ();
+-		public bool showing_on_its_workspace ();
+-		public void shutdown_group ();
+-		public void stick ();
+-		public bool titlebar_is_onscreen ();
+-		public void unmake_above ();
+-		public void unmake_fullscreen ();
+-		public void unmaximize (Meta.MaximizeFlags directions);
+-		public void unminimize ();
+-		public void unset_demands_attention ();
+-		public void unshade (uint32 timestamp);
+-		public void unstick ();
+-		[NoAccessorMethod]
+-		public bool above { get; }
+-		[NoAccessorMethod]
+-		public bool appears_focused { get; }
+-		[NoAccessorMethod]
+-		public bool decorated { get; }
+-		[NoAccessorMethod]
+-		public bool demands_attention { get; }
+-		[NoAccessorMethod]
+-		public bool fullscreen { get; }
+-		public string gtk_app_menu_object_path { get; }
+-		public string gtk_application_id { get; }
+-		public string gtk_application_object_path { get; }
+-		public string gtk_menubar_object_path { get; }
+-		public string gtk_unique_bus_name { get; }
+-		public string gtk_window_object_path { get; }
+-		[NoAccessorMethod]
+-		public Cairo.Surface icon { owned get; }
+-		[NoAccessorMethod]
+-		public bool maximized_horizontally { get; }
+-		[NoAccessorMethod]
+-		public bool maximized_vertically { get; }
+-		[NoAccessorMethod]
+-		public Cairo.Surface mini_icon { owned get; }
+-		[NoAccessorMethod]
+-		public bool minimized { get; }
+-		public string mutter_hints { get; }
+-		[NoAccessorMethod]
+-		public bool on_all_workspaces { get; }
+-		[NoAccessorMethod]
+-		public bool resizeable { get; }
+-		[NoAccessorMethod]
+-		public bool skip_taskbar { get; }
+-		public string title { get; }
+-		[NoAccessorMethod]
+-		public bool urgent { get; }
+-		public uint user_time { get; }
+-		public Meta.WindowType window_type { get; }
+-		public string wm_class { get; }
+-		[CCode (cname = "focus")]
+-		public signal void focused ();
+-		public signal void position_changed ();
+-		public signal void raised ();
+-		public signal void size_changed ();
+-		public signal void unmanaged ();
+-		public signal void workspace_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-window-actor.h", type_id = "meta_window_actor_get_type ()")]
+-	public class WindowActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected WindowActor ();
+-		public unowned Meta.Window get_meta_window ();
+-		public unowned Clutter.Actor get_texture ();
+-		public X.Window get_x_window ();
+-		public bool is_destroyed ();
+-		[NoAccessorMethod]
+-		public string shadow_class { owned get; set; }
+-		[NoAccessorMethod]
+-		public Meta.ShadowMode shadow_mode { get; set; }
+-		public signal void first_frame ();
+-	}
+-	[CCode (cheader_filename = "meta/meta_window_shape.h", ref_function = "meta_window_shape_ref", type_id = "meta_window_shape_get_type ()", unref_function = "meta_window_shape_unref")]
+-	[Compact]
+-	public class WindowShape {
+-		[CCode (has_construct_function = false)]
+-		public WindowShape (Cairo.Region region);
+-		public bool equal (Meta.WindowShape shape_b);
+-		public void get_borders (int border_top, int border_right, int border_bottom, int border_left);
+-		public uint hash ();
+-		public Meta.WindowShape @ref ();
+-		public Cairo.Region to_region (int center_width, int center_height);
+-		public void unref ();
+-	}
+-	[CCode (cheader_filename = "meta/workspace.h", type_id = "meta_workspace_get_type ()")]
+-	public class Workspace : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Workspace ();
+-		public void activate (uint32 timestamp);
+-		public void activate_with_focus (Meta.Window focus_this, uint32 timestamp);
+-		public unowned Meta.Workspace get_neighbor (Meta.MotionDirection direction);
+-		public unowned Meta.Screen get_screen ();
+-		public Meta.Rectangle get_work_area_all_monitors ();
+-		public Meta.Rectangle get_work_area_for_monitor (int which_monitor);
+-		public int index ();
+-		public GLib.List<weak Meta.Window> list_windows ();
+-		public void set_builtin_struts (GLib.SList<Meta.Strut> struts);
+-		[NoAccessorMethod]
+-		public uint n_windows { get; }
+-		[NoAccessorMethod]
+-		public uint workspace_index { get; }
+-		public signal void window_added (Meta.Window object);
+-		public signal void window_removed (Meta.Window object);
+-	}
+-	[CCode (cheader_filename = "meta/common.h", has_type_id = false)]
+-	public struct ButtonLayout {
+-		[CCode (array_length = false, array_null_terminated = true)]
+-		public weak Meta.ButtonFunction[] left_buttons;
+-		[CCode (array_length = false, array_null_terminated = true)]
+-		public weak bool[] left_buttons_has_spacer;
+-		[CCode (array_length = false, array_null_terminated = true)]
+-		public weak Meta.ButtonFunction[] right_buttons;
+-		[CCode (array_length = false, array_null_terminated = true)]
+-		public weak bool[] right_buttons_has_spacer;
+-	}
+-	[CCode (cheader_filename = "meta/boxes.h", has_type_id = false)]
+-	public struct Edge {
+-		public Meta.Rectangle rect;
+-		public Meta.Side side_type;
+-		public Meta.EdgeType edge_type;
+-	}
+-	[CCode (cheader_filename = "meta/common.h", has_type_id = false)]
+-	public struct FrameBorders {
+-		public Gtk.Border visible;
+-		public Gtk.Border invisible;
+-		public Gtk.Border total;
+-		public void clear ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", has_type_id = false)]
+-	public struct PluginInfo {
+-		public weak string name;
+-		public weak string version;
+-		public weak string author;
+-		public weak string license;
+-		public weak string description;
+-	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", has_type_id = false)]
+-	public struct PluginVersion {
+-		public uint version_major;
+-		public uint version_minor;
+-		public uint version_micro;
+-		public uint version_api;
+-	}
+-	[CCode (cheader_filename = "meta/boxes.h", has_type_id = false)]
+-	public struct Rectangle {
+-		public int x;
+-		public int y;
+-		public int width;
+-		public int height;
+-		public int area ();
+-		public bool contains_rect (Meta.Rectangle inner_rect);
+-		public bool could_fit_rect (Meta.Rectangle inner_rect);
+-		public bool equal (Meta.Rectangle src2);
+-		public bool horiz_overlap (Meta.Rectangle rect2);
+-		public bool intersect (Meta.Rectangle src2, out Meta.Rectangle dest);
+-		public bool overlap (Meta.Rectangle rect2);
+-		public Meta.Rectangle union (Meta.Rectangle rect2);
+-		public bool vert_overlap (Meta.Rectangle rect2);
+-	}
+-	[CCode (cheader_filename = "meta/meta-shadow-factory.h", has_type_id = false)]
+-	public struct ShadowParams {
+-		public int radius;
+-		public int top_fade;
+-		public int x_offset;
+-		public int y_offset;
+-		public uint8 opacity;
+-	}
+-	[CCode (cheader_filename = "meta/boxes.h", has_type_id = false)]
+-	public struct Strut {
+-		public Meta.Rectangle rect;
+-		public Meta.Side side;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h", cprefix = "META_BARRIER_DIRECTION_", type_id = "meta_barrier_direction_get_type ()")]
+-	[Flags]
+-	public enum BarrierDirection {
+-		POSITIVE_X,
+-		POSITIVE_Y,
+-		NEGATIVE_X,
+-		NEGATIVE_Y
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_BUTTON_FUNCTION_", type_id = "meta_button_function_get_type ()")]
+-	public enum ButtonFunction {
+-		MENU,
+-		MINIMIZE,
+-		MAXIMIZE,
+-		CLOSE,
+-		SHADE,
+-		ABOVE,
+-		STICK,
+-		UNSHADE,
+-		UNABOVE,
+-		UNSTICK,
+-		APPMENU,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/compositor.h", cprefix = "META_COMP_EFFECT_", type_id = "meta_comp_effect_get_type ()")]
+-	public enum CompEffect {
+-		CREATE,
+-		UNMINIMIZE,
+-		DESTROY,
+-		MINIMIZE,
+-		NONE
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_CURSOR_", type_id = "meta_cursor_get_type ()")]
+-	public enum Cursor {
+-		NONE,
+-		DEFAULT,
+-		NORTH_RESIZE,
+-		SOUTH_RESIZE,
+-		WEST_RESIZE,
+-		EAST_RESIZE,
+-		SE_RESIZE,
+-		SW_RESIZE,
+-		NE_RESIZE,
+-		NW_RESIZE,
+-		MOVE_OR_RESIZE_WINDOW,
+-		BUSY,
+-		DND_IN_DRAG,
+-		DND_MOVE,
+-		DND_COPY,
+-		DND_UNSUPPORTED_TARGET,
+-		POINTING_HAND,
+-		CROSSHAIR,
+-		IBEAM,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/util.h", cprefix = "META_DEBUG_", type_id = "meta_debug_topic_get_type ()")]
+-	[Flags]
+-	public enum DebugTopic {
+-		VERBOSE,
+-		FOCUS,
+-		WORKAREA,
+-		STACK,
+-		THEMES,
+-		SM,
+-		EVENTS,
+-		WINDOW_STATE,
+-		WINDOW_OPS,
+-		GEOMETRY,
+-		PLACEMENT,
+-		PING,
+-		XINERAMA,
+-		KEYBINDINGS,
+-		SYNC,
+-		ERRORS,
+-		STARTUP,
+-		PREFS,
+-		GROUPS,
+-		RESIZING,
+-		SHAPES,
+-		COMPOSITOR,
+-		EDGE_RESISTANCE,
+-		DBUS
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_DIRECTION_", type_id = "meta_direction_get_type ()")]
+-	[Flags]
+-	public enum Direction {
+-		LEFT,
+-		RIGHT,
+-		TOP,
+-		BOTTOM,
+-		UP,
+-		DOWN,
+-		HORIZONTAL,
+-		VERTICAL
+-	}
+-	[CCode (cheader_filename = "meta/boxes.h", cprefix = "META_EDGE_", type_id = "meta_edge_type_get_type ()")]
+-	public enum EdgeType {
+-		WINDOW,
+-		MONITOR,
+-		SCREEN
+-	}
+-	[CCode (cheader_filename = "meta/main.h", cprefix = "META_EXIT_", type_id = "meta_exit_code_get_type ()")]
+-	public enum ExitCode {
+-		SUCCESS,
+-		ERROR
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_FRAME_", type_id = "meta_frame_flags_get_type ()")]
+-	[Flags]
+-	public enum FrameFlags {
+-		ALLOWS_DELETE,
+-		ALLOWS_MENU,
+-		ALLOWS_APPMENU,
+-		ALLOWS_MINIMIZE,
+-		ALLOWS_MAXIMIZE,
+-		ALLOWS_VERTICAL_RESIZE,
+-		ALLOWS_HORIZONTAL_RESIZE,
+-		HAS_FOCUS,
+-		SHADED,
+-		STUCK,
+-		MAXIMIZED,
+-		ALLOWS_SHADE,
+-		ALLOWS_MOVE,
+-		FULLSCREEN,
+-		IS_FLASHING,
+-		ABOVE,
+-		TILED_LEFT,
+-		TILED_RIGHT
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_FRAME_TYPE_", type_id = "meta_frame_type_get_type ()")]
+-	public enum FrameType {
+-		NORMAL,
+-		DIALOG,
+-		MODAL_DIALOG,
+-		UTILITY,
+-		MENU,
+-		BORDER,
+-		ATTACHED,
+-		LAST;
+-		[CCode (cheader_filename = "meta/main.h")]
+-		public static unowned string to_string (Meta.FrameType type);
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_GRAB_OP_", type_id = "meta_grab_op_get_type ()")]
+-	public enum GrabOp {
+-		NONE,
+-		COMPOSITOR,
+-		WAYLAND_POPUP,
+-		WINDOW_BASE,
+-		FRAME_BUTTON,
+-		MOVING,
+-		RESIZING_NW,
+-		RESIZING_N,
+-		RESIZING_NE,
+-		RESIZING_E,
+-		RESIZING_SW,
+-		RESIZING_S,
+-		RESIZING_SE,
+-		RESIZING_W,
+-		KEYBOARD_MOVING,
+-		KEYBOARD_RESIZING_UNKNOWN,
+-		KEYBOARD_RESIZING_NW,
+-		KEYBOARD_RESIZING_N,
+-		KEYBOARD_RESIZING_NE,
+-		KEYBOARD_RESIZING_E,
+-		KEYBOARD_RESIZING_SW,
+-		KEYBOARD_RESIZING_S,
+-		KEYBOARD_RESIZING_SE,
+-		KEYBOARD_RESIZING_W
+-	}
+-	[CCode (cheader_filename = "meta/prefs.h", cprefix = "META_KEYBINDING_ACTION_", type_id = "meta_key_binding_action_get_type ()")]
+-	public enum KeyBindingAction {
+-		NONE,
+-		WORKSPACE_1,
+-		WORKSPACE_2,
+-		WORKSPACE_3,
+-		WORKSPACE_4,
+-		WORKSPACE_5,
+-		WORKSPACE_6,
+-		WORKSPACE_7,
+-		WORKSPACE_8,
+-		WORKSPACE_9,
+-		WORKSPACE_10,
+-		WORKSPACE_11,
+-		WORKSPACE_12,
+-		WORKSPACE_LEFT,
+-		WORKSPACE_RIGHT,
+-		WORKSPACE_UP,
+-		WORKSPACE_DOWN,
+-		WORKSPACE_LAST,
+-		SWITCH_APPLICATIONS,
+-		SWITCH_APPLICATIONS_BACKWARD,
+-		SWITCH_GROUP,
+-		SWITCH_GROUP_BACKWARD,
+-		SWITCH_WINDOWS,
+-		SWITCH_WINDOWS_BACKWARD,
+-		SWITCH_PANELS,
+-		SWITCH_PANELS_BACKWARD,
+-		CYCLE_GROUP,
+-		CYCLE_GROUP_BACKWARD,
+-		CYCLE_WINDOWS,
+-		CYCLE_WINDOWS_BACKWARD,
+-		CYCLE_PANELS,
+-		CYCLE_PANELS_BACKWARD,
+-		SHOW_DESKTOP,
+-		PANEL_MAIN_MENU,
+-		PANEL_RUN_DIALOG,
+-		TOGGLE_RECORDING,
+-		SET_SPEW_MARK,
+-		ACTIVATE_WINDOW_MENU,
+-		TOGGLE_FULLSCREEN,
+-		TOGGLE_MAXIMIZED,
+-		TOGGLE_TILED_LEFT,
+-		TOGGLE_TILED_RIGHT,
+-		TOGGLE_ABOVE,
+-		MAXIMIZE,
+-		UNMAXIMIZE,
+-		TOGGLE_SHADED,
+-		MINIMIZE,
+-		CLOSE,
+-		BEGIN_MOVE,
+-		BEGIN_RESIZE,
+-		TOGGLE_ON_ALL_WORKSPACES,
+-		MOVE_TO_WORKSPACE_1,
+-		MOVE_TO_WORKSPACE_2,
+-		MOVE_TO_WORKSPACE_3,
+-		MOVE_TO_WORKSPACE_4,
+-		MOVE_TO_WORKSPACE_5,
+-		MOVE_TO_WORKSPACE_6,
+-		MOVE_TO_WORKSPACE_7,
+-		MOVE_TO_WORKSPACE_8,
+-		MOVE_TO_WORKSPACE_9,
+-		MOVE_TO_WORKSPACE_10,
+-		MOVE_TO_WORKSPACE_11,
+-		MOVE_TO_WORKSPACE_12,
+-		MOVE_TO_WORKSPACE_LEFT,
+-		MOVE_TO_WORKSPACE_RIGHT,
+-		MOVE_TO_WORKSPACE_UP,
+-		MOVE_TO_WORKSPACE_DOWN,
+-		MOVE_TO_WORKSPACE_LAST,
+-		MOVE_TO_MONITOR_LEFT,
+-		MOVE_TO_MONITOR_RIGHT,
+-		MOVE_TO_MONITOR_UP,
+-		MOVE_TO_MONITOR_DOWN,
+-		RAISE_OR_LOWER,
+-		RAISE,
+-		LOWER,
+-		MAXIMIZE_VERTICALLY,
+-		MAXIMIZE_HORIZONTALLY,
+-		MOVE_TO_CORNER_NW,
+-		MOVE_TO_CORNER_NE,
+-		MOVE_TO_CORNER_SW,
+-		MOVE_TO_CORNER_SE,
+-		MOVE_TO_SIDE_N,
+-		MOVE_TO_SIDE_S,
+-		MOVE_TO_SIDE_E,
+-		MOVE_TO_SIDE_W,
+-		MOVE_TO_CENTER,
+-		OVERLAY_KEY,
+-		ISO_NEXT_GROUP,
+-		ALWAYS_ON_TOP,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/prefs.h", cprefix = "META_KEY_BINDING_", type_id = "meta_key_binding_flags_get_type ()")]
+-	[Flags]
+-	public enum KeyBindingFlags {
+-		NONE,
+-		PER_WINDOW,
+-		BUILTIN,
+-		IS_REVERSED
+-	}
+-	[CCode (cheader_filename = "meta/util.h", cprefix = "META_LATER_", type_id = "meta_later_type_get_type ()")]
+-	public enum LaterType {
+-		RESIZE,
+-		CALC_SHOWING,
+-		CHECK_FULLSCREEN,
+-		SYNC_STACK,
+-		BEFORE_REDRAW,
+-		IDLE
+-	}
+-	[CCode (cheader_filename = "meta/util.h", cprefix = "META_LOCALE_DIRECTION_", type_id = "meta_locale_direction_get_type ()")]
+-	public enum LocaleDirection {
+-		LTR,
+-		RTL
+-	}
+-	[CCode (cheader_filename = "meta/window.h", cprefix = "META_MAXIMIZE_", type_id = "meta_maximize_flags_get_type ()")]
+-	[Flags]
+-	public enum MaximizeFlags {
+-		HORIZONTAL,
+-		VERTICAL,
+-		BOTH
+-	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", cprefix = "META_MODAL_", type_id = "meta_modal_options_get_type ()")]
+-	[Flags]
+-	public enum ModalOptions {
+-		POINTER_ALREADY_GRABBED,
+-		KEYBOARD_ALREADY_GRABBED
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_MOTION_", type_id = "meta_motion_direction_get_type ()")]
+-	public enum MotionDirection {
+-		UP,
+-		DOWN,
+-		LEFT,
+-		RIGHT,
+-		UP_LEFT,
+-		UP_RIGHT,
+-		DOWN_LEFT,
+-		DOWN_RIGHT
+-	}
+-	[CCode (cheader_filename = "meta/prefs.h", cprefix = "META_PREF_", type_id = "meta_preference_get_type ()")]
+-	public enum Preference {
+-		MOUSE_BUTTON_MODS,
+-		FOCUS_MODE,
+-		FOCUS_NEW_WINDOWS,
+-		ATTACH_MODAL_DIALOGS,
+-		RAISE_ON_CLICK,
+-		ACTION_DOUBLE_CLICK_TITLEBAR,
+-		ACTION_MIDDLE_CLICK_TITLEBAR,
+-		ACTION_RIGHT_CLICK_TITLEBAR,
+-		AUTO_RAISE,
+-		AUTO_RAISE_DELAY,
+-		FOCUS_CHANGE_ON_POINTER_REST,
+-		TITLEBAR_FONT,
+-		NUM_WORKSPACES,
+-		DYNAMIC_WORKSPACES,
+-		KEYBINDINGS,
+-		DISABLE_WORKAROUNDS,
+-		BUTTON_LAYOUT,
+-		WORKSPACE_NAMES,
+-		VISUAL_BELL,
+-		AUDIBLE_BELL,
+-		VISUAL_BELL_TYPE,
+-		GNOME_ACCESSIBILITY,
+-		GNOME_ANIMATIONS,
+-		CURSOR_THEME,
+-		CURSOR_SIZE,
+-		RESIZE_WITH_RIGHT_BUTTON,
+-		EDGE_TILING,
+-		FORCE_FULLSCREEN,
+-		WORKSPACES_ONLY_ON_PRIMARY,
+-		DRAGGABLE_BORDER_WIDTH,
+-		AUTO_MAXIMIZE,
+-		CENTER_NEW_WINDOWS,
+-		DRAG_THRESHOLD;
+-		[CCode (cheader_filename = "meta/main.h")]
+-		public static unowned string to_string (Meta.Preference pref);
+-	}
+-	[CCode (cheader_filename = "meta/screen.h", cprefix = "META_SCREEN_", type_id = "meta_screen_corner_get_type ()")]
+-	public enum ScreenCorner {
+-		TOPLEFT,
+-		TOPRIGHT,
+-		BOTTOMLEFT,
+-		BOTTOMRIGHT
+-	}
+-	[CCode (cheader_filename = "meta/meta-enum-types.h", cprefix = "META_SCREEN_", type_id = "meta_screen_direction_get_type ()")]
+-	public enum ScreenDirection {
+-		UP,
+-		DOWN,
+-		LEFT,
+-		RIGHT
+-	}
+-	[CCode (cheader_filename = "meta/meta-enum-types.h", cprefix = "META_SHADOW_MODE_", type_id = "meta_shadow_mode_get_type ()")]
+-	public enum ShadowMode {
+-		AUTO,
+-		FORCED_OFF,
+-		FORCED_ON
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_SIDE_", type_id = "meta_side_get_type ()")]
+-	public enum Side {
+-		LEFT,
+-		RIGHT,
+-		TOP,
+-		BOTTOM
+-	}
+-	[CCode (cheader_filename = "meta/meta-enum-types.h", cprefix = "META_SIZE_CHANGE_", type_id = "meta_size_change_get_type ()")]
+-	public enum SizeChange {
+-		MAXIMIZE,
+-		UNMAXIMIZE,
+-		FULLSCREEN,
+-		UNFULLSCREEN
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_LAYER_", type_id = "meta_stack_layer_get_type ()")]
+-	public enum StackLayer {
+-		DESKTOP,
+-		BOTTOM,
+-		NORMAL,
+-		TOP,
+-		DOCK,
+-		FULLSCREEN,
+-		FOCUSED_WINDOW,
+-		OVERRIDE_REDIRECT,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_TAB_LIST_", type_id = "meta_tab_list_get_type ()")]
+-	public enum TabList {
+-		NORMAL,
+-		DOCKS,
+-		GROUP,
+-		NORMAL_ALL
+-	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_TAB_SHOW_", type_id = "meta_tab_show_type_get_type ()")]
+-	public enum TabShowType {
+-		ICON,
+-		INSTANTLY
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_VIRTUAL_", type_id = "meta_virtual_modifier_get_type ()")]
+-	[Flags]
+-	public enum VirtualModifier {
+-		SHIFT_MASK,
+-		CONTROL_MASK,
+-		ALT_MASK,
+-		META_MASK,
+-		SUPER_MASK,
+-		HYPER_MASK,
+-		MOD2_MASK,
+-		MOD3_MASK,
+-		MOD4_MASK,
+-		MOD5_MASK
+-	}
+-	[CCode (cheader_filename = "meta/window.h", cprefix = "META_WINDOW_CLIENT_TYPE_", type_id = "meta_window_client_type_get_type ()")]
+-	public enum WindowClientType {
+-		WAYLAND,
+-		X11
+-	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_WINDOW_MENU_", type_id = "meta_window_menu_type_get_type ()")]
+-	public enum WindowMenuType {
+-		WM,
+-		APP
+-	}
+-	[CCode (cheader_filename = "meta/window.h", cprefix = "META_WINDOW_", type_id = "meta_window_type_get_type ()")]
+-	public enum WindowType {
+-		NORMAL,
+-		DESKTOP,
+-		DOCK,
+-		DIALOG,
+-		MODAL_DIALOG,
+-		TOOLBAR,
+-		MENU,
+-		UTILITY,
+-		SPLASHSCREEN,
+-		DROPDOWN_MENU,
+-		POPUP_MENU,
+-		TOOLTIP,
+-		NOTIFICATION,
+-		COMBO,
+-		DND,
+-		OVERRIDE_OTHER
+-	}
+-	[CCode (cheader_filename = "meta/meta-idle-monitor.h", instance_pos = 2.9)]
+-	public delegate void IdleMonitorWatchFunc (Meta.IdleMonitor monitor, uint watch_id);
+-	[CCode (cheader_filename = "meta/prefs.h", instance_pos = 5.9)]
+-	public delegate void KeyHandlerFunc (Meta.Display display, Meta.Screen screen, Meta.Window? window, Clutter.KeyEvent? event, Meta.KeyBinding binding);
+-	[CCode (cheader_filename = "meta/prefs.h", instance_pos = 1.9)]
+-	public delegate void PrefsChangedFunc (Meta.Preference pref);
+-	[CCode (cheader_filename = "meta/window.h", instance_pos = 1.9)]
+-	public delegate bool WindowForeachFunc (Meta.Window window);
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_DEFAULT_ICON_NAME")]
+-	public const string DEFAULT_ICON_NAME;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_ICON_HEIGHT")]
+-	public const int ICON_HEIGHT;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_ICON_WIDTH")]
+-	public const int ICON_WIDTH;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_MAJOR_VERSION")]
+-	public const int MAJOR_VERSION;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_MICRO_VERSION")]
+-	public const int MICRO_VERSION;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_MINI_ICON_HEIGHT")]
+-	public const int MINI_ICON_HEIGHT;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_MINI_ICON_WIDTH")]
+-	public const int MINI_ICON_WIDTH;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_MINOR_VERSION")]
+-	public const int MINOR_VERSION;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_PLUGIN_API_VERSION")]
+-	public const int PLUGIN_API_VERSION;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_BEFORE_REDRAW")]
+-	public const int PRIORITY_BEFORE_REDRAW;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_PREFS_NOTIFY")]
+-	public const int PRIORITY_PREFS_NOTIFY;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_REDRAW")]
+-	public const int PRIORITY_REDRAW;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_RESIZE")]
+-	public const int PRIORITY_RESIZE;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_VIRTUAL_CORE_KEYBOARD_ID")]
+-	public const int VIRTUAL_CORE_KEYBOARD_ID;
+-	[CCode (cheader_filename = "meta/main.h", cname = "META_VIRTUAL_CORE_POINTER_ID")]
+-	public const int VIRTUAL_CORE_POINTER_ID;
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static bool activate_session ();
+- 	[CCode (cheader_filename = "meta/main.h")]
+-	public static void clutter_init ();
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static void exit (Meta.ExitCode code);
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static unowned GLib.OptionContext get_option_context ();
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static bool get_replace_current_wm ();
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static void init ();
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static bool is_restart ();
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static void quit (Meta.ExitCode code);
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static void register_with_session ();
+- 	[CCode (cheader_filename = "meta/main.h")]
+-	public static void restart (string message);
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static int run ();
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static void set_gnome_wm_keybindings (string wm_keybindings);
+-	[CCode (cheader_filename = "meta/main.h")]
+-	public static void set_wm_name (string wm_name);
+-}
+diff --git vapi/libmutter-3-custom.vala vapi/libmutter-3-custom.vala
+deleted file mode 100644
+index 29e5977d..00000000
+--- vapi/libmutter-3-custom.vala
++++ /dev/null
+@@ -1,6 +0,0 @@
+-namespace Meta {
+-	public abstract class MonitorManager : Meta.DBusDisplayConfigSkeleton, GLib.DBusInterface {
+-		/* not exported */
+-		public signal void monitors_changed ();
+-	}
+-}
+diff --git vapi/libmutter-3.deps vapi/libmutter-3.deps
+deleted file mode 100644
+index 1f3c9079..00000000
+--- vapi/libmutter-3.deps
++++ /dev/null
+@@ -1,9 +0,0 @@
+-cairo
+-gsettings-desktop-schemas
+-gdk-3.0
+-gdk-pixbuf-2.0
+-gtk+-3.0
+-x11
+-xfixes-4.0
+-clutter-1.0
+-cogl-1.0
+diff --git vapi/libmutter-4.deps vapi/libmutter-4.deps
+deleted file mode 100644
+index 367c35b9..00000000
+--- vapi/libmutter-4.deps
++++ /dev/null
+@@ -1,8 +0,0 @@
+-gdk-3.0
+-gdk-pixbuf-2.0
+-gsettings-desktop-schemas
+-gtk+-3.0
+-mutter-clutter-4
+-mutter-cogl-4
+-x11
+-xfixes-4.0
+diff --git vapi/libmutter-4.vapi vapi/libmutter-4.vapi
+deleted file mode 100644
+index e0d356a0..00000000
+--- vapi/libmutter-4.vapi
++++ /dev/null
+@@ -1,1425 +0,0 @@
+-/* libmutter-4.vapi generated by vapigen, do not modify. */
+-
+-[CCode (cprefix = "Meta", gir_namespace = "Meta", gir_version = "4", lower_case_cprefix = "meta_")]
+-namespace Meta {
+-	namespace Compositor {
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_disable_unredirect_for_display")]
+-		public static void disable_unredirect_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_empty_stage_input_region")]
+-		public static void empty_stage_input_region (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_enable_unredirect_for_display")]
+-		public static void enable_unredirect_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_focus_stage_window")]
+-		public static void focus_stage_window (Meta.Display display, uint32 timestamp);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_feedback_group_for_display")]
+-		public static unowned Clutter.Actor get_feedback_group_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_stage_for_display")]
+-		public static unowned Clutter.Actor get_stage_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_top_window_group_for_display")]
+-		public static unowned Clutter.Actor get_top_window_group_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_window_actors")]
+-		public static unowned GLib.List<Clutter.Actor> get_window_actors (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_window_group_for_display")]
+-		public static unowned Clutter.Actor get_window_group_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_set_stage_input_region")]
+-		public static void set_stage_input_region (Meta.Display display, X.XserverRegion region);
+-	}
+-	namespace Prefs {
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_bell_is_audible")]
+-		public static bool prefs_bell_is_audible ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_change_workspace_name")]
+-		public static void prefs_change_workspace_name (int i, string name);
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_action_double_click_titlebar")]
+-		public static GDesktop.TitlebarAction prefs_get_action_double_click_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_action_middle_click_titlebar")]
+-		public static GDesktop.TitlebarAction prefs_get_action_middle_click_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_action_right_click_titlebar")]
+-		public static GDesktop.TitlebarAction prefs_get_action_right_click_titlebar ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_attach_modal_dialogs")]
+-		public static bool prefs_get_attach_modal_dialogs ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_auto_maximize")]
+-		public static bool prefs_get_auto_maximize ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_auto_raise")]
+-		public static bool prefs_get_auto_raise ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_auto_raise_delay")]
+-		public static int prefs_get_auto_raise_delay ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_button_layout")]
+-		public static Meta.ButtonLayout prefs_get_button_layout ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_center_new_windows")]
+-		public static bool prefs_get_center_new_windows ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_compositing_manager")]
+-		public static bool prefs_get_compositing_manager ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_cursor_size")]
+-		public static int prefs_get_cursor_size ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_cursor_theme")]
+-		public static unowned string prefs_get_cursor_theme ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_disable_workarounds")]
+-		public static bool prefs_get_disable_workarounds ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_drag_threshold")]
+-		public static int prefs_get_drag_threshold ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_draggable_border_width")]
+-		public static int prefs_get_draggable_border_width ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_dynamic_workspaces")]
+-		public static bool prefs_get_dynamic_workspaces ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_edge_tiling")]
+-		public static bool prefs_get_edge_tiling ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_focus_change_on_pointer_rest")]
+-		public static bool prefs_get_focus_change_on_pointer_rest ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_focus_mode")]
+-		public static GDesktop.FocusMode prefs_get_focus_mode ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_focus_new_windows")]
+-		public static GDesktop.FocusNewWindows prefs_get_focus_new_windows ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_force_fullscreen")]
+-		public static bool prefs_get_force_fullscreen ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_gnome_accessibility")]
+-		public static bool prefs_get_gnome_accessibility ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_gnome_animations")]
+-		public static bool prefs_get_gnome_animations ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_keybinding_action")]
+-		public static Meta.KeyBindingAction prefs_get_keybinding_action (string name);
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_mouse_button_menu")]
+-		public static int prefs_get_mouse_button_menu ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_mouse_button_mods")]
+-		public static Meta.VirtualModifier prefs_get_mouse_button_mods ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_mouse_button_resize")]
+-		public static int prefs_get_mouse_button_resize ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_num_workspaces")]
+-		public static int prefs_get_num_workspaces ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_raise_on_click")]
+-		public static bool prefs_get_raise_on_click ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_show_fallback_app_menu")]
+-		public static bool prefs_get_show_fallback_app_menu ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_titlebar_font")]
+-		public static unowned Pango.FontDescription prefs_get_titlebar_font ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_visual_bell")]
+-		public static bool prefs_get_visual_bell ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_visual_bell_type")]
+-		public static GDesktop.VisualBellType prefs_get_visual_bell_type ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_workspace_name")]
+-		public static unowned string prefs_get_workspace_name (int i);
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_workspaces_only_on_primary")]
+-		public static bool prefs_get_workspaces_only_on_primary ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_init")]
+-		public static void prefs_init ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_force_fullscreen")]
+-		public static void prefs_set_force_fullscreen (bool whether);
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_num_workspaces")]
+-		public static void prefs_set_num_workspaces (int n_workspaces);
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_show_fallback_app_menu")]
+-		public static void prefs_set_show_fallback_app_menu (bool whether);
+-	}
+-	namespace Util {
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_add_verbose_topic")]
+-		public static void add_verbose_topic (Meta.DebugTopic topic);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_external_binding_name_for_action")]
+-		public static string external_binding_name_for_action (uint keybinding_action);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_g_utf8_strndup")]
+-		public static string g_utf8_strndup (string src, size_t n);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_get_locale_direction")]
+-		public static Meta.LocaleDirection get_locale_direction ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_gravity_to_string")]
+-		public static unowned string gravity_to_string (int gravity);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_is_debugging")]
+-		public static bool is_debugging ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_is_syncing")]
+-		public static bool is_syncing ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_is_verbose")]
+-		public static bool is_verbose ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_is_wayland_compositor")]
+-		public static bool is_wayland_compositor ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_later_add")]
+-		public static uint later_add (Meta.LaterType when, owned GLib.SourceFunc func);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_later_remove")]
+-		public static void later_remove (uint later_id);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_pop_no_msg_prefix")]
+-		public static void pop_no_msg_prefix ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_push_no_msg_prefix")]
+-		public static void push_no_msg_prefix ();
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_rect")]
+-		public static Meta.Rectangle? rect (int x, int y, int width, int height);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_remove_verbose_topic")]
+-		public static void remove_verbose_topic (Meta.DebugTopic topic);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_show_dialog")]
+-		public static GLib.Pid show_dialog (string type, string message, string timeout, string display, string ok_text, string cancel_text, string icon_name, int transient_for, GLib.SList<void*> columns, GLib.SList<void*> entries);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_unsigned_long_equal")]
+-		public static int unsigned_long_equal (void* v1, void* v2);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_unsigned_long_hash")]
+-		public static uint unsigned_long_hash (void* v);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_x11_error_trap_pop")]
+-		public static void x11_error_trap_pop (Meta.X11Display x11_display);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_x11_error_trap_pop_with_return")]
+-		public static int x11_error_trap_pop_with_return (Meta.X11Display x11_display);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_x11_error_trap_push")]
+-		public static void x11_error_trap_push (Meta.X11Display x11_display);
+-	}
+-	[CCode (cheader_filename = "meta/meta-backend.h", type_id = "meta_backend_get_type ()")]
+-	public abstract class Backend : GLib.Object, GLib.Initable {
+-		[CCode (has_construct_function = false)]
+-		protected Backend ();
+-		[CCode (cheader_filename = "meta/meta-backend.h", cname = "meta_get_backend")]
+-		public static unowned Meta.Backend get_backend ();
+-		public unowned Meta.Dnd get_dnd ();
+-		public unowned Meta.RemoteAccessController get_remote_access_controller ();
+-		public unowned Clutter.Actor get_stage ();
+-		public void lock_layout_group (uint idx);
+-		public void set_keymap (string layouts, string variants, string options);
+-		public void set_numlock (bool numlock_state);
+-		public signal void keymap_changed ();
+-		public signal void keymap_layout_group_changed (uint object);
+-		public signal void last_device_changed (int object);
+-		public signal void lid_is_closed_changed (bool object);
+-	}
+-	[CCode (cheader_filename = "meta/meta-background.h", type_id = "meta_background_get_type ()")]
+-	public class Background : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		public Background (Meta.Display display);
+-		public static void refresh_all ();
+-		public void set_blend (GLib.File file1, GLib.File file2, double blend_factor, GDesktop.BackgroundStyle style);
+-		public void set_color (Clutter.Color color);
+-		public void set_file (GLib.File file, GDesktop.BackgroundStyle style);
+-		public void set_gradient (GDesktop.BackgroundShading shading_direction, Clutter.Color color, Clutter.Color second_color);
+-		[NoAccessorMethod]
+-		public Meta.Display meta_display { owned get; construct; }
+-		public signal void changed ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-actor.h", type_id = "meta_background_actor_get_type ()")]
+-	public class BackgroundActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		public BackgroundActor (Meta.Display display, int monitor);
+-		public void set_background (Meta.Background background);
+-		public void set_gradient (bool enabled, int height, double tone_start);
+-		public void set_monitor (int monitor);
+-		public void set_vignette (bool enabled, double brightness, double sharpness);
+-		[NoAccessorMethod]
+-		public Meta.Background background { owned get; set; }
+-		[NoAccessorMethod]
+-		public double brightness { get; set; }
+-		[NoAccessorMethod]
+-		public bool gradient { get; set; }
+-		[NoAccessorMethod]
+-		public int gradient_height { get; set; }
+-		[NoAccessorMethod]
+-		public double gradient_max_darkness { get; set; }
+-		[NoAccessorMethod]
+-		public Meta.Display meta_display { owned get; construct; }
+-		[NoAccessorMethod]
+-		public int monitor { get; construct; }
+-		[NoAccessorMethod]
+-		public bool vignette { get; set; }
+-		[NoAccessorMethod]
+-		public double vignette_sharpness { get; set; }
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-group.h", type_id = "meta_background_group_get_type ()")]
+-	public class BackgroundGroup : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		public BackgroundGroup ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-image.h", type_id = "meta_background_image_get_type ()")]
+-	public class BackgroundImage : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected BackgroundImage ();
+-		public bool get_success ();
+-		public unowned Cogl.Texture get_texture ();
+-		public bool is_loaded ();
+-		public signal void loaded ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-background-image.h", type_id = "meta_background_image_cache_get_type ()")]
+-	public class BackgroundImageCache : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected BackgroundImageCache ();
+-		public static unowned Meta.BackgroundImageCache get_default ();
+-		public Meta.BackgroundImage load (GLib.File file);
+-		public void purge (GLib.File file);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_barrier_get_type ()")]
+-	public class Barrier : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Barrier ();
+-		public void destroy ();
+-		public bool is_active ();
+-		public void release (Meta.BarrierEvent event);
+-		[NoAccessorMethod]
+-		public Meta.BarrierDirection directions { get; construct; }
+-		[NoAccessorMethod]
+-		public Meta.Display display { owned get; construct; }
+-		[NoAccessorMethod]
+-		public int x1 { get; construct; }
+-		[NoAccessorMethod]
+-		public int x2 { get; construct; }
+-		[NoAccessorMethod]
+-		public int y1 { get; construct; }
+-		[NoAccessorMethod]
+-		public int y2 { get; construct; }
+-		public signal void hit (Meta.BarrierEvent event);
+-		public signal void left (Meta.BarrierEvent event);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_barrier_event_get_type ()")]
+-	[Compact]
+-	public class BarrierEvent {
+-		public int dt;
+-		public double dx;
+-		public double dy;
+-		public int event_id;
+-		public bool grabbed;
+-		public bool released;
+-		public uint32 time;
+-		public double x;
+-		public double y;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_cursor_tracker_get_type ()")]
+-	public class CursorTracker : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected CursorTracker ();
+-		public static unowned Meta.CursorTracker get_for_display (Meta.Display display);
+-		public void get_hot (out int x, out int y);
+-		public void get_pointer (int x, int y, Clutter.ModifierType mods);
+-		public unowned Cogl.Texture get_sprite ();
+-		public void set_pointer_visible (bool visible);
+-		public signal void cursor_changed ();
+-		public signal void cursor_moved (float object, float p0);
+-	}
+-	[CCode (cheader_filename = "meta/display.h", type_id = "meta_display_get_type ()")]
+-	public class Display : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Display ();
+-		public void add_ignored_crossing_serial (ulong serial);
+-		public uint add_keybinding (string name, GLib.Settings settings, Meta.KeyBindingFlags flags, owned Meta.KeyHandlerFunc handler);
+-		public bool begin_grab_op (Meta.Window window, Meta.GrabOp op, bool pointer_already_grabbed, bool frame_action, int button, ulong modmask, uint32 timestamp, int root_x, int root_y);
+-		public void clear_mouse_mode ();
+-		public void close (uint32 timestamp);
+-		public void end_grab_op (uint32 timestamp);
+-		public void focus_default_window (uint32 timestamp);
+-		public void freeze_keyboard (uint32 timestamp);
+-		public int get_current_monitor ();
+-		public uint32 get_current_time ();
+-		public uint32 get_current_time_roundtrip ();
+-		public unowned Meta.Window get_focus_window ();
+-		public Meta.GrabOp get_grab_op ();
+-		public uint get_keybinding_action (uint keycode, ulong mask);
+-		public uint32 get_last_user_time ();
+-		public Meta.Rectangle get_monitor_geometry (int monitor);
+-		public bool get_monitor_in_fullscreen (int monitor);
+-		public int get_monitor_index_for_rect (Meta.Rectangle rect);
+-		public int get_monitor_neighbor_index (int which_monitor, Meta.DisplayDirection dir);
+-		public int get_n_monitors ();
+-		public string get_pad_action_label (Clutter.InputDevice pad, Meta.PadActionType action_type, uint action_number);
+-		public int get_primary_monitor ();
+-		public void get_size (out int width, out int height);
+-		public unowned Meta.SoundPlayer get_sound_player ();
+-		public unowned Meta.Window get_tab_current (Meta.TabList type, Meta.Workspace workspace);
+-		public GLib.List<weak Meta.Window> get_tab_list (Meta.TabList type, Meta.Workspace? workspace);
+-		public unowned Meta.Window get_tab_next (Meta.TabList type, Meta.Workspace workspace, Meta.Window? window, bool backward);
+-		public unowned Meta.WorkspaceManager get_workspace_manager ();
+-		public uint grab_accelerator (string accelerator, Meta.KeyBindingFlags flags);
+-		public bool is_pointer_emulating_sequence (Clutter.EventSequence? sequence);
+-		public bool remove_keybinding (string name);
+-		public void request_pad_osd (Clutter.InputDevice pad, bool edition_mode);
+-		public void set_cursor (Meta.Cursor cursor);
+-		public GLib.SList<weak Meta.Window> sort_windows_by_stacking (GLib.SList<Meta.Window> windows);
+-		public bool supports_extended_barriers ();
+-		public void unfreeze_keyboard (uint32 timestamp);
+-		public bool ungrab_accelerator (uint action_id);
+-		public void ungrab_keyboard (uint32 timestamp);
+-		public bool xserver_time_is_before (uint32 time1, uint32 time2);
+-		public Meta.Window focus_window { get; }
+-		public signal void accelerator_activated (uint object, uint p0, uint p1);
+-		public signal void cursor_updated ();
+-		public signal void gl_video_memory_purged ();
+-		public signal void grab_op_begin (Meta.Display object, Meta.Window p0, Meta.GrabOp p1);
+-		public signal void grab_op_end (Meta.Display object, Meta.Window p0, Meta.GrabOp p1);
+-		public signal void in_fullscreen_changed ();
+-		public signal bool modifiers_accelerator_activated ();
+-		public signal void overlay_key ();
+-		public signal void pad_mode_switch (Clutter.InputDevice object, uint p0, uint p1);
+-		public signal void restacked ();
+-		public signal bool restart ();
+-		public signal void show_osd (int object, string p0, string p1);
+-		public signal unowned Clutter.Actor? show_pad_osd (Clutter.InputDevice pad, GLib.Settings settings, string layout_path, bool edition_mode, int monitor_idx);
+-		public signal bool show_resize_popup (bool object, Meta.Rectangle p0, int p1, int p2);
+-		public signal bool show_restart_message (string? message);
+-		public signal void showing_desktop_changed ();
+-		public signal void window_created (Meta.Window object);
+-		public signal void window_demands_attention (Meta.Window object);
+-		public signal void window_entered_monitor (int object, Meta.Window p0);
+-		public signal void window_left_monitor (int object, Meta.Window p0);
+-		public signal void window_marked_urgent (Meta.Window object);
+-		public signal void workareas_changed ();
+-		public signal void x11_display_closing ();
+-		public signal void x11_display_opened ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_dnd_get_type ()")]
+-	public class Dnd : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Dnd ();
+-		public signal void dnd_enter ();
+-		public signal void dnd_leave ();
+-		public signal void dnd_position_change (int object, int p0);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	[Compact]
+-	public class Frame {
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_idle_monitor_get_type ()")]
+-	public class IdleMonitor : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected IdleMonitor ();
+-		public uint add_idle_watch (uint64 interval_msec, owned Meta.IdleMonitorWatchFunc? callback);
+-		public uint add_user_active_watch (owned Meta.IdleMonitorWatchFunc? callback);
+-		public static unowned Meta.IdleMonitor get_core ();
+-		public static unowned Meta.IdleMonitor get_for_device (int device_id);
+-		public int64 get_idletime ();
+-		public void remove_watch (uint id);
+-		[NoAccessorMethod]
+-		public int device_id { get; construct; }
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_key_binding_get_type ()")]
+-	[Compact]
+-	public class KeyBinding {
+-		public uint get_mask ();
+-		public Meta.VirtualModifier get_modifiers ();
+-		public unowned string get_name ();
+-		public bool is_builtin ();
+-		public bool is_reversed ();
+-		[CCode (cname = "meta_keybindings_set_custom_handler")]
+-		public static bool set_custom_handler (string name, owned Meta.KeyHandlerFunc? handler);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_launch_context_get_type ()")]
+-	public class LaunchContext : GLib.AppLaunchContext {
+-		[CCode (has_construct_function = false)]
+-		protected LaunchContext ();
+-		public void set_timestamp (uint32 timestamp);
+-		public void set_workspace (Meta.Workspace workspace);
+-		[NoAccessorMethod]
+-		public Meta.Display display { owned get; construct; }
+-		[NoAccessorMethod]
+-		public uint timestamp { get; set; }
+-		[NoAccessorMethod]
+-		public Meta.Workspace workspace { owned get; set; }
+-	}
+-	[CCode (cheader_filename = "meta/meta-monitor-manager.h", type_id = "meta_monitor_manager_get_type ()")]
+-	public class MonitorManager : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected MonitorManager ();
+-		public bool can_switch_config ();
+-		public static unowned Meta.MonitorManager @get ();
+-		public static int get_display_configuration_timeout ();
+-		public bool get_is_builtin_display_on ();
+-		public int get_monitor_for_connector (string connector);
+-		public Meta.MonitorSwitchConfigType get_switch_config ();
+-		public void switch_config (Meta.MonitorSwitchConfigType config_type);
+-		[NoAccessorMethod]
+-		public Meta.Backend backend { owned get; construct; }
+-		public signal void confirm_display_change ();
+-		public signal void monitors_changed ();
+-		public signal void monitors_changed_internal ();
+-		public signal void power_save_mode_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", type_id = "meta_plugin_get_type ()")]
+-	public abstract class Plugin : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Plugin ();
+-		public bool begin_modal (Meta.ModalOptions options, uint32 timestamp);
+-		public void complete_display_change (bool ok);
+-		[NoWrapper]
+-		public virtual void confirm_display_change ();
+-		[NoWrapper]
+-		public virtual void destroy (Meta.WindowActor actor);
+-		public void destroy_completed (Meta.WindowActor actor);
+-		public void end_modal (uint32 timestamp);
+-		public unowned Meta.Display get_display ();
+-		public unowned Meta.PluginInfo? get_info ();
+-		[NoWrapper]
+-		public virtual void hide_tile_preview ();
+-		[NoWrapper]
+-		public virtual bool keybinding_filter (Meta.KeyBinding binding);
+-		[NoWrapper]
+-		public virtual void kill_switch_workspace ();
+-		[NoWrapper]
+-		public virtual void kill_window_effects (Meta.WindowActor actor);
+-		public static void manager_set_plugin_type (GLib.Type gtype);
+-		[NoWrapper]
+-		public virtual void map (Meta.WindowActor actor);
+-		public void map_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual void minimize (Meta.WindowActor actor);
+-		public void minimize_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual unowned Meta.PluginInfo? plugin_info ();
+-		[NoWrapper]
+-		public virtual void show_tile_preview (Meta.Window window, Meta.Rectangle tile_rect, int tile_monitor_number);
+-		[NoWrapper]
+-		public virtual void show_window_menu (Meta.Window window, Meta.WindowMenuType menu, int x, int y);
+-		[NoWrapper]
+-		public virtual void show_window_menu_for_rect (Meta.Window window, Meta.WindowMenuType menu, Meta.Rectangle rect);
+-		[NoWrapper]
+-		public virtual void size_change (Meta.WindowActor actor, Meta.SizeChange which_change, Meta.Rectangle old_frame_rect, Meta.Rectangle old_buffer_rect);
+-		public void size_change_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual void size_changed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual void start ();
+-		[NoWrapper]
+-		public virtual void switch_workspace (int from, int to, Meta.MotionDirection direction);
+-		public void switch_workspace_completed ();
+-		[NoWrapper]
+-		public virtual void unminimize (Meta.WindowActor actor);
+-		public void unminimize_completed (Meta.WindowActor actor);
+-		[NoWrapper]
+-		public virtual bool xevent_filter (X.Event event);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_remote_access_controller_get_type ()")]
+-	public class RemoteAccessController : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected RemoteAccessController ();
+-		public signal void new_handle (Meta.RemoteAccessHandle object);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_remote_access_handle_get_type ()")]
+-	public class RemoteAccessHandle : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected RemoteAccessHandle ();
+-		public virtual void stop ();
+-		public signal void stopped ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	[Compact]
+-	public class Settings {
+-		public int get_font_dpi ();
+-		public int get_ui_scaling_factor ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", ref_function = "meta_shadow_ref", type_id = "meta_shadow_get_type ()", unref_function = "meta_shadow_unref")]
+-	[Compact]
+-	public class Shadow {
+-		public void get_bounds (int window_x, int window_y, int window_width, int window_height, Cairo.RectangleInt bounds);
+-		public void paint (Cogl.Framebuffer framebuffer, int window_x, int window_y, int window_width, int window_height, uint8 opacity, Cairo.Region? clip, bool clip_strictly);
+-		public Meta.Shadow @ref ();
+-		public void unref ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_shadow_factory_get_type ()")]
+-	public class ShadowFactory : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		public ShadowFactory ();
+-		public static unowned Meta.ShadowFactory get_default ();
+-		public Meta.ShadowParams get_params (string class_name, bool focused);
+-		public Meta.Shadow get_shadow (Meta.WindowShape shape, int width, int height, string class_name, bool focused);
+-		public void set_params (string class_name, bool focused, Meta.ShadowParams @params);
+-		public signal void changed ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_shaped_texture_get_type ()")]
+-	public class ShapedTexture : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected ShapedTexture ();
+-		public Cairo.Surface get_image (Cairo.RectangleInt clip);
+-		public unowned Cogl.Texture get_texture ();
+-		public void set_create_mipmaps (bool create_mipmaps);
+-		public void set_mask_texture (Cogl.Texture mask_texture);
+-		public void set_opaque_region (owned Cairo.Region opaque_region);
+-		public bool update_area (int x, int y, int width, int height);
+-		public signal void size_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_sound_player_get_type ()")]
+-	public class SoundPlayer : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected SoundPlayer ();
+-		public void play_from_file (GLib.File file, string description, GLib.Cancellable? cancellable = null);
+-		public void play_from_theme (string name, string description, GLib.Cancellable? cancellable = null);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_stage_get_type ()")]
+-	public class Stage : Clutter.Stage, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected Stage ();
+-		public static bool is_focused (Meta.Display display);
+-		public signal void actors_painted ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_startup_notification_get_type ()")]
+-	public class StartupNotification : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected StartupNotification ();
+-		public Meta.LaunchContext create_launcher ();
+-		[NoAccessorMethod]
+-		public Meta.Display display { owned get; construct; }
+-		public signal void changed (void* object);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_startup_sequence_get_type ()")]
+-	public class StartupSequence : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected StartupSequence ();
+-		public void complete ();
+-		public unowned string get_application_id ();
+-		public bool get_completed ();
+-		public unowned string get_icon_name ();
+-		public unowned string get_id ();
+-		public unowned string get_name ();
+-		public uint64 get_timestamp ();
+-		public unowned string get_wmclass ();
+-		public int get_workspace ();
+-		public string application_id { get; construct; }
+-		public string icon_name { get; construct; }
+-		public string id { get; construct; }
+-		public string name { get; construct; }
+-		public uint64 timestamp { get; construct; }
+-		public string wmclass { get; construct; }
+-		public int workspace { get; construct; }
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	[Compact]
+-	public class Theme {
+-		public void free ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_window_get_type ()")]
+-	public abstract class Window : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Window ();
+-		public void activate (uint32 current_time);
+-		public void activate_with_workspace (uint32 current_time, Meta.Workspace workspace);
+-		public bool allows_move ();
+-		public bool allows_resize ();
+-		public void begin_grab_op (Meta.GrabOp op, bool frame_action, uint32 timestamp);
+-		public bool can_close ();
+-		public bool can_maximize ();
+-		public bool can_minimize ();
+-		public bool can_shade ();
+-		public void change_workspace (Meta.Workspace workspace);
+-		public void change_workspace_by_index (int space_index, bool append);
+-		public void check_alive (uint32 timestamp);
+-		public Meta.Rectangle client_rect_to_frame_rect (Meta.Rectangle client_rect);
+-		public void compute_group ();
+-		public void @delete (uint32 timestamp);
+-		public unowned Meta.Window find_root_ancestor ();
+-		public void focus (uint32 timestamp);
+-		public void foreach_ancestor (Meta.WindowForeachFunc func);
+-		public void foreach_transient (Meta.WindowForeachFunc func);
+-		public Meta.Rectangle frame_rect_to_client_rect (Meta.Rectangle frame_rect);
+-		public Meta.Rectangle get_buffer_rect ();
+-		public unowned string get_client_machine ();
+-		public Meta.WindowClientType get_client_type ();
+-		public unowned GLib.Object get_compositor_private ();
+-		public unowned string get_description ();
+-		public unowned Meta.Display get_display ();
+-		public unowned Cairo.Region? get_frame_bounds ();
+-		public Meta.Rectangle get_frame_rect ();
+-		public Meta.FrameType get_frame_type ();
+-		public unowned string get_gtk_app_menu_object_path ();
+-		public unowned string get_gtk_application_id ();
+-		public unowned string get_gtk_application_object_path ();
+-		public unowned string get_gtk_menubar_object_path ();
+-		public unowned string get_gtk_theme_variant ();
+-		public unowned string get_gtk_unique_bus_name ();
+-		public unowned string get_gtk_window_object_path ();
+-		public bool get_icon_geometry (out Meta.Rectangle rect);
+-		public uint64 get_id ();
+-		public Meta.StackLayer get_layer ();
+-		public Meta.MaximizeFlags get_maximized ();
+-		public int get_monitor ();
+-		public unowned string get_mutter_hints ();
+-		public int get_pid ();
+-		public unowned string get_role ();
+-		public unowned string get_sandboxed_app_id ();
+-		public uint get_stable_sequence ();
+-		public unowned string get_startup_id ();
+-		public unowned Meta.Window? get_tile_match ();
+-		public unowned string get_title ();
+-		public unowned Meta.Window get_transient_for ();
+-		public uint32 get_user_time ();
+-		public Meta.WindowType get_window_type ();
+-		public unowned string get_wm_class ();
+-		public unowned string get_wm_class_instance ();
+-		public Meta.Rectangle get_work_area_all_monitors ();
+-		public Meta.Rectangle get_work_area_current_monitor ();
+-		public Meta.Rectangle get_work_area_for_monitor (int which_monitor);
+-		public unowned Meta.Workspace get_workspace ();
+-		public X.Window get_xwindow ();
+-		public void group_leader_changed ();
+-		public bool has_focus ();
+-		public bool is_above ();
+-		public bool is_always_on_all_workspaces ();
+-		public bool is_ancestor_of_transient (Meta.Window transient);
+-		public bool is_attached_dialog ();
+-		public bool is_client_decorated ();
+-		public bool is_fullscreen ();
+-		public bool is_hidden ();
+-		public bool is_monitor_sized ();
+-		public bool is_on_all_workspaces ();
+-		public bool is_on_primary_monitor ();
+-		public bool is_override_redirect ();
+-		public bool is_remote ();
+-		public bool is_screen_sized ();
+-		public bool is_shaded ();
+-		public bool is_skip_taskbar ();
+-		public void kill ();
+-		public bool located_on_workspace (Meta.Workspace workspace);
+-		public void lower ();
+-		public void make_above ();
+-		public void make_fullscreen ();
+-		public void maximize (Meta.MaximizeFlags directions);
+-		public void minimize ();
+-		public void move_frame (bool user_op, int root_x_nw, int root_y_nw);
+-		public void move_resize_frame (bool user_op, int root_x_nw, int root_y_nw, int w, int h);
+-		public void move_to_monitor (int monitor);
+-		public void raise ();
+-		public bool requested_bypass_compositor ();
+-		public bool requested_dont_bypass_compositor ();
+-		public void set_compositor_private (GLib.Object priv);
+-		public void set_demands_attention ();
+-		public void set_icon_geometry (Meta.Rectangle? rect);
+-		public void shade (uint32 timestamp);
+-		public void shove_titlebar_onscreen ();
+-		public bool showing_on_its_workspace ();
+-		public void shutdown_group ();
+-		public void stick ();
+-		public bool titlebar_is_onscreen ();
+-		public void unmake_above ();
+-		public void unmake_fullscreen ();
+-		public void unmaximize (Meta.MaximizeFlags directions);
+-		public void unminimize ();
+-		public void unset_demands_attention ();
+-		public void unshade (uint32 timestamp);
+-		public void unstick ();
+-		[NoAccessorMethod]
+-		public bool above { get; }
+-		[NoAccessorMethod]
+-		public bool appears_focused { get; }
+-		[NoAccessorMethod]
+-		public bool decorated { get; }
+-		[NoAccessorMethod]
+-		public bool demands_attention { get; }
+-		[NoAccessorMethod]
+-		public bool fullscreen { get; }
+-		public string gtk_app_menu_object_path { get; }
+-		public string gtk_application_id { get; }
+-		public string gtk_application_object_path { get; }
+-		public string gtk_menubar_object_path { get; }
+-		public string gtk_unique_bus_name { get; }
+-		public string gtk_window_object_path { get; }
+-		[NoAccessorMethod]
+-		public void* icon { get; }
+-		[NoAccessorMethod]
+-		public bool maximized_horizontally { get; }
+-		[NoAccessorMethod]
+-		public bool maximized_vertically { get; }
+-		[NoAccessorMethod]
+-		public void* mini_icon { get; }
+-		[NoAccessorMethod]
+-		public bool minimized { get; }
+-		public string mutter_hints { get; }
+-		[NoAccessorMethod]
+-		public bool on_all_workspaces { get; }
+-		[NoAccessorMethod]
+-		public bool resizeable { get; }
+-		[NoAccessorMethod]
+-		public bool skip_taskbar { get; }
+-		public string title { get; }
+-		[NoAccessorMethod]
+-		public bool urgent { get; }
+-		public uint user_time { get; }
+-		public Meta.WindowType window_type { get; }
+-		public string wm_class { get; }
+-		public signal void position_changed ();
+-		public signal void raised ();
+-		public signal void shown ();
+-		public signal void size_changed ();
+-		public signal void unmanaged ();
+-		public signal void workspace_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_window_actor_get_type ()")]
+-	public abstract class WindowActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected WindowActor ();
+-		public unowned Meta.Window get_meta_window ();
+-		public unowned Clutter.Actor get_texture ();
+-		public X.Window get_x_window ();
+-		public bool is_destroyed ();
+-		public void sync_visibility ();
+-		public Meta.Window meta_window { get; construct; }
+-		[NoAccessorMethod]
+-		public string shadow_class { owned get; set; }
+-		[NoAccessorMethod]
+-		public Meta.ShadowMode shadow_mode { get; set; }
+-		public signal void effects_completed ();
+-		public signal void first_frame ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_window_group_get_type ()")]
+-	public class WindowGroup : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected WindowGroup ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", ref_function = "meta_window_shape_ref", type_id = "meta_window_shape_get_type ()", unref_function = "meta_window_shape_unref")]
+-	[Compact]
+-	public class WindowShape {
+-		[CCode (has_construct_function = false)]
+-		public WindowShape (Cairo.Region region);
+-		public bool equal (Meta.WindowShape shape_b);
+-		public void get_borders (int border_top, int border_right, int border_bottom, int border_left);
+-		public uint hash ();
+-		public Meta.WindowShape @ref ();
+-		public Cairo.Region to_region (int center_width, int center_height);
+-		public void unref ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_workspace_get_type ()")]
+-	public class Workspace : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Workspace ();
+-		public void activate (uint32 timestamp);
+-		public void activate_with_focus (Meta.Window focus_this, uint32 timestamp);
+-		public unowned Meta.Display get_display ();
+-		public unowned Meta.Workspace get_neighbor (Meta.MotionDirection direction);
+-		public Meta.Rectangle get_work_area_all_monitors ();
+-		public Meta.Rectangle get_work_area_for_monitor (int which_monitor);
+-		public int index ();
+-		public GLib.List<weak Meta.Window> list_windows ();
+-		public void set_builtin_struts (GLib.SList<Meta.Strut?> struts);
+-		[NoAccessorMethod]
+-		public uint n_windows { get; }
+-		[NoAccessorMethod]
+-		public uint workspace_index { get; }
+-		public signal void window_added (Meta.Window object);
+-		public signal void window_removed (Meta.Window object);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_workspace_manager_get_type ()")]
+-	public class WorkspaceManager : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected WorkspaceManager ();
+-		public unowned Meta.Workspace append_new_workspace (bool activate, uint32 timestamp);
+-		public unowned Meta.Workspace get_active_workspace ();
+-		public int get_active_workspace_index ();
+-		public int get_n_workspaces ();
+-		public unowned Meta.Workspace get_workspace_by_index (int index);
+-		public void override_workspace_layout (Meta.DisplayCorner starting_corner, bool vertical_layout, int n_rows, int n_columns);
+-		public void remove_workspace (Meta.Workspace workspace, uint32 timestamp);
+-		public int n_workspaces { get; }
+-		public signal void active_workspace_changed ();
+-		public signal void showing_desktop_changed ();
+-		public signal void workspace_added (int object);
+-		public signal void workspace_removed (int object);
+-		public signal void workspace_switched (int object, int p0, Meta.MotionDirection p1);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_x11_display_get_type ()")]
+-	public class X11Display : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected X11Display ();
+-		public void focus_the_no_focus_window (uint32 timestamp);
+-		public int get_damage_event_base ();
+-		public int get_screen_number ();
+-		public int get_shape_event_base ();
+-		public bool has_shape ();
+-		public void set_cm_selection ();
+-		public void set_input_focus_window (Meta.Window window, bool focus_frame, uint32 timestamp);
+-		public bool xwindow_is_a_no_focus_window (X.Window xwindow);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_cname = "MetaCloseDialogInterface", type_id = "meta_close_dialog_get_type ()")]
+-	public interface CloseDialog : GLib.Object {
+-		public abstract void focus ();
+-		public abstract void hide ();
+-		public bool is_visible ();
+-		public abstract void show ();
+-		[NoAccessorMethod]
+-		public abstract Meta.Window window { owned get; construct; }
+-		[HasEmitter]
+-		public signal void response (Meta.CloseDialogResponse response);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_cname = "MetaInhibitShortcutsDialogInterface", type_id = "meta_inhibit_shortcuts_dialog_get_type ()")]
+-	public interface InhibitShortcutsDialog : GLib.Object {
+-		public abstract void hide ();
+-		public abstract void show ();
+-		[NoAccessorMethod]
+-		public abstract Meta.Window window { owned get; construct; }
+-		[HasEmitter]
+-		public signal void response (Meta.InhibitShortcutsDialogResponse response);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	public struct ButtonLayout {
+-		[CCode (array_length = false)]
+-		public weak Meta.ButtonFunction left_buttons[4];
+-		[CCode (array_length = false)]
+-		public weak bool left_buttons_has_spacer[4];
+-		[CCode (array_length = false)]
+-		public weak Meta.ButtonFunction right_buttons[4];
+-		[CCode (array_length = false)]
+-		public weak bool right_buttons_has_spacer[4];
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	public struct Edge {
+-		public Meta.Rectangle rect;
+-		public Meta.Side side_type;
+-		public Meta.EdgeType edge_type;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	public struct FrameBorders {
+-		public Gtk.Border visible;
+-		public Gtk.Border invisible;
+-		public Gtk.Border total;
+-		public void clear ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", has_type_id = false)]
+-	public struct PluginInfo {
+-		public weak string name;
+-		public weak string version;
+-		public weak string author;
+-		public weak string license;
+-		public weak string description;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	public struct PluginVersion {
+-		public uint version_major;
+-		public uint version_minor;
+-		public uint version_micro;
+-		public uint version_api;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", type_id = "meta_rectangle_get_type ()")]
+-	public struct Rectangle {
+-		public int x;
+-		public int y;
+-		public int width;
+-		public int height;
+-		public int area ();
+-		public bool contains_rect (Meta.Rectangle inner_rect);
+-		public Meta.Rectangle? copy ();
+-		public bool could_fit_rect (Meta.Rectangle inner_rect);
+-		public bool equal (Meta.Rectangle src2);
+-		public void free ();
+-		public bool horiz_overlap (Meta.Rectangle rect2);
+-		public bool intersect (Meta.Rectangle src2, out Meta.Rectangle dest);
+-		public bool overlap (Meta.Rectangle rect2);
+-		public Meta.Rectangle union (Meta.Rectangle rect2);
+-		public bool vert_overlap (Meta.Rectangle rect2);
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	public struct ShadowParams {
+-		public int radius;
+-		public int top_fade;
+-		public int x_offset;
+-		public int y_offset;
+-		public uint8 opacity;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", has_type_id = false)]
+-	public struct Strut {
+-		public Meta.Rectangle rect;
+-		public Meta.Side side;
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_BARRIER_DIRECTION_", type_id = "meta_barrier_direction_get_type ()")]
+-	[Flags]
+-	public enum BarrierDirection {
+-		POSITIVE_X,
+-		POSITIVE_Y,
+-		NEGATIVE_X,
+-		NEGATIVE_Y
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_BUTTON_FUNCTION_", type_id = "meta_button_function_get_type ()")]
+-	public enum ButtonFunction {
+-		MENU,
+-		MINIMIZE,
+-		MAXIMIZE,
+-		CLOSE,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_CLOSE_DIALOG_RESPONSE_", type_id = "meta_close_dialog_response_get_type ()")]
+-	public enum CloseDialogResponse {
+-		WAIT,
+-		FORCE_CLOSE
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_COMP_EFFECT_", type_id = "meta_comp_effect_get_type ()")]
+-	public enum CompEffect {
+-		CREATE,
+-		UNMINIMIZE,
+-		DESTROY,
+-		MINIMIZE,
+-		NONE
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_CURSOR_", type_id = "meta_cursor_get_type ()")]
+-	public enum Cursor {
+-		NONE,
+-		DEFAULT,
+-		NORTH_RESIZE,
+-		SOUTH_RESIZE,
+-		WEST_RESIZE,
+-		EAST_RESIZE,
+-		SE_RESIZE,
+-		SW_RESIZE,
+-		NE_RESIZE,
+-		NW_RESIZE,
+-		MOVE_OR_RESIZE_WINDOW,
+-		BUSY,
+-		DND_IN_DRAG,
+-		DND_MOVE,
+-		DND_COPY,
+-		DND_UNSUPPORTED_TARGET,
+-		POINTING_HAND,
+-		CROSSHAIR,
+-		IBEAM,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_DEBUG_", type_id = "meta_debug_topic_get_type ()")]
+-	[Flags]
+-	public enum DebugTopic {
+-		VERBOSE,
+-		FOCUS,
+-		WORKAREA,
+-		STACK,
+-		THEMES,
+-		SM,
+-		EVENTS,
+-		WINDOW_STATE,
+-		WINDOW_OPS,
+-		GEOMETRY,
+-		PLACEMENT,
+-		PING,
+-		XINERAMA,
+-		KEYBINDINGS,
+-		SYNC,
+-		ERRORS,
+-		STARTUP,
+-		PREFS,
+-		GROUPS,
+-		RESIZING,
+-		SHAPES,
+-		COMPOSITOR,
+-		EDGE_RESISTANCE,
+-		DBUS
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_DIRECTION_", type_id = "meta_direction_get_type ()")]
+-	[Flags]
+-	public enum Direction {
+-		LEFT,
+-		RIGHT,
+-		TOP,
+-		BOTTOM,
+-		UP,
+-		DOWN,
+-		HORIZONTAL,
+-		VERTICAL
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_DISPLAY_", type_id = "meta_display_corner_get_type ()")]
+-	public enum DisplayCorner {
+-		TOPLEFT,
+-		TOPRIGHT,
+-		BOTTOMLEFT,
+-		BOTTOMRIGHT
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_DISPLAY_", type_id = "meta_display_direction_get_type ()")]
+-	public enum DisplayDirection {
+-		UP,
+-		DOWN,
+-		LEFT,
+-		RIGHT
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_EDGE_", type_id = "meta_edge_type_get_type ()")]
+-	public enum EdgeType {
+-		WINDOW,
+-		MONITOR,
+-		SCREEN
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_EXIT_", type_id = "meta_exit_code_get_type ()")]
+-	public enum ExitCode {
+-		SUCCESS,
+-		ERROR
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_FRAME_", type_id = "meta_frame_flags_get_type ()")]
+-	[Flags]
+-	public enum FrameFlags {
+-		ALLOWS_DELETE,
+-		ALLOWS_MENU,
+-		ALLOWS_MINIMIZE,
+-		ALLOWS_MAXIMIZE,
+-		ALLOWS_VERTICAL_RESIZE,
+-		ALLOWS_HORIZONTAL_RESIZE,
+-		HAS_FOCUS,
+-		SHADED,
+-		STUCK,
+-		MAXIMIZED,
+-		ALLOWS_SHADE,
+-		ALLOWS_MOVE,
+-		FULLSCREEN,
+-		IS_FLASHING,
+-		ABOVE,
+-		TILED_LEFT,
+-		TILED_RIGHT
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_FRAME_TYPE_", type_id = "meta_frame_type_get_type ()")]
+-	public enum FrameType {
+-		NORMAL,
+-		DIALOG,
+-		MODAL_DIALOG,
+-		UTILITY,
+-		MENU,
+-		BORDER,
+-		ATTACHED,
+-		LAST;
+-		public unowned string to_string ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_GRAB_OP_", type_id = "meta_grab_op_get_type ()")]
+-	public enum GrabOp {
+-		NONE,
+-		WINDOW_BASE,
+-		COMPOSITOR,
+-		WAYLAND_POPUP,
+-		FRAME_BUTTON,
+-		MOVING,
+-		RESIZING_NW,
+-		RESIZING_N,
+-		RESIZING_NE,
+-		RESIZING_E,
+-		RESIZING_SW,
+-		RESIZING_S,
+-		RESIZING_SE,
+-		RESIZING_W,
+-		KEYBOARD_MOVING,
+-		KEYBOARD_RESIZING_UNKNOWN,
+-		KEYBOARD_RESIZING_NW,
+-		KEYBOARD_RESIZING_N,
+-		KEYBOARD_RESIZING_NE,
+-		KEYBOARD_RESIZING_E,
+-		KEYBOARD_RESIZING_SW,
+-		KEYBOARD_RESIZING_S,
+-		KEYBOARD_RESIZING_SE,
+-		KEYBOARD_RESIZING_W
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_", type_id = "meta_inhibit_shortcuts_dialog_response_get_type ()")]
+-	public enum InhibitShortcutsDialogResponse {
+-		ALLOW,
+-		DENY
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_KEYBINDING_ACTION_", type_id = "meta_key_binding_action_get_type ()")]
+-	public enum KeyBindingAction {
+-		NONE,
+-		WORKSPACE_1,
+-		WORKSPACE_2,
+-		WORKSPACE_3,
+-		WORKSPACE_4,
+-		WORKSPACE_5,
+-		WORKSPACE_6,
+-		WORKSPACE_7,
+-		WORKSPACE_8,
+-		WORKSPACE_9,
+-		WORKSPACE_10,
+-		WORKSPACE_11,
+-		WORKSPACE_12,
+-		WORKSPACE_LEFT,
+-		WORKSPACE_RIGHT,
+-		WORKSPACE_UP,
+-		WORKSPACE_DOWN,
+-		WORKSPACE_LAST,
+-		SWITCH_APPLICATIONS,
+-		SWITCH_APPLICATIONS_BACKWARD,
+-		SWITCH_GROUP,
+-		SWITCH_GROUP_BACKWARD,
+-		SWITCH_WINDOWS,
+-		SWITCH_WINDOWS_BACKWARD,
+-		SWITCH_PANELS,
+-		SWITCH_PANELS_BACKWARD,
+-		CYCLE_GROUP,
+-		CYCLE_GROUP_BACKWARD,
+-		CYCLE_WINDOWS,
+-		CYCLE_WINDOWS_BACKWARD,
+-		CYCLE_PANELS,
+-		CYCLE_PANELS_BACKWARD,
+-		SHOW_DESKTOP,
+-		PANEL_MAIN_MENU,
+-		PANEL_RUN_DIALOG,
+-		TOGGLE_RECORDING,
+-		SET_SPEW_MARK,
+-		ACTIVATE_WINDOW_MENU,
+-		TOGGLE_FULLSCREEN,
+-		TOGGLE_MAXIMIZED,
+-		TOGGLE_TILED_LEFT,
+-		TOGGLE_TILED_RIGHT,
+-		TOGGLE_ABOVE,
+-		MAXIMIZE,
+-		UNMAXIMIZE,
+-		TOGGLE_SHADED,
+-		MINIMIZE,
+-		CLOSE,
+-		BEGIN_MOVE,
+-		BEGIN_RESIZE,
+-		TOGGLE_ON_ALL_WORKSPACES,
+-		MOVE_TO_WORKSPACE_1,
+-		MOVE_TO_WORKSPACE_2,
+-		MOVE_TO_WORKSPACE_3,
+-		MOVE_TO_WORKSPACE_4,
+-		MOVE_TO_WORKSPACE_5,
+-		MOVE_TO_WORKSPACE_6,
+-		MOVE_TO_WORKSPACE_7,
+-		MOVE_TO_WORKSPACE_8,
+-		MOVE_TO_WORKSPACE_9,
+-		MOVE_TO_WORKSPACE_10,
+-		MOVE_TO_WORKSPACE_11,
+-		MOVE_TO_WORKSPACE_12,
+-		MOVE_TO_WORKSPACE_LEFT,
+-		MOVE_TO_WORKSPACE_RIGHT,
+-		MOVE_TO_WORKSPACE_UP,
+-		MOVE_TO_WORKSPACE_DOWN,
+-		MOVE_TO_WORKSPACE_LAST,
+-		MOVE_TO_MONITOR_LEFT,
+-		MOVE_TO_MONITOR_RIGHT,
+-		MOVE_TO_MONITOR_UP,
+-		MOVE_TO_MONITOR_DOWN,
+-		RAISE_OR_LOWER,
+-		RAISE,
+-		LOWER,
+-		MAXIMIZE_VERTICALLY,
+-		MAXIMIZE_HORIZONTALLY,
+-		MOVE_TO_CORNER_NW,
+-		MOVE_TO_CORNER_NE,
+-		MOVE_TO_CORNER_SW,
+-		MOVE_TO_CORNER_SE,
+-		MOVE_TO_SIDE_N,
+-		MOVE_TO_SIDE_S,
+-		MOVE_TO_SIDE_E,
+-		MOVE_TO_SIDE_W,
+-		MOVE_TO_CENTER,
+-		OVERLAY_KEY,
+-		ISO_NEXT_GROUP,
+-		ALWAYS_ON_TOP,
+-		SWITCH_MONITOR,
+-		ROTATE_MONITOR,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_KEY_BINDING_", type_id = "meta_key_binding_flags_get_type ()")]
+-	[Flags]
+-	public enum KeyBindingFlags {
+-		NONE,
+-		PER_WINDOW,
+-		BUILTIN,
+-		IS_REVERSED,
+-		NON_MASKABLE,
+-		IGNORE_AUTOREPEAT
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_LATER_", type_id = "meta_later_type_get_type ()")]
+-	public enum LaterType {
+-		RESIZE,
+-		CALC_SHOWING,
+-		CHECK_FULLSCREEN,
+-		SYNC_STACK,
+-		BEFORE_REDRAW,
+-		IDLE
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_LOCALE_DIRECTION_", type_id = "meta_locale_direction_get_type ()")]
+-	public enum LocaleDirection {
+-		LTR,
+-		RTL
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_MAXIMIZE_", type_id = "meta_maximize_flags_get_type ()")]
+-	[Flags]
+-	public enum MaximizeFlags {
+-		HORIZONTAL,
+-		VERTICAL,
+-		BOTH
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_MODAL_", type_id = "meta_modal_options_get_type ()")]
+-	[Flags]
+-	public enum ModalOptions {
+-		POINTER_ALREADY_GRABBED,
+-		KEYBOARD_ALREADY_GRABBED
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_MONITOR_SWITCH_CONFIG_", type_id = "meta_monitor_switch_config_type_get_type ()")]
+-	public enum MonitorSwitchConfigType {
+-		ALL_MIRROR,
+-		ALL_LINEAR,
+-		EXTERNAL,
+-		BUILTIN,
+-		UNKNOWN
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_MOTION_", type_id = "meta_motion_direction_get_type ()")]
+-	public enum MotionDirection {
+-		UP,
+-		DOWN,
+-		LEFT,
+-		RIGHT,
+-		UP_LEFT,
+-		UP_RIGHT,
+-		DOWN_LEFT,
+-		DOWN_RIGHT
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_PAD_ACTION_", type_id = "meta_pad_action_type_get_type ()")]
+-	public enum PadActionType {
+-		BUTTON,
+-		RING,
+-		STRIP
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_PREF_", type_id = "meta_preference_get_type ()")]
+-	public enum Preference {
+-		MOUSE_BUTTON_MODS,
+-		FOCUS_MODE,
+-		FOCUS_NEW_WINDOWS,
+-		ATTACH_MODAL_DIALOGS,
+-		RAISE_ON_CLICK,
+-		ACTION_DOUBLE_CLICK_TITLEBAR,
+-		ACTION_MIDDLE_CLICK_TITLEBAR,
+-		ACTION_RIGHT_CLICK_TITLEBAR,
+-		AUTO_RAISE,
+-		AUTO_RAISE_DELAY,
+-		FOCUS_CHANGE_ON_POINTER_REST,
+-		TITLEBAR_FONT,
+-		NUM_WORKSPACES,
+-		DYNAMIC_WORKSPACES,
+-		KEYBINDINGS,
+-		DISABLE_WORKAROUNDS,
+-		BUTTON_LAYOUT,
+-		WORKSPACE_NAMES,
+-		VISUAL_BELL,
+-		AUDIBLE_BELL,
+-		VISUAL_BELL_TYPE,
+-		GNOME_ACCESSIBILITY,
+-		GNOME_ANIMATIONS,
+-		CURSOR_THEME,
+-		CURSOR_SIZE,
+-		RESIZE_WITH_RIGHT_BUTTON,
+-		EDGE_TILING,
+-		FORCE_FULLSCREEN,
+-		WORKSPACES_ONLY_ON_PRIMARY,
+-		DRAGGABLE_BORDER_WIDTH,
+-		AUTO_MAXIMIZE,
+-		CENTER_NEW_WINDOWS,
+-		DRAG_THRESHOLD;
+-		public unowned string to_string ();
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_SHADOW_MODE_", type_id = "meta_shadow_mode_get_type ()")]
+-	public enum ShadowMode {
+-		AUTO,
+-		FORCED_OFF,
+-		FORCED_ON
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_SIDE_", type_id = "meta_side_get_type ()")]
+-	public enum Side {
+-		LEFT,
+-		RIGHT,
+-		TOP,
+-		BOTTOM
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_SIZE_CHANGE_", type_id = "meta_size_change_get_type ()")]
+-	public enum SizeChange {
+-		MAXIMIZE,
+-		UNMAXIMIZE,
+-		FULLSCREEN,
+-		UNFULLSCREEN
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_LAYER_", type_id = "meta_stack_layer_get_type ()")]
+-	public enum StackLayer {
+-		DESKTOP,
+-		BOTTOM,
+-		NORMAL,
+-		TOP,
+-		DOCK,
+-		OVERRIDE_REDIRECT,
+-		LAST
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_TAB_LIST_", type_id = "meta_tab_list_get_type ()")]
+-	public enum TabList {
+-		NORMAL,
+-		DOCKS,
+-		GROUP,
+-		NORMAL_ALL
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_TAB_SHOW_", type_id = "meta_tab_show_type_get_type ()")]
+-	public enum TabShowType {
+-		ICON,
+-		INSTANTLY
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_VIRTUAL_", type_id = "meta_virtual_modifier_get_type ()")]
+-	[Flags]
+-	public enum VirtualModifier {
+-		SHIFT_MASK,
+-		CONTROL_MASK,
+-		ALT_MASK,
+-		META_MASK,
+-		SUPER_MASK,
+-		HYPER_MASK,
+-		MOD2_MASK,
+-		MOD3_MASK,
+-		MOD4_MASK,
+-		MOD5_MASK
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_WINDOW_CLIENT_TYPE_", type_id = "meta_window_client_type_get_type ()")]
+-	public enum WindowClientType {
+-		WAYLAND,
+-		X11
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_WINDOW_MENU_", type_id = "meta_window_menu_type_get_type ()")]
+-	public enum WindowMenuType {
+-		WM,
+-		APP
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cprefix = "META_WINDOW_", type_id = "meta_window_type_get_type ()")]
+-	public enum WindowType {
+-		NORMAL,
+-		DESKTOP,
+-		DOCK,
+-		DIALOG,
+-		MODAL_DIALOG,
+-		TOOLBAR,
+-		MENU,
+-		UTILITY,
+-		SPLASHSCREEN,
+-		DROPDOWN_MENU,
+-		POPUP_MENU,
+-		TOOLTIP,
+-		NOTIFICATION,
+-		COMBO,
+-		DND,
+-		OVERRIDE_OTHER
+-	}
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", instance_pos = 2.9)]
+-	public delegate void IdleMonitorWatchFunc (Meta.IdleMonitor monitor, uint watch_id);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", instance_pos = 4.9)]
+-	public delegate void KeyHandlerFunc (Meta.Display display, Meta.Window window, [CCode (type = "ClutterKeyEvent*")] Clutter.KeyEvent? event, Meta.KeyBinding binding);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", instance_pos = 1.9)]
+-	public delegate void PrefsChangedFunc (Meta.Preference pref);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", instance_pos = 1.9)]
+-	public delegate bool WindowForeachFunc (Meta.Window window);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_CURRENT_TIME")]
+-	public const int CURRENT_TIME;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_DEFAULT_ICON_NAME")]
+-	public const string DEFAULT_ICON_NAME;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_ICON_HEIGHT")]
+-	public const int ICON_HEIGHT;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_ICON_WIDTH")]
+-	public const int ICON_WIDTH;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_MAJOR_VERSION")]
+-	public const int MAJOR_VERSION;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_MICRO_VERSION")]
+-	public const int MICRO_VERSION;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_MINI_ICON_HEIGHT")]
+-	public const int MINI_ICON_HEIGHT;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_MINI_ICON_WIDTH")]
+-	public const int MINI_ICON_WIDTH;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_MINOR_VERSION")]
+-	public const int MINOR_VERSION;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_PLUGIN_API_VERSION")]
+-	public const int PLUGIN_API_VERSION;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_PRIORITY_BEFORE_REDRAW")]
+-	public const int PRIORITY_BEFORE_REDRAW;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_PRIORITY_PREFS_NOTIFY")]
+-	public const int PRIORITY_PREFS_NOTIFY;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_PRIORITY_REDRAW")]
+-	public const int PRIORITY_REDRAW;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_PRIORITY_RESIZE")]
+-	public const int PRIORITY_RESIZE;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_VIRTUAL_CORE_KEYBOARD_ID")]
+-	public const int VIRTUAL_CORE_KEYBOARD_ID;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h", cname = "META_VIRTUAL_CORE_POINTER_ID")]
+-	public const int VIRTUAL_CORE_POINTER_ID;
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static bool activate_session ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void exit (Meta.ExitCode code);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static unowned GLib.OptionContext get_option_context ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static bool get_replace_current_wm ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void init ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static bool is_restart ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void quit (Meta.ExitCode code);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void register_with_session ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void restart (string? message);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static int run ();
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void set_gnome_wm_keybindings (string wm_keybindings);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static void set_wm_name (string wm_name);
+-	[CCode (cheader_filename = "meta/barrier.h,meta/boxes.h,meta/common.h,meta/compositor.h,meta/compositor-mutter.h,meta/display.h,meta/group.h,meta/keybindings.h,meta/main.h,meta/meta-backend.h,meta/meta-background-actor.h,meta/meta-background-group.h,meta/meta-background.h,meta/meta-background-image.h,meta/meta-close-dialog.h,meta/meta-cursor-tracker.h,meta/meta-dnd.h,meta/meta-enum-types.h,meta/meta-idle-monitor.h,meta/meta-inhibit-shortcuts-dialog.h,meta/meta-launch-context.h,meta/meta-monitor-manager.h,meta/meta-plugin.h,meta/meta-remote-access-controller.h,meta/meta-settings.h,meta/meta-shadow-factory.h,meta/meta-shaped-texture.h,meta/meta-sound-player.h,meta/meta-stage.h,meta/meta-startup-notification.h,meta/meta-version.h,meta/meta-window-actor.h,meta/meta-window-group.h,meta/meta-window-shape.h,meta/meta-workspace-manager.h,meta/meta-x11-display.h,meta/meta-x11-errors.h,meta/prefs.h,meta/theme.h,meta/types.h,meta/util.h,meta/window.h,meta/workspace.h")]
+-	public static bool x11_init_gdk_display () throws GLib.Error;
+-}
+diff --git vapi/libmutter-5.deps vapi/libmutter-6.deps
+similarity index 50%
+rename from vapi/libmutter-5.deps
+rename to vapi/libmutter-6.deps
+index 48aa7563..223525e4 100644
+--- vapi/libmutter-5.deps
++++ vapi/libmutter-6.deps
+@@ -1,5 +1,6 @@
+ gtk+-3.0
+ json-glib-1.0
+-mutter-clutter-5
++mutter-clutter-6
+ x11
+ xfixes-4.0
++graphene-gobject-1.0
+diff --git vapi/libmutter-5.vapi vapi/libmutter-6.vapi
+similarity index 97%
+rename from vapi/libmutter-5.vapi
+rename to vapi/libmutter-6.vapi
+index b95a28e6..b36be1b7 100644
+--- vapi/libmutter-5.vapi
++++ vapi/libmutter-6.vapi
+@@ -1,12 +1,10 @@
+-/* libmutter-5.vapi generated by vapigen, do not modify. */
++/* libmutter-6.vapi generated by vapigen, do not modify. */
+ 
+-[CCode (cprefix = "Meta", gir_namespace = "Meta", gir_version = "5", lower_case_cprefix = "meta_")]
++[CCode (cprefix = "Meta", gir_namespace = "Meta", gir_version = "6", lower_case_cprefix = "meta_")]
+ namespace Meta {
+ 	namespace Compositor {
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_disable_unredirect_for_display")]
+ 		public static void disable_unredirect_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_empty_stage_input_region")]
+-		public static void empty_stage_input_region (Meta.Display display);
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_enable_unredirect_for_display")]
+ 		public static void enable_unredirect_for_display (Meta.Display display);
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_focus_stage_window")]
+@@ -21,8 +19,6 @@ namespace Meta {
+ 		public static unowned GLib.List<Clutter.Actor> get_window_actors (Meta.Display display);
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_window_group_for_display")]
+ 		public static unowned Clutter.Actor get_window_group_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_set_stage_input_region")]
+-		public static void set_stage_input_region (Meta.Display display, X.XserverRegion region);
+ 	}
+ 	namespace Prefs {
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_bell_is_audible")]
+@@ -164,7 +160,7 @@ namespace Meta {
+ 		public void set_numlock (bool numlock_state);
+ 		public signal void keymap_changed ();
+ 		public signal void keymap_layout_group_changed (uint object);
+-		public signal void last_device_changed (int object);
++		public signal void last_device_changed (Clutter.InputDevice object);
+ 		public signal void lid_is_closed_changed (bool object);
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-background.h", type_id = "meta_background_get_type ()")]
+@@ -174,7 +170,7 @@ namespace Meta {
+ 		public static void refresh_all ();
+ 		public void set_blend (GLib.File file1, GLib.File file2, double blend_factor, GDesktop.BackgroundStyle style);
+ 		public void set_color (Clutter.Color color);
+-		public void set_file (GLib.File file, GDesktop.BackgroundStyle style);
++		public void set_file (GLib.File? file, GDesktop.BackgroundStyle style);
+ 		public void set_gradient (GDesktop.BackgroundShading shading_direction, Clutter.Color color, Clutter.Color second_color);
+ 		[NoAccessorMethod]
+ 		public Meta.Display meta_display { owned get; construct; }
+@@ -275,7 +271,7 @@ namespace Meta {
+ 		public unowned Cogl.Texture get_sprite ();
+ 		public void set_pointer_visible (bool visible);
+ 		public signal void cursor_changed ();
+-		public signal void cursor_moved (float object, float p0);
++		public signal void cursor_moved (float x, float y);
+ 		public signal void visibility_changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/display.h", type_id = "meta_display_get_type ()")]
+@@ -327,6 +323,7 @@ namespace Meta {
+ 		public bool xserver_time_is_before (uint32 time1, uint32 time2);
+ 		public Meta.Window focus_window { get; }
+ 		public signal void accelerator_activated (uint object, Clutter.InputDevice p0, uint p1);
++		public signal void closing ();
+ 		public signal void cursor_updated ();
+ 		public signal void gl_video_memory_purged ();
+ 		public signal void grab_op_begin (Meta.Display object, Meta.Window p0, Meta.GrabOp p1);
+@@ -350,6 +347,7 @@ namespace Meta {
+ 		public signal void workareas_changed ();
+ 		public signal void x11_display_closing ();
+ 		public signal void x11_display_opened ();
++		public signal void x11_display_setup ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-dnd.h", type_id = "meta_dnd_get_type ()")]
+ 	public class Dnd : GLib.Object {
+@@ -370,11 +368,10 @@ namespace Meta {
+ 		public uint add_idle_watch (uint64 interval_msec, owned Meta.IdleMonitorWatchFunc? callback);
+ 		public uint add_user_active_watch (owned Meta.IdleMonitorWatchFunc? callback);
+ 		public static unowned Meta.IdleMonitor get_core ();
+-		public static unowned Meta.IdleMonitor get_for_device (int device_id);
+ 		public int64 get_idletime ();
+ 		public void remove_watch (uint id);
+ 		[NoAccessorMethod]
+-		public int device_id { get; construct; }
++		public Clutter.InputDevice device { owned get; construct; }
+ 	}
+ 	[CCode (cheader_filename = "meta/main.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_key_binding_get_type ()")]
+ 	[Compact]
+@@ -536,15 +533,14 @@ namespace Meta {
+ 		public signal void changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-shaped-texture.h", type_id = "meta_shaped_texture_get_type ()")]
+-	public class ShapedTexture : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
++	public class ShapedTexture : GLib.Object, Clutter.Content {
+ 		[CCode (has_construct_function = false)]
+ 		protected ShapedTexture ();
+-		public Cairo.Surface get_image (Cairo.RectangleInt clip);
++		public Cairo.Surface? get_image (Cairo.RectangleInt? clip);
+ 		public unowned Cogl.Texture get_texture ();
+ 		public void set_create_mipmaps (bool create_mipmaps);
+ 		public void set_mask_texture (Cogl.Texture mask_texture);
+ 		public void set_opaque_region (owned Cairo.Region opaque_region);
+-		public bool update_area (int x, int y, int width, int height);
+ 		public signal void size_changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-sound-player.h", type_id = "meta_sound_player_get_type ()")]
+@@ -756,17 +752,16 @@ namespace Meta {
+ 	public abstract class WindowActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false)]
+ 		protected WindowActor ();
++		public Cairo.Surface? get_image (Cairo.RectangleInt? clip);
+ 		public unowned Meta.Window get_meta_window ();
+-		public unowned Clutter.Actor get_texture ();
++		public unowned Meta.ShapedTexture get_texture ();
+ 		public bool is_destroyed ();
+ 		public void sync_visibility ();
+ 		public Meta.Window meta_window { get; construct; }
+-		[NoAccessorMethod]
+-		public string shadow_class { owned get; set; }
+-		[NoAccessorMethod]
+-		public Meta.ShadowMode shadow_mode { get; set; }
++		public signal void damaged ();
+ 		public signal void effects_completed ();
+ 		public signal void first_frame ();
++		public signal void thawed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-window-group.h", type_id = "meta_window_group_get_type ()")]
+ 	public class WindowGroup : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+@@ -813,7 +808,7 @@ namespace Meta {
+ 		public unowned Meta.Workspace get_active_workspace ();
+ 		public int get_active_workspace_index ();
+ 		public int get_n_workspaces ();
+-		public unowned Meta.Workspace get_workspace_by_index (int index);
++		public unowned Meta.Workspace? get_workspace_by_index (int index);
+ 		public void override_workspace_layout (Meta.DisplayCorner starting_corner, bool vertical_layout, int n_rows, int n_columns);
+ 		public void remove_workspace (Meta.Workspace workspace, uint32 timestamp);
+ 		public void reorder_workspace (Meta.Workspace workspace, int new_index);
+@@ -833,11 +828,13 @@ namespace Meta {
+ 	public class X11Display : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected X11Display ();
++		public void clear_stage_input_region ();
+ 		public int get_damage_event_base ();
+ 		public int get_screen_number ();
+ 		public int get_shape_event_base ();
+ 		public bool has_shape ();
+ 		public void set_cm_selection ();
++		public void set_stage_input_region (X.XserverRegion region);
+ 		public bool xwindow_is_a_no_focus_window (X.Window xwindow);
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-close-dialog.h", type_cname = "MetaCloseDialogInterface", type_id = "meta_close_dialog_get_type ()")]
+@@ -899,7 +896,7 @@ namespace Meta {
+ 		public uint version_micro;
+ 		public uint version_api;
+ 	}
+-	[CCode (cheader_filename = "meta/main.h", type_id = "meta_rectangle_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_rectangle_get_type ()")]
+ 	public struct Rectangle {
+ 		public int x;
+ 		public int y;
+@@ -1443,6 +1440,8 @@ namespace Meta {
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static bool activate_session ();
+ 	[CCode (cheader_filename = "meta/main.h")]
++	public static void add_clutter_debug_flags (Clutter.DebugFlag debug_flags, Clutter.DrawDebugFlag draw_flags, Clutter.PickDebugFlag pick_flags);
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void exit (Meta.ExitCode code);
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static string g_utf8_strndup (string src, size_t n);
+@@ -1459,6 +1458,8 @@ namespace Meta {
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void register_with_session ();
+ 	[CCode (cheader_filename = "meta/main.h")]
++	public static void remove_clutter_debug_flags (Clutter.DebugFlag debug_flags, Clutter.DrawDebugFlag draw_flags, Clutter.PickDebugFlag pick_flags);
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void restart (string? message);
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static int run ();
+@@ -1467,5 +1468,7 @@ namespace Meta {
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void set_wm_name (string wm_name);
+ 	[CCode (cheader_filename = "meta/main.h")]
++	public static void test_init ();
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static bool x11_init_gdk_display () throws GLib.Error;
+ }
+diff --git vapi/libmutter-7-custom.vala vapi/libmutter-7-custom.vala
+new file mode 100644
+index 00000000..1e0b917c
+--- /dev/null
++++ vapi/libmutter-7-custom.vala
+@@ -0,0 +1,7 @@
++[CCode (has_type_id = false)]
++public struct before_frame {
++}
++
++[CCode (has_type_id = false)]
++public struct frame {
++}
+diff --git vapi/libmutter-7.deps vapi/libmutter-7.deps
+new file mode 100644
+index 00000000..2ef919ee
+--- /dev/null
++++ vapi/libmutter-7.deps
+@@ -0,0 +1,6 @@
++gtk+-3.0
++json-glib-1.0
++mutter-clutter-7
++x11
++xfixes-4.0
++graphene-gobject-1.0
+diff --git vapi/libmutter-3.vapi vapi/libmutter-7.vapi
+similarity index 75%
+rename from vapi/libmutter-3.vapi
+rename to vapi/libmutter-7.vapi
+index 1715aa8f..90c41590 100644
+--- vapi/libmutter-3.vapi
++++ vapi/libmutter-7.vapi
+@@ -1,12 +1,10 @@
+-/* libmutter-3.vapi generated by vapigen, do not modify. */
++/* libmutter-7.vapi generated by vapigen, do not modify. */
+ 
+-[CCode (cprefix = "Meta", gir_namespace = "Meta", gir_version = "3", lower_case_cprefix = "meta_")]
++[CCode (cprefix = "Meta", gir_namespace = "Meta", gir_version = "7", lower_case_cprefix = "meta_")]
+ namespace Meta {
+ 	namespace Compositor {
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_disable_unredirect_for_display")]
+ 		public static void disable_unredirect_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_empty_stage_input_region")]
+-		public static void empty_stage_input_region (Meta.Display display);
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_enable_unredirect_for_display")]
+ 		public static void enable_unredirect_for_display (Meta.Display display);
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_focus_stage_window")]
+@@ -21,8 +19,6 @@ namespace Meta {
+ 		public static unowned GLib.List<Clutter.Actor> get_window_actors (Meta.Display display);
+ 		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_get_window_group_for_display")]
+ 		public static unowned Clutter.Actor get_window_group_for_display (Meta.Display display);
+-		[CCode (cheader_filename = "meta/compositor-mutter.h", cname = "meta_set_stage_input_region")]
+-		public static void set_stage_input_region (Meta.Display display, X.XserverRegion region);
+ 	}
+ 	namespace Prefs {
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_bell_is_audible")]
+@@ -47,6 +43,8 @@ namespace Meta {
+ 		public static Meta.ButtonLayout prefs_get_button_layout ();
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_center_new_windows")]
+ 		public static bool prefs_get_center_new_windows ();
++		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_check_alive_timeout")]
++		public static uint prefs_get_check_alive_timeout ();
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_compositing_manager")]
+ 		public static bool prefs_get_compositing_manager ();
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_cursor_size")]
+@@ -75,8 +73,6 @@ namespace Meta {
+ 		public static bool prefs_get_gnome_accessibility ();
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_gnome_animations")]
+ 		public static bool prefs_get_gnome_animations ();
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_ignore_request_hide_titlebar")]
+-		public static bool prefs_get_ignore_request_hide_titlebar ();
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_keybinding_action")]
+ 		public static Meta.KeyBindingAction prefs_get_keybinding_action (string name);
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_get_mouse_button_menu")]
+@@ -105,8 +101,6 @@ namespace Meta {
+ 		public static void prefs_init ();
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_force_fullscreen")]
+ 		public static void prefs_set_force_fullscreen (bool whether);
+-		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_ignore_request_hide_titlebar")]
+-		public static void prefs_set_ignore_request_hide_titlebar (bool whether);
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_num_workspaces")]
+ 		public static void prefs_set_num_workspaces (int n_workspaces);
+ 		[CCode (cheader_filename = "meta/prefs.h", cname = "meta_prefs_set_show_fallback_app_menu")]
+@@ -117,12 +111,10 @@ namespace Meta {
+ 		public static void add_verbose_topic (Meta.DebugTopic topic);
+ 		[CCode (cheader_filename = "meta/util.h", cname = "meta_external_binding_name_for_action")]
+ 		public static string external_binding_name_for_action (uint keybinding_action);
+-		[CCode (cheader_filename = "meta/util.h", cname = "meta_g_utf8_strndup")]
+-		public static string g_utf8_strndup (string src, size_t n);
+ 		[CCode (cheader_filename = "meta/util.h", cname = "meta_get_locale_direction")]
+ 		public static Meta.LocaleDirection get_locale_direction ();
+ 		[CCode (cheader_filename = "meta/util.h", cname = "meta_gravity_to_string")]
+-		public static unowned string gravity_to_string (int gravity);
++		public static unowned string gravity_to_string (Meta.Gravity gravity);
+ 		[CCode (cheader_filename = "meta/util.h", cname = "meta_is_debugging")]
+ 		public static bool is_debugging ();
+ 		[CCode (cheader_filename = "meta/util.h", cname = "meta_is_syncing")]
+@@ -165,12 +157,13 @@ namespace Meta {
+ 		public unowned Meta.Dnd get_dnd ();
+ 		public unowned Meta.RemoteAccessController get_remote_access_controller ();
+ 		public unowned Clutter.Actor get_stage ();
++		public bool is_rendering_hardware_accelerated ();
+ 		public void lock_layout_group (uint idx);
+ 		public void set_keymap (string layouts, string variants, string options);
+ 		public void set_numlock (bool numlock_state);
+ 		public signal void keymap_changed ();
+ 		public signal void keymap_layout_group_changed (uint object);
+-		public signal void last_device_changed (int object);
++		public signal void last_device_changed (Clutter.InputDevice object);
+ 		public signal void lid_is_closed_changed (bool object);
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-background.h", type_id = "meta_background_get_type ()")]
+@@ -180,7 +173,7 @@ namespace Meta {
+ 		public static void refresh_all ();
+ 		public void set_blend (GLib.File file1, GLib.File file2, double blend_factor, GDesktop.BackgroundStyle style);
+ 		public void set_color (Clutter.Color color);
+-		public void set_file (GLib.File file, GDesktop.BackgroundStyle style);
++		public void set_file (GLib.File? file, GDesktop.BackgroundStyle style);
+ 		public void set_gradient (GDesktop.BackgroundShading shading_direction, Clutter.Color color, Clutter.Color second_color);
+ 		[NoAccessorMethod]
+ 		public Meta.Display meta_display { owned get; construct; }
+@@ -190,9 +183,18 @@ namespace Meta {
+ 	public class BackgroundActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false, type = "ClutterActor*")]
+ 		public BackgroundActor (Meta.Display display, int monitor);
++		[NoAccessorMethod]
++		public Meta.Display meta_display { owned get; construct; }
++		[NoAccessorMethod]
++		public int monitor { get; construct; }
++	}
++	[CCode (cheader_filename = "meta/meta-background-content.h", type_id = "meta_background_content_get_type ()")]
++	public class BackgroundContent : GLib.Object, Clutter.Content {
++		[CCode (has_construct_function = false)]
++		protected BackgroundContent ();
++		public static Clutter.Content @new (Meta.Display display, int monitor);
+ 		public void set_background (Meta.Background background);
+ 		public void set_gradient (bool enabled, int height, double tone_start);
+-		public void set_monitor (int monitor);
+ 		public void set_vignette (bool enabled, double brightness, double sharpness);
+ 		[NoAccessorMethod]
+ 		public Meta.Background background { owned get; set; }
+@@ -277,14 +279,14 @@ namespace Meta {
+ 		public static unowned Meta.CursorTracker get_for_display (Meta.Display display);
+ 		public void get_hot (out int x, out int y);
+ 		public void get_pointer (int x, int y, Clutter.ModifierType mods);
++		public bool get_pointer_visible ();
+ 		public unowned Cogl.Texture get_sprite ();
+ 		public void set_pointer_visible (bool visible);
++		[NoAccessorMethod]
++		public Meta.Backend backend { owned get; construct; }
+ 		public signal void cursor_changed ();
+-	}
+-	[CCode (cheader_filename = "meta/meta-monitor-manager.h", type_id = "meta_dbus_display_config_skeleton_get_type ()")]
+-	public class DBusDisplayConfigSkeleton : GLib.DBusInterfaceSkeleton, GLib.DBusInterface {
+-		[CCode (has_construct_function = false)]
+-		protected DBusDisplayConfigSkeleton ();
++		public signal void cursor_moved (float x, float y);
++		public signal void visibility_changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/display.h", type_id = "meta_display_get_type ()")]
+ 	public class Display : GLib.Object {
+@@ -309,32 +311,39 @@ namespace Meta {
+ 		public bool get_monitor_in_fullscreen (int monitor);
+ 		public int get_monitor_index_for_rect (Meta.Rectangle rect);
+ 		public int get_monitor_neighbor_index (int which_monitor, Meta.DisplayDirection dir);
++		public float get_monitor_scale (int monitor);
+ 		public int get_n_monitors ();
+ 		public string get_pad_action_label (Clutter.InputDevice pad, Meta.PadActionType action_type, uint action_number);
+ 		public int get_primary_monitor ();
++		public unowned Meta.Selection get_selection ();
+ 		public void get_size (out int width, out int height);
++		public unowned Meta.SoundPlayer get_sound_player ();
+ 		public unowned Meta.Window get_tab_current (Meta.TabList type, Meta.Workspace workspace);
+ 		public GLib.List<weak Meta.Window> get_tab_list (Meta.TabList type, Meta.Workspace? workspace);
+ 		public unowned Meta.Window get_tab_next (Meta.TabList type, Meta.Workspace workspace, Meta.Window? window, bool backward);
+ 		public unowned Meta.WorkspaceManager get_workspace_manager ();
+-		public uint grab_accelerator (string accelerator);
++		public uint grab_accelerator (string accelerator, Meta.KeyBindingFlags flags);
+ 		public bool is_pointer_emulating_sequence (Clutter.EventSequence? sequence);
+ 		public bool remove_keybinding (string name);
+ 		public void request_pad_osd (Clutter.InputDevice pad, bool edition_mode);
+ 		public void set_cursor (Meta.Cursor cursor);
++		public void set_input_focus (Meta.Window window, bool focus_frame, uint32 timestamp);
+ 		public GLib.SList<weak Meta.Window> sort_windows_by_stacking (GLib.SList<Meta.Window> windows);
+ 		public bool supports_extended_barriers ();
+ 		public void unfreeze_keyboard (uint32 timestamp);
+ 		public bool ungrab_accelerator (uint action_id);
+ 		public void ungrab_keyboard (uint32 timestamp);
++		public void unset_input_focus (uint32 timestamp);
+ 		public bool xserver_time_is_before (uint32 time1, uint32 time2);
+ 		public Meta.Window focus_window { get; }
+-		public signal void accelerator_activated (uint object, uint p0, uint p1);
++		public signal void accelerator_activated (uint object, Clutter.InputDevice p0, uint p1);
++		public signal void closing ();
+ 		public signal void cursor_updated ();
+ 		public signal void gl_video_memory_purged ();
+ 		public signal void grab_op_begin (Meta.Display object, Meta.Window p0, Meta.GrabOp p1);
+ 		public signal void grab_op_end (Meta.Display object, Meta.Window p0, Meta.GrabOp p1);
+ 		public signal void in_fullscreen_changed ();
++		public signal bool init_xserver (GLib.Task object);
+ 		public signal bool modifiers_accelerator_activated ();
+ 		public signal void overlay_key ();
+ 		public signal void pad_mode_switch (Clutter.InputDevice object, uint p0, uint p1);
+@@ -345,7 +354,6 @@ namespace Meta {
+ 		public signal bool show_resize_popup (bool object, Meta.Rectangle p0, int p1, int p2);
+ 		public signal bool show_restart_message (string? message);
+ 		public signal void showing_desktop_changed ();
+-		public signal void startup_sequence_changed (void* object);
+ 		public signal void window_created (Meta.Window object);
+ 		public signal void window_demands_attention (Meta.Window object);
+ 		public signal void window_entered_monitor (int object, Meta.Window p0);
+@@ -354,6 +362,7 @@ namespace Meta {
+ 		public signal void workareas_changed ();
+ 		public signal void x11_display_closing ();
+ 		public signal void x11_display_opened ();
++		public signal void x11_display_setup ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-dnd.h", type_id = "meta_dnd_get_type ()")]
+ 	public class Dnd : GLib.Object {
+@@ -363,7 +372,7 @@ namespace Meta {
+ 		public signal void dnd_leave ();
+ 		public signal void dnd_position_change (int object, int p0);
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	[Compact]
+ 	public class Frame {
+ 	}
+@@ -374,13 +383,12 @@ namespace Meta {
+ 		public uint add_idle_watch (uint64 interval_msec, owned Meta.IdleMonitorWatchFunc? callback);
+ 		public uint add_user_active_watch (owned Meta.IdleMonitorWatchFunc? callback);
+ 		public static unowned Meta.IdleMonitor get_core ();
+-		public static unowned Meta.IdleMonitor get_for_device (int device_id);
+ 		public int64 get_idletime ();
+ 		public void remove_watch (uint id);
+ 		[NoAccessorMethod]
+-		public int device_id { get; construct; }
++		public Clutter.InputDevice device { owned get; construct; }
+ 	}
+-	[CCode (cheader_filename = "meta/keybindings.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_key_binding_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_key_binding_get_type ()")]
+ 	[Compact]
+ 	public class KeyBinding {
+ 		public uint get_mask ();
+@@ -391,8 +399,21 @@ namespace Meta {
+ 		[CCode (cname = "meta_keybindings_set_custom_handler")]
+ 		public static bool set_custom_handler (string name, owned Meta.KeyHandlerFunc? handler);
+ 	}
++	[CCode (cheader_filename = "meta/meta-launch-context.h", type_id = "meta_launch_context_get_type ()")]
++	public class LaunchContext : GLib.AppLaunchContext {
++		[CCode (has_construct_function = false)]
++		protected LaunchContext ();
++		public void set_timestamp (uint32 timestamp);
++		public void set_workspace (Meta.Workspace workspace);
++		[NoAccessorMethod]
++		public Meta.Display display { owned get; construct; }
++		[NoAccessorMethod]
++		public uint timestamp { get; set; }
++		[NoAccessorMethod]
++		public Meta.Workspace workspace { owned get; set; }
++	}
+ 	[CCode (cheader_filename = "meta/meta-monitor-manager.h", type_id = "meta_monitor_manager_get_type ()")]
+-	public abstract class MonitorManager : Meta.DBusDisplayConfigSkeleton, GLib.DBusInterface, GLib.DBusInterface {
++	public class MonitorManager : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected MonitorManager ();
+ 		public bool can_switch_config ();
+@@ -407,6 +428,7 @@ namespace Meta {
+ 		public signal void confirm_display_change ();
+ 		public signal void monitors_changed ();
+ 		public signal void monitors_changed_internal ();
++		public signal void power_save_mode_changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-plugin.h", type_id = "meta_plugin_get_type ()")]
+ 	public abstract class Plugin : GLib.Object {
+@@ -430,6 +452,8 @@ namespace Meta {
+ 		public virtual void kill_switch_workspace ();
+ 		[NoWrapper]
+ 		public virtual void kill_window_effects (Meta.WindowActor actor);
++		[NoWrapper]
++		public virtual void locate_pointer ();
+ 		public static void manager_set_plugin_type (GLib.Type gtype);
+ 		[NoWrapper]
+ 		public virtual void map (Meta.WindowActor actor);
+@@ -465,26 +489,56 @@ namespace Meta {
+ 	public class RemoteAccessController : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected RemoteAccessController ();
++		public void inhibit_remote_access ();
++		public void uninhibit_remote_access ();
+ 		public signal void new_handle (Meta.RemoteAccessHandle object);
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-remote-access-controller.h", type_id = "meta_remote_access_handle_get_type ()")]
+ 	public class RemoteAccessHandle : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected RemoteAccessHandle ();
++		public bool get_disable_animations ();
+ 		public virtual void stop ();
++		[NoAccessorMethod]
++		public bool is_recording { get; construct; }
+ 		public signal void stopped ();
+ 	}
++	[CCode (cheader_filename = "meta/main.h", type_id = "meta_selection_get_type ()")]
++	public class Selection : GLib.Object {
++		[CCode (has_construct_function = false)]
++		public Selection (Meta.Display display);
++		public GLib.List<string> get_mimetypes (Meta.SelectionType selection_type);
++		public void set_owner (Meta.SelectionType selection_type, Meta.SelectionSource owner);
++		public async bool transfer_async (Meta.SelectionType selection_type, string mimetype, ssize_t size, GLib.OutputStream output, GLib.Cancellable? cancellable) throws GLib.Error;
++		public void unset_owner (Meta.SelectionType selection_type, Meta.SelectionSource owner);
++		public signal void owner_changed (uint object, Meta.SelectionSource p0);
++	}
++	[CCode (cheader_filename = "meta/main.h", type_id = "meta_selection_source_get_type ()")]
++	public class SelectionSource : GLib.Object {
++		[CCode (has_construct_function = false)]
++		protected SelectionSource ();
++		public virtual GLib.List<string> get_mimetypes ();
++		public bool is_active ();
++		public virtual async GLib.InputStream read_async (string mimetype, GLib.Cancellable? cancellable) throws GLib.Error;
++		public virtual signal void activated ();
++		public virtual signal void deactivated ();
++	}
++	[CCode (cheader_filename = "meta/main.h", type_id = "meta_selection_source_memory_get_type ()")]
++	public class SelectionSourceMemory : Meta.SelectionSource {
++		[CCode (has_construct_function = false, type = "MetaSelectionSource*")]
++		public SelectionSourceMemory (string mimetype, GLib.Bytes content);
++	}
+ 	[CCode (cheader_filename = "meta/meta-settings.h", has_type_id = false)]
+ 	[Compact]
+ 	public class Settings {
+ 		public int get_font_dpi ();
+ 		public int get_ui_scaling_factor ();
+ 	}
+-	[CCode (cheader_filename = "meta/meta-shadow-factory.h", ref_function = "meta_shadow_ref", type_id = "meta_shadow_get_type ()", unref_function = "meta_shadow_unref")]
++	[CCode (cheader_filename = "meta/main.h", ref_function = "meta_shadow_ref", type_id = "meta_shadow_get_type ()", unref_function = "meta_shadow_unref")]
+ 	[Compact]
+ 	public class Shadow {
+ 		public void get_bounds (int window_x, int window_y, int window_width, int window_height, Cairo.RectangleInt bounds);
+-		public void paint (int window_x, int window_y, int window_width, int window_height, uint8 opacity, Cairo.Region? clip, bool clip_strictly);
++		public void paint (Cogl.Framebuffer framebuffer, int window_x, int window_y, int window_width, int window_height, uint8 opacity, Cairo.Region? clip, bool clip_strictly);
+ 		public Meta.Shadow @ref ();
+ 		public void unref ();
+ 	}
+@@ -499,28 +553,74 @@ namespace Meta {
+ 		public signal void changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-shaped-texture.h", type_id = "meta_shaped_texture_get_type ()")]
+-	public class ShapedTexture : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
++	public class ShapedTexture : GLib.Object, Clutter.Content {
+ 		[CCode (has_construct_function = false)]
+ 		protected ShapedTexture ();
+-		public Cairo.Surface get_image (Cairo.RectangleInt clip);
++		public Cairo.Surface? get_image (Cairo.RectangleInt? clip);
+ 		public unowned Cogl.Texture get_texture ();
+ 		public void set_create_mipmaps (bool create_mipmaps);
+ 		public void set_mask_texture (Cogl.Texture mask_texture);
+-		public void set_opaque_region (owned Cairo.Region opaque_region);
+-		public bool update_area (int x, int y, int width, int height);
+ 		public signal void size_changed ();
+ 	}
+-	[CCode (cheader_filename = "meta/compositor-mutter.h", type_id = "meta_stage_get_type ()")]
++	[CCode (cheader_filename = "meta/meta-sound-player.h", type_id = "meta_sound_player_get_type ()")]
++	public class SoundPlayer : GLib.Object {
++		[CCode (has_construct_function = false)]
++		protected SoundPlayer ();
++		public void play_from_file (GLib.File file, string description, GLib.Cancellable? cancellable = null);
++		public void play_from_theme (string name, string description, GLib.Cancellable? cancellable = null);
++	}
++	[CCode (cheader_filename = "meta/meta-stage.h", type_id = "meta_stage_get_type ()")]
+ 	public class Stage : Clutter.Stage, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false)]
+ 		protected Stage ();
+ 		public static bool is_focused (Meta.Display display);
++		public signal void actors_painted ();
++	}
++	[CCode (cheader_filename = "meta/meta-startup-notification.h", type_id = "meta_startup_notification_get_type ()")]
++	public class StartupNotification : GLib.Object {
++		[CCode (has_construct_function = false)]
++		protected StartupNotification ();
++		public Meta.LaunchContext create_launcher ();
++		[NoAccessorMethod]
++		public Meta.Display display { owned get; construct; }
++		public signal void changed (void* object);
++	}
++	[CCode (cheader_filename = "meta/main.h", type_id = "meta_startup_sequence_get_type ()")]
++	public class StartupSequence : GLib.Object {
++		[CCode (has_construct_function = false)]
++		protected StartupSequence ();
++		public unowned string get_application_id ();
++		public bool get_completed ();
++		public unowned string get_icon_name ();
++		public unowned string get_id ();
++		public unowned string get_name ();
++		public uint64 get_timestamp ();
++		public unowned string get_wmclass ();
++		public int get_workspace ();
++		public string application_id { get; construct; }
++		public string icon_name { get; construct; }
++		public string id { get; construct; }
++		public string name { get; construct; }
++		public uint64 timestamp { get; construct; }
++		public string wmclass { get; construct; }
++		public int workspace { get; construct; }
++		[HasEmitter]
++		public signal void complete ();
+ 	}
+ 	[CCode (cheader_filename = "meta/theme.h", has_type_id = false)]
+ 	[Compact]
+ 	public class Theme {
+ 		public void free ();
+ 	}
++	[CCode (cheader_filename = "meta/meta-wayland-client.h", type_id = "meta_wayland_client_get_type ()")]
++	public class WaylandClient : GLib.Object {
++		[CCode (has_construct_function = false)]
++		public WaylandClient (GLib.SubprocessLauncher launcher) throws GLib.Error;
++		public void hide_from_window_list (Meta.Window window);
++		public bool owns_window (Meta.Window window);
++		public void show_in_window_list (Meta.Window window);
++		public GLib.Subprocess spawnv (Meta.Display display, [CCode (array_length = false, array_null_terminated = true)] string[] argv) throws GLib.Error;
++	}
+ 	[CCode (cheader_filename = "meta/window.h", type_id = "meta_window_get_type ()")]
+ 	public abstract class Window : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+@@ -547,6 +647,7 @@ namespace Meta {
+ 		public Meta.Rectangle frame_rect_to_client_rect (Meta.Rectangle frame_rect);
+ 		public Meta.Rectangle get_buffer_rect ();
+ 		public unowned string get_client_machine ();
++		public Meta.WindowClientType get_client_type ();
+ 		public unowned GLib.Object get_compositor_private ();
+ 		public unowned string get_description ();
+ 		public unowned Meta.Display get_display ();
+@@ -561,6 +662,7 @@ namespace Meta {
+ 		public unowned string get_gtk_unique_bus_name ();
+ 		public unowned string get_gtk_window_object_path ();
+ 		public bool get_icon_geometry (out Meta.Rectangle rect);
++		public uint64 get_id ();
+ 		public Meta.StackLayer get_layer ();
+ 		public Meta.MaximizeFlags get_maximized ();
+ 		public int get_monitor ();
+@@ -610,8 +712,6 @@ namespace Meta {
+ 		public void move_resize_frame (bool user_op, int root_x_nw, int root_y_nw, int w, int h);
+ 		public void move_to_monitor (int monitor);
+ 		public void raise ();
+-		public bool requested_bypass_compositor ();
+-		public bool requested_dont_bypass_compositor ();
+ 		public void set_compositor_private (GLib.Object priv);
+ 		public void set_demands_attention ();
+ 		public void set_icon_geometry (Meta.Rectangle? rect);
+@@ -672,24 +772,25 @@ namespace Meta {
+ 		public signal void shown ();
+ 		public signal void size_changed ();
+ 		public signal void unmanaged ();
++		public signal void unmanaging ();
+ 		public signal void workspace_changed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-window-actor.h", type_id = "meta_window_actor_get_type ()")]
+-	public class WindowActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
++	public abstract class WindowActor : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false)]
+ 		protected WindowActor ();
++		public void freeze ();
++		public Cairo.Surface? get_image (Cairo.RectangleInt? clip);
+ 		public unowned Meta.Window get_meta_window ();
+-		public unowned Clutter.Actor get_texture ();
+-		public X.Window get_x_window ();
++		public unowned Meta.ShapedTexture get_texture ();
+ 		public bool is_destroyed ();
+ 		public void sync_visibility ();
++		public void thaw ();
+ 		public Meta.Window meta_window { get; construct; }
+-		[NoAccessorMethod]
+-		public string shadow_class { owned get; set; }
+-		[NoAccessorMethod]
+-		public Meta.ShadowMode shadow_mode { get; set; }
++		public signal void damaged ();
+ 		public signal void effects_completed ();
+ 		public signal void first_frame ();
++		public signal void thawed ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-window-group.h", type_id = "meta_window_group_get_type ()")]
+ 	public class WindowGroup : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+@@ -720,7 +821,9 @@ namespace Meta {
+ 		public Meta.Rectangle get_work_area_for_monitor (int which_monitor);
+ 		public int index ();
+ 		public GLib.List<weak Meta.Window> list_windows ();
+-		public void set_builtin_struts (GLib.SList<Meta.Strut> struts);
++		public void set_builtin_struts (GLib.SList<Meta.Strut?> struts);
++		[NoAccessorMethod]
++		public bool active { get; }
+ 		[NoAccessorMethod]
+ 		public uint n_windows { get; }
+ 		[NoAccessorMethod]
+@@ -736,27 +839,33 @@ namespace Meta {
+ 		public unowned Meta.Workspace get_active_workspace ();
+ 		public int get_active_workspace_index ();
+ 		public int get_n_workspaces ();
+-		public unowned Meta.Workspace get_workspace_by_index (int index);
++		public unowned Meta.Workspace? get_workspace_by_index (int index);
+ 		public void override_workspace_layout (Meta.DisplayCorner starting_corner, bool vertical_layout, int n_rows, int n_columns);
+ 		public void remove_workspace (Meta.Workspace workspace, uint32 timestamp);
++		public void reorder_workspace (Meta.Workspace workspace, int new_index);
++		[NoAccessorMethod]
++		public int layout_columns { get; }
++		[NoAccessorMethod]
++		public int layout_rows { get; }
+ 		public int n_workspaces { get; }
+ 		public signal void active_workspace_changed ();
+ 		public signal void showing_desktop_changed ();
+ 		public signal void workspace_added (int object);
+ 		public signal void workspace_removed (int object);
+ 		public signal void workspace_switched (int object, int p0, Meta.MotionDirection p1);
++		public signal void workspaces_reordered ();
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-x11-display.h", type_id = "meta_x11_display_get_type ()")]
+ 	public class X11Display : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected X11Display ();
+-		public void focus_the_no_focus_window (uint32 timestamp);
++		public void clear_stage_input_region ();
+ 		public int get_damage_event_base ();
+ 		public int get_screen_number ();
+ 		public int get_shape_event_base ();
+ 		public bool has_shape ();
+ 		public void set_cm_selection ();
+-		public void set_input_focus_window (Meta.Window window, bool focus_frame, uint32 timestamp);
++		public void set_stage_input_region (X.XserverRegion region);
+ 		public bool xwindow_is_a_no_focus_window (X.Window xwindow);
+ 	}
+ 	[CCode (cheader_filename = "meta/meta-close-dialog.h", type_cname = "MetaCloseDialogInterface", type_id = "meta_close_dialog_get_type ()")]
+@@ -779,24 +888,24 @@ namespace Meta {
+ 		[HasEmitter]
+ 		public signal void response (Meta.InhibitShortcutsDialogResponse response);
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	public struct ButtonLayout {
+ 		[CCode (array_length = false)]
+-		public weak Meta.ButtonFunction left_buttons[5];
++		public weak Meta.ButtonFunction left_buttons[4];
+ 		[CCode (array_length = false)]
+-		public weak bool left_buttons_has_spacer[5];
++		public weak bool left_buttons_has_spacer[4];
+ 		[CCode (array_length = false)]
+-		public weak Meta.ButtonFunction right_buttons[5];
++		public weak Meta.ButtonFunction right_buttons[4];
+ 		[CCode (array_length = false)]
+-		public weak bool right_buttons_has_spacer[5];
++		public weak bool right_buttons_has_spacer[4];
+ 	}
+-	[CCode (cheader_filename = "meta/boxes.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	public struct Edge {
+ 		public Meta.Rectangle rect;
+ 		public Meta.Side side_type;
+ 		public Meta.EdgeType edge_type;
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	public struct FrameBorders {
+ 		public Gtk.Border visible;
+ 		public Gtk.Border invisible;
+@@ -811,14 +920,14 @@ namespace Meta {
+ 		public weak string license;
+ 		public weak string description;
+ 	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	public struct PluginVersion {
+ 		public uint version_major;
+ 		public uint version_minor;
+ 		public uint version_micro;
+ 		public uint version_api;
+ 	}
+-	[CCode (cheader_filename = "meta/boxes.h", type_id = "meta_rectangle_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "meta_rectangle_get_type ()")]
+ 	public struct Rectangle {
+ 		public int x;
+ 		public int y;
+@@ -836,7 +945,7 @@ namespace Meta {
+ 		public Meta.Rectangle union (Meta.Rectangle rect2);
+ 		public bool vert_overlap (Meta.Rectangle rect2);
+ 	}
+-	[CCode (cheader_filename = "meta/meta-shadow-factory.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	public struct ShadowParams {
+ 		public int radius;
+ 		public int top_fade;
+@@ -844,12 +953,12 @@ namespace Meta {
+ 		public int y_offset;
+ 		public uint8 opacity;
+ 	}
+-	[CCode (cheader_filename = "meta/boxes.h", has_type_id = false)]
++	[CCode (cheader_filename = "meta/main.h", has_type_id = false)]
+ 	public struct Strut {
+ 		public Meta.Rectangle rect;
+ 		public Meta.Side side;
+ 	}
+-	[CCode (cheader_filename = "meta/barrier.h", cprefix = "META_BARRIER_DIRECTION_", type_id = "meta_barrier_direction_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_BARRIER_DIRECTION_", type_id = "meta_barrier_direction_get_type ()")]
+ 	[Flags]
+ 	public enum BarrierDirection {
+ 		POSITIVE_X,
+@@ -857,21 +966,20 @@ namespace Meta {
+ 		NEGATIVE_X,
+ 		NEGATIVE_Y
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_BUTTON_FUNCTION_", type_id = "meta_button_function_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_BUTTON_FUNCTION_", type_id = "meta_button_function_get_type ()")]
+ 	public enum ButtonFunction {
+ 		MENU,
+ 		MINIMIZE,
+ 		MAXIMIZE,
+ 		CLOSE,
+-		APPMENU,
+ 		LAST
+ 	}
+-	[CCode (cheader_filename = "meta/meta-close-dialog.h", cprefix = "META_CLOSE_DIALOG_RESPONSE_", type_id = "meta_close_dialog_response_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_CLOSE_DIALOG_RESPONSE_", type_id = "meta_close_dialog_response_get_type ()")]
+ 	public enum CloseDialogResponse {
+ 		WAIT,
+ 		FORCE_CLOSE
+ 	}
+-	[CCode (cheader_filename = "meta/compositor.h", cprefix = "META_COMP_EFFECT_", type_id = "meta_comp_effect_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_COMP_EFFECT_", type_id = "meta_comp_effect_get_type ()")]
+ 	public enum CompEffect {
+ 		CREATE,
+ 		UNMINIMIZE,
+@@ -879,7 +987,7 @@ namespace Meta {
+ 		MINIMIZE,
+ 		NONE
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_CURSOR_", type_id = "meta_cursor_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_CURSOR_", type_id = "meta_cursor_get_type ()")]
+ 	public enum Cursor {
+ 		NONE,
+ 		DEFAULT,
+@@ -900,9 +1008,10 @@ namespace Meta {
+ 		POINTING_HAND,
+ 		CROSSHAIR,
+ 		IBEAM,
++		BLANK,
+ 		LAST
+ 	}
+-	[CCode (cheader_filename = "meta/util.h", cprefix = "META_DEBUG_", type_id = "meta_debug_topic_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_DEBUG_", type_id = "meta_debug_topic_get_type ()")]
+ 	[Flags]
+ 	public enum DebugTopic {
+ 		VERBOSE,
+@@ -928,9 +1037,10 @@ namespace Meta {
+ 		SHAPES,
+ 		COMPOSITOR,
+ 		EDGE_RESISTANCE,
+-		DBUS
++		DBUS,
++		INPUT
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_DIRECTION_", type_id = "meta_direction_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_DIRECTION_", type_id = "meta_direction_get_type ()")]
+ 	[Flags]
+ 	public enum Direction {
+ 		LEFT,
+@@ -942,21 +1052,21 @@ namespace Meta {
+ 		HORIZONTAL,
+ 		VERTICAL
+ 	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_DISPLAY_", type_id = "meta_display_corner_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_DISPLAY_", type_id = "meta_display_corner_get_type ()")]
+ 	public enum DisplayCorner {
+ 		TOPLEFT,
+ 		TOPRIGHT,
+ 		BOTTOMLEFT,
+ 		BOTTOMRIGHT
+ 	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_DISPLAY_", type_id = "meta_display_direction_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_DISPLAY_", type_id = "meta_display_direction_get_type ()")]
+ 	public enum DisplayDirection {
+ 		UP,
+ 		DOWN,
+ 		LEFT,
+ 		RIGHT
+ 	}
+-	[CCode (cheader_filename = "meta/boxes.h", cprefix = "META_EDGE_", type_id = "meta_edge_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_EDGE_", type_id = "meta_edge_type_get_type ()")]
+ 	public enum EdgeType {
+ 		WINDOW,
+ 		MONITOR,
+@@ -967,12 +1077,11 @@ namespace Meta {
+ 		SUCCESS,
+ 		ERROR
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_FRAME_", type_id = "meta_frame_flags_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_FRAME_", type_id = "meta_frame_flags_get_type ()")]
+ 	[Flags]
+ 	public enum FrameFlags {
+ 		ALLOWS_DELETE,
+ 		ALLOWS_MENU,
+-		ALLOWS_APPMENU,
+ 		ALLOWS_MINIMIZE,
+ 		ALLOWS_MAXIMIZE,
+ 		ALLOWS_VERTICAL_RESIZE,
+@@ -984,12 +1093,11 @@ namespace Meta {
+ 		ALLOWS_SHADE,
+ 		ALLOWS_MOVE,
+ 		FULLSCREEN,
+-		IS_FLASHING,
+ 		ABOVE,
+ 		TILED_LEFT,
+ 		TILED_RIGHT
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_FRAME_TYPE_", type_id = "meta_frame_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_FRAME_TYPE_", type_id = "meta_frame_type_get_type ()")]
+ 	public enum FrameType {
+ 		NORMAL,
+ 		DIALOG,
+@@ -1001,7 +1109,7 @@ namespace Meta {
+ 		LAST;
+ 		public unowned string to_string ();
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_GRAB_OP_", type_id = "meta_grab_op_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_GRAB_OP_", type_id = "meta_grab_op_get_type ()")]
+ 	public enum GrabOp {
+ 		NONE,
+ 		WINDOW_BASE,
+@@ -1028,12 +1136,26 @@ namespace Meta {
+ 		KEYBOARD_RESIZING_SE,
+ 		KEYBOARD_RESIZING_W
+ 	}
+-	[CCode (cheader_filename = "meta/meta-inhibit-shortcuts-dialog.h", cprefix = "META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_", type_id = "meta_inhibit_shortcuts_dialog_response_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_GRAVITY_", type_id = "meta_gravity_get_type ()")]
++	public enum Gravity {
++		NONE,
++		NORTH_WEST,
++		NORTH,
++		NORTH_EAST,
++		WEST,
++		CENTER,
++		EAST,
++		SOUTH_WEST,
++		SOUTH,
++		SOUTH_EAST,
++		STATIC
++	}
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_INHIBIT_SHORTCUTS_DIALOG_RESPONSE_", type_id = "meta_inhibit_shortcuts_dialog_response_get_type ()")]
+ 	public enum InhibitShortcutsDialogResponse {
+ 		ALLOW,
+ 		DENY
+ 	}
+-	[CCode (cheader_filename = "meta/prefs.h", cprefix = "META_KEYBINDING_ACTION_", type_id = "meta_key_binding_action_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_KEYBINDING_ACTION_", type_id = "meta_key_binding_action_get_type ()")]
+ 	public enum KeyBindingAction {
+ 		NONE,
+ 		WORKSPACE_1,
+@@ -1122,22 +1244,25 @@ namespace Meta {
+ 		MOVE_TO_SIDE_W,
+ 		MOVE_TO_CENTER,
+ 		OVERLAY_KEY,
++		LOCATE_POINTER_KEY,
+ 		ISO_NEXT_GROUP,
+ 		ALWAYS_ON_TOP,
+ 		SWITCH_MONITOR,
+ 		ROTATE_MONITOR,
+ 		LAST
+ 	}
+-	[CCode (cheader_filename = "meta/prefs.h", cprefix = "META_KEY_BINDING_", type_id = "meta_key_binding_flags_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_KEY_BINDING_", type_id = "meta_key_binding_flags_get_type ()")]
+ 	[Flags]
+ 	public enum KeyBindingFlags {
+ 		NONE,
+ 		PER_WINDOW,
+ 		BUILTIN,
+ 		IS_REVERSED,
+-		NON_MASKABLE
++		NON_MASKABLE,
++		IGNORE_AUTOREPEAT,
++		NO_AUTO_GRAB
+ 	}
+-	[CCode (cheader_filename = "meta/util.h", cprefix = "META_LATER_", type_id = "meta_later_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_LATER_", type_id = "meta_later_type_get_type ()")]
+ 	public enum LaterType {
+ 		RESIZE,
+ 		CALC_SHOWING,
+@@ -1146,25 +1271,25 @@ namespace Meta {
+ 		BEFORE_REDRAW,
+ 		IDLE
+ 	}
+-	[CCode (cheader_filename = "meta/util.h", cprefix = "META_LOCALE_DIRECTION_", type_id = "meta_locale_direction_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_LOCALE_DIRECTION_", type_id = "meta_locale_direction_get_type ()")]
+ 	public enum LocaleDirection {
+ 		LTR,
+ 		RTL
+ 	}
+-	[CCode (cheader_filename = "meta/window.h", cprefix = "META_MAXIMIZE_", type_id = "meta_maximize_flags_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_MAXIMIZE_", type_id = "meta_maximize_flags_get_type ()")]
+ 	[Flags]
+ 	public enum MaximizeFlags {
+ 		HORIZONTAL,
+ 		VERTICAL,
+ 		BOTH
+ 	}
+-	[CCode (cheader_filename = "meta/meta-plugin.h", cprefix = "META_MODAL_", type_id = "meta_modal_options_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_MODAL_", type_id = "meta_modal_options_get_type ()")]
+ 	[Flags]
+ 	public enum ModalOptions {
+ 		POINTER_ALREADY_GRABBED,
+ 		KEYBOARD_ALREADY_GRABBED
+ 	}
+-	[CCode (cheader_filename = "meta/meta-monitor-manager.h", cprefix = "META_MONITOR_SWITCH_CONFIG_", type_id = "meta_monitor_switch_config_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_MONITOR_SWITCH_CONFIG_", type_id = "meta_monitor_switch_config_type_get_type ()")]
+ 	public enum MonitorSwitchConfigType {
+ 		ALL_MIRROR,
+ 		ALL_LINEAR,
+@@ -1172,7 +1297,7 @@ namespace Meta {
+ 		BUILTIN,
+ 		UNKNOWN
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_MOTION_", type_id = "meta_motion_direction_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_MOTION_", type_id = "meta_motion_direction_get_type ()")]
+ 	public enum MotionDirection {
+ 		UP,
+ 		DOWN,
+@@ -1183,7 +1308,7 @@ namespace Meta {
+ 		DOWN_LEFT,
+ 		DOWN_RIGHT
+ 	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_PAD_ACTION_", type_id = "meta_pad_action_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_PAD_ACTION_", type_id = "meta_pad_action_type_get_type ()")]
+ 	public enum PadActionType {
+ 		BUTTON,
+ 		RING,
+@@ -1223,30 +1348,39 @@ namespace Meta {
+ 		DRAGGABLE_BORDER_WIDTH,
+ 		AUTO_MAXIMIZE,
+ 		CENTER_NEW_WINDOWS,
+-		DRAG_THRESHOLD;
++		DRAG_THRESHOLD,
++		LOCATE_POINTER,
++		CHECK_ALIVE_TIMEOUT;
+ 		public unowned string to_string ();
+ 	}
+-	[CCode (cheader_filename = "meta/meta-window-actor.h", cprefix = "META_SHADOW_MODE_", type_id = "meta_shadow_mode_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_", type_id = "meta_selection_type_get_type ()")]
++	public enum SelectionType {
++		SELECTION_PRIMARY,
++		SELECTION_CLIPBOARD,
++		SELECTION_DND,
++		N_SELECTION_TYPES
++	}
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_SHADOW_MODE_", type_id = "meta_shadow_mode_get_type ()")]
+ 	public enum ShadowMode {
+ 		AUTO,
+ 		FORCED_OFF,
+ 		FORCED_ON
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_SIDE_", type_id = "meta_side_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_SIDE_", type_id = "meta_side_get_type ()")]
+ 	public enum Side {
+ 		LEFT,
+ 		RIGHT,
+ 		TOP,
+ 		BOTTOM
+ 	}
+-	[CCode (cheader_filename = "meta/compositor.h", cprefix = "META_SIZE_CHANGE_", type_id = "meta_size_change_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_SIZE_CHANGE_", type_id = "meta_size_change_get_type ()")]
+ 	public enum SizeChange {
+ 		MAXIMIZE,
+ 		UNMAXIMIZE,
+ 		FULLSCREEN,
+ 		UNFULLSCREEN
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_LAYER_", type_id = "meta_stack_layer_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_LAYER_", type_id = "meta_stack_layer_get_type ()")]
+ 	public enum StackLayer {
+ 		DESKTOP,
+ 		BOTTOM,
+@@ -1256,19 +1390,19 @@ namespace Meta {
+ 		OVERRIDE_REDIRECT,
+ 		LAST
+ 	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_TAB_LIST_", type_id = "meta_tab_list_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_TAB_LIST_", type_id = "meta_tab_list_get_type ()")]
+ 	public enum TabList {
+ 		NORMAL,
+ 		DOCKS,
+ 		GROUP,
+ 		NORMAL_ALL
+ 	}
+-	[CCode (cheader_filename = "meta/display.h", cprefix = "META_TAB_SHOW_", type_id = "meta_tab_show_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_TAB_SHOW_", type_id = "meta_tab_show_type_get_type ()")]
+ 	public enum TabShowType {
+ 		ICON,
+ 		INSTANTLY
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_VIRTUAL_", type_id = "meta_virtual_modifier_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_VIRTUAL_", type_id = "meta_virtual_modifier_get_type ()")]
+ 	[Flags]
+ 	public enum VirtualModifier {
+ 		SHIFT_MASK,
+@@ -1282,17 +1416,17 @@ namespace Meta {
+ 		MOD4_MASK,
+ 		MOD5_MASK
+ 	}
+-	[CCode (cheader_filename = "meta/window.h", cprefix = "META_WINDOW_CLIENT_TYPE_", type_id = "meta_window_client_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_WINDOW_CLIENT_TYPE_", type_id = "meta_window_client_type_get_type ()")]
+ 	public enum WindowClientType {
+ 		WAYLAND,
+ 		X11
+ 	}
+-	[CCode (cheader_filename = "meta/common.h", cprefix = "META_WINDOW_MENU_", type_id = "meta_window_menu_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_WINDOW_MENU_", type_id = "meta_window_menu_type_get_type ()")]
+ 	public enum WindowMenuType {
+ 		WM,
+ 		APP
+ 	}
+-	[CCode (cheader_filename = "meta/window.h", cprefix = "META_WINDOW_", type_id = "meta_window_type_get_type ()")]
++	[CCode (cheader_filename = "meta/main.h", cprefix = "META_WINDOW_", type_id = "meta_window_type_get_type ()")]
+ 	public enum WindowType {
+ 		NORMAL,
+ 		DESKTOP,
+@@ -1311,51 +1445,57 @@ namespace Meta {
+ 		DND,
+ 		OVERRIDE_OTHER
+ 	}
+-	[CCode (cheader_filename = "meta/meta-idle-monitor.h", instance_pos = 2.9)]
++	[CCode (cheader_filename = "meta/main.h", instance_pos = 2.9)]
+ 	public delegate void IdleMonitorWatchFunc (Meta.IdleMonitor monitor, uint watch_id);
+-	[CCode (cheader_filename = "meta/prefs.h", instance_pos = 4.9)]
++	[CCode (cheader_filename = "meta/main.h", instance_pos = 4.9)]
+ 	public delegate void KeyHandlerFunc (Meta.Display display, Meta.Window window, [CCode (type = "ClutterKeyEvent*")] Clutter.KeyEvent? event, Meta.KeyBinding binding);
+-	[CCode (cheader_filename = "meta/prefs.h", instance_pos = 1.9)]
++	[CCode (cheader_filename = "meta/main.h", instance_pos = 1.9)]
+ 	public delegate void PrefsChangedFunc (Meta.Preference pref);
+-	[CCode (cheader_filename = "meta/window.h", instance_pos = 1.9)]
++	[CCode (cheader_filename = "meta/main.h", instance_pos = 1.9)]
+ 	public delegate bool WindowForeachFunc (Meta.Window window);
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_CURRENT_TIME")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_CURRENT_TIME")]
+ 	public const int CURRENT_TIME;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_DEFAULT_ICON_NAME")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_DEFAULT_ICON_NAME")]
+ 	public const string DEFAULT_ICON_NAME;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_ICON_HEIGHT")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_ICON_HEIGHT")]
+ 	public const int ICON_HEIGHT;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_ICON_WIDTH")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_ICON_WIDTH")]
+ 	public const int ICON_WIDTH;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_MAJOR_VERSION")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_MAJOR_VERSION")]
+ 	public const int MAJOR_VERSION;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_MICRO_VERSION")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_MICRO_VERSION")]
+ 	public const int MICRO_VERSION;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_MINI_ICON_HEIGHT")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_MINI_ICON_HEIGHT")]
+ 	public const int MINI_ICON_HEIGHT;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_MINI_ICON_WIDTH")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_MINI_ICON_WIDTH")]
+ 	public const int MINI_ICON_WIDTH;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_MINOR_VERSION")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_MINOR_VERSION")]
+ 	public const int MINOR_VERSION;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_PLUGIN_API_VERSION")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_PLUGIN_API_VERSION")]
+ 	public const int PLUGIN_API_VERSION;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_PRIORITY_BEFORE_REDRAW")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_BEFORE_REDRAW")]
+ 	public const int PRIORITY_BEFORE_REDRAW;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_PRIORITY_PREFS_NOTIFY")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_PREFS_NOTIFY")]
+ 	public const int PRIORITY_PREFS_NOTIFY;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_PRIORITY_REDRAW")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_REDRAW")]
+ 	public const int PRIORITY_REDRAW;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_PRIORITY_RESIZE")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_PRIORITY_RESIZE")]
+ 	public const int PRIORITY_RESIZE;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_VIRTUAL_CORE_KEYBOARD_ID")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_VIRTUAL_CORE_KEYBOARD_ID")]
+ 	public const int VIRTUAL_CORE_KEYBOARD_ID;
+-	[CCode (cheader_filename = "meta/common.h", cname = "META_VIRTUAL_CORE_POINTER_ID")]
++	[CCode (cheader_filename = "meta/main.h", cname = "META_VIRTUAL_CORE_POINTER_ID")]
+ 	public const int VIRTUAL_CORE_POINTER_ID;
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static bool activate_session ();
+ 	[CCode (cheader_filename = "meta/main.h")]
++	public static void add_clutter_debug_flags (Clutter.DebugFlag debug_flags, Clutter.DrawDebugFlag draw_flags, Clutter.PickDebugFlag pick_flags);
++	[CCode (cheader_filename = "meta/main.h")]
++	public static void clutter_init ();
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void exit (Meta.ExitCode code);
+ 	[CCode (cheader_filename = "meta/main.h")]
++	public static string g_utf8_strndup (string src, size_t n);
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static unowned GLib.OptionContext get_option_context ();
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static bool get_replace_current_wm ();
+@@ -1368,6 +1508,8 @@ namespace Meta {
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void register_with_session ();
+ 	[CCode (cheader_filename = "meta/main.h")]
++	public static void remove_clutter_debug_flags (Clutter.DebugFlag debug_flags, Clutter.DrawDebugFlag draw_flags, Clutter.PickDebugFlag pick_flags);
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void restart (string? message);
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static int run ();
+@@ -1375,6 +1517,14 @@ namespace Meta {
+ 	public static void set_gnome_wm_keybindings (string wm_keybindings);
+ 	[CCode (cheader_filename = "meta/main.h")]
+ 	public static void set_wm_name (string wm_name);
+-	[CCode (cheader_filename = "meta/meta-x11-display.h")]
++	[CCode (cheader_filename = "meta/main.h")]
++	public static void test_init ();
++	[CCode (cheader_filename = "meta/main.h")]
+ 	public static bool x11_init_gdk_display () throws GLib.Error;
+ }
++[CCode (cheader_filename = "libmutter-7-custom.h", has_type_id = false)]
++public struct before_frame {
++}
++[CCode (cheader_filename = "libmutter-7-custom.h", has_type_id = false)]
++public struct frame {
++}
+diff --git vapi/libmutter-cogl-4.vapi vapi/libmutter-cogl-4.vapi
+deleted file mode 100644
+index 7dc18476..00000000
+--- vapi/libmutter-cogl-4.vapi
++++ /dev/null
+@@ -1,1272 +0,0 @@
+-/* libmutter-cogl-4.vapi generated by vapigen, do not modify. */
+-
+-[CCode (cprefix = "Cogl", gir_namespace = "Cogl", gir_version = "4", lower_case_cprefix = "cogl_")]
+-namespace Cogl {
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_bitmap_get_gtype ()")]
+-	public class Bitmap : Cogl.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Bitmap ();
+-		public static uint32 error_quark ();
+-		[CCode (has_construct_function = false)]
+-		[Version (since = "1.0")]
+-		public Bitmap.from_file (string filename) throws GLib.Error;
+-		[Version (since = "1.10")]
+-		public Cogl.PixelFormat get_format ();
+-		[Version (since = "1.10")]
+-		public int get_height ();
+-		[Version (since = "1.10")]
+-		public int get_rowstride ();
+-		[Version (since = "1.0")]
+-		public static Cogl.Bool get_size_from_file (string filename, out int width, out int height);
+-		[Version (since = "1.10")]
+-		public int get_width ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Compact]
+-	public class Euler {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_frame_closure_get_gtype ()")]
+-	[Compact]
+-	[Version (since = "1.14")]
+-	public class FrameClosure {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_material_get_type ()")]
+-	[Compact]
+-	public class Material {
+-		[CCode (has_construct_function = false)]
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Material ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.2")]
+-		public Cogl.Material copy ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void foreach_layer (Cogl.MaterialLayerCallback callback);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_ambient (Cogl.Color ambient);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Color get_color ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_diffuse (Cogl.Color diffuse);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_emission (Cogl.Color emission);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.Bool get_layer_point_sprite_coords_enabled (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_p (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_s (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_t (int layer_index);
+-		public unowned GLib.List<Cogl.MaterialLayer> get_layers ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public int get_n_layers ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public float get_point_size ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public float get_shininess ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_specular (Cogl.Color specular);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.Handle get_user_program ();
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "1.0")]
+-		public static Cogl.Handle @ref (Cogl.Handle material);
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public void remove_layer (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_alpha_test_function (Cogl.MaterialAlphaFunc alpha_func, float alpha_reference);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_ambient (Cogl.Color ambient);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_ambient_and_diffuse (Cogl.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Bool set_blend (string blend_string) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_blend_constant (Cogl.Color constant_color);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_color (Cogl.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_color4f (float red, float green, float blue, float alpha);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_diffuse (Cogl.Color diffuse);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_emission (Cogl.Color emission);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_layer (int layer_index, Cogl.Handle texture);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_layer_combine_constant (int layer_index, Cogl.Color constant);
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public void set_layer_filters (int layer_index, Cogl.MaterialFilter min_filter, Cogl.MaterialFilter mag_filter);
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public void set_layer_matrix (int layer_index, Cogl.Matrix matrix);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.Bool set_layer_point_sprite_coords_enabled (int layer_index, Cogl.Bool enable) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_p (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_s (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_t (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_point_size (float point_size);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_shininess (float shininess);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_specular (Cogl.Color specular);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_user_program (Cogl.Handle program);
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "1.0")]
+-		public static void unref (Cogl.Handle material);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Compact]
+-	public class MaterialLayer {
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialFilter get_mag_filter ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialFilter get_min_filter ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.Handle get_texture ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialLayerType get_type ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_p ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_s ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_t ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_object_get_gtype ()")]
+-	public abstract class Object {
+-		[CCode (has_construct_function = false)]
+-		protected Object ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_offscreen_get_gtype ()")]
+-	public class Offscreen : Cogl.Object, Cogl.Framebuffer {
+-		[CCode (has_construct_function = false)]
+-		protected Offscreen ();
+-		[Version (deprecated = true, deprecated_since = "1.2")]
+-		public static void* @ref (void* offscreen);
+-		[CCode (has_construct_function = false)]
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Offscreen.to_texture (Cogl.Texture texture);
+-		[Version (deprecated = true, deprecated_since = "1.2")]
+-		public static void unref (void* offscreen);
+-		[CCode (has_construct_function = false)]
+-		public Offscreen.with_texture (Cogl.Texture texture);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_onscreen_get_gtype ()")]
+-	public class Onscreen : Cogl.Object, Cogl.Framebuffer {
+-		[CCode (has_construct_function = false)]
+-		protected Onscreen ();
+-		[Version (since = "1.16")]
+-		public Cogl.OnscreenDirtyClosure add_dirty_callback ([CCode (delegate_target_pos = 1.5)] Cogl.OnscreenDirtyCallback callback, Cogl.UserDataDestroyCallback? destroy);
+-		[Version (since = "2.0")]
+-		public Cogl.OnscreenResizeClosure add_resize_callback ([CCode (delegate_target_pos = 1.5)] Cogl.OnscreenResizeCallback callback, Cogl.UserDataDestroyCallback? destroy);
+-		[Version (deprecated = true, deprecated_since = "1.14", since = "1.10")]
+-		public uint add_swap_buffers_callback (Cogl.SwapBuffersNotify callback);
+-		public static void clutter_backend_set_size_CLUTTER (int width, int height);
+-		[Version (since = "1.14")]
+-		public int get_buffer_age ();
+-		[Version (since = "1.14")]
+-		public int64 get_frame_counter ();
+-		[Version (since = "2.0")]
+-		public Cogl.Bool get_resizable ();
+-		[Version (since = "2.0")]
+-		public void hide ();
+-		[Version (since = "1.16")]
+-		public void remove_dirty_callback (Cogl.OnscreenDirtyClosure closure);
+-		[Version (since = "1.14")]
+-		public void remove_frame_callback (Cogl.FrameClosure closure);
+-		[Version (since = "2.0")]
+-		public void remove_resize_callback (Cogl.OnscreenResizeClosure closure);
+-		[Version (deprecated = true, deprecated_since = "1.14", since = "1.10")]
+-		public void remove_swap_buffers_callback (uint id);
+-		[Version (since = "2.0")]
+-		public void set_resizable (Cogl.Bool resizable);
+-		[Version (since = "2.0")]
+-		public void show ();
+-		[Version (since = "1.10")]
+-		public void swap_buffers ();
+-		[Version (since = "1.16")]
+-		public void swap_buffers_with_damage (int rectangles, int n_rectangles);
+-		[Version (since = "1.10")]
+-		public void swap_region (int rectangles, int n_rectangles);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_onscreen_dirty_closure_get_gtype ()")]
+-	[Compact]
+-	[Version (since = "1.16")]
+-	public class OnscreenDirtyClosure {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_onscreen_resize_closure_get_gtype ()")]
+-	[Compact]
+-	[Version (since = "2.0")]
+-	public class OnscreenResizeClosure {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_pipeline_get_gtype ()")]
+-	public class Pipeline : Cogl.Object {
+-		[CCode (has_construct_function = false)]
+-		protected Pipeline ();
+-		[Version (since = "2.0")]
+-		public Cogl.Pipeline copy ();
+-		[Version (since = "2.0")]
+-		public void foreach_layer (Cogl.PipelineLayerCallback callback);
+-		[Version (since = "2.0")]
+-		public Cogl.PipelineAlphaFunc get_alpha_test_function ();
+-		[Version (since = "2.0")]
+-		public float get_alpha_test_reference ();
+-		[Version (since = "2.0")]
+-		public void get_ambient (Cogl.Color ambient);
+-		[Version (since = "2.0")]
+-		public Cogl.Color get_color ();
+-		[Version (since = "1.8")]
+-		public Cogl.ColorMask get_color_mask ();
+-		[Version (since = "2.0")]
+-		public Cogl.PipelineCullFaceMode get_cull_face_mode ();
+-		[Version (since = "2.0")]
+-		public void get_diffuse (Cogl.Color diffuse);
+-		[Version (since = "2.0")]
+-		public void get_emission (Cogl.Color emission);
+-		[Version (since = "2.0")]
+-		public Cogl.Winding get_front_face_winding ();
+-		[Version (since = "1.10")]
+-		public Cogl.PipelineFilter get_layer_mag_filter (int layer_index);
+-		[Version (since = "1.10")]
+-		public Cogl.PipelineFilter get_layer_min_filter (int layer_index);
+-		[Version (since = "2.0")]
+-		public Cogl.Bool get_layer_point_sprite_coords_enabled (int layer_index);
+-		[Version (since = "1.10")]
+-		public unowned Cogl.Texture get_layer_texture (int layer_index);
+-		[Version (since = "1.6")]
+-		public Cogl.PipelineWrapMode get_layer_wrap_mode_p (int layer_index);
+-		[Version (since = "1.6")]
+-		public Cogl.PipelineWrapMode get_layer_wrap_mode_s (int layer_index);
+-		[Version (since = "1.6")]
+-		public Cogl.PipelineWrapMode get_layer_wrap_mode_t (int layer_index);
+-		[Version (since = "2.0")]
+-		public int get_n_layers ();
+-		[Version (since = "2.0")]
+-		public Cogl.Bool get_per_vertex_point_size ();
+-		[Version (since = "2.0")]
+-		public float get_point_size ();
+-		[Version (since = "2.0")]
+-		public float get_shininess ();
+-		[Version (since = "2.0")]
+-		public void get_specular (Cogl.Color specular);
+-		[Version (since = "2.0")]
+-		public int get_uniform_location (string uniform_name);
+-		[Version (since = "2.0")]
+-		public Cogl.Handle get_user_program ();
+-		[Version (since = "1.10")]
+-		public void remove_layer (int layer_index);
+-		[Version (since = "2.0")]
+-		public void set_alpha_test_function (Cogl.PipelineAlphaFunc alpha_func, float alpha_reference);
+-		[Version (since = "2.0")]
+-		public void set_ambient (Cogl.Color ambient);
+-		[Version (since = "2.0")]
+-		public void set_ambient_and_diffuse (Cogl.Color color);
+-		[Version (since = "2.0")]
+-		public Cogl.Bool set_blend (string blend_string) throws GLib.Error;
+-		[Version (since = "2.0")]
+-		public void set_blend_constant (Cogl.Color constant_color);
+-		[Version (since = "2.0")]
+-		public void set_color (Cogl.Color color);
+-		[Version (since = "2.0")]
+-		public void set_color4f (float red, float green, float blue, float alpha);
+-		[Version (since = "2.0")]
+-		public void set_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-		[Version (since = "1.8")]
+-		public void set_color_mask (Cogl.ColorMask color_mask);
+-		[Version (since = "2.0")]
+-		public void set_cull_face_mode (Cogl.PipelineCullFaceMode cull_face_mode);
+-		[Version (since = "2.0")]
+-		public void set_diffuse (Cogl.Color diffuse);
+-		[Version (since = "2.0")]
+-		public void set_emission (Cogl.Color emission);
+-		[Version (since = "2.0")]
+-		public void set_front_face_winding (Cogl.Winding front_winding);
+-		[Version (since = "2.0")]
+-		public Cogl.Bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
+-		[Version (since = "2.0")]
+-		public void set_layer_combine_constant (int layer_index, Cogl.Color constant);
+-		[Version (since = "1.10")]
+-		public void set_layer_filters (int layer_index, Cogl.PipelineFilter min_filter, Cogl.PipelineFilter mag_filter);
+-		[Version (since = "1.10")]
+-		public void set_layer_matrix (int layer_index, Cogl.Matrix matrix);
+-		[Version (since = "1.10")]
+-		public void set_layer_null_texture (int layer_index, Cogl.TextureType texture_type);
+-		[Version (since = "2.0")]
+-		public Cogl.Bool set_layer_point_sprite_coords_enabled (int layer_index, Cogl.Bool enable) throws GLib.Error;
+-		public void set_layer_texture (int layer_index, Cogl.Texture texture);
+-		[Version (since = "2.0")]
+-		public void set_layer_wrap_mode (int layer_index, Cogl.PipelineWrapMode mode);
+-		[Version (since = "2.0")]
+-		public void set_layer_wrap_mode_p (int layer_index, Cogl.PipelineWrapMode mode);
+-		[Version (since = "2.0")]
+-		public void set_layer_wrap_mode_s (int layer_index, Cogl.PipelineWrapMode mode);
+-		[Version (since = "2.0")]
+-		public void set_layer_wrap_mode_t (int layer_index, Cogl.PipelineWrapMode mode);
+-		[Version (since = "2.0")]
+-		public Cogl.Bool set_per_vertex_point_size (Cogl.Bool enable) throws GLib.Error;
+-		[Version (since = "2.0")]
+-		public void set_point_size (float point_size);
+-		[Version (since = "2.0")]
+-		public void set_shininess (float shininess);
+-		[Version (since = "2.0")]
+-		public void set_specular (Cogl.Color specular);
+-		[Version (since = "2.0")]
+-		public void set_uniform_1f (int uniform_location, float value);
+-		[Version (since = "2.0")]
+-		public void set_uniform_1i (int uniform_location, int value);
+-		[Version (since = "2.0")]
+-		public void set_uniform_float (int uniform_location, int n_components, int count, float value);
+-		[Version (since = "2.0")]
+-		public void set_uniform_int (int uniform_location, int n_components, int count, int value);
+-		[Version (since = "2.0")]
+-		public void set_uniform_matrix (int uniform_location, int dimensions, int count, Cogl.Bool transpose, float value);
+-		[Version (since = "2.0")]
+-		public void set_user_program (Cogl.Handle program);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Compact]
+-	public class Quaternion {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_framebuffer_get_gtype ()")]
+-	public interface Framebuffer : Cogl.Object {
+-		[Version (since = "1.8")]
+-		public Cogl.Bool allocate () throws GLib.Error;
+-		[Version (since = "1.8")]
+-		public void clear (ulong buffers, Cogl.Color color);
+-		[Version (since = "1.8")]
+-		public void clear4f (ulong buffers, float red, float green, float blue, float alpha);
+-		[Version (since = "1.8")]
+-		public void discard_buffers (ulong buffers);
+-		[Version (since = "1.10")]
+-		public void draw_multitextured_rectangle (Cogl.Pipeline pipeline, float x_1, float y_1, float x_2, float y_2, [CCode (array_length = false)] float[] tex_coords, int tex_coords_len);
+-		[Version (since = "1.10")]
+-		public void draw_rectangle (Cogl.Pipeline pipeline, float x_1, float y_1, float x_2, float y_2);
+-		[Version (since = "1.10")]
+-		public void draw_rectangles (Cogl.Pipeline pipeline, [CCode (array_length = false)] float[] coordinates, uint n_rectangles);
+-		[Version (since = "1.10")]
+-		public void draw_textured_rectangle (Cogl.Pipeline pipeline, float x_1, float y_1, float x_2, float y_2, float s_1, float t_1, float s_2, float t_2);
+-		[Version (since = "1.10")]
+-		public void draw_textured_rectangles (Cogl.Pipeline pipeline, [CCode (array_length = false)] float[] coordinates, uint n_rectangles);
+-		public static uint32 error_quark ();
+-		[Version (since = "1.10")]
+-		public void finish ();
+-		[Version (since = "1.10")]
+-		public void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
+-		[Version (since = "1.8")]
+-		public int get_alpha_bits ();
+-		[Version (since = "1.8")]
+-		public int get_blue_bits ();
+-		[Version (since = "1.8")]
+-		public Cogl.ColorMask get_color_mask ();
+-		[Version (since = "2.0")]
+-		public int get_depth_bits ();
+-		[Version (since = "1.14")]
+-		public unowned Cogl.Texture get_depth_texture ();
+-		[Version (since = "1.14")]
+-		public Cogl.Bool get_depth_texture_enabled ();
+-		[Version (since = "1.18")]
+-		public Cogl.Bool get_depth_write_enabled ();
+-		[Version (since = "1.8")]
+-		public Cogl.Bool get_dither_enabled ();
+-		[Version (since = "1.8")]
+-		public int get_green_bits ();
+-		[Version (since = "1.8")]
+-		public int get_height ();
+-		public Cogl.Bool get_is_stereo ();
+-		[Version (since = "1.10")]
+-		public Cogl.Matrix get_modelview_matrix ();
+-		[Version (since = "1.10")]
+-		public Cogl.Matrix get_projection_matrix ();
+-		[Version (since = "1.8")]
+-		public int get_red_bits ();
+-		[Version (since = "1.10")]
+-		public int get_samples_per_pixel ();
+-		[Version (since = "1.20")]
+-		public Cogl.StereoMode get_stereo_mode ();
+-		[Version (since = "1.8")]
+-		public void get_viewport4fv ([CCode (array_length = false)] out unowned float viewport[4]);
+-		[Version (since = "1.8")]
+-		public float get_viewport_height ();
+-		[Version (since = "1.8")]
+-		public float get_viewport_width ();
+-		[Version (since = "1.8")]
+-		public float get_viewport_x ();
+-		[Version (since = "1.8")]
+-		public float get_viewport_y ();
+-		[Version (since = "1.8")]
+-		public int get_width ();
+-		[Version (since = "1.10")]
+-		public void identity_matrix ();
+-		[Version (since = "1.10")]
+-		public void orthographic (float x_1, float y_1, float x_2, float y_2, float near, float far);
+-		[Version (since = "1.10")]
+-		public void perspective (float fov_y, float aspect, float z_near, float z_far);
+-		[Version (since = "1.10")]
+-		public void pop_clip ();
+-		[Version (since = "1.10")]
+-		public void pop_matrix ();
+-		[Version (since = "1.10")]
+-		public void push_matrix ();
+-		[Version (since = "1.10")]
+-		public void push_rectangle_clip (float x_1, float y_1, float x_2, float y_2);
+-		[Version (since = "1.10")]
+-		public void push_scissor_clip (int x, int y, int width, int height);
+-		[Version (since = "1.10")]
+-		public Cogl.Bool read_pixels (int x, int y, int width, int height, Cogl.PixelFormat format, uint8 pixels);
+-		[Version (since = "1.10")]
+-		public Cogl.Bool read_pixels_into_bitmap (int x, int y, Cogl.ReadPixelsFlags source, Cogl.Bitmap bitmap);
+-		[Version (since = "1.8")]
+-		public void resolve_samples ();
+-		[Version (since = "1.8")]
+-		public void resolve_samples_region (int x, int y, int width, int height);
+-		[Version (since = "1.10")]
+-		public void rotate (float angle, float x, float y, float z);
+-		[Version (since = "2.0")]
+-		public void rotate_euler (Cogl.Euler euler);
+-		[Version (since = "2.0")]
+-		public void rotate_quaternion (Cogl.Quaternion quaternion);
+-		[Version (since = "1.10")]
+-		public void scale (float x, float y, float z);
+-		[Version (since = "1.8")]
+-		public void set_color_mask (Cogl.ColorMask color_mask);
+-		[Version (since = "1.14")]
+-		public void set_depth_texture_enabled (Cogl.Bool enabled);
+-		[Version (since = "1.18")]
+-		public void set_depth_write_enabled (Cogl.Bool depth_write_enabled);
+-		[Version (since = "1.8")]
+-		public void set_dither_enabled (Cogl.Bool dither_enabled);
+-		[Version (since = "1.10")]
+-		public void set_modelview_matrix (Cogl.Matrix matrix);
+-		[Version (since = "1.10")]
+-		public void set_projection_matrix (Cogl.Matrix matrix);
+-		[Version (since = "1.8")]
+-		public void set_samples_per_pixel (int samples_per_pixel);
+-		[Version (since = "1.20")]
+-		public void set_stereo_mode (Cogl.StereoMode stereo_mode);
+-		[Version (since = "1.8")]
+-		public void set_viewport (float x, float y, float width, float height);
+-		[Version (since = "1.10")]
+-		public void transform (Cogl.Matrix matrix);
+-		[Version (since = "1.10")]
+-		public void translate (float x, float y, float z);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_texture_get_gtype ()")]
+-	public interface Texture : Cogl.Object {
+-		public Cogl.Bool allocate () throws GLib.Error;
+-		public static uint32 error_quark ();
+-		[Version (since = "1.18")]
+-		public Cogl.TextureComponents get_components ();
+-		public int get_data (Cogl.PixelFormat format, uint rowstride, uint8 data);
+-		public Cogl.Bool get_gl_texture (out uint out_gl_handle, out uint out_gl_target);
+-		public uint get_height ();
+-		public int get_max_waste ();
+-		[Version (since = "1.18")]
+-		public Cogl.Bool get_premultiplied ();
+-		public uint get_width ();
+-		public Cogl.Bool is_sliced ();
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "1.0")]
+-		public static Cogl.Texture new_from_bitmap (Cogl.Bitmap bitmap, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_from_data (int width, int height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, int rowstride, uint8 data);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_from_foreign (uint gl_handle, uint gl_target, uint width, uint height, uint x_pot_waste, uint y_pot_waste, Cogl.PixelFormat format);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "1.2")]
+-		public Cogl.Texture new_from_sub_texture (int sub_x, int sub_y, int sub_width, int sub_height);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-		[Version (since = "1.18")]
+-		public void set_components (Cogl.TextureComponents components);
+-		public Cogl.Bool set_data (Cogl.PixelFormat format, int rowstride, uint8 data, int level) throws GLib.Error;
+-		[Version (since = "1.18")]
+-		public void set_premultiplied (Cogl.Bool premultiplied);
+-		public Cogl.Bool set_region (int src_x, int src_y, int dst_x, int dst_y, uint dst_width, uint dst_height, int width, int height, Cogl.PixelFormat format, uint rowstride, uint8 data);
+-		[Version (since = "1.8")]
+-		public Cogl.Bool set_region_from_bitmap (int src_x, int src_y, int dst_x, int dst_y, uint dst_width, uint dst_height, Cogl.Bitmap bitmap);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[SimpleType]
+-	public struct Angle : int32 {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[SimpleType]
+-	public struct Bool : int {
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_color_get_gtype ()")]
+-	[Version (since = "1.0")]
+-	public struct Color {
+-		public Cogl.Color? copy ();
+-		public static Cogl.Bool equal (void* v1, void* v2);
+-		public float get_alpha ();
+-		public uint8 get_alpha_byte ();
+-		public float get_alpha_float ();
+-		public float get_blue ();
+-		public uint8 get_blue_byte ();
+-		public float get_blue_float ();
+-		public float get_green ();
+-		public uint8 get_green_byte ();
+-		public float get_green_float ();
+-		public float get_red ();
+-		public uint8 get_red_byte ();
+-		public float get_red_float ();
+-		[Version (since = "1.4")]
+-		public void init_from_4f (float red, float green, float blue, float alpha);
+-		[Version (since = "1.4")]
+-		public void init_from_4fv (float color_array);
+-		[Version (since = "1.4")]
+-		public void init_from_4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-		[Version (since = "1.16")]
+-		public static void init_from_hsl (out Cogl.Color color, float hue, float saturation, float luminance);
+-		public void premultiply ();
+-		[Version (since = "1.4")]
+-		public void set_alpha (float alpha);
+-		[Version (since = "1.4")]
+-		public void set_alpha_byte (uint8 alpha);
+-		[Version (since = "1.4")]
+-		public void set_alpha_float (float alpha);
+-		[Version (since = "1.4")]
+-		public void set_blue (float blue);
+-		[Version (since = "1.4")]
+-		public void set_blue_byte (uint8 blue);
+-		[Version (since = "1.4")]
+-		public void set_blue_float (float blue);
+-		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
+-		public void set_from_4f (float red, float green, float blue, float alpha);
+-		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
+-		public void set_from_4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-		[Version (since = "1.4")]
+-		public void set_green (float green);
+-		[Version (since = "1.4")]
+-		public void set_green_byte (uint8 green);
+-		[Version (since = "1.4")]
+-		public void set_green_float (float green);
+-		[Version (since = "1.4")]
+-		public void set_red (float red);
+-		[Version (since = "1.4")]
+-		public void set_red_byte (uint8 red);
+-		[Version (since = "1.4")]
+-		public void set_red_float (float red);
+-		[Version (since = "1.16")]
+-		public void to_hsl (out float hue, out float saturation, out float luminance);
+-		[Version (since = "1.4")]
+-		public void unpremultiply ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Version (since = "1.8")]
+-	public struct DebugObjectTypeInfo {
+-		public weak string name;
+-		public ulong instance_count;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[SimpleType]
+-	public struct Handle {
+-		public static GLib.Type get_type ();
+-		public Cogl.Handle @ref ();
+-		public void unref ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_matrix_get_gtype ()")]
+-	public struct Matrix {
+-		public float xx;
+-		public float yx;
+-		public float zx;
+-		public float wx;
+-		public float xy;
+-		public float yy;
+-		public float zy;
+-		public float wy;
+-		public float xz;
+-		public float yz;
+-		public float zz;
+-		public float wz;
+-		public float xw;
+-		public float yw;
+-		public float zw;
+-		public float ww;
+-		[Version (since = "1.6")]
+-		public Cogl.Matrix? copy ();
+-		[Version (since = "1.4")]
+-		public static Cogl.Bool equal (void* v1, void* v2);
+-		[Version (since = "1.6")]
+-		public void free ();
+-		public void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
+-		public unowned float[] get_array ();
+-		[Version (since = "1.2")]
+-		public Cogl.Bool get_inverse (out Cogl.Matrix inverse);
+-		public void init_from_euler (Cogl.Euler euler);
+-		public void init_from_quaternion (Cogl.Quaternion quaternion);
+-		[Version (since = "2.0")]
+-		public void init_translation (float tx, float ty, float tz);
+-		[Version (since = "1.8")]
+-		public Cogl.Bool is_identity ();
+-		[Version (since = "1.8")]
+-		public void look_at (float eye_position_x, float eye_position_y, float eye_position_z, float object_x, float object_y, float object_z, float world_up_x, float world_up_y, float world_up_z);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void ortho (float left, float right, float bottom, float top, float near, float far);
+-		[Version (since = "1.10")]
+-		public void orthographic (float x_1, float y_1, float x_2, float y_2, float near, float far);
+-		public void perspective (float fov_y, float aspect, float z_near, float z_far);
+-		public void project_points (int n_components, size_t stride_in, void* points_in, size_t stride_out, void* points_out, int n_points);
+-		public void rotate (float angle, float x, float y, float z);
+-		[Version (since = "2.0")]
+-		public void rotate_euler (Cogl.Euler euler);
+-		[Version (since = "2.0")]
+-		public void rotate_quaternion (Cogl.Quaternion quaternion);
+-		public void scale (float sx, float sy, float sz);
+-		public void transform_point (ref float x, ref float y, ref float z, ref float w);
+-		public void transform_points (int n_components, size_t stride_in, void* points_in, size_t stride_out, void* points_out, int n_points);
+-		public void translate (float x, float y, float z);
+-		[Version (since = "1.10")]
+-		public void transpose ();
+-		[Version (since = "1.8")]
+-		public void view_2d_in_frustum (float left, float right, float bottom, float top, float z_near, float z_2d, float width_2d, float height_2d);
+-		[Version (since = "1.8")]
+-		public void view_2d_in_perspective (float fov_y, float aspect, float z_near, float z_2d, float width_2d, float height_2d);
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Version (since = "1.16")]
+-	public struct OnscreenDirtyInfo {
+-		public int x;
+-		public int y;
+-		public int width;
+-		public int height;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	public struct TextureVertex {
+-		public float x;
+-		public float y;
+-		public float z;
+-		public float tx;
+-		public float ty;
+-		public Cogl.Color color;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Version (since = "1.4")]
+-	public struct UserDataKey {
+-		public int unused;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "_CoglColorSizeCheck", has_type_id = false)]
+-	public struct _ColorSizeCheck {
+-		[CCode (array_length = false)]
+-		public weak char[] compile_time_assert_CoglColor_size;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "_CoglMatrixSizeCheck", has_type_id = false)]
+-	public struct _MatrixSizeCheck {
+-		[CCode (array_length = false)]
+-		public weak char[] compile_time_assert_CoglMatrix_size;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "_CoglTextureVertexSizeCheck", has_type_id = false)]
+-	public struct _TextureVertexSizeCheck {
+-		[CCode (array_length = false)]
+-		public weak char[] compile_time_assert_CoglTextureVertex_size;
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_ATTRIBUTE_TYPE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum AttributeType {
+-		BYTE,
+-		UNSIGNED_BYTE,
+-		SHORT,
+-		UNSIGNED_SHORT,
+-		FLOAT
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_BITMAP_ERROR_", has_type_id = false)]
+-	[Version (since = "1.4")]
+-	public enum BitmapError {
+-		FAILED,
+-		UNKNOWN_TYPE,
+-		CORRUPT_IMAGE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_BLEND_STRING_ERROR_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum BlendStringError {
+-		PARSE_ERROR,
+-		ARGUMENT_PARSE_ERROR,
+-		INVALID_ERROR,
+-		GPU_UNSUPPORTED_ERROR;
+-		public static uint32 quark ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_BUFFER_BIT_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "1.0")]
+-	public enum BufferBit {
+-		COLOR,
+-		DEPTH,
+-		STENCIL
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "0.8")]
+-	public enum BufferTarget {
+-		WINDOW_BUFFER,
+-		OFFSCREEN_BUFFER
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_COLOR_MASK_", has_type_id = false)]
+-	[Flags]
+-	public enum ColorMask {
+-		NONE,
+-		RED,
+-		GREEN,
+-		BLUE,
+-		ALPHA,
+-		ALL
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_DEPTH_TEST_FUNCTION_", has_type_id = false)]
+-	public enum DepthTestFunction {
+-		NEVER,
+-		LESS,
+-		EQUAL,
+-		LEQUAL,
+-		GREATER,
+-		NOTEQUAL,
+-		GEQUAL,
+-		ALWAYS
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FEATURE_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "0.8")]
+-	public enum FeatureFlags {
+-		TEXTURE_RECTANGLE,
+-		TEXTURE_NPOT,
+-		TEXTURE_YUV,
+-		TEXTURE_READ_PIXELS,
+-		SHADERS_GLSL,
+-		OFFSCREEN,
+-		OFFSCREEN_MULTISAMPLE,
+-		OFFSCREEN_BLIT,
+-		FOUR_CLIP_PLANES,
+-		STENCIL_BUFFER,
+-		VBOS,
+-		PBOS,
+-		UNSIGNED_INT_INDICES,
+-		DEPTH_RANGE,
+-		TEXTURE_NPOT_BASIC,
+-		TEXTURE_NPOT_MIPMAP,
+-		TEXTURE_NPOT_REPEAT,
+-		POINT_SPRITE,
+-		TEXTURE_3D,
+-		MAP_BUFFER_FOR_READ,
+-		MAP_BUFFER_FOR_WRITE,
+-		ONSCREEN_MULTIPLE,
+-		DEPTH_TEXTURE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FILTER_", has_type_id = false)]
+-	public enum FilterReturn {
+-		CONTINUE,
+-		REMOVE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FOG_MODE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum FogMode {
+-		LINEAR,
+-		EXPONENTIAL,
+-		EXPONENTIAL_SQUARED
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FRAME_EVENT_", has_type_id = false)]
+-	[Version (since = "1.14")]
+-	public enum FrameEvent {
+-		SYNC,
+-		COMPLETE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FRAMEBUFFER_ERROR_", has_type_id = false)]
+-	public enum FramebufferError {
+-		[CCode (cname = "COGL_FRAMEBUFFER_ERROR_ALLOCATE")]
+-		FRAMEBUFFER_ERROR_ALLOCATE;
+-		public static uint32 quark ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_INDICES_TYPE_UNSIGNED_", has_type_id = false)]
+-	public enum IndicesType {
+-		BYTE,
+-		SHORT,
+-		INT
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_ALPHA_FUNC_", has_type_id = false)]
+-	public enum MaterialAlphaFunc {
+-		NEVER,
+-		LESS,
+-		EQUAL,
+-		LEQUAL,
+-		GREATER,
+-		NOTEQUAL,
+-		GEQUAL,
+-		ALWAYS
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_FILTER_", has_type_id = false)]
+-	public enum MaterialFilter {
+-		NEAREST,
+-		LINEAR,
+-		NEAREST_MIPMAP_NEAREST,
+-		LINEAR_MIPMAP_NEAREST,
+-		NEAREST_MIPMAP_LINEAR,
+-		LINEAR_MIPMAP_LINEAR
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_LAYER_TYPE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum MaterialLayerType {
+-		[CCode (cname = "COGL_MATERIAL_LAYER_TYPE_TEXTURE")]
+-		MATERIAL_LAYER_TYPE_TEXTURE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_WRAP_MODE_", has_type_id = false)]
+-	[Version (since = "1.4")]
+-	public enum MaterialWrapMode {
+-		REPEAT,
+-		CLAMP_TO_EDGE,
+-		AUTOMATIC
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_PIPELINE_ALPHA_FUNC_", has_type_id = false)]
+-	public enum PipelineAlphaFunc {
+-		NEVER,
+-		LESS,
+-		EQUAL,
+-		LEQUAL,
+-		GREATER,
+-		NOTEQUAL,
+-		GEQUAL,
+-		ALWAYS
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_PIPELINE_CULL_FACE_MODE_", has_type_id = false)]
+-	public enum PipelineCullFaceMode {
+-		NONE,
+-		FRONT,
+-		BACK,
+-		BOTH
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_PIPELINE_FILTER_", has_type_id = false)]
+-	public enum PipelineFilter {
+-		NEAREST,
+-		LINEAR,
+-		NEAREST_MIPMAP_NEAREST,
+-		LINEAR_MIPMAP_NEAREST,
+-		NEAREST_MIPMAP_LINEAR,
+-		LINEAR_MIPMAP_LINEAR
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_PIPELINE_WRAP_MODE_", has_type_id = false)]
+-	[Version (since = "2.0")]
+-	public enum PipelineWrapMode {
+-		REPEAT,
+-		MIRRORED_REPEAT,
+-		CLAMP_TO_EDGE,
+-		AUTOMATIC
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_PIXEL_FORMAT_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "0.8")]
+-	public enum PixelFormat {
+-		ANY,
+-		A_8,
+-		RGB_565,
+-		RGBA_4444,
+-		RGBA_5551,
+-		YUV,
+-		G_8,
+-		RG_88,
+-		RGB_888,
+-		BGR_888,
+-		RGBA_8888,
+-		BGRA_8888,
+-		ARGB_8888,
+-		ABGR_8888,
+-		RGBA_1010102,
+-		BGRA_1010102,
+-		ARGB_2101010,
+-		ABGR_2101010,
+-		RGBA_8888_PRE,
+-		BGRA_8888_PRE,
+-		ARGB_8888_PRE,
+-		ABGR_8888_PRE,
+-		RGBA_4444_PRE,
+-		RGBA_5551_PRE,
+-		RGBA_1010102_PRE,
+-		BGRA_1010102_PRE,
+-		ARGB_2101010_PRE,
+-		ABGR_2101010_PRE,
+-		DEPTH_16,
+-		DEPTH_32,
+-		DEPTH_24_STENCIL_8
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_READ_PIXELS_COLOR_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "1.0")]
+-	public enum ReadPixelsFlags {
+-		[CCode (cname = "COGL_READ_PIXELS_COLOR_BUFFER")]
+-		READ_PIXELS_COLOR_BUFFER
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_RENDERER_ERROR_", has_type_id = false)]
+-	public enum RendererError {
+-		XLIB_DISPLAY_OPEN,
+-		BAD_CONSTRAINT
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_SHADER_TYPE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum ShaderType {
+-		VERTEX,
+-		FRAGMENT
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_STEREO_", has_type_id = false)]
+-	public enum StereoMode {
+-		BOTH,
+-		LEFT,
+-		RIGHT
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_SYSTEM_ERROR_", has_type_id = false)]
+-	[Version (since = "1.4")]
+-	public enum SystemError {
+-		UNSUPPORTED,
+-		NO_MEMORY
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_TEXTURE_COMPONENTS_", has_type_id = false)]
+-	[Version (since = "1.18")]
+-	public enum TextureComponents {
+-		A,
+-		RG,
+-		RGB,
+-		RGBA,
+-		DEPTH
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_TEXTURE_ERROR_", has_type_id = false)]
+-	[Version (since = "1.8")]
+-	public enum TextureError {
+-		SIZE,
+-		FORMAT,
+-		BAD_PARAMETER,
+-		TYPE;
+-		public static uint32 quark ();
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_TEXTURE_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "1.0")]
+-	public enum TextureFlags {
+-		NONE,
+-		NO_AUTO_MIPMAP,
+-		NO_SLICING,
+-		NO_ATLAS
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_TEXTURE_TYPE_", has_type_id = false)]
+-	[Version (since = "1.10")]
+-	public enum TextureType {
+-		@2D,
+-		@3D,
+-		RECTANGLE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_VERTICES_MODE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum VerticesMode {
+-		POINTS,
+-		LINES,
+-		LINE_LOOP,
+-		LINE_STRIP,
+-		TRIANGLES,
+-		TRIANGLE_STRIP,
+-		TRIANGLE_FAN
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_WINDING_", has_type_id = false)]
+-	public enum Winding {
+-		CLOCKWISE,
+-		COUNTER_CLOCKWISE
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_WINSYS_FEATURE_", has_type_id = false)]
+-	public enum WinsysFeature {
+-		MULTIPLE_ONSCREEN,
+-		SWAP_THROTTLE,
+-		VBLANK_COUNTER,
+-		VBLANK_WAIT,
+-		TEXTURE_FROM_PIXMAP,
+-		SWAP_BUFFERS_EVENT,
+-		SWAP_REGION,
+-		SWAP_REGION_THROTTLE,
+-		SWAP_REGION_SYNCHRONIZED,
+-		BUFFER_AGE,
+-		SYNC_AND_COMPLETE_EVENT,
+-		N_FEATURES
+-	}
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+-	[Version (since = "1.8")]
+-	public delegate void DebugObjectForeachTypeCallback (Cogl.DebugObjectTypeInfo info);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-	public delegate Cogl.Bool MaterialLayerCallback (Cogl.Material material, int layer_index);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	[Version (since = "1.16")]
+-	public delegate void OnscreenDirtyCallback (Cogl.Onscreen onscreen, Cogl.OnscreenDirtyInfo info);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 3.9)]
+-	[Version (since = "2.0")]
+-	public delegate void OnscreenResizeCallback (Cogl.Onscreen onscreen, int width, int height);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	public delegate void OnscreenX11MaskCallback (Cogl.Onscreen onscreen, uint32 event_mask);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	[Version (since = "2.0")]
+-	public delegate Cogl.Bool PipelineLayerCallback (Cogl.Pipeline pipeline, int layer_index);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+-	public delegate void SwapBuffersNotify (Cogl.Framebuffer framebuffer);
+-	[CCode (cheader_filename = "cogl/cogl.h", has_target = false)]
+-	public delegate void UserDataDestroyCallback (void* data);
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_AFIRST_BIT")]
+-	public const int AFIRST_BIT;
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_A_BIT")]
+-	public const int A_BIT;
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_BGR_BIT")]
+-	public const int BGR_BIT;
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_DEPTH_BIT")]
+-	public const int DEPTH_BIT;
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_PREMULT_BIT")]
+-	public const int PREMULT_BIT;
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_STENCIL_BIT")]
+-	public const int STENCIL_BIT;
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_TEXTURE_MAX_WASTE")]
+-	public const int TEXTURE_MAX_WASTE;
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void begin_gl ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static Cogl.Bool check_extension (string name, string ext);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void clear (Cogl.Color color, ulong buffers);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static Cogl.Bool clutter_check_extension_CLUTTER (string name, string ext);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static Cogl.Bool clutter_winsys_has_feature_CLUTTER (Cogl.WinsysFeature feature);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "2.0")]
+-	public static void debug_matrix_print (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.8")]
+-	public static void debug_object_foreach_type (Cogl.DebugObjectForeachTypeCallback func);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.8")]
+-	public static void debug_object_print_instances ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void disable_fog ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void end_gl ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Bool features_available (Cogl.FeatureFlags features);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void flush ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8.2")]
+-	public static void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Bool get_backface_culling_enabled ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8")]
+-	public static void get_bitmasks (out int red, out int green, out int blue, out int alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Bool get_depth_test_enabled ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.8")]
+-	public static unowned Cogl.Framebuffer get_draw_framebuffer ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-	public static Cogl.FeatureFlags get_features ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Matrix get_modelview_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static GLib.OptionGroup get_option_group ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Matrix get_projection_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void* get_source ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void get_viewport ([CCode (array_length = false)] out float v[4]);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18")]
+-	public static GLib.Type gtype_matrix_get_type ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.10")]
+-	public static Cogl.Bool is_framebuffer (void* object);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.10")]
+-	public static Cogl.Bool is_onscreen (void* object);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "2.0")]
+-	public static Cogl.Bool is_pipeline (void* object);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-	public static Cogl.Bool is_vertex_buffer_indices (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-	public static void ortho (float left, float right, float bottom, float top, float near, float far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void perspective (float fovy, float aspect, float z_near, float z_far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void polygon (Cogl.TextureVertex vertices, uint n_vertices, Cogl.Bool use_color);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void pop_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void pop_source ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void push_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void push_source (void* material);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static void rectangle (float x_1, float y_1, float x_2, float y_2);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangle_with_multitexture_coords (float x1, float y1, float x2, float y2, [CCode (array_length = false)] float[] tex_coords, int tex_coords_len);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangle_with_texture_coords (float x1, float y1, float x2, float y2, float tx1, float ty1, float tx2, float ty2);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangles ([CCode (array_length = false)] float[] verts, uint n_rects);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "0.8.6")]
+-	public static void rectangles_with_texture_coords ([CCode (array_length = false)] float[] verts, uint n_rects);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void rotate (float angle, float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void scale (float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_backface_culling_enabled (Cogl.Bool setting);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_depth_test_enabled (Cogl.Bool setting);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_fog (Cogl.Color fog_color, Cogl.FogMode mode, float density, float z_near, float z_far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void set_modelview_matrix (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void set_projection_matrix (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source (void* material);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color (Cogl.Color color);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color4f (float red, float green, float blue, float alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_texture (Cogl.Texture texture);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "1.2")]
+-	public static void set_viewport (int x, int y, int width, int height);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_compile (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static string shader_get_info_log (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.ShaderType shader_get_type (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Bool shader_is_compiled (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Handle shader_ref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_source (Cogl.Handle shader, string source);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_unref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "1.0")]
+-	public static Cogl.Texture texture_new_from_bitmap (Cogl.Bitmap bitmap, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-	public static Cogl.Texture texture_new_from_data (int width, int height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, int rowstride, uint8 data);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-	public static Cogl.Texture texture_new_from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-	public static Cogl.Texture texture_new_from_foreign (uint gl_handle, uint gl_target, uint width, uint height, uint x_pot_waste, uint y_pot_waste, Cogl.PixelFormat format);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-	public static Cogl.Texture texture_new_with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.4")]
+-	public static void transform (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void translate (float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_add (Cogl.Handle handle, string attribute_name, uint8 n_components, Cogl.AttributeType type, Cogl.Bool normalized, uint16 stride, void* pointer);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_delete (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_disable (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_draw (Cogl.Handle handle, Cogl.VerticesMode mode, int first, int count);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_draw_elements (Cogl.Handle handle, Cogl.VerticesMode mode, Cogl.Handle indices, int min_index, int max_index, int indices_offset, int count);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_enable (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static uint vertex_buffer_get_n_vertices (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Handle vertex_buffer_indices_get_for_quads (uint n_indices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.IndicesType vertex_buffer_indices_get_type (Cogl.Handle indices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Handle vertex_buffer_new (uint n_vertices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static Cogl.Handle vertex_buffer_ref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_submit (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static void vertex_buffer_unref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "0.8.2")]
+-	public static void viewport (uint width, uint height);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static uint32 x11_onscreen_get_visual_xid (Cogl.Onscreen onscreen);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.10")]
+-	public static uint32 x11_onscreen_get_window_xid (Cogl.Onscreen onscreen);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "2.0")]
+-	public static void x11_onscreen_set_foreign_window_xid (Cogl.Onscreen onscreen, uint32 xid, [CCode (scope = "async")] Cogl.OnscreenX11MaskCallback update);
+-}
+diff --git vapi/mutter-clutter-5-custom.vala vapi/mutter-clutter-5-custom.vala
+deleted file mode 100644
+index b8d838d0..00000000
+--- vapi/mutter-clutter-5-custom.vala
++++ /dev/null
+@@ -1,158 +0,0 @@
+-namespace Clutter {
+-  [CCode (type_id = "CLUTTER_TYPE_ACTOR_BOX", cheader_filename = "clutter/clutter.h")]
+-  public struct ActorBox {
+-    [CCode (cname = "clutter_actor_box_from_vertices")]
+-    public ActorBox.from_vertices (Clutter.Vertex[] verts);
+-  }
+-
+-  public struct Matrix : Cogl.Matrix {
+-  }
+-
+-  public class Backend : GLib.Object {
+-    [NoWrapper]
+-    public virtual void add_options (GLib.OptionGroup group);
+-    [NoWrapper]
+-    public virtual bool create_context () throws GLib.Error;
+-    [NoWrapper]
+-    public virtual unowned Clutter.StageWindow create_stage (Clutter.Stage wrapper) throws GLib.Error;
+-    [NoWrapper]
+-    public virtual void ensure_context (Clutter.Stage stage);
+-    [NoWrapper]
+-    public virtual unowned Clutter.DeviceManager get_device_manager ();
+-    [NoWrapper]
+-    public virtual Clutter.FeatureFlags get_features ();
+-    [NoWrapper]
+-    public virtual void init_events ();
+-    [NoWrapper]
+-    public virtual void init_features ();
+-    [NoWrapper]
+-    public virtual bool post_parse () throws GLib.Error;
+-    [NoWrapper]
+-    public virtual bool pre_parse () throws GLib.Error;
+-    [NoWrapper]
+-    public virtual void redraw (Clutter.Stage stage);
+-  }
+-
+-  [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_box_get_type ()")]
+-  public class Box : Clutter.Actor {
+-    public Clutter.LayoutManager layout_manager { get; set; }
+-  }
+-
+-  [CCode (type_id = "CLUTTER_TYPE_COLOR", cheader_filename = "clutter/clutter.h")]
+-  public struct Color {
+-    [CCode (cname = "clutter_color_from_hls")]
+-    public Color.from_hls (float hue, float luminance, float saturation);
+-    [CCode (cname = "clutter_color_from_pixel")]
+-    public Color.from_pixel (uint32 pixel);
+-    [CCode (cname = "clutter_color_from_string")]
+-    public Color.from_string (string str);
+-    [CCode (cname = "clutter_color_from_string")]
+-    public bool parse_string (string str);
+-    public static unowned Clutter.Color? get_static (Clutter.StaticColor color);
+-  }
+-
+-  [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_container_get_type ()")]
+-  public interface Container : GLib.Object {
+-    public void add (params Clutter.Actor[] actors);
+-    [CCode (cname = "clutter_container_class_find_child_property")]
+-    public class unowned GLib.ParamSpec find_child_property (string property_name);
+-    [CCode (cname = "clutter_container_class_list_child_properties")]
+-    public class unowned GLib.ParamSpec[] list_child_properties ();
+-  }
+-
+-  [CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_event_get_type ()")]
+-  [Compact]
+-  public class Event {
+-    public Clutter.AnyEvent any { [CCode (cname = "(ClutterAnyEvent *)")] get; }
+-    public Clutter.ButtonEvent button { [CCode (cname = "(ClutterButtonEvent *)")] get; }
+-    public Clutter.CrossingEvent crossing { [CCode (cname = "(ClutterCrossingEvent *)")] get; }
+-    public Clutter.KeyEvent key { [CCode (cname = "(ClutterKeyEvent *)")] get; }
+-    public Clutter.MotionEvent motion { [CCode (cname = "(ClutterMotionEvent *)")] get; }
+-    public Clutter.ScrollEvent scroll { [CCode (cname = "(ClutterScrollEvent *)")] get; }
+-    public Clutter.StageStateEvent stage_state { [CCode (cname = "(ClutterStageStateEvent *)")] get; }
+-    public Clutter.TouchEvent touch { [CCode (cname = "(ClutterTouchEvent *)")] get; }
+-    public Clutter.TouchpadPinchEvent touchpad_pinch { [CCode (cname = "(ClutterTouchpadPinchEvent *)")] get; }
+-    public Clutter.TouchpadSwipeEvent touchpad_swipe { [CCode (cname = "(ClutterTouchpadSwipeEvent *)")] get; }
+-  }
+-
+-  [CCode (type_id = "clutter_stage_get_type ()", cheader_filename = "clutter/clutter.h")]
+-  public class Stage : Clutter.Group {
+-    [CCode (cname = "clutter_redraw")]
+-    public void redraw ();
+-  }
+-
+-  [CCode (cheader_filename = "clutter/clutter.h")]
+-  public interface StageWindow : GLib.Object {
+-    [NoWrapper]
+-    public abstract void add_redraw_clip (Clutter.Geometry stage_rectangle);
+-    [NoWrapper]
+-    public abstract void get_geometry (Clutter.Geometry geometry);
+-    [NoWrapper]
+-    public abstract int get_pending_swaps ();
+-    [NoWrapper]
+-    public abstract unowned Clutter.Actor get_wrapper ();
+-    [NoWrapper]
+-    public abstract bool has_redraw_clips ();
+-    [NoWrapper]
+-    public abstract void hide ();
+-    [NoWrapper]
+-    public abstract bool ignoring_redraw_clips ();
+-    [NoWrapper]
+-    public abstract bool realize ();
+-    [NoWrapper]
+-    public abstract void resize (int width, int height);
+-    [NoWrapper]
+-    public abstract void set_cursor_visible (bool cursor_visible);
+-    [NoWrapper]
+-    public abstract void set_fullscreen (bool is_fullscreen);
+-    [NoWrapper]
+-    public abstract void set_title (string title);
+-    [NoWrapper]
+-    public abstract void set_user_resizable (bool is_resizable);
+-    [NoWrapper]
+-    public abstract void show (bool do_raise);
+-    [NoWrapper]
+-    public abstract void unrealize ();
+-  }
+-
+-  [CCode (type_id = "clutter_texture_get_type ()", cheader_filename = "clutter/clutter.h")]
+-  public class Texture : Clutter.Actor {
+-    public Cogl.Material cogl_material { get; set; }
+-    public Cogl.Texture cogl_texture { get; set; }
+-  }
+-
+-  [Compact]
+-  [CCode (cheader_filename = "clutter/clutter.h")]
+-  public class TimeoutPool {
+-    [CCode (has_construct_function = false)]
+-    public TimeoutPool (int priority);
+-  }
+-
+-  [CCode (cprefix = "CLUTTER_FEATURE_", cheader_filename = "clutter/clutter.h")]
+-  [Flags]
+-  public enum FeatureFlags {
+-    TEXTURE_NPOT;
+-    [CCode (cname = "clutter_feature_available")]
+-    public bool is_available ();
+-    [CCode (cname = "clutter_feature_get_all")]
+-    public static Clutter.FeatureFlags @get ();
+-  }
+-
+-  [CCode (type_id = "CLUTTER_TYPE_UNITS", cheader_filename = "clutter/clutter.h")]
+-  public struct Units {
+-    [CCode (cname = "clutter_units_from_cm")]
+-    public Units.from_cm (float cm);
+-    [CCode (cname = "clutter_units_from_em")]
+-    public Units.from_em (float em);
+-    [CCode (cname = "clutter_units_from_em_for_font")]
+-    public Units.from_em_for_font (string font_name, float em);
+-    [CCode (cname = "clutter_units_from_mm")]
+-    public Units.from_mm (float mm);
+-    [CCode (cname = "clutter_units_from_pixels")]
+-    public Units.from_pixels (int px);
+-    [CCode (cname = "clutter_units_from_pt")]
+-    public Units.from_pt (float pt);
+-    [CCode (cname = "clutter_units_from_string")]
+-    public Units.from_string (string str);
+-  }
+-}
+diff --git vapi/mutter-clutter-4-custom.vala vapi/mutter-clutter-6-custom.vala
+similarity index 92%
+rename from vapi/mutter-clutter-4-custom.vala
+rename to vapi/mutter-clutter-6-custom.vala
+index b8d838d0..89224be6 100644
+--- vapi/mutter-clutter-4-custom.vala
++++ vapi/mutter-clutter-6-custom.vala
+@@ -1,9 +1,4 @@
+ namespace Clutter {
+-  [CCode (type_id = "CLUTTER_TYPE_ACTOR_BOX", cheader_filename = "clutter/clutter.h")]
+-  public struct ActorBox {
+-    [CCode (cname = "clutter_actor_box_from_vertices")]
+-    public ActorBox.from_vertices (Clutter.Vertex[] verts);
+-  }
+ 
+   public struct Matrix : Cogl.Matrix {
+   }
+@@ -18,8 +13,6 @@ namespace Clutter {
+     [NoWrapper]
+     public virtual void ensure_context (Clutter.Stage stage);
+     [NoWrapper]
+-    public virtual unowned Clutter.DeviceManager get_device_manager ();
+-    [NoWrapper]
+     public virtual Clutter.FeatureFlags get_features ();
+     [NoWrapper]
+     public virtual void init_events ();
+@@ -83,10 +76,6 @@ namespace Clutter {
+ 
+   [CCode (cheader_filename = "clutter/clutter.h")]
+   public interface StageWindow : GLib.Object {
+-    [NoWrapper]
+-    public abstract void add_redraw_clip (Clutter.Geometry stage_rectangle);
+-    [NoWrapper]
+-    public abstract void get_geometry (Clutter.Geometry geometry);
+     [NoWrapper]
+     public abstract int get_pending_swaps ();
+     [NoWrapper]
+diff --git vapi/mutter-clutter-5.deps vapi/mutter-clutter-6.deps
+similarity index 63%
+rename from vapi/mutter-clutter-5.deps
+rename to vapi/mutter-clutter-6.deps
+index 3f5a92a6..7a70d6df 100644
+--- vapi/mutter-clutter-5.deps
++++ vapi/mutter-clutter-6.deps
+@@ -1,4 +1,4 @@
+ atk
+ cairo
+ json-glib-1.0
+-mutter-cogl-5
++mutter-cogl-6
+diff --git vapi/mutter-clutter-5.vapi vapi/mutter-clutter-6.vapi
+similarity index 93%
+rename from vapi/mutter-clutter-5.vapi
+rename to vapi/mutter-clutter-6.vapi
+index 24f7f6b1..0130a93c 100644
+--- vapi/mutter-clutter-5.vapi
++++ vapi/mutter-clutter-6.vapi
+@@ -1,6 +1,6 @@
+-/* mutter-clutter-5.vapi generated by vapigen, do not modify. */
++/* mutter-clutter-6.vapi generated by vapigen, do not modify. */
+ 
+-[CCode (cprefix = "Clutter", gir_namespace = "Clutter", gir_version = "5", lower_case_cprefix = "clutter_")]
++[CCode (cprefix = "Clutter", gir_namespace = "Clutter", gir_version = "6", lower_case_cprefix = "clutter_")]
+ namespace Clutter {
+ 	namespace Key {
+ 		[CCode (cheader_filename = "clutter/clutter.h", cname = "CLUTTER_KEY_0")]
+@@ -4661,22 +4661,14 @@ namespace Clutter {
+ 		public void allocate_preferred_size (Clutter.AllocationFlags flags);
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+ 		public unowned Clutter.Animation animate (ulong mode, uint duration, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_alpha (Clutter.Alpha alpha, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_alphav (Clutter.Alpha alpha, [CCode (array_length_cname = "n_properties", array_length_pos = 1.5)] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 1.5)] GLib.Value[] values);
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+ 		public unowned Clutter.Animation animate_with_timeline (ulong mode, Clutter.Timeline timeline, ...);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_timelinev (ulong mode, Clutter.Timeline timeline, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] GLib.Value[] values);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation animatev (ulong mode, uint duration, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] GLib.Value[] values);
+ 		[Version (since = "0.6")]
+-		public Clutter.Vertex apply_relative_transform_to_point (Clutter.Actor? ancestor, Clutter.Vertex point);
++		public void apply_relative_transform_to_point (Clutter.Actor? ancestor, Graphene.Point3D point, out unowned Graphene.Point3D vertex);
+ 		[NoWrapper]
+ 		public virtual void apply_transform (ref Clutter.Matrix matrix);
+ 		[Version (since = "0.4")]
+-		public Clutter.Vertex apply_transform_to_point (Clutter.Vertex point);
++		public void apply_transform_to_point (Graphene.Point3D point, out unowned Graphene.Point3D vertex);
+ 		[Version (since = "1.24")]
+ 		public void bind_model (GLib.ListModel? model, owned Clutter.ActorCreateChildFunc create_child_func);
+ 		[Version (since = "1.4")]
+@@ -4688,20 +4680,19 @@ namespace Clutter {
+ 		[Version (since = "1.4")]
+ 		public bool contains (Clutter.Actor descendant);
+ 		[Version (since = "1.8")]
+-		public void continue_paint ();
++		public void continue_paint (Clutter.PaintContext paint_context);
++		public void continue_pick (Clutter.PickContext pick_context);
+ 		[Version (since = "1.0")]
+ 		public Pango.Context create_pango_context ();
+ 		[Version (since = "1.0")]
+ 		public Pango.Layout create_pango_layout (string? text);
+ 		[Version (since = "1.10")]
+ 		public void destroy_all_children ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void detach_animation ();
+ 		[CCode (cname = "clutter_actor_event")]
+ 		[Version (since = "0.6")]
+ 		public bool emit_event (Clutter.Event event, bool capture);
+ 		[Version (since = "0.4")]
+-		public void get_abs_allocation_vertices ([CCode (array_length = false)] Clutter.Vertex verts[4]);
++		public void get_abs_allocation_vertices ([CCode (array_length = false)] Graphene.Point3D verts[4]);
+ 		public virtual unowned Atk.Object get_accessible ();
+ 		[Version (since = "1.4")]
+ 		public unowned Clutter.Action get_action (string name);
+@@ -4709,16 +4700,10 @@ namespace Clutter {
+ 		public GLib.List<weak Clutter.Action> get_actions ();
+ 		[Version (since = "0.8")]
+ 		public Clutter.ActorBox get_allocation_box ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public Clutter.Geometry get_allocation_geometry ();
+ 		[Version (since = "0.6")]
+-		public void get_allocation_vertices (Clutter.Actor? ancestor, [CCode (array_length = false)] Clutter.Vertex verts[4]);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public void get_anchor_point (out float anchor_x, out float anchor_y);
++		public void get_allocation_vertices (Clutter.Actor? ancestor, [CCode (array_length = false)] Graphene.Point3D verts[4]);
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+ 		public Clutter.Gravity get_anchor_point_gravity ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation get_animation ();
+ 		[Version (since = "1.10")]
+ 		public Clutter.Color get_background_color ();
+ 		[CCode (cname = "clutter_get_actor_by_gid")]
+@@ -4768,8 +4753,6 @@ namespace Clutter {
+ 		public bool get_fixed_position_set ();
+ 		[Version (since = "1.0")]
+ 		public Clutter.ActorFlags get_flags ();
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-		public uint32 get_gid ();
+ 		[CCode (cname = "clutter_actor_has_pointer")]
+ 		[Version (since = "1.2")]
+ 		public bool get_has_pointer ();
+@@ -4848,8 +4831,6 @@ namespace Clutter {
+ 		public Clutter.TextDirection get_text_direction ();
+ 		[Version (since = "1.12")]
+ 		public Clutter.Matrix get_transform ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Matrix get_transformation_matrix ();
+ 		[Version (since = "1.6")]
+ 		public unowned Clutter.PaintVolume get_transformed_paint_volume (Clutter.Actor relative_to_ancestor);
+ 		[Version (since = "0.8")]
+@@ -4892,7 +4873,7 @@ namespace Clutter {
+ 		public bool has_mapped_clones ();
+ 		[Version (since = "1.8")]
+ 		public virtual bool has_overlaps ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
++		[NoWrapper]
+ 		public virtual void hide_all ();
+ 		[Version (since = "1.10")]
+ 		public void insert_child_above (Clutter.Actor child, Clutter.Actor? sibling);
+@@ -4912,10 +4893,6 @@ namespace Clutter {
+ 		public bool is_scaled ();
+ 		[Version (since = "1.24")]
+ 		public bool is_visible ();
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void lower (Clutter.Actor? above);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void lower_bottom ();
+ 		[Version (since = "1.0")]
+ 		public virtual void map ();
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+@@ -4928,17 +4905,12 @@ namespace Clutter {
+ 		public bool needs_expand (Clutter.Orientation orientation);
+ 		[NoWrapper]
+ 		public virtual void paint_node (Clutter.PaintNode root);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
++		public void pick_box (Clutter.PickContext pick_context, Clutter.ActorBox box);
+ 		public void pop_internal ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+ 		public void push_internal ();
+ 		public void queue_redraw ();
+ 		[Version (since = "1.10")]
+ 		public void queue_redraw_with_clip (Cairo.RectangleInt? clip);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void raise (Clutter.Actor? below);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void raise_top ();
+ 		[Version (since = "1.4")]
+ 		public void remove_action (Clutter.Action action);
+ 		[Version (since = "1.4")]
+@@ -4960,8 +4932,6 @@ namespace Clutter {
+ 		public void remove_effect_by_name (string name);
+ 		[Version (since = "1.10")]
+ 		public void remove_transition (string name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public void reparent (Clutter.Actor new_parent);
+ 		[Version (since = "1.10")]
+ 		public void replace_child (Clutter.Actor old_child, Clutter.Actor new_child);
+ 		[Version (since = "1.10")]
+@@ -5046,8 +5016,6 @@ namespace Clutter {
+ 		public void set_scale (double scale_x, double scale_y);
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+ 		public void set_scale_full (double scale_x, double scale_y, float center_x, float center_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_scale_with_gravity (double scale_x, double scale_y, Clutter.Gravity gravity);
+ 		[Version (since = "1.12")]
+ 		public void set_scale_z (double scale_z);
+ 		public void set_size (float width, float height);
+@@ -5110,11 +5078,8 @@ namespace Clutter {
+ 		[Version (since = "1.12")]
+ 		public bool child_transform_set { get; }
+ 		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public Clutter.Geometry clip { owned get; set; }
+-		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Rect clip_rect { owned get; set; }
++		public Graphene.Rect clip_rect { owned get; set; }
+ 		[Version (since = "1.0")]
+ 		public bool clip_to_allocation { get; set; }
+ 		[NoAccessorMethod]
+@@ -5199,12 +5164,12 @@ namespace Clutter {
+ 		public uint opacity { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Point pivot_point { owned get; set; }
++		public Graphene.Point pivot_point { owned get; set; }
+ 		[Version (since = "1.12")]
+ 		public float pivot_point_z { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Point position { owned get; set; }
++		public Graphene.Point position { owned get; set; }
+ 		[Version (since = "0.6")]
+ 		public bool reactive { get; set; }
+ 		[NoAccessorMethod]
+@@ -5225,13 +5190,13 @@ namespace Clutter {
+ 		public double rotation_angle_z { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public Clutter.Vertex rotation_center_x { owned get; set; }
++		public Graphene.Point3D rotation_center_x { owned get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public Clutter.Vertex rotation_center_y { owned get; set; }
++		public Graphene.Point3D rotation_center_y { owned get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public Clutter.Vertex rotation_center_z { owned get; set; }
++		public Graphene.Point3D rotation_center_z { owned get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+ 		public Clutter.Gravity rotation_center_z_gravity { get; set; }
+@@ -5257,7 +5222,7 @@ namespace Clutter {
+ 		public bool show_on_set_parent { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Size size { owned get; set; }
++		public Graphene.Size size { owned get; set; }
+ 		[Version (since = "1.0")]
+ 		public Clutter.TextDirection text_direction { get; set; }
+ 		[NoAccessorMethod]
+@@ -5319,11 +5284,12 @@ namespace Clutter {
+ 		public virtual signal bool motion_event (Clutter.MotionEvent event);
+ 		[HasEmitter]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public virtual signal void paint ();
++		public virtual signal void paint (Clutter.PaintContext paint_context);
+ 		[Version (since = "0.2")]
+ 		public virtual signal void parent_set (Clutter.Actor? old_parent);
++		[HasEmitter]
+ 		[Version (since = "1.0")]
+-		public virtual signal void pick (Clutter.Color color);
++		public virtual signal void pick (Clutter.PickContext pick_context);
+ 		[HasEmitter]
+ 		[Version (since = "1.2")]
+ 		public virtual signal void queue_relayout ();
+@@ -5361,6 +5327,11 @@ namespace Clutter {
+ 		public bool enabled { get; set; }
+ 		public string name { get; set; }
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_actor_node_get_type ()")]
++	public class ActorNode : Clutter.PaintNode {
++		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
++		public ActorNode (Clutter.Actor actor);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_align_constraint_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public class AlignConstraint : Clutter.Constraint {
+@@ -5388,19 +5359,12 @@ namespace Clutter {
+ 		[Version (since = "1.0")]
+ 		public ulong get_mode ();
+ 		public unowned Clutter.Timeline get_timeline ();
+-		[Version (since = "1.0")]
+-		public static ulong register_closure (GLib.Closure closure);
+-		[Version (since = "1.0")]
+-		public static ulong register_func (Clutter.AlphaFunc func);
+ 		[Version (since = "0.8")]
+ 		public void set_closure (GLib.Closure closure);
+ 		public void set_func (owned Clutter.AlphaFunc func);
+ 		[Version (since = "1.0")]
+ 		public void set_mode (ulong mode);
+ 		public void set_timeline (Clutter.Timeline timeline);
+-		[CCode (has_construct_function = false)]
+-		[Version (since = "1.0")]
+-		public Alpha.with_func (Clutter.Timeline timeline, owned Clutter.AlphaFunc func);
+ 		public double alpha { get; }
+ 		[Version (since = "1.0")]
+ 		public ulong mode { get; set construct; }
+@@ -5411,35 +5375,26 @@ namespace Clutter {
+ 	public class Animation : GLib.Object, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false)]
+ 		public Animation ();
+-		public unowned Clutter.Animation bind (string property_name, GLib.Value final);
+-		public unowned Clutter.Animation bind_interval (string property_name, owned Clutter.Interval interval);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public unowned Clutter.Alpha get_alpha ();
+ 		public uint get_duration ();
+ 		public unowned Clutter.Interval get_interval (string property_name);
+ 		public bool get_loop ();
+ 		public ulong get_mode ();
+-		public unowned GLib.Object get_object ();
+ 		public unowned Clutter.Timeline get_timeline ();
+ 		public bool has_property (string property_name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public void set_alpha (Clutter.Alpha alpha);
+ 		public void set_duration (uint msecs);
+ 		public void set_loop (bool loop);
+ 		public void set_mode (ulong mode);
+ 		public void set_object (GLib.Object object);
+ 		public void set_timeline (Clutter.Timeline? timeline);
+-		public void unbind_property (string property_name);
+-		public unowned Clutter.Animation update (string property_name, GLib.Value final);
+-		public void update_interval (string property_name, Clutter.Interval interval);
++		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public Clutter.Alpha alpha { get; set; }
++		public Clutter.Alpha alpha { owned get; set; }
+ 		public uint duration { get; set; }
+ 		public bool loop { get; set; }
+ 		public ulong mode { get; set; }
+-		public GLib.Object object { get; set; }
++		[NoAccessorMethod]
++		public GLib.Object object { owned get; set; }
+ 		public Clutter.Timeline timeline { get; set; }
+-		[HasEmitter]
+ 		public virtual signal void completed ();
+ 		public virtual signal void started ();
+ 	}
+@@ -5460,21 +5415,18 @@ namespace Clutter {
+ 		protected Backend ();
+ 		[NoWrapper]
+ 		public virtual void add_options (GLib.OptionGroup group);
+-		public void bell_notify ();
+ 		[NoWrapper]
+ 		public virtual bool create_context () throws GLib.Error;
+ 		[NoWrapper]
+ 		public virtual unowned Clutter.StageWindow create_stage (Clutter.Stage wrapper) throws GLib.Error;
+ 		[NoWrapper]
+ 		public virtual void ensure_context (Clutter.Stage stage);
+-		[NoWrapper]
+-		public virtual unowned Clutter.DeviceManager get_device_manager ();
++		public unowned Clutter.Seat get_default_seat ();
+ 		[NoWrapper]
+ 		public virtual Clutter.FeatureFlags get_features ();
+ 		[Version (since = "0.8")]
+ 		public unowned Cairo.FontOptions get_font_options ();
+ 		public unowned Clutter.InputMethod get_input_method ();
+-		public unowned Clutter.Keymap get_keymap ();
+ 		public double get_resolution ();
+ 		[NoWrapper]
+ 		public virtual void init_events ();
+@@ -5496,95 +5448,11 @@ namespace Clutter {
+ 		[Version (since = "1.4")]
+ 		public signal void settings_changed ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public abstract class Behaviour : GLib.Object, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected Behaviour ();
+-		public void actors_foreach (Clutter.BehaviourForeachFunc func);
+-		[NoWrapper]
+-		public virtual void alpha_notify (double alpha_value);
+-		public void apply (Clutter.Actor actor);
+-		public GLib.SList<weak Clutter.Actor> get_actors ();
+-		public unowned Clutter.Alpha get_alpha ();
+-		public int get_n_actors ();
+-		public unowned Clutter.Actor get_nth_actor (int index_);
+-		[Version (since = "0.4")]
+-		public bool is_applied (Clutter.Actor actor);
+-		public void remove (Clutter.Actor actor);
+-		[Version (since = "0.4")]
+-		public void remove_all ();
+-		public void set_alpha (Clutter.Alpha alpha);
+-		public Clutter.Alpha alpha { get; set; }
+-		[Version (since = "0.4")]
+-		public virtual signal void applied (Clutter.Actor actor);
+-		[Version (since = "0.4")]
+-		public virtual signal void removed (Clutter.Actor actor);
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_depth_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public class BehaviourDepth : Clutter.Behaviour, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterBehaviour*")]
+-		[Version (since = "0.4")]
+-		public BehaviourDepth (Clutter.Alpha? alpha, int depth_start, int depth_end);
+-		[Version (since = "0.6")]
+-		public void get_bounds (out int depth_start, out int depth_end);
+-		[Version (since = "0.6")]
+-		public void set_bounds (int depth_start, int depth_end);
+-		[NoAccessorMethod]
+-		[Version (since = "0.4")]
+-		public int depth_end { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.4")]
+-		public int depth_start { get; set; }
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_opacity_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public class BehaviourOpacity : Clutter.Behaviour, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterBehaviour*")]
+-		public BehaviourOpacity (Clutter.Alpha? alpha, uint8 opacity_start, uint8 opacity_end);
+-		[Version (since = "0.6")]
+-		public void get_bounds (out uint8 opacity_start, out uint8 opacity_end);
+-		[Version (since = "0.6")]
+-		public void set_bounds (uint8 opacity_start, uint8 opacity_end);
+-		[NoAccessorMethod]
+-		public uint opacity_end { get; set; }
+-		[NoAccessorMethod]
+-		public uint opacity_start { get; set; }
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_scale_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public class BehaviourScale : Clutter.Behaviour, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterBehaviour*")]
+-		public BehaviourScale (Clutter.Alpha? alpha, double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
+-		[Version (since = "0.4")]
+-		public void get_bounds (out double x_scale_start, out double y_scale_start, out double x_scale_end, out double y_scale_end);
+-		[Version (since = "0.6")]
+-		public void set_bounds (double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double x_scale_end { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double x_scale_start { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double y_scale_end { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double y_scale_start { get; set; }
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_bin_layout_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public class BinLayout : Clutter.LayoutManager {
+ 		[CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
+ 		public BinLayout (Clutter.BinAlignment x_align = Clutter.BinAlignment.START, Clutter.BinAlignment y_align = Clutter.BinAlignment.START);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void add (Clutter.Actor child, Clutter.BinAlignment x_align, Clutter.BinAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void get_alignment (Clutter.Actor? child, out Clutter.BinAlignment x_align, out Clutter.BinAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_alignment (Clutter.Actor? child, Clutter.BinAlignment x_align, Clutter.BinAlignment y_align);
+ 		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+ 		public Clutter.BinAlignment x_align { get; set; }
+@@ -5758,37 +5626,6 @@ namespace Clutter {
+ 		public float x;
+ 		public float y;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_cairo_texture_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-	public class CairoTexture : Clutter.Texture, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		public CairoTexture (uint width, uint height);
+-		public void clear ();
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "1.0")]
+-		public Cairo.Context create ();
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "1.0")]
+-		public Cairo.Context create_region (int x_offset, int y_offset, int width, int height);
+-		[Version (since = "1.8")]
+-		public bool get_auto_resize ();
+-		public void get_surface_size (out uint width, out uint height);
+-		[Version (since = "1.8")]
+-		public void invalidate ();
+-		[Version (since = "1.8")]
+-		public void invalidate_rectangle (Cairo.RectangleInt? rect);
+-		[Version (since = "1.8")]
+-		public void set_auto_resize (bool value);
+-		public void set_surface_size (uint width, uint height);
+-		[Version (since = "1.8")]
+-		public bool auto_resize { get; set; }
+-		[NoAccessorMethod]
+-		public uint surface_height { get; set; }
+-		[NoAccessorMethod]
+-		public uint surface_width { get; set; }
+-		[Version (since = "1.6")]
+-		public virtual signal Cairo.Surface create_surface (uint width, uint height);
+-		[Version (since = "1.8")]
+-		public virtual signal bool draw (Cairo.Context cr);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_canvas_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class Canvas : GLib.Object, Clutter.Content {
+@@ -5920,62 +5757,24 @@ namespace Clutter {
+ 		public void set_factor (double factor);
+ 		public double factor { get; set; }
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_device_manager_get_type ()")]
+-	[Version (since = "1.2")]
+-	public abstract class DeviceManager : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected DeviceManager ();
+-		[NoWrapper]
+-		public virtual void add_device (Clutter.InputDevice device);
+-		[NoWrapper]
+-		public virtual void apply_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
+-		[NoWrapper]
+-		public virtual void compress_motion (Clutter.Event event, Clutter.Event to_discard);
+-		public virtual Clutter.VirtualInputDevice create_virtual_device (Clutter.InputDeviceType device_type);
+-		public virtual unowned Clutter.InputDevice get_core_device (Clutter.InputDeviceType device_type);
+-		public static unowned Clutter.DeviceManager get_default ();
+-		public virtual unowned Clutter.InputDevice get_device (int device_id);
+-		public void get_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
+-		public void get_pointer_a11y_settings (Clutter.PointerA11ySettings settings);
+-		public virtual Clutter.VirtualDeviceType get_supported_virtual_device_types ();
+-		public GLib.SList<weak Clutter.InputDevice> list_devices ();
+-		public unowned GLib.SList<Clutter.InputDevice> peek_devices ();
+-		[NoWrapper]
+-		public virtual void remove_device (Clutter.InputDevice device);
+-		[NoWrapper]
+-		public virtual void select_stage_events (Clutter.Stage stage);
+-		public void set_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
+-		public void set_pointer_a11y_dwell_click_type (Clutter.PointerA11yDwellClickType click_type);
+-		public void set_pointer_a11y_settings (Clutter.PointerA11ySettings settings);
+-		[NoAccessorMethod]
+-		public Clutter.Backend backend { owned get; construct; }
+-		public signal void device_added (Clutter.InputDevice device);
+-		public signal void device_removed (Clutter.InputDevice device);
+-		public signal void kbd_a11y_flags_changed (uint settings_flags, uint changed_mask);
+-		public signal void kbd_a11y_mods_state_changed (uint latched_mask, uint locked_mask);
+-		public signal void ptr_a11y_dwell_click_type_changed (Clutter.PointerA11yDwellClickType click_type);
+-		public signal void ptr_a11y_timeout_started (Clutter.InputDevice device, Clutter.PointerA11yTimeoutType timeout_type, uint delay);
+-		public signal void ptr_a11y_timeout_stopped (Clutter.InputDevice device, Clutter.PointerA11yTimeoutType timeout_type);
+-		public signal void tool_changed (Clutter.InputDevice object, Clutter.InputDeviceTool p0);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_drag_action_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public class DragAction : Clutter.Action {
+ 		[CCode (has_construct_function = false, type = "ClutterAction*")]
+ 		public DragAction ();
+-		public bool get_drag_area (Clutter.Rect drag_area);
++		public bool get_drag_area (Graphene.Rect drag_area);
+ 		public Clutter.DragAxis get_drag_axis ();
+ 		public unowned Clutter.Actor get_drag_handle ();
+ 		public void get_drag_threshold (out uint x_threshold, out uint y_threshold);
+ 		public void get_motion_coords (out float motion_x, out float motion_y);
+ 		public void get_press_coords (out float press_x, out float press_y);
+-		public void set_drag_area (Clutter.Rect? drag_area);
++		public void set_drag_area (Graphene.Rect? drag_area);
+ 		public void set_drag_axis (Clutter.DragAxis axis);
+ 		public void set_drag_handle (Clutter.Actor? handle);
+ 		public void set_drag_threshold (int x_threshold, int y_threshold);
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Rect drag_area { owned get; set; }
++		public Graphene.Rect drag_area { owned get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+ 		public bool drag_area_set { get; }
+@@ -6011,13 +5810,13 @@ namespace Clutter {
+ 		[NoWrapper]
+ 		public virtual bool modify_paint_volume (Clutter.PaintVolume volume);
+ 		[NoWrapper]
+-		public virtual void paint (Clutter.EffectPaintFlags flags);
++		public virtual void paint (Clutter.PaintContext paint_context, Clutter.EffectPaintFlags flags);
+ 		[NoWrapper]
+-		public virtual void pick (Clutter.EffectPaintFlags flags);
++		public virtual void pick (Clutter.PickContext pick_context);
+ 		[NoWrapper]
+-		public virtual void post_paint ();
++		public virtual void post_paint (Clutter.PaintContext paint_context);
+ 		[NoWrapper]
+-		public virtual bool pre_paint ();
++		public virtual bool pre_paint (Clutter.PaintContext paint_context);
+ 		[Version (since = "1.8")]
+ 		public void queue_repaint ();
+ 	}
+@@ -6068,7 +5867,7 @@ namespace Clutter {
+ 		public uint get_mode_group ();
+ 		public bool get_pad_event_details (out uint number, out uint mode, out double value);
+ 		[Version (since = "1.12")]
+-		public void get_position (Clutter.Point position);
++		public void get_position (Graphene.Point position);
+ 		[Version (since = "1.0")]
+ 		public unowned Clutter.Actor get_related ();
+ 		[Version (since = "1.10")]
+@@ -6308,7 +6107,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public bool get_axis_value ([CCode (array_length = false)] double[] axes, Clutter.InputAxis axis, out double value);
+ 		[Version (since = "1.12")]
+-		public bool get_coords (Clutter.EventSequence? sequence, Clutter.Point point);
++		public bool get_coords (Clutter.EventSequence? sequence, Graphene.Point point);
+ 		[Version (since = "1.0")]
+ 		public int get_device_id ();
+ 		[Version (since = "1.6")]
+@@ -6322,7 +6121,7 @@ namespace Clutter {
+ 		public bool get_enabled ();
+ 		[Version (since = "1.10")]
+ 		public unowned Clutter.Actor get_grabbed_actor ();
+-		public int get_group_n_modes (int group);
++		public virtual int get_group_n_modes (int group);
+ 		[Version (since = "1.6")]
+ 		public bool get_has_cursor ();
+ 		[Version (since = "1.6")]
+@@ -6344,16 +6143,17 @@ namespace Clutter {
+ 		public unowned Clutter.Stage get_pointer_stage ();
+ 		[Version (since = "1.22")]
+ 		public unowned string get_product_id ();
++		public unowned Clutter.Seat get_seat ();
+ 		[Version (since = "1.6")]
+ 		public GLib.List<weak Clutter.InputDevice> get_slave_devices ();
+ 		[Version (since = "1.22")]
+ 		public unowned string get_vendor_id ();
+ 		[Version (since = "1.10")]
+ 		public void grab (Clutter.Actor actor);
+-		public bool is_grouped (Clutter.InputDevice other_device);
+-		public bool is_mode_switch_button (uint group, uint button);
++		public virtual bool is_grouped (Clutter.InputDevice other_device);
++		public virtual bool is_mode_switch_button (uint group, uint button);
+ 		[Version (since = "1.10")]
+-		public bool keycode_to_evdev (uint hardware_keycode, uint evdev_keycode);
++		public virtual bool keycode_to_evdev (uint hardware_keycode, uint evdev_keycode);
+ 		[Version (since = "1.12")]
+ 		public unowned Clutter.Actor sequence_get_grabbed_actor (Clutter.EventSequence sequence);
+ 		[Version (since = "1.12")]
+@@ -6369,12 +6169,11 @@ namespace Clutter {
+ 		public void ungrab ();
+ 		[Version (since = "1.2")]
+ 		public void update_from_event (Clutter.Event event, bool update_stage);
++		[NoWrapper]
++		public virtual void update_from_tool (Clutter.InputDeviceTool tool);
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.6")]
+ 		public Clutter.Backend backend { owned get; construct; }
+-		[NoAccessorMethod]
+-		[Version (since = "1.6")]
+-		public Clutter.DeviceManager device_manager { owned get; construct; }
+ 		public Clutter.InputMode device_mode { get; construct; }
+ 		public string device_node { get; construct; }
+ 		[Version (since = "1.2")]
+@@ -6397,6 +6196,7 @@ namespace Clutter {
+ 		public string name { owned get; construct; }
+ 		[Version (since = "1.22")]
+ 		public string product_id { get; construct; }
++		public Clutter.Seat seat { get; construct; }
+ 		[Version (since = "1.22")]
+ 		public string vendor_id { get; construct; }
+ 	}
+@@ -6434,7 +6234,7 @@ namespace Clutter {
+ 		public void set_can_show_preedit (bool can_show_preedit);
+ 		public void set_content_hints (Clutter.InputContentHintFlags hint);
+ 		public void set_content_purpose (Clutter.InputContentPurpose purpose);
+-		public void set_cursor_location (Clutter.Rect rect);
++		public void set_cursor_location (Graphene.Rect rect);
+ 		public void set_input_panel_state (Clutter.InputPanelState state);
+ 		[NoWrapper]
+ 		public virtual void set_preedit_text (string preedit, uint cursor);
+@@ -6453,7 +6253,7 @@ namespace Clutter {
+ 		[NoWrapper]
+ 		public virtual void reset ();
+ 		[NoWrapper]
+-		public virtual void set_cursor_location (Clutter.Rect rect);
++		public virtual void set_cursor_location (Graphene.Rect rect);
+ 		public void set_input_panel_state (Clutter.InputPanelState state);
+ 		public void set_preedit_text (string? preedit, uint cursor);
+ 		[NoWrapper]
+@@ -6470,7 +6270,7 @@ namespace Clutter {
+ 		public Clutter.InputContentPurpose content_purpose { get; set; }
+ 		[HasEmitter]
+ 		public signal void commit (string text);
+-		public signal void cursor_location_changed (Clutter.Rect object);
++		public signal void cursor_location_changed (Graphene.Rect object);
+ 		[HasEmitter]
+ 		public signal void delete_surrounding (uint offset, uint len);
+ 		public signal void input_panel_state (Clutter.InputPanelState object);
+@@ -6546,27 +6346,31 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false)]
+ 		protected Keymap ();
+ 		public virtual bool get_caps_lock_state ();
++		public virtual Pango.Direction get_direction ();
+ 		public virtual bool get_num_lock_state ();
+ 		public signal void state_changed ();
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_layer_node_get_type ()")]
++	public class LayerNode : Clutter.PaintNode {
++		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
++		public LayerNode (Cogl.Matrix projection, Cairo.Rectangle viewport, float width, float height, uint8 opacity);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_layout_manager_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public abstract class LayoutManager : GLib.InitiallyUnowned {
+ 		[CCode (has_construct_function = false)]
+ 		protected LayoutManager ();
+ 		public virtual void allocate (Clutter.Container container, Clutter.ActorBox allocation, Clutter.AllocationFlags flags);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public virtual unowned Clutter.Alpha begin_animation (uint duration, ulong mode);
+ 		public void child_get (Clutter.Container container, Clutter.Actor actor, ...);
+ 		public void child_get_property (Clutter.Container container, Clutter.Actor actor, string property_name, GLib.Value value);
+ 		public void child_set (Clutter.Container container, Clutter.Actor actor, ...);
+ 		public void child_set_property (Clutter.Container container, Clutter.Actor actor, string property_name, GLib.Value value);
+ 		[NoWrapper]
+ 		public virtual unowned Clutter.LayoutMeta create_child_meta (Clutter.Container container, Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
++		[NoWrapper]
+ 		public virtual void end_animation ();
+ 		public unowned GLib.ParamSpec find_child_property (string name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
++		[NoWrapper]
+ 		public virtual double get_animation_progress ();
+ 		[Version (since = "1.0")]
+ 		public unowned Clutter.LayoutMeta get_child_meta (Clutter.Container container, Clutter.Actor actor);
+@@ -6623,12 +6427,12 @@ namespace Clutter {
+ 		protected OffscreenEffect ();
+ 		public virtual Cogl.Handle create_texture (float width, float height);
+ 		[Version (since = "1.14")]
+-		public bool get_target_rect (out unowned Clutter.Rect rect);
++		public bool get_target_rect (out unowned Graphene.Rect rect);
+ 		[Version (deprecated = true, deprecated_since = "1.14", since = "1.8")]
+ 		public bool get_target_size (out float width, out float height);
+ 		[Version (since = "1.10")]
+ 		public unowned Cogl.Handle get_texture ();
+-		public virtual void paint_target ();
++		public virtual void paint_target (Clutter.PaintContext paint_context);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_page_turn_effect_get_type ()")]
+ 	[Version (since = "1.4")]
+@@ -6645,6 +6449,16 @@ namespace Clutter {
+ 		public double period { get; set; }
+ 		public float radius { get; set; }
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", ref_function = "clutter_paint_context_ref", type_id = "clutter_paint_context_get_type ()", unref_function = "clutter_paint_context_unref")]
++	[Compact]
++	public class PaintContext {
++		public void destroy ();
++		public unowned Cogl.Framebuffer get_framebuffer ();
++		public void pop_framebuffer ();
++		public void push_framebuffer (Cogl.Framebuffer framebuffer);
++		public unowned Clutter.PaintContext @ref ();
++		public void unref ();
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_paint_node_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public abstract class PaintNode {
+@@ -6654,7 +6468,8 @@ namespace Clutter {
+ 		public void add_multitexture_rectangle (Clutter.ActorBox rect, float text_coords, uint text_coords_len);
+ 		public void add_rectangle (Clutter.ActorBox rect);
+ 		public void add_texture_rectangle (Clutter.ActorBox rect, float x_1, float y_1, float x_2, float y_2);
+-		public void paint ();
++		public unowned Cogl.Framebuffer get_framebuffer ();
++		public void paint (Clutter.PaintContext paint_context);
+ 		public unowned Clutter.PaintNode @ref ();
+ 		public void set_name (string name);
+ 		public void unref ();
+@@ -6672,7 +6487,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public float get_height ();
+ 		[Version (since = "1.6")]
+-		public Clutter.Vertex get_origin ();
++		public void get_origin (out unowned Graphene.Point3D vertex);
+ 		[Version (since = "1.6")]
+ 		public float get_width ();
+ 		[Version (since = "1.6")]
+@@ -6682,7 +6497,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public void set_height (float height);
+ 		[Version (since = "1.6")]
+-		public void set_origin (Clutter.Vertex origin);
++		public void set_origin (Graphene.Point3D origin);
+ 		[Version (since = "1.6")]
+ 		public void set_width (float width);
+ 		[Version (since = "1.6")]
+@@ -6769,26 +6584,19 @@ namespace Clutter {
+ 		public Clutter.Path path { get; set; }
+ 		public signal void node_reached (Clutter.Actor actor, uint index);
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", ref_function = "clutter_pick_context_ref", type_id = "clutter_pick_context_get_type ()", unref_function = "clutter_pick_context_unref")]
++	[Compact]
++	public class PickContext {
++		public void destroy ();
++		public unowned Clutter.PickContext @ref ();
++		public void unref ();
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_pipeline_node_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class PipelineNode : Clutter.PaintNode {
+ 		[CCode (has_construct_function = false)]
+ 		protected PipelineNode ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_point_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.12")]
+-	public class Point {
+-		public float x;
+-		public float y;
+-		public static Clutter.Point alloc ();
+-		public Clutter.Point copy ();
+-		public float distance (Clutter.Point b, out float x_distance, out float y_distance);
+-		public bool equals (Clutter.Point b);
+-		public void free ();
+-		public unowned Clutter.Point init (float x, float y);
+-		public static unowned Clutter.Point zero ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_property_transition_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class PropertyTransition : Clutter.Transition, Clutter.Scriptable {
+@@ -6798,33 +6606,6 @@ namespace Clutter {
+ 		public void set_property_name (string? property_name);
+ 		public string property_name { get; set; }
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_rect_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.12")]
+-	public class Rect {
+-		public weak Clutter.Point origin;
+-		public weak Clutter.Size size;
+-		public static Clutter.Rect alloc ();
+-		public void clamp_to_pixel ();
+-		public bool contains_point (Clutter.Point point);
+-		public bool contains_rect (Clutter.Rect b);
+-		public Clutter.Rect copy ();
+-		public bool equals (Clutter.Rect b);
+-		public void free ();
+-		public void get_center (Clutter.Point center);
+-		public float get_height ();
+-		public float get_width ();
+-		public float get_x ();
+-		public float get_y ();
+-		public unowned Clutter.Rect init (float x, float y, float width, float height);
+-		public void inset (float d_x, float d_y);
+-		public bool intersection (Clutter.Rect b, Clutter.Rect? res);
+-		public Clutter.Rect normalize ();
+-		public void offset (float d_x, float d_y);
+-		public void scale (float s_x, float s_y);
+-		public void union (Clutter.Rect b, Clutter.Rect res);
+-		public static unowned Clutter.Rect zero ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_rectangle_get_type ()")]
+ 	[Version (since = "0.2")]
+ 	public class Rectangle : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+@@ -6907,8 +6688,8 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false, type = "ClutterActor*")]
+ 		public ScrollActor ();
+ 		public Clutter.ScrollMode get_scroll_mode ();
+-		public void scroll_to_point (Clutter.Point point);
+-		public void scroll_to_rect (Clutter.Rect rect);
++		public void scroll_to_point (Graphene.Point point);
++		public void scroll_to_rect (Graphene.Rect rect);
+ 		public void set_scroll_mode (Clutter.ScrollMode mode);
+ 		public Clutter.ScrollMode scroll_mode { get; set; }
+ 	}
+@@ -6930,6 +6711,44 @@ namespace Clutter {
+ 		public float x;
+ 		public float y;
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_seat_get_type ()")]
++	public abstract class Seat : GLib.Object {
++		[CCode (has_construct_function = false)]
++		protected Seat ();
++		[NoWrapper]
++		public virtual void apply_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
++		public virtual void bell_notify ();
++		public virtual void compress_motion (Clutter.Event event, Clutter.Event to_discard);
++		[NoWrapper]
++		public virtual void copy_event_data (Clutter.Event src, Clutter.Event dest);
++		public virtual Clutter.VirtualInputDevice create_virtual_device (Clutter.InputDeviceType device_type);
++		public void ensure_a11y_state ();
++		[NoWrapper]
++		public virtual void free_event_data (Clutter.Event event);
++		public void get_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
++		public virtual unowned Clutter.InputDevice get_keyboard ();
++		public virtual unowned Clutter.Keymap get_keymap ();
++		public virtual unowned Clutter.InputDevice get_pointer ();
++		public void get_pointer_a11y_settings (Clutter.PointerA11ySettings settings);
++		public virtual Clutter.VirtualDeviceType get_supported_virtual_device_types ();
++		public bool get_touch_mode ();
++		public virtual GLib.List<weak Clutter.InputDevice> list_devices ();
++		public void set_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
++		public void set_pointer_a11y_dwell_click_type (Clutter.PointerA11yDwellClickType click_type);
++		public void set_pointer_a11y_settings (Clutter.PointerA11ySettings settings);
++		public virtual void warp_pointer (int x, int y);
++		[NoAccessorMethod]
++		public Clutter.Backend backend { owned get; construct; }
++		public bool touch_mode { get; }
++		public signal void device_added (Clutter.InputDevice object);
++		public signal void device_removed (Clutter.InputDevice object);
++		public signal void kbd_a11y_flags_changed (uint settings_flags, uint changed_mask);
++		public signal void kbd_a11y_mods_state_changed (uint latched_mask, uint locked_mask);
++		public signal void ptr_a11y_dwell_click_type_changed (Clutter.PointerA11yDwellClickType click_type);
++		public signal void ptr_a11y_timeout_started (Clutter.InputDevice device, Clutter.PointerA11yTimeoutType timeout_type, uint delay);
++		public signal void ptr_a11y_timeout_stopped (Clutter.InputDevice device, Clutter.PointerA11yTimeoutType timeout_type, bool clicked);
++		public signal void tool_changed (Clutter.InputDevice object, Clutter.InputDeviceTool p0);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_settings_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public class Settings : GLib.Object {
+@@ -7002,18 +6821,6 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false)]
+ 		protected ShaderMatrix ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_size_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.12")]
+-	public class Size {
+-		public float height;
+-		public float width;
+-		public static Clutter.Size alloc ();
+-		public Clutter.Size copy ();
+-		public bool equals (Clutter.Size b);
+-		public void free ();
+-		public unowned Clutter.Size init (float width, float height);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_snap_constraint_get_type ()")]
+ 	[Version (since = "1.6")]
+ 	public class SnapConstraint : Clutter.Constraint {
+@@ -7052,14 +6859,12 @@ namespace Clutter {
+ 		public void freeze_updates ();
+ 		[Version (since = "1.6")]
+ 		public bool get_accept_focus ();
+-		public unowned Clutter.Actor get_actor_at_pos (Clutter.PickMode pick_mode, int x, int y);
++		public unowned Clutter.Actor get_actor_at_pos (Clutter.PickMode pick_mode, float x, float y);
+ 		public bool get_capture_final_size (Cairo.RectangleInt rect, int width, int height, float scale);
+ 		[Version (deprecated = true, deprecated_since = "1.10")]
+ 		public Clutter.Color get_color ();
+ 		[Version (deprecated = true, deprecated_since = "1.10")]
+ 		public static unowned Clutter.Stage get_default ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public Clutter.Fog get_fog ();
+ 		public int64 get_frame_counter ();
+ 		[Version (since = "0.6")]
+ 		public unowned Clutter.Actor get_key_focus ();
+@@ -7067,19 +6872,14 @@ namespace Clutter {
+ 		public void get_minimum_size (out uint width, out uint height);
+ 		[Version (since = "1.8")]
+ 		public bool get_motion_events_enabled ();
+-		[Version (since = "1.4")]
+-		public bool get_no_clear_hint ();
+ 		public Clutter.Perspective get_perspective ();
+-		[Version (since = "1.8")]
+-		public Cairo.RectangleInt get_redraw_clip_bounds ();
++		public Cairo.Region get_redraw_clip ();
+ 		[Version (since = "1.0")]
+ 		public bool get_throttle_motion_events ();
+ 		[Version (since = "0.4")]
+ 		public unowned string get_title ();
+ 		[Version (since = "1.2")]
+ 		public bool get_use_alpha ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public bool get_use_fog ();
+ 		[Version (since = "0.4")]
+ 		public void hide_cursor ();
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+@@ -7094,16 +6894,12 @@ namespace Clutter {
+ 		public void set_accept_focus (bool accept_focus);
+ 		[Version (deprecated = true, deprecated_since = "1.10")]
+ 		public void set_color (Clutter.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public void set_fog (Clutter.Fog fog);
+ 		[Version (since = "0.6")]
+ 		public void set_key_focus (Clutter.Actor? actor);
+ 		[Version (since = "1.2")]
+ 		public void set_minimum_size (uint width, uint height);
+ 		[Version (since = "1.8")]
+ 		public void set_motion_events_enabled (bool enabled);
+-		[Version (since = "1.4")]
+-		public void set_no_clear_hint (bool no_clear);
+ 		public void set_perspective (Clutter.Perspective perspective);
+ 		[Version (since = "1.0")]
+ 		public void set_throttle_motion_events (bool throttle);
+@@ -7111,8 +6907,6 @@ namespace Clutter {
+ 		public void set_title (string title);
+ 		[Version (since = "1.2")]
+ 		public void set_use_alpha (bool use_alpha);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public void set_use_fog (bool fog);
+ 		public void show_cursor ();
+ 		public void thaw_updates ();
+ 		public void update_resource_scales ();
+@@ -7122,20 +6916,14 @@ namespace Clutter {
+ 		public Clutter.Color color { get; set; }
+ 		[NoAccessorMethod]
+ 		public bool cursor_visible { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public Clutter.Fog fog { get; set; }
+ 		[Version (since = "1.2")]
+ 		public Clutter.Actor key_focus { get; set; }
+-		[Version (since = "1.4")]
+-		public bool no_clear_hint { get; set; }
+ 		[Version (since = "0.8")]
+ 		public Clutter.Perspective perspective { get; set; }
+ 		[Version (since = "0.4")]
+ 		public string title { get; set; }
+ 		[Version (since = "1.2")]
+ 		public bool use_alpha { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public bool use_fog { get; set; }
+ 		[Version (since = "0.6")]
+ 		public virtual signal void activate ();
+ 		[Version (since = "1.20")]
+@@ -7158,8 +6946,6 @@ namespace Clutter {
+ 		[Version (since = "0.8")]
+ 		public GLib.SList<weak Clutter.Stage> list_stages ();
+ 		public unowned GLib.SList<Clutter.Stage> peek_stages ();
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "0.8")]
+-		public void set_default_stage (Clutter.Stage stage);
+ 		[Version (since = "0.8")]
+ 		public Clutter.Stage default_stage { get; }
+ 		[Version (since = "0.8")]
+@@ -7206,16 +6992,10 @@ namespace Clutter {
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+ 		public uint get_duration (string? source_state_name, string? target_state_name);
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public GLib.List<weak Clutter.StateKey> get_keys (string? source_state_name, string? target_state_name, GLib.Object? object, string? property_name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+ 		public unowned string get_state ();
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+ 		public GLib.List<weak string> get_states ();
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned Clutter.Timeline get_timeline ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void remove_key (string? source_state_name, string? target_state_name, GLib.Object? object, string? property_name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+ 		public void set_duration (string? source_state_name, string? target_state_name, uint duration);
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+ 		public unowned Clutter.State set_key (string? source_state_name, string target_state_name, GLib.Object object, string property_name, uint mode, GLib.Value value, double pre_delay, double post_delay);
+@@ -7236,24 +7016,8 @@ namespace Clutter {
+ 	[Compact]
+ 	[Version (since = "1.4")]
+ 	public class StateKey {
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public ulong get_mode ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned GLib.Object get_object ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public double get_post_delay ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public double get_pre_delay ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_property_name ();
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+ 		public GLib.Type get_property_type ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_source_state_name ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_target_state_name ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool get_value (GLib.Value value);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_swipe_action_get_type ()")]
+ 	[Version (since = "1.8")]
+@@ -7265,53 +7029,6 @@ namespace Clutter {
+ 		[Version (since = "1.14")]
+ 		public virtual signal bool swipe (Clutter.Actor actor, Clutter.SwipeDirection direction);
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_table_layout_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "1.4")]
+-	public class TableLayout : Clutter.LayoutManager {
+-		[CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
+-		public TableLayout ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void get_alignment (Clutter.Actor actor, out Clutter.TableAlignment x_align, out Clutter.TableAlignment y_align);
+-		public int get_column_count ();
+-		public uint get_column_spacing ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public uint get_easing_duration ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public ulong get_easing_mode ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void get_expand (Clutter.Actor actor, out bool x_expand, out bool y_expand);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void get_fill (Clutter.Actor actor, out bool x_fill, out bool y_fill);
+-		public int get_row_count ();
+-		public uint get_row_spacing ();
+-		public void get_span (Clutter.Actor actor, out int column_span, out int row_span);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool get_use_animations ();
+-		public void pack (Clutter.Actor actor, int column, int row);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_alignment (Clutter.Actor actor, Clutter.TableAlignment x_align, Clutter.TableAlignment y_align);
+-		public void set_column_spacing (uint spacing);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_easing_duration (uint msecs);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_easing_mode (ulong mode);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_expand (Clutter.Actor actor, bool x_expand, bool y_expand);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_fill (Clutter.Actor actor, bool x_fill, bool y_fill);
+-		public void set_row_spacing (uint spacing);
+-		public void set_span (Clutter.Actor actor, int column_span, int row_span);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_use_animations (bool animate);
+-		public uint column_spacing { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public uint easing_duration { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public ulong easing_mode { get; set; }
+-		public uint row_spacing { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool use_animations { get; set; }
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_tap_action_get_type ()")]
+ 	[Version (since = "1.14")]
+ 	public class TapAction : Clutter.GestureAction {
+@@ -7339,7 +7056,7 @@ namespace Clutter {
+ 		public Clutter.Color get_cursor_color ();
+ 		public int get_cursor_position ();
+ 		[Version (since = "1.16")]
+-		public void get_cursor_rect (out unowned Clutter.Rect rect);
++		public void get_cursor_rect (out unowned Graphene.Rect rect);
+ 		public uint get_cursor_size ();
+ 		public bool get_cursor_visible ();
+ 		public bool get_editable ();
+@@ -7458,7 +7175,7 @@ namespace Clutter {
+ 		[Version (since = "1.16")]
+ 		public virtual signal void cursor_changed ();
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public virtual signal void cursor_event (Clutter.Geometry geometry);
++		public virtual signal void cursor_event (Graphene.Rect rect);
+ 		[HasEmitter]
+ 		[Version (since = "1.2")]
+ 		public signal void delete_text (int start_pos, int end_pos);
+@@ -7497,92 +7214,9 @@ namespace Clutter {
+ 		public TextNode (Pango.Layout? layout, Clutter.Color? color);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_texture_get_type ()")]
+-	[Version (since = "0.2")]
+-	public class Texture : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public Texture ();
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-		public Texture.from_actor (Clutter.Actor actor);
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public Texture.from_file (string filename) throws Clutter.TextureError;
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public void get_base_size (out int width, out int height);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Cogl.Handle get_cogl_material ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public unowned Cogl.Handle get_cogl_texture ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public Clutter.TextureQuality get_filter_quality ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_keep_aspect_ratio ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_load_async ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_load_data_async ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public int get_max_tile_waste ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool get_pick_with_alpha ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void get_repeat (out bool repeat_x, out bool repeat_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_sync_size ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public bool set_area_from_rgb_data ([CCode (array_length = false)] uint8[] data, bool has_alpha, int x, int y, int width, int height, int rowstride, int bpp, Clutter.TextureFlags flags) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_cogl_material (Cogl.Handle cogl_material);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_cogl_texture (Cogl.Handle cogl_tex);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_filter_quality (Clutter.TextureQuality filter_quality);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public bool set_from_file (string filename) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.4")]
+-		public bool set_from_rgb_data ([CCode (array_length = false)] uint8[] data, bool has_alpha, int width, int height, int rowstride, int bpp, Clutter.TextureFlags flags) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public bool set_from_yuv_data ([CCode (array_length = false)] uint8[] data, int width, int height, Clutter.TextureFlags flags) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_keep_aspect_ratio (bool keep_aspect);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_load_async (bool load_async);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_load_data_async (bool load_async);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_pick_with_alpha (bool pick_with_alpha);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_repeat (bool repeat_x, bool repeat_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_sync_size (bool sync_size);
++	public class Texture : Clutter.Actor {
+ 		public Cogl.Material cogl_material { get; set; }
+ 		public Cogl.Texture cogl_texture { get; set; }
+-		[NoAccessorMethod]
+-		public bool disable_slicing { get; construct; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public string filename { owned get; set; }
+-		public Clutter.TextureQuality filter_quality { get; set construct; }
+-		public bool keep_aspect_ratio { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool load_async { set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool load_data_async { set; }
+-		public bool pick_with_alpha { get; set; }
+-		[NoAccessorMethod]
+-		public bool repeat_x { get; set; }
+-		[NoAccessorMethod]
+-		public bool repeat_y { get; set; }
+-		public bool sync_size { get; set; }
+-		[NoAccessorMethod]
+-		public int tile_waste { get; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public virtual signal void load_finished (GLib.Error error);
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public virtual signal void pixbuf_change ();
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public virtual signal void size_change (int width, int height);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_texture_node_get_type ()")]
+ 	[Version (since = "1.10")]
+@@ -7608,7 +7242,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public bool get_auto_reverse ();
+ 		[Version (since = "1.12")]
+-		public bool get_cubic_bezier_progress (Clutter.Point c_1, Clutter.Point c_2);
++		public bool get_cubic_bezier_progress (Graphene.Point c_1, Graphene.Point c_2);
+ 		[Version (since = "1.10")]
+ 		public int get_current_repeat ();
+ 		[Version (since = "0.4")]
+@@ -7645,7 +7279,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public void set_auto_reverse (bool reverse);
+ 		[Version (since = "1.12")]
+-		public void set_cubic_bezier_progress (Clutter.Point c_1, Clutter.Point c_2);
++		public void set_cubic_bezier_progress (Graphene.Point c_1, Graphene.Point c_2);
+ 		[Version (since = "0.4")]
+ 		public void set_delay (uint msecs);
+ 		[Version (since = "0.6")]
+@@ -7744,6 +7378,11 @@ namespace Clutter {
+ 		public float x;
+ 		public float y;
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_transform_node_get_type ()")]
++	public class TransformNode : Clutter.PaintNode {
++		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
++		public TransformNode (Cogl.Matrix projection);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_transition_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public abstract class Transition : Clutter.Timeline, Clutter.Scriptable {
+@@ -7783,7 +7422,6 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false)]
+ 		protected VirtualInputDevice ();
+ 		public int get_device_type ();
+-		public unowned Clutter.DeviceManager get_manager ();
+ 		public virtual void notify_absolute_motion (uint64 time_us, double x, double y);
+ 		public virtual void notify_button (uint64 time_us, uint32 button, Clutter.ButtonState button_state);
+ 		public virtual void notify_discrete_scroll (uint64 time_us, Clutter.ScrollDirection direction, Clutter.ScrollSource scroll_source);
+@@ -7794,25 +7432,25 @@ namespace Clutter {
+ 		public virtual void notify_touch_down (uint64 time_us, int slot, double x, double y);
+ 		public virtual void notify_touch_motion (uint64 time_us, int slot, double x, double y);
+ 		public virtual void notify_touch_up (uint64 time_us, int slot);
+-		[NoAccessorMethod]
+-		public Clutter.DeviceManager device_manager { owned get; construct; }
+ 		public Clutter.InputDeviceType device_type { get; construct; }
++		[NoAccessorMethod]
++		public Clutter.Seat seat { owned get; construct; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_zoom_action_get_type ()")]
+ 	[Version (since = "1.12")]
+ 	public class ZoomAction : Clutter.GestureAction {
+ 		[CCode (has_construct_function = false, type = "ClutterAction*")]
+ 		public ZoomAction ();
+-		public void get_focal_point (Clutter.Point point);
+-		public void get_transformed_focal_point (Clutter.Point point);
++		public void get_focal_point (Graphene.Point point);
++		public void get_transformed_focal_point (Graphene.Point point);
+ 		public Clutter.ZoomAxis get_zoom_axis ();
+ 		public void set_zoom_axis (Clutter.ZoomAxis axis);
+ 		public Clutter.ZoomAxis zoom_axis { get; set; }
+-		public virtual signal bool zoom (Clutter.Actor actor, Clutter.Point focal_point, double factor);
++		public virtual signal bool zoom (Clutter.Actor actor, Graphene.Point focal_point, double factor);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_cname = "ClutterAnimatableInterface", type_id = "clutter_animatable_get_type ()")]
+ 	public interface Animatable : GLib.Object {
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "1.0")]
++		[NoWrapper]
+ 		public abstract bool animate_property (Clutter.Animation animation, string property_name, GLib.Value initial_value, GLib.Value final_value, double progress, GLib.Value value);
+ 		[Version (since = "1.4")]
+ 		public abstract unowned GLib.ParamSpec find_property (string property_name);
+@@ -7830,8 +7468,6 @@ namespace Clutter {
+ 		[CCode (vfunc_name = "add")]
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+ 		public abstract void add_actor (Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public void add_valist (Clutter.Actor first_actor, va_list var_args);
+ 		[Version (since = "0.8")]
+ 		public void child_get (Clutter.Actor actor, ...);
+ 		[Version (since = "0.8")]
+@@ -7853,10 +7489,6 @@ namespace Clutter {
+ 		public unowned Clutter.Actor find_child_by_name (string child_name);
+ 		[CCode (cname = "clutter_container_class_find_child_property")]
+ 		public class unowned GLib.ParamSpec find_child_property (string property_name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public abstract void @foreach (Clutter.Callback callback);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public virtual void foreach_with_internals (Clutter.Callback callback);
+ 		[Version (since = "0.8")]
+ 		public virtual unowned Clutter.ChildMeta get_child_meta (Clutter.Actor actor);
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+@@ -7874,8 +7506,6 @@ namespace Clutter {
+ 		[CCode (vfunc_name = "remove")]
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+ 		public abstract void remove_actor (Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public void remove_valist (Clutter.Actor first_actor, va_list var_args);
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+ 		public abstract void sort_depth_order ();
+ 		public virtual signal void actor_added (Clutter.Actor actor);
+@@ -7892,7 +7522,7 @@ namespace Clutter {
+ 		public abstract void invalidate ();
+ 		public abstract void invalidate_size ();
+ 		[NoWrapper]
+-		public abstract void paint_content (Clutter.Actor actor, Clutter.PaintNode node);
++		public abstract void paint_content (Clutter.Actor actor, Clutter.PaintNode node, Clutter.PaintContext paint_context);
+ 		[Version (since = "1.10")]
+ 		public virtual signal void attached (Clutter.Actor actor);
+ 		[Version (since = "1.10")]
+@@ -7908,10 +7538,6 @@ namespace Clutter {
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public interface StageWindow : GLib.Object {
+-		[NoWrapper]
+-		public abstract void add_redraw_clip (Clutter.Geometry stage_rectangle);
+-		[NoWrapper]
+-		public abstract void get_geometry (Clutter.Geometry geometry);
+ 		[NoWrapper]
+ 		public abstract int get_pending_swaps ();
+ 		[NoWrapper]
+@@ -7939,14 +7565,16 @@ namespace Clutter {
+ 		[NoWrapper]
+ 		public abstract void unrealize ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "CLUTTER_TYPE_ACTOR_BOX")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_actor_box_get_type ()")]
+ 	public struct ActorBox {
+ 		public float x1;
+ 		public float y1;
+ 		public float x2;
+ 		public float y2;
++		[Version (since = "1.12")]
++		public static Clutter.ActorBox? alloc ();
+ 		[Version (since = "1.2")]
+-		public void clamp_to_pixel ();
++		public static void clamp_to_pixel (ref Clutter.ActorBox box);
+ 		[Version (since = "1.0")]
+ 		public bool contains (float x, float y);
+ 		[Version (since = "1.0")]
+@@ -7955,8 +7583,6 @@ namespace Clutter {
+ 		public bool equal (Clutter.ActorBox box_b);
+ 		[Version (since = "1.0")]
+ 		public void free ();
+-		[CCode (cname = "clutter_actor_box_from_vertices")]
+-		public ActorBox.from_vertices (Clutter.Vertex[] verts);
+ 		[Version (since = "1.0")]
+ 		public float get_area ();
+ 		[Version (since = "1.0")]
+@@ -8002,7 +7628,7 @@ namespace Clutter {
+ 		public weak Cairo.Surface image;
+ 		public Cairo.RectangleInt rect;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "CLUTTER_TYPE_COLOR")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "CLUTTER_TYPE_COLOR")]
+ 	public struct Color {
+ 		public uint8 red;
+ 		public uint8 green;
+@@ -8041,24 +7667,6 @@ namespace Clutter {
+ 		[Version (since = "0.2")]
+ 		public string to_string ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_fog_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-	public struct Fog {
+-		public float z_near;
+-		public float z_far;
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_geometry_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public struct Geometry {
+-		public int x;
+-		public int y;
+-		public uint width;
+-		public uint height;
+-		[Version (since = "1.4")]
+-		public bool intersects (Clutter.Geometry geometry1);
+-		[Version (since = "1.4")]
+-		public Clutter.Geometry union (Clutter.Geometry geometry_b);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	public struct KbdA11ySettings {
+ 		public Clutter.KeyboardA11yFlags controls;
+@@ -8069,7 +7677,7 @@ namespace Clutter {
+ 		public int mousekeys_max_speed;
+ 		public int mousekeys_accel_time;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_knot_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_knot_get_type ()")]
+ 	[Version (since = "0.2")]
+ 	public struct Knot {
+ 		public int x;
+@@ -8121,7 +7729,7 @@ namespace Clutter {
+ 		public double value;
+ 		public uint32 mode;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_path_node_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_path_node_get_type ()")]
+ 	[Version (since = "1.0")]
+ 	public struct PathNode {
+ 		public Clutter.PathNodeType type;
+@@ -8131,7 +7739,7 @@ namespace Clutter {
+ 		public bool equal (Clutter.PathNode node_b);
+ 		public void free ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_perspective_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_perspective_get_type ()")]
+ 	[Version (since = "0.4")]
+ 	public struct Perspective {
+ 		public float fovy;
+@@ -8162,7 +7770,7 @@ namespace Clutter {
+ 		public weak Clutter.Actor source;
+ 		public weak Clutter.InputDevice device;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "CLUTTER_TYPE_UNITS")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "CLUTTER_TYPE_UNITS")]
+ 	[Version (since = "1.0")]
+ 	public struct Units {
+ 		public Clutter.Units? copy ();
+@@ -8186,23 +7794,6 @@ namespace Clutter {
+ 		public float to_pixels ();
+ 		public string to_string ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_vertex_get_type ()")]
+-	[Version (since = "0.4")]
+-	public struct Vertex {
+-		public float x;
+-		public float y;
+-		public float z;
+-		[Version (since = "1.12")]
+-		public static Clutter.Vertex? alloc ();
+-		[Version (since = "1.0")]
+-		public Clutter.Vertex? copy ();
+-		[Version (since = "1.0")]
+-		public bool equal (Clutter.Vertex vertex_b);
+-		[Version (since = "1.0")]
+-		public void free ();
+-		[Version (since = "1.10")]
+-		public unowned Clutter.Vertex? init (float x, float y, float z);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_ACTOR_ALIGN_", type_id = "clutter_actor_align_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public enum ActorAlign {
+@@ -8340,6 +7931,27 @@ namespace Clutter {
+ 		Y_AXIS,
+ 		BOTH
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DEBUG_", type_id = "clutter_debug_flag_get_type ()")]
++	[Flags]
++	public enum DebugFlag {
++		MISC,
++		ACTOR,
++		TEXTURE,
++		EVENT,
++		PAINT,
++		PANGO,
++		BACKEND,
++		SCHEDULER,
++		SCRIPT,
++		SHADER,
++		MULTISTAGE,
++		ANIMATION,
++		LAYOUT,
++		PICK,
++		EVENTLOOP,
++		CLIPPING,
++		OOB_TRANSFORMS
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DRAG_", type_id = "clutter_drag_axis_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public enum DragAxis {
+@@ -8347,6 +7959,19 @@ namespace Clutter {
+ 		X_AXIS,
+ 		Y_AXIS
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DEBUG_", type_id = "clutter_draw_debug_flag_get_type ()")]
++	[Flags]
++	public enum DrawDebugFlag {
++		DISABLE_SWAP_EVENTS,
++		DISABLE_CLIPPED_REDRAWS,
++		REDRAWS,
++		PAINT_VOLUMES,
++		DISABLE_CULLING,
++		DISABLE_OFFSCREEN_REDIRECT,
++		CONTINUOUS_REDRAW,
++		PAINT_DEFORM_TILES,
++		PAINT_DAMAGE_REGION
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_EFFECT_PAINT_ACTOR_", type_id = "clutter_effect_paint_flags_get_type ()")]
+ 	[Flags]
+ 	public enum EffectPaintFlags {
+@@ -8398,8 +8023,6 @@ namespace Clutter {
+ 	public enum FeatureFlags {
+ 		TEXTURE_NPOT,
+ 		SWAP_THROTTLE,
+-		TEXTURE_YUV,
+-		TEXTURE_READ_PIXELS,
+ 		STAGE_STATIC,
+ 		STAGE_CURSOR,
+ 		SHADERS_GLSL,
+@@ -8657,6 +8280,11 @@ namespace Clutter {
+ 		REL_LINE_TO,
+ 		REL_CURVE_TO
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DEBUG_NOP_", type_id = "clutter_pick_debug_flag_get_type ()")]
++	[Flags]
++	public enum PickDebugFlag {
++		PICKING
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_PICK_", type_id = "clutter_pick_mode_get_type ()")]
+ 	[Version (since = "1.0")]
+ 	public enum PickMode {
+@@ -8851,13 +8479,6 @@ namespace Clutter {
+ 		LEFT,
+ 		RIGHT
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_TABLE_ALIGNMENT_", type_id = "clutter_table_alignment_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.22", since = "1.4")]
+-	public enum TableAlignment {
+-		START,
+-		CENTER,
+-		END
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_TEXT_DIRECTION_", type_id = "clutter_text_direction_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public enum TextDirection {
+@@ -8933,28 +8554,19 @@ namespace Clutter {
+ 		VALUE;
+ 		public static GLib.Quark quark ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_TEXTURE_ERROR_")]
+-	[Version (since = "0.4")]
+-	public errordomain TextureError {
+-		OUT_OF_MEMORY,
+-		NO_YUV,
+-		BAD_FORMAT;
+-		public static GLib.Quark quark ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	[Version (since = "1.24")]
+ 	public delegate Clutter.Actor ActorCreateChildFunc (GLib.Object item);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	[Version (deprecated = true, deprecated_since = "1.12", since = "0.2")]
+ 	public delegate double AlphaFunc (Clutter.Alpha alpha);
+-	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 2.9)]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public delegate void BehaviourForeachFunc (Clutter.Behaviour behaviour, Clutter.Actor actor);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 4.9)]
+ 	[Version (since = "1.0")]
+ 	public delegate bool BindingActionFunc (GLib.Object gobject, string action_name, uint key_val, Clutter.ModifierType modifiers);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	public delegate void Callback (Clutter.Actor actor);
++	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
++	public delegate void EmitInputDeviceEvent (Clutter.Event event, Clutter.InputDevice device);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	[Version (since = "1.18")]
+ 	public delegate bool EventFilterFunc (Clutter.Event event);
+@@ -8985,9 +8597,6 @@ namespace Clutter {
+ 	[Version (since = "0.8")]
+ 	public const int PRIORITY_REDRAW;
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.12")]
+-	public static Clutter.ActorBox? actor_box_alloc ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public static void base_init ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "1.12")]
+@@ -9051,9 +8660,6 @@ namespace Clutter {
+ 	[Version (since = "1.0")]
+ 	public static unowned Pango.FontMap get_font_map ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static unowned Clutter.Actor get_keyboard_grab ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.2")]
+ 	public static GLib.OptionGroup get_option_group ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+@@ -9061,17 +8667,8 @@ namespace Clutter {
+ 	public static GLib.OptionGroup get_option_group_without_init ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.6")]
+-	public static unowned Clutter.Actor get_pointer_grab ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+ 	public static unowned string get_script_id (GLib.Object gobject);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void grab_keyboard (Clutter.Actor actor);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void grab_pointer (Clutter.Actor actor);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public static Clutter.InitError init ([CCode (array_length_cname = "argc", array_length_pos = 0.5)] ref unowned string[]? argv);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.2")]
+@@ -9087,29 +8684,6 @@ namespace Clutter {
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public static void set_custom_backend_func (void* func);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static void test_add_data_full (string test_path, owned GLib.TestDataFunc test_func);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static bool test_check_actor_at_point (Clutter.Actor stage, Clutter.Point point, Clutter.Actor actor, out Clutter.Actor? result);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static bool test_check_color_at_point (Clutter.Actor stage, Clutter.Point point, Clutter.Color color, out Clutter.Color result);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static unowned Clutter.Actor test_get_stage ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	public static void test_init (int argc, string argv);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static int test_run ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void ungrab_keyboard ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void ungrab_pointer ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "1.10")]
+ 	public static uint unicode_to_keysym (uint32 wc);
+ }
+diff --git vapi/mutter-clutter-4.deps vapi/mutter-clutter-7.deps
+similarity index 54%
+rename from vapi/mutter-clutter-4.deps
+rename to vapi/mutter-clutter-7.deps
+index 95094026..6bd1ccf7 100644
+--- vapi/mutter-clutter-4.deps
++++ vapi/mutter-clutter-7.deps
+@@ -1,5 +1,4 @@
+ atk
+ cairo
+ json-glib-1.0
+-mutter-cogl-4
+-pango
++mutter-cogl-7
+diff --git vapi/mutter-clutter-4.vapi vapi/mutter-clutter-7.vapi
+similarity index 86%
+rename from vapi/mutter-clutter-4.vapi
+rename to vapi/mutter-clutter-7.vapi
+index c8a1d23b..aea6a31a 100644
+--- vapi/mutter-clutter-4.vapi
++++ vapi/mutter-clutter-7.vapi
+@@ -1,6 +1,6 @@
+-/* mutter-clutter-4.vapi generated by vapigen, do not modify. */
++/* mutter-clutter-7.vapi generated by vapigen, do not modify. */
+ 
+-[CCode (cprefix = "Clutter", gir_namespace = "Clutter", gir_version = "4", lower_case_cprefix = "clutter_")]
++[CCode (cprefix = "Clutter", gir_namespace = "Clutter", gir_version = "7", lower_case_cprefix = "clutter_")]
+ namespace Clutter {
+ 	namespace Key {
+ 		[CCode (cheader_filename = "clutter/clutter.h", cname = "CLUTTER_KEY_0")]
+@@ -4576,20 +4576,8 @@ namespace Clutter {
+ 		[Version (since = "1.10")]
+ 		public static uint add_repaint_func_full (Clutter.RepaintFlags flags, owned GLib.SourceFunc func);
+ 		[CCode (cheader_filename = "clutter/clutter.h")]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.4")]
+-		public static void enter ();
+-		[CCode (cheader_filename = "clutter/clutter.h")]
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public static void init ();
+-		[CCode (cheader_filename = "clutter/clutter.h")]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.4")]
+-		public static void leave ();
+-		[CCode (cheader_filename = "clutter/clutter.h")]
+ 		[Version (since = "1.0")]
+ 		public static void remove_repaint_func (uint handle_id);
+-		[CCode (cheader_filename = "clutter/clutter.h")]
+-		[Version (since = "0.4")]
+-		public static void set_lock_functions (GLib.Callback enter_fn, GLib.Callback leave_fn);
+ 	}
+ 	namespace Value {
+ 		[CCode (cheader_filename = "clutter/clutter.h")]
+@@ -4636,7 +4624,6 @@ namespace Clutter {
+ 		public static void take_paint_node (GLib.Value value, Clutter.PaintNode? node);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_action_get_type ()")]
+-	[Version (since = "1.4")]
+ 	public abstract class Action : Clutter.ActorMeta {
+ 		[CCode (has_construct_function = false)]
+ 		protected Action ();
+@@ -4664,33 +4651,23 @@ namespace Clutter {
+ 		[Version (since = "1.10")]
+ 		public void add_transition (string name, Clutter.Transition transition);
+ 		[Version (since = "0.8")]
+-		public virtual void allocate (Clutter.ActorBox box, Clutter.AllocationFlags flags);
++		public virtual void allocate (Clutter.ActorBox box);
+ 		[Version (since = "1.4")]
+-		public void allocate_align_fill (Clutter.ActorBox box, double x_align, double y_align, bool x_fill, bool y_fill, Clutter.AllocationFlags flags);
++		public void allocate_align_fill (Clutter.ActorBox box, double x_align, double y_align, bool x_fill, bool y_fill);
+ 		[Version (since = "1.0")]
+-		public void allocate_available_size (float x, float y, float available_width, float available_height, Clutter.AllocationFlags flags);
++		public void allocate_available_size (float x, float y, float available_width, float available_height);
+ 		[Version (since = "0.8")]
+-		public void allocate_preferred_size (Clutter.AllocationFlags flags);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation animate (ulong mode, uint duration, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_alpha (Clutter.Alpha alpha, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_alphav (Clutter.Alpha alpha, [CCode (array_length_cname = "n_properties", array_length_pos = 1.5)] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 1.5)] GLib.Value[] values);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_timeline (ulong mode, Clutter.Timeline timeline, ...);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation animate_with_timelinev (ulong mode, Clutter.Timeline timeline, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] GLib.Value[] values);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation animatev (ulong mode, uint duration, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 2.5)] GLib.Value[] values);
++		public void allocate_preferred_size (float x, float y);
+ 		[Version (since = "0.6")]
+-		public Clutter.Vertex apply_relative_transform_to_point (Clutter.Actor? ancestor, Clutter.Vertex point);
++		public void apply_relative_transform_to_point (Clutter.Actor? ancestor, Graphene.Point3D point, out unowned Graphene.Point3D vertex);
+ 		[NoWrapper]
+ 		public virtual void apply_transform (ref Clutter.Matrix matrix);
+ 		[Version (since = "0.4")]
+-		public Clutter.Vertex apply_transform_to_point (Clutter.Vertex point);
++		public void apply_transform_to_point (Graphene.Point3D point, out unowned Graphene.Point3D vertex);
+ 		[Version (since = "1.24")]
+ 		public void bind_model (GLib.ListModel? model, owned Clutter.ActorCreateChildFunc create_child_func);
++		[NoWrapper]
++		public virtual float calculate_resource_scale (int phase);
+ 		[Version (since = "1.4")]
+ 		public void clear_actions ();
+ 		[Version (since = "1.4")]
+@@ -4700,20 +4677,19 @@ namespace Clutter {
+ 		[Version (since = "1.4")]
+ 		public bool contains (Clutter.Actor descendant);
+ 		[Version (since = "1.8")]
+-		public void continue_paint ();
++		public void continue_paint (Clutter.PaintContext paint_context);
++		public void continue_pick (Clutter.PickContext pick_context);
+ 		[Version (since = "1.0")]
+ 		public Pango.Context create_pango_context ();
+ 		[Version (since = "1.0")]
+ 		public Pango.Layout create_pango_layout (string? text);
+ 		[Version (since = "1.10")]
+ 		public void destroy_all_children ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void detach_animation ();
+ 		[CCode (cname = "clutter_actor_event")]
+ 		[Version (since = "0.6")]
+ 		public bool emit_event (Clutter.Event event, bool capture);
+ 		[Version (since = "0.4")]
+-		public void get_abs_allocation_vertices ([CCode (array_length = false)] Clutter.Vertex verts[4]);
++		public void get_abs_allocation_vertices ([CCode (array_length = false)] Graphene.Point3D verts[4]);
+ 		public virtual unowned Atk.Object get_accessible ();
+ 		[Version (since = "1.4")]
+ 		public unowned Clutter.Action get_action (string name);
+@@ -4721,21 +4697,8 @@ namespace Clutter {
+ 		public GLib.List<weak Clutter.Action> get_actions ();
+ 		[Version (since = "0.8")]
+ 		public Clutter.ActorBox get_allocation_box ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public Clutter.Geometry get_allocation_geometry ();
+-		[Version (since = "0.6")]
+-		public void get_allocation_vertices (Clutter.Actor? ancestor, [CCode (array_length = false)] Clutter.Vertex verts[4]);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public void get_anchor_point (out float anchor_x, out float anchor_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Gravity get_anchor_point_gravity ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Clutter.Animation get_animation ();
+ 		[Version (since = "1.10")]
+ 		public Clutter.Color get_background_color ();
+-		[CCode (cname = "clutter_get_actor_by_gid")]
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-		public static unowned Clutter.Actor get_by_gid (uint32 id_);
+ 		[Version (since = "1.10")]
+ 		public unowned Clutter.Actor get_child_at_index (int index_);
+ 		[Version (since = "1.12")]
+@@ -4762,8 +4725,6 @@ namespace Clutter {
+ 		public void get_content_scaling_filters (out Clutter.ScalingFilter min_filter, out Clutter.ScalingFilter mag_filter);
+ 		[Version (since = "1.10")]
+ 		public unowned Clutter.PaintVolume get_default_paint_volume ();
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public float get_depth ();
+ 		[Version (since = "1.10")]
+ 		public uint get_easing_delay ();
+ 		[Version (since = "1.10")]
+@@ -4776,12 +4737,11 @@ namespace Clutter {
+ 		public GLib.List<weak Clutter.Effect> get_effects ();
+ 		[Version (since = "1.10")]
+ 		public unowned Clutter.Actor get_first_child ();
++		public bool get_fixed_position (out float x, out float y);
+ 		[Version (since = "0.8")]
+ 		public bool get_fixed_position_set ();
+ 		[Version (since = "1.0")]
+ 		public Clutter.ActorFlags get_flags ();
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-		public uint32 get_gid ();
+ 		[CCode (cname = "clutter_actor_has_pointer")]
+ 		[Version (since = "1.2")]
+ 		public bool get_has_pointer ();
+@@ -4839,17 +4799,11 @@ namespace Clutter {
+ 		public bool get_reactive ();
+ 		[Version (since = "1.2")]
+ 		public Clutter.RequestMode get_request_mode ();
+-		public bool get_resource_scale (out float resource_scale);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public double get_rotation (Clutter.RotateAxis axis, out float x, out float y, out float z);
++		public float get_resource_scale ();
+ 		[Version (since = "1.12")]
+ 		public double get_rotation_angle (Clutter.RotateAxis axis);
+ 		[Version (since = "0.2")]
+ 		public void get_scale (out double scale_x, out double scale_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void get_scale_center (out float center_x, out float center_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Gravity get_scale_gravity ();
+ 		[Version (since = "1.12")]
+ 		public double get_scale_z ();
+ 		[Version (since = "0.2")]
+@@ -4860,8 +4814,7 @@ namespace Clutter {
+ 		public Clutter.TextDirection get_text_direction ();
+ 		[Version (since = "1.12")]
+ 		public Clutter.Matrix get_transform ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Matrix get_transformation_matrix ();
++		public void get_transformed_extents (out unowned Graphene.Rect rect);
+ 		[Version (since = "1.6")]
+ 		public unowned Clutter.PaintVolume get_transformed_paint_volume (Clutter.Actor relative_to_ancestor);
+ 		[Version (since = "0.8")]
+@@ -4885,10 +4838,9 @@ namespace Clutter {
+ 		public bool get_y_expand ();
+ 		[Version (since = "1.12")]
+ 		public float get_z_position ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Gravity get_z_rotation_gravity ();
+ 		[Version (since = "1.0")]
+ 		public void grab_key_focus ();
++		public virtual bool has_accessible ();
+ 		[Version (since = "1.10")]
+ 		public bool has_actions ();
+ 		[Version (since = "1.4")]
+@@ -4900,18 +4852,20 @@ namespace Clutter {
+ 		public bool has_effects ();
+ 		[Version (since = "1.4")]
+ 		public bool has_key_focus ();
+-		[Version (since = "1.16")]
+ 		public bool has_mapped_clones ();
+ 		[Version (since = "1.8")]
+ 		public virtual bool has_overlaps ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
++		[NoWrapper]
+ 		public virtual void hide_all ();
++		public void inhibit_culling ();
+ 		[Version (since = "1.10")]
+ 		public void insert_child_above (Clutter.Actor child, Clutter.Actor? sibling);
+ 		[Version (since = "1.10")]
+ 		public void insert_child_at_index (Clutter.Actor child, int index_);
+ 		[Version (since = "1.10")]
+ 		public void insert_child_below (Clutter.Actor child, Clutter.Actor? sibling);
++		public void invalidate_transform ();
++		public bool is_effectively_on_stage_view (Clutter.StageView view);
+ 		[Version (since = "1.0")]
+ 		public bool is_in_clone_paint ();
+ 		[Version (since = "1.24")]
+@@ -4924,33 +4878,20 @@ namespace Clutter {
+ 		public bool is_scaled ();
+ 		[Version (since = "1.24")]
+ 		public bool is_visible ();
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void lower (Clutter.Actor? above);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void lower_bottom ();
+ 		[Version (since = "1.0")]
+ 		public virtual void map ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public void move_anchor_point (float anchor_x, float anchor_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public void move_anchor_point_from_gravity (Clutter.Gravity gravity);
+ 		[Version (since = "0.2")]
+ 		public void move_by (float dx, float dy);
+ 		[Version (since = "1.12")]
+ 		public bool needs_expand (Clutter.Orientation orientation);
+ 		[NoWrapper]
+ 		public virtual void paint_node (Clutter.PaintNode root);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void pop_internal ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void push_internal ();
++		public unowned GLib.List<Clutter.StageView> peek_stage_views ();
++		public void pick_box (Clutter.PickContext pick_context, Clutter.ActorBox box);
++		public unowned Clutter.FrameClock pick_frame_clock ();
+ 		public void queue_redraw ();
+ 		[Version (since = "1.10")]
+ 		public void queue_redraw_with_clip (Cairo.RectangleInt? clip);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void raise (Clutter.Actor? below);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void raise_top ();
+ 		[Version (since = "1.4")]
+ 		public void remove_action (Clutter.Action action);
+ 		[Version (since = "1.4")]
+@@ -4972,8 +4913,6 @@ namespace Clutter {
+ 		public void remove_effect_by_name (string name);
+ 		[Version (since = "1.10")]
+ 		public void remove_transition (string name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public void reparent (Clutter.Actor new_parent);
+ 		[Version (since = "1.10")]
+ 		public void replace_child (Clutter.Actor old_child, Clutter.Actor new_child);
+ 		[Version (since = "1.10")]
+@@ -4981,11 +4920,7 @@ namespace Clutter {
+ 		[Version (since = "1.10")]
+ 		public void save_easing_state ();
+ 		[Version (since = "1.10")]
+-		public void set_allocation (Clutter.ActorBox box, Clutter.AllocationFlags flags);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public void set_anchor_point (float anchor_x, float anchor_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public void set_anchor_point_from_gravity (Clutter.Gravity gravity);
++		public void set_allocation (Clutter.ActorBox box);
+ 		[Version (since = "1.10")]
+ 		public void set_background_color (Clutter.Color? color);
+ 		[Version (since = "1.10")]
+@@ -5008,8 +4943,6 @@ namespace Clutter {
+ 		public void set_content_repeat (Clutter.ContentRepeat repeat);
+ 		[Version (since = "1.10")]
+ 		public void set_content_scaling_filters (Clutter.ScalingFilter min_filter, Clutter.ScalingFilter mag_filter);
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public void set_depth (float depth);
+ 		[Version (since = "1.10")]
+ 		public void set_easing_delay (uint msecs);
+ 		[Version (since = "1.10")]
+@@ -5039,8 +4972,6 @@ namespace Clutter {
+ 		public void set_offscreen_redirect (Clutter.OffscreenRedirect redirect);
+ 		public void set_opacity (uint8 opacity);
+ 		public void set_opacity_override (int opacity);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void set_parent (Clutter.Actor parent);
+ 		[Version (since = "1.12")]
+ 		public void set_pivot_point (float pivot_x, float pivot_y);
+ 		[Version (since = "1.12")]
+@@ -5050,16 +4981,10 @@ namespace Clutter {
+ 		public void set_reactive (bool reactive);
+ 		[Version (since = "1.2")]
+ 		public void set_request_mode (Clutter.RequestMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_rotation (Clutter.RotateAxis axis, double angle, float x, float y, float z);
+ 		[Version (since = "1.12")]
+ 		public void set_rotation_angle (Clutter.RotateAxis axis, double angle);
+ 		[Version (since = "0.2")]
+ 		public void set_scale (double scale_x, double scale_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_scale_full (double scale_x, double scale_y, float center_x, float center_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_scale_with_gravity (double scale_x, double scale_y, Clutter.Gravity gravity);
+ 		[Version (since = "1.12")]
+ 		public void set_scale_z (double scale_z);
+ 		public void set_size (float width, float height);
+@@ -5085,17 +5010,12 @@ namespace Clutter {
+ 		public void set_y_expand (bool expand);
+ 		[Version (since = "1.12")]
+ 		public void set_z_position (float z_position);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_z_rotation_from_gravity (double angle, Clutter.Gravity gravity);
+ 		public bool should_pick_paint ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public virtual void show_all ();
+ 		[Version (since = "0.6")]
+ 		public bool transform_stage_point (float x, float y, out float x_out, out float y_out);
++		public void uninhibit_culling ();
+ 		[Version (since = "1.0")]
+ 		public virtual void unmap ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public void unparent ();
+ 		[Version (since = "1.0")]
+ 		public void unset_flags (Clutter.ActorFlags flags);
+ 		[NoAccessorMethod]
+@@ -5103,16 +5023,7 @@ namespace Clutter {
+ 		public Clutter.Action actions { set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "0.8")]
+-		public Clutter.ActorBox allocation { get; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Gravity anchor_gravity { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public float anchor_x { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public float anchor_y { get; set; }
++		public Clutter.ActorBox allocation { owned get; }
+ 		[Version (since = "1.10")]
+ 		public Clutter.Color background_color { get; set; }
+ 		[NoAccessorMethod]
+@@ -5122,11 +5033,8 @@ namespace Clutter {
+ 		[Version (since = "1.12")]
+ 		public bool child_transform_set { get; }
+ 		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public Clutter.Geometry clip { get; set; }
+-		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Rect clip_rect { owned get; set; }
++		public Graphene.Rect clip_rect { owned get; set; }
+ 		[Version (since = "1.0")]
+ 		public bool clip_to_allocation { get; set; }
+ 		[NoAccessorMethod]
+@@ -5140,8 +5048,6 @@ namespace Clutter {
+ 		public Clutter.ContentGravity content_gravity { get; set; }
+ 		[Version (since = "1.12")]
+ 		public Clutter.ContentRepeat content_repeat { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public float depth { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.4")]
+ 		public Clutter.Effect effect { set; }
+@@ -5211,12 +5117,12 @@ namespace Clutter {
+ 		public uint opacity { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Point pivot_point { owned get; set; }
++		public Graphene.Point pivot_point { owned get; set; }
+ 		[Version (since = "1.12")]
+ 		public float pivot_point_z { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Point position { owned get; set; }
++		public Graphene.Point position { owned get; set; }
+ 		[Version (since = "0.6")]
+ 		public bool reactive { get; set; }
+ 		[NoAccessorMethod]
+@@ -5225,8 +5131,6 @@ namespace Clutter {
+ 		[Version (since = "0.8")]
+ 		public Clutter.RequestMode request_mode { get; set; }
+ 		[NoAccessorMethod]
+-		public float resource_scale { get; }
+-		[NoAccessorMethod]
+ 		[Version (since = "0.6")]
+ 		public double rotation_angle_x { get; set; }
+ 		[NoAccessorMethod]
+@@ -5236,27 +5140,6 @@ namespace Clutter {
+ 		[Version (since = "0.6")]
+ 		public double rotation_angle_z { get; set; }
+ 		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public Clutter.Vertex rotation_center_x { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public Clutter.Vertex rotation_center_y { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public Clutter.Vertex rotation_center_z { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Gravity rotation_center_z_gravity { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public float scale_center_x { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public float scale_center_y { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public Clutter.Gravity scale_gravity { get; set; }
+-		[NoAccessorMethod]
+ 		[Version (since = "0.6")]
+ 		public double scale_x { get; set; }
+ 		[NoAccessorMethod]
+@@ -5269,7 +5152,7 @@ namespace Clutter {
+ 		public bool show_on_set_parent { get; set; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.12")]
+-		public Clutter.Size size { owned get; set; }
++		public Graphene.Size size { owned get; set; }
+ 		[Version (since = "1.0")]
+ 		public Clutter.TextDirection text_direction { get; set; }
+ 		[NoAccessorMethod]
+@@ -5299,8 +5182,6 @@ namespace Clutter {
+ 		public bool y_expand { get; set; }
+ 		[Version (since = "1.12")]
+ 		public float z_position { get; set; }
+-		[Version (since = "1.0")]
+-		public signal void allocation_changed (Clutter.ActorBox box, Clutter.AllocationFlags flags);
+ 		[Version (since = "0.6")]
+ 		public virtual signal bool button_press_event (Clutter.ButtonEvent event);
+ 		[Version (since = "0.6")]
+@@ -5331,22 +5212,25 @@ namespace Clutter {
+ 		public virtual signal bool motion_event (Clutter.MotionEvent event);
+ 		[HasEmitter]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public virtual signal void paint ();
++		public virtual signal void paint (Clutter.PaintContext paint_context);
+ 		[Version (since = "0.2")]
+ 		public virtual signal void parent_set (Clutter.Actor? old_parent);
++		[HasEmitter]
+ 		[Version (since = "1.0")]
+-		public virtual signal void pick (Clutter.Color color);
++		public virtual signal void pick (Clutter.PickContext pick_context);
+ 		[HasEmitter]
+ 		[Version (since = "1.2")]
+ 		public virtual signal void queue_relayout ();
+ 		[HasEmitter]
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "0.8")]
+ 		public virtual signal void realize ();
++		public virtual signal void resource_scale_changed ();
+ 		[Version (since = "0.6")]
+ 		public virtual signal bool scroll_event (Clutter.ScrollEvent event);
+ 		[HasEmitter]
+ 		[Version (since = "0.2")]
+ 		public virtual signal void show ();
++		public signal void stage_views_changed ();
+ 		[Version (since = "1.12")]
+ 		public virtual signal bool touch_event (Clutter.Event event);
+ 		[Version (since = "1.12")]
+@@ -5358,21 +5242,33 @@ namespace Clutter {
+ 		public virtual signal void unrealize ();
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_actor_meta_get_type ()")]
+-	[Version (since = "1.4")]
+ 	public abstract class ActorMeta : GLib.InitiallyUnowned {
+ 		[CCode (has_construct_function = false)]
+ 		protected ActorMeta ();
++		[Version (since = "1.4")]
+ 		public unowned Clutter.Actor get_actor ();
++		[Version (since = "1.4")]
+ 		public bool get_enabled ();
++		[Version (since = "1.4")]
+ 		public unowned string get_name ();
+ 		[NoWrapper]
+ 		public virtual void set_actor (Clutter.Actor? actor);
+-		public void set_enabled (bool is_enabled);
++		[Version (since = "1.4")]
++		public virtual void set_enabled (bool is_enabled);
++		[Version (since = "1.4")]
+ 		public void set_name (string name);
++		[Version (since = "1.4")]
+ 		public Clutter.Actor actor { get; }
++		[Version (since = "1.4")]
+ 		public bool enabled { get; set; }
++		[Version (since = "1.4")]
+ 		public string name { get; set; }
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_actor_node_get_type ()")]
++	public class ActorNode : Clutter.PaintNode {
++		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
++		public ActorNode (Clutter.Actor actor);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_align_constraint_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public class AlignConstraint : Clutter.Constraint {
+@@ -5380,81 +5276,18 @@ namespace Clutter {
+ 		public AlignConstraint (Clutter.Actor? source, Clutter.AlignAxis axis, float factor);
+ 		public Clutter.AlignAxis get_align_axis ();
+ 		public float get_factor ();
++		public void get_pivot_point (out unowned Graphene.Point pivot_point);
+ 		public unowned Clutter.Actor get_source ();
+ 		public void set_align_axis (Clutter.AlignAxis axis);
+ 		public void set_factor (float factor);
++		public void set_pivot_point (Graphene.Point pivot_point);
+ 		public void set_source (Clutter.Actor? source);
+ 		public Clutter.AlignAxis align_axis { get; set construct; }
+ 		public float factor { get; set construct; }
++		[NoAccessorMethod]
++		public Graphene.Point pivot_point { owned get; set; }
+ 		public Clutter.Actor source { get; set construct; }
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_alpha_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.12", since = "0.2")]
+-	public class Alpha : GLib.InitiallyUnowned, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		public Alpha ();
+-		[CCode (has_construct_function = false)]
+-		[Version (since = "1.0")]
+-		public Alpha.full (Clutter.Timeline timeline, ulong mode);
+-		public double get_alpha ();
+-		[Version (since = "1.0")]
+-		public ulong get_mode ();
+-		public unowned Clutter.Timeline get_timeline ();
+-		[Version (since = "1.0")]
+-		public static ulong register_closure (GLib.Closure closure);
+-		[Version (since = "1.0")]
+-		public static ulong register_func (Clutter.AlphaFunc func);
+-		[Version (since = "0.8")]
+-		public void set_closure (GLib.Closure closure);
+-		public void set_func (owned Clutter.AlphaFunc func);
+-		[Version (since = "1.0")]
+-		public void set_mode (ulong mode);
+-		public void set_timeline (Clutter.Timeline timeline);
+-		[CCode (has_construct_function = false)]
+-		[Version (since = "1.0")]
+-		public Alpha.with_func (Clutter.Timeline timeline, owned Clutter.AlphaFunc func);
+-		public double alpha { get; }
+-		[Version (since = "1.0")]
+-		public ulong mode { get; set construct; }
+-		public Clutter.Timeline timeline { get; set; }
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_animation_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-	public class Animation : GLib.Object, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		public Animation ();
+-		public unowned Clutter.Animation bind (string property_name, GLib.Value final);
+-		public unowned Clutter.Animation bind_interval (string property_name, owned Clutter.Interval interval);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public unowned Clutter.Alpha get_alpha ();
+-		public uint get_duration ();
+-		public unowned Clutter.Interval get_interval (string property_name);
+-		public bool get_loop ();
+-		public ulong get_mode ();
+-		public unowned GLib.Object get_object ();
+-		public unowned Clutter.Timeline get_timeline ();
+-		public bool has_property (string property_name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public void set_alpha (Clutter.Alpha alpha);
+-		public void set_duration (uint msecs);
+-		public void set_loop (bool loop);
+-		public void set_mode (ulong mode);
+-		public void set_object (GLib.Object object);
+-		public void set_timeline (Clutter.Timeline? timeline);
+-		public void unbind_property (string property_name);
+-		public unowned Clutter.Animation update (string property_name, GLib.Value final);
+-		public void update_interval (string property_name, Clutter.Interval interval);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public Clutter.Alpha alpha { get; set; }
+-		public uint duration { get; set; }
+-		public bool loop { get; set; }
+-		public ulong mode { get; set; }
+-		public GLib.Object object { get; set; }
+-		public Clutter.Timeline timeline { get; set; }
+-		[HasEmitter]
+-		public virtual signal void completed ();
+-		public virtual signal void started ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	[Compact]
+ 	[Version (since = "0.2")]
+@@ -5467,37 +5300,14 @@ namespace Clutter {
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_backend_get_type ()")]
+ 	[Version (since = "0.4")]
+-	public class Backend : GLib.Object {
++	public abstract class Backend : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected Backend ();
+-		[NoWrapper]
+-		public virtual void add_options (GLib.OptionGroup group);
+-		public void bell_notify ();
+-		[NoWrapper]
+-		public virtual bool create_context () throws GLib.Error;
+-		[NoWrapper]
+-		public virtual unowned Clutter.StageWindow create_stage (Clutter.Stage wrapper) throws GLib.Error;
+-		[NoWrapper]
+-		public virtual void ensure_context (Clutter.Stage stage);
+-		[NoWrapper]
+-		public virtual unowned Clutter.DeviceManager get_device_manager ();
+-		[NoWrapper]
+-		public virtual Clutter.FeatureFlags get_features ();
++		public unowned Clutter.Seat get_default_seat ();
+ 		[Version (since = "0.8")]
+ 		public unowned Cairo.FontOptions get_font_options ();
+ 		public unowned Clutter.InputMethod get_input_method ();
+-		public unowned Clutter.Keymap get_keymap ();
+ 		public double get_resolution ();
+-		[NoWrapper]
+-		public virtual void init_events ();
+-		[NoWrapper]
+-		public virtual void init_features ();
+-		[NoWrapper]
+-		public virtual bool post_parse () throws GLib.Error;
+-		[NoWrapper]
+-		public virtual bool pre_parse () throws GLib.Error;
+-		[NoWrapper]
+-		public virtual void redraw (Clutter.Stage stage);
+ 		[Version (since = "0.8")]
+ 		public void set_font_options (Cairo.FontOptions options);
+ 		public void set_input_method (Clutter.InputMethod method);
+@@ -5508,95 +5318,11 @@ namespace Clutter {
+ 		[Version (since = "1.4")]
+ 		public signal void settings_changed ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public abstract class Behaviour : GLib.Object, Clutter.Scriptable {
+-		[CCode (has_construct_function = false)]
+-		protected Behaviour ();
+-		public void actors_foreach (Clutter.BehaviourForeachFunc func);
+-		[NoWrapper]
+-		public virtual void alpha_notify (double alpha_value);
+-		public void apply (Clutter.Actor actor);
+-		public GLib.SList<weak Clutter.Actor> get_actors ();
+-		public unowned Clutter.Alpha get_alpha ();
+-		public int get_n_actors ();
+-		public unowned Clutter.Actor get_nth_actor (int index_);
+-		[Version (since = "0.4")]
+-		public bool is_applied (Clutter.Actor actor);
+-		public void remove (Clutter.Actor actor);
+-		[Version (since = "0.4")]
+-		public void remove_all ();
+-		public void set_alpha (Clutter.Alpha alpha);
+-		public Clutter.Alpha alpha { get; set; }
+-		[Version (since = "0.4")]
+-		public virtual signal void applied (Clutter.Actor actor);
+-		[Version (since = "0.4")]
+-		public virtual signal void removed (Clutter.Actor actor);
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_depth_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public class BehaviourDepth : Clutter.Behaviour, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterBehaviour*")]
+-		[Version (since = "0.4")]
+-		public BehaviourDepth (Clutter.Alpha? alpha, int depth_start, int depth_end);
+-		[Version (since = "0.6")]
+-		public void get_bounds (out int depth_start, out int depth_end);
+-		[Version (since = "0.6")]
+-		public void set_bounds (int depth_start, int depth_end);
+-		[NoAccessorMethod]
+-		[Version (since = "0.4")]
+-		public int depth_end { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.4")]
+-		public int depth_start { get; set; }
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_opacity_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public class BehaviourOpacity : Clutter.Behaviour, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterBehaviour*")]
+-		public BehaviourOpacity (Clutter.Alpha? alpha, uint8 opacity_start, uint8 opacity_end);
+-		[Version (since = "0.6")]
+-		public void get_bounds (out uint8 opacity_start, out uint8 opacity_end);
+-		[Version (since = "0.6")]
+-		public void set_bounds (uint8 opacity_start, uint8 opacity_end);
+-		[NoAccessorMethod]
+-		public uint opacity_end { get; set; }
+-		[NoAccessorMethod]
+-		public uint opacity_start { get; set; }
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_scale_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public class BehaviourScale : Clutter.Behaviour, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterBehaviour*")]
+-		public BehaviourScale (Clutter.Alpha? alpha, double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
+-		[Version (since = "0.4")]
+-		public void get_bounds (out double x_scale_start, out double y_scale_start, out double x_scale_end, out double y_scale_end);
+-		[Version (since = "0.6")]
+-		public void set_bounds (double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double x_scale_end { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double x_scale_start { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double y_scale_end { get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "0.6")]
+-		public double y_scale_start { get; set; }
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_bin_layout_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public class BinLayout : Clutter.LayoutManager {
+ 		[CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
+ 		public BinLayout (Clutter.BinAlignment x_align = Clutter.BinAlignment.START, Clutter.BinAlignment y_align = Clutter.BinAlignment.START);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void add (Clutter.Actor child, Clutter.BinAlignment x_align, Clutter.BinAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void get_alignment (Clutter.Actor? child, out Clutter.BinAlignment x_align, out Clutter.BinAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_alignment (Clutter.Actor? child, Clutter.BinAlignment x_align, Clutter.BinAlignment y_align);
+ 		[NoAccessorMethod]
+ 		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+ 		public Clutter.BinAlignment x_align { get; set; }
+@@ -5644,98 +5370,29 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false, type = "ClutterEffect*")]
+ 		public BlurEffect ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_box_get_type ()")]
+-	[Version (since = "1.2")]
+-	public class Box : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public Box (Clutter.LayoutManager manager);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public Clutter.Color get_color ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public unowned Clutter.LayoutManager get_layout_manager ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void pack (Clutter.Actor actor, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void pack_after (Clutter.Actor actor, Clutter.Actor? sibling, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void pack_at (Clutter.Actor actor, int position, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void pack_before (Clutter.Actor actor, Clutter.Actor? sibling, ...);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void packv (Clutter.Actor actor, [CCode (array_length_cname = "n_properties", array_length_pos = 1.5, array_length_type = "guint")] string[] properties, [CCode (array_length_cname = "n_properties", array_length_pos = 1.5, array_length_type = "guint")] GLib.Value[] values);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void set_color (Clutter.Color? color);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public void set_layout_manager (Clutter.LayoutManager manager);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public Clutter.Color color { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.2")]
+-		public bool color_set { get; set; }
+-		public Clutter.LayoutManager layout_manager { get; set; }
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_box_layout_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public class BoxLayout : Clutter.LayoutManager {
+ 		[CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
+ 		public BoxLayout ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void get_alignment (Clutter.Actor actor, out Clutter.BoxAlignment x_align, out Clutter.BoxAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public uint get_easing_duration ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public ulong get_easing_mode ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public bool get_expand (Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void get_fill (Clutter.Actor actor, out bool x_fill, out bool y_fill);
+ 		[Version (since = "1.4")]
+ 		public bool get_homogeneous ();
+ 		[Version (since = "1.12")]
+ 		public Clutter.Orientation get_orientation ();
+ 		public bool get_pack_start ();
+ 		public uint get_spacing ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public bool get_use_animations ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public bool get_vertical ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void pack (Clutter.Actor actor, bool expand, bool x_fill, bool y_fill, Clutter.BoxAlignment x_align, Clutter.BoxAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_alignment (Clutter.Actor actor, Clutter.BoxAlignment x_align, Clutter.BoxAlignment y_align);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_easing_duration (uint msecs);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_easing_mode (ulong mode);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_expand (Clutter.Actor actor, bool expand);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_fill (Clutter.Actor actor, bool x_fill, bool y_fill);
+ 		[Version (since = "1.4")]
+ 		public void set_homogeneous (bool homogeneous);
+ 		[Version (since = "1.12")]
+ 		public void set_orientation (Clutter.Orientation orientation);
+ 		public void set_pack_start (bool pack_start);
+ 		public void set_spacing (uint spacing);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_use_animations (bool animate);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public void set_vertical (bool vertical);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public uint easing_duration { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public ulong easing_mode { get; set; }
+ 		[Version (since = "1.4")]
+ 		public bool homogeneous { get; set; }
+ 		[Version (since = "1.12")]
+ 		public Clutter.Orientation orientation { get; set; }
+ 		public bool pack_start { get; set; }
+ 		public uint spacing { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public bool use_animations { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public bool vertical { get; set; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_brightness_contrast_effect_get_type ()")]
+ 	[Version (since = "1.10")]
+@@ -5749,9 +5406,9 @@ namespace Clutter {
+ 		public void set_contrast (float contrast);
+ 		public void set_contrast_full (float red, float green, float blue);
+ 		[NoAccessorMethod]
+-		public Clutter.Color brightness { get; set; }
++		public Clutter.Color brightness { owned get; set; }
+ 		[NoAccessorMethod]
+-		public Clutter.Color contrast { get; set; }
++		public Clutter.Color contrast { owned get; set; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	[Compact]
+@@ -5770,37 +5427,6 @@ namespace Clutter {
+ 		public float x;
+ 		public float y;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_cairo_texture_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-	public class CairoTexture : Clutter.Texture, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		public CairoTexture (uint width, uint height);
+-		public void clear ();
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "1.0")]
+-		public Cairo.Context create ();
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "1.0")]
+-		public Cairo.Context create_region (int x_offset, int y_offset, int width, int height);
+-		[Version (since = "1.8")]
+-		public bool get_auto_resize ();
+-		public void get_surface_size (out uint width, out uint height);
+-		[Version (since = "1.8")]
+-		public void invalidate ();
+-		[Version (since = "1.8")]
+-		public void invalidate_rectangle (Cairo.RectangleInt? rect);
+-		[Version (since = "1.8")]
+-		public void set_auto_resize (bool value);
+-		public void set_surface_size (uint width, uint height);
+-		[Version (since = "1.8")]
+-		public bool auto_resize { get; set; }
+-		[NoAccessorMethod]
+-		public uint surface_height { get; set; }
+-		[NoAccessorMethod]
+-		public uint surface_width { get; set; }
+-		[Version (since = "1.6")]
+-		public virtual signal Cairo.Surface create_surface (uint width, uint height);
+-		[Version (since = "1.8")]
+-		public virtual signal bool draw (Cairo.Context cr);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_canvas_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class Canvas : GLib.Object, Clutter.Content {
+@@ -5827,17 +5453,20 @@ namespace Clutter {
+ 		public Clutter.Container container { get; construct; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_click_action_get_type ()")]
+-	[Version (since = "1.4")]
+ 	public class ClickAction : Clutter.Action {
+ 		[CCode (has_construct_function = false, type = "ClutterAction*")]
++		[Version (since = "1.4")]
+ 		public ClickAction ();
++		[Version (since = "1.4")]
+ 		public uint get_button ();
+ 		[Version (since = "1.8")]
+ 		public void get_coords (out float press_x, out float press_y);
+ 		[Version (since = "1.6")]
+ 		public Clutter.ModifierType get_state ();
++		[Version (since = "1.4")]
+ 		public void release ();
+ 		[NoAccessorMethod]
++		[Version (since = "1.4")]
+ 		public bool held { get; }
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.8")]
+@@ -5846,7 +5475,9 @@ namespace Clutter {
+ 		[Version (since = "1.8")]
+ 		public int long_press_threshold { get; set; }
+ 		[NoAccessorMethod]
++		[Version (since = "1.4")]
+ 		public bool pressed { get; }
++		[Version (since = "1.4")]
+ 		public virtual signal void clicked (Clutter.Actor actor);
+ 		[Version (since = "1.8")]
+ 		public virtual signal bool long_press (Clutter.Actor actor, Clutter.LongPressState state);
+@@ -5888,8 +5519,7 @@ namespace Clutter {
+ 		protected Constraint ();
+ 		[NoWrapper]
+ 		public virtual void update_allocation (Clutter.Actor actor, Clutter.ActorBox allocation);
+-		[NoWrapper]
+-		public virtual void update_preferred_size (Clutter.Actor actor, Clutter.Orientation direction, float for_size, float minimum_size, float natural_size);
++		public virtual void update_preferred_size (Clutter.Actor actor, Clutter.Orientation direction, float for_size, ref float minimum_size, ref float natural_size);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	[Compact]
+@@ -5898,6 +5528,7 @@ namespace Clutter {
+ 		public weak Clutter.InputDevice device;
+ 		public Clutter.EventFlags flags;
+ 		public weak Clutter.Actor related;
++		public weak Clutter.EventSequence sequence;
+ 		public weak Clutter.Actor source;
+ 		public weak Clutter.Stage stage;
+ 		public uint32 time;
+@@ -5931,98 +5562,21 @@ namespace Clutter {
+ 		public void set_factor (double factor);
+ 		public double factor { get; set; }
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_device_manager_get_type ()")]
+-	[Version (since = "1.2")]
+-	public abstract class DeviceManager : GLib.Object {
+-		[CCode (has_construct_function = false)]
+-		protected DeviceManager ();
+-		[NoWrapper]
+-		public virtual void add_device (Clutter.InputDevice device);
+-		[NoWrapper]
+-		public virtual void apply_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
+-		[NoWrapper]
+-		public virtual void compress_motion (Clutter.Event event, Clutter.Event to_discard);
+-		public virtual Clutter.VirtualInputDevice create_virtual_device (Clutter.InputDeviceType device_type);
+-		public virtual unowned Clutter.InputDevice get_core_device (Clutter.InputDeviceType device_type);
+-		public static unowned Clutter.DeviceManager get_default ();
+-		public virtual unowned Clutter.InputDevice get_device (int device_id);
+-		public void get_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
+-		public virtual Clutter.VirtualDeviceType get_supported_virtual_device_types ();
+-		public GLib.SList<weak Clutter.InputDevice> list_devices ();
+-		public unowned GLib.SList<Clutter.InputDevice> peek_devices ();
+-		[NoWrapper]
+-		public virtual void remove_device (Clutter.InputDevice device);
+-		[NoWrapper]
+-		public virtual void select_stage_events (Clutter.Stage stage);
+-		public void set_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
+-		[NoAccessorMethod]
+-		public Clutter.Backend backend { owned get; construct; }
+-		public signal void device_added (Clutter.InputDevice device);
+-		public signal void device_removed (Clutter.InputDevice device);
+-		public signal void kbd_a11y_flags_changed (uint settings_flags, uint changed_mask);
+-		public signal void kbd_a11y_mods_state_changed (uint latched_mask, uint locked_mask);
+-		public signal void tool_changed (Clutter.InputDevice object, Clutter.InputDeviceTool p0);
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_drag_action_get_type ()")]
+-	[Version (since = "1.4")]
+-	public class DragAction : Clutter.Action {
+-		[CCode (has_construct_function = false, type = "ClutterAction*")]
+-		public DragAction ();
+-		public bool get_drag_area (Clutter.Rect drag_area);
+-		public Clutter.DragAxis get_drag_axis ();
+-		public unowned Clutter.Actor get_drag_handle ();
+-		public void get_drag_threshold (out uint x_threshold, out uint y_threshold);
+-		public void get_motion_coords (out float motion_x, out float motion_y);
+-		public void get_press_coords (out float press_x, out float press_y);
+-		public void set_drag_area (Clutter.Rect? drag_area);
+-		public void set_drag_axis (Clutter.DragAxis axis);
+-		public void set_drag_handle (Clutter.Actor? handle);
+-		public void set_drag_threshold (int x_threshold, int y_threshold);
+-		[NoAccessorMethod]
+-		[Version (since = "1.12")]
+-		public Clutter.Rect drag_area { owned get; set; }
+-		[NoAccessorMethod]
+-		[Version (since = "1.12")]
+-		public bool drag_area_set { get; }
+-		public Clutter.DragAxis drag_axis { get; set; }
+-		public Clutter.Actor drag_handle { get; set; }
+-		[NoAccessorMethod]
+-		public int x_drag_threshold { get; set; }
+-		[NoAccessorMethod]
+-		public int y_drag_threshold { get; set; }
+-		public virtual signal void drag_begin (Clutter.Actor actor, float event_x, float event_y, Clutter.ModifierType modifiers);
+-		public virtual signal void drag_end (Clutter.Actor actor, float event_x, float event_y, Clutter.ModifierType modifiers);
+-		public virtual signal void drag_motion (Clutter.Actor actor, float delta_x, float delta_y);
+-		[Version (since = "1.12")]
+-		public virtual signal bool drag_progress (Clutter.Actor actor, float delta_x, float delta_y);
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_drop_action_get_type ()")]
+-	[Version (since = "1.8")]
+-	public class DropAction : Clutter.Action {
+-		[CCode (has_construct_function = false, type = "ClutterAction*")]
+-		public DropAction ();
+-		public virtual signal bool can_drop (Clutter.Actor actor, float event_x, float event_y);
+-		public virtual signal void drop (Clutter.Actor actor, float event_x, float event_y);
+-		[Version (since = "1.12")]
+-		public signal void drop_cancel (Clutter.Actor actor, float event_x, float event_y);
+-		public virtual signal void over_in (Clutter.Actor actor);
+-		public virtual signal void over_out (Clutter.Actor actor);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_effect_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public abstract class Effect : Clutter.ActorMeta {
+ 		[CCode (has_construct_function = false)]
+ 		protected Effect ();
+ 		[NoWrapper]
+-		public virtual bool get_paint_volume (Clutter.PaintVolume volume);
++		public virtual bool modify_paint_volume (Clutter.PaintVolume volume);
+ 		[NoWrapper]
+-		public virtual void paint (Clutter.EffectPaintFlags flags);
++		public virtual void paint (Clutter.PaintContext paint_context, Clutter.EffectPaintFlags flags);
+ 		[NoWrapper]
+-		public virtual void pick (Clutter.EffectPaintFlags flags);
++		public virtual void pick (Clutter.PickContext pick_context);
+ 		[NoWrapper]
+-		public virtual void post_paint ();
++		public virtual void post_paint (Clutter.PaintContext paint_context);
+ 		[NoWrapper]
+-		public virtual bool pre_paint ();
++		public virtual bool pre_paint (Clutter.PaintContext paint_context);
+ 		[Version (since = "1.8")]
+ 		public void queue_repaint ();
+ 	}
+@@ -6033,8 +5587,12 @@ namespace Clutter {
+ 		public Clutter.EventType type;
+ 		[CCode (has_construct_function = false)]
+ 		public Event (Clutter.EventType type);
++		[Version (since = "1.18")]
++		public static uint add_filter (Clutter.Stage? stage, [CCode (delegate_target_pos = 2.2, destroy_notify_pos = 2.1)] owned Clutter.EventFilterFunc func);
+ 		public Clutter.Event copy ();
+ 		public void free ();
++		[Version (since = "0.4")]
++		public static Clutter.Event @get ();
+ 		[Version (since = "1.12")]
+ 		public double get_angle (Clutter.Event target);
+ 		[Version (since = "1.6")]
+@@ -6073,7 +5631,7 @@ namespace Clutter {
+ 		public uint get_mode_group ();
+ 		public bool get_pad_event_details (out uint number, out uint mode, out double value);
+ 		[Version (since = "1.12")]
+-		public void get_position (Clutter.Point position);
++		public void get_position (Graphene.Point position);
+ 		[Version (since = "1.0")]
+ 		public unowned Clutter.Actor get_related ();
+ 		[Version (since = "1.10")]
+@@ -6106,8 +5664,12 @@ namespace Clutter {
+ 		public bool has_shift_modifier ();
+ 		[Version (since = "1.12")]
+ 		public bool is_pointer_emulated ();
++		[Version (since = "0.4")]
++		public static unowned Clutter.Event peek ();
+ 		[Version (since = "0.6")]
+ 		public void put ();
++		[Version (since = "1.18")]
++		public static void remove_filter (uint id);
+ 		[Version (since = "1.8")]
+ 		public void set_button (uint32 button);
+ 		[Version (since = "1.8")]
+@@ -6140,16 +5702,6 @@ namespace Clutter {
+ 		public void set_state (Clutter.ModifierType state);
+ 		[Version (since = "1.8")]
+ 		public void set_time (uint32 time_);
+-		public Clutter.AnyEvent any {[CCode (cname = "(ClutterAnyEvent *)")]  get; }
+-		public Clutter.ButtonEvent button {[CCode (cname = "(ClutterButtonEvent *)")]  get; }
+-		public Clutter.CrossingEvent crossing {[CCode (cname = "(ClutterCrossingEvent *)")]  get; }
+-		public Clutter.KeyEvent key {[CCode (cname = "(ClutterKeyEvent *)")]  get; }
+-		public Clutter.MotionEvent motion {[CCode (cname = "(ClutterMotionEvent *)")]  get; }
+-		public Clutter.ScrollEvent scroll {[CCode (cname = "(ClutterScrollEvent *)")]  get; }
+-		public Clutter.StageStateEvent stage_state {[CCode (cname = "(ClutterStageStateEvent *)")]  get; }
+-		public Clutter.TouchEvent touch {[CCode (cname = "(ClutterTouchEvent *)")]  get; }
+-		public Clutter.TouchpadPinchEvent touchpad_pinch {[CCode (cname = "(ClutterTouchpadPinchEvent *)")]  get; }
+-		public Clutter.TouchpadSwipeEvent touchpad_swipe {[CCode (cname = "(ClutterTouchpadSwipeEvent *)")]  get; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_event_sequence_get_type ()")]
+ 	[Compact]
+@@ -6198,10 +5750,24 @@ namespace Clutter {
+ 		[Version (since = "1.16")]
+ 		public bool snap_to_grid { get; set; }
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_frame_clock_get_type ()")]
++	public class FrameClock : GLib.Object {
++		[CCode (has_construct_function = false)]
++		public FrameClock (float refresh_rate, Clutter.FrameListenerIface iface, void* user_data);
++		public void add_timeline (Clutter.Timeline timeline);
++		public float get_refresh_rate ();
++		public void inhibit ();
++		public void remove_timeline (Clutter.Timeline timeline);
++		public void schedule_update ();
++		public void schedule_update_now ();
++		public void uninhibit ();
++		[HasEmitter]
++		public signal void destroy ();
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_gesture_action_get_type ()")]
+-	[Version (since = "1.8")]
+ 	public class GestureAction : Clutter.Action {
+ 		[CCode (has_construct_function = false, type = "ClutterAction*")]
++		[Version (since = "1.8")]
+ 		public GestureAction ();
+ 		[Version (since = "1.12")]
+ 		public void cancel ();
+@@ -6211,6 +5777,7 @@ namespace Clutter {
+ 		public unowned Clutter.InputDevice get_device (uint point);
+ 		[Version (since = "1.14")]
+ 		public unowned Clutter.Event get_last_event (uint point);
++		[Version (since = "1.8")]
+ 		public void get_motion_coords (uint point, out float motion_x, out float motion_y);
+ 		[Version (since = "1.12")]
+ 		public float get_motion_delta (uint point, out float delta_x, out float delta_y);
+@@ -6218,7 +5785,9 @@ namespace Clutter {
+ 		public uint get_n_current_points ();
+ 		[Version (since = "1.12")]
+ 		public int get_n_touch_points ();
++		[Version (since = "1.8")]
+ 		public void get_press_coords (uint point, out float press_x, out float press_y);
++		[Version (since = "1.8")]
+ 		public void get_release_coords (uint point, out float release_x, out float release_y);
+ 		[Version (since = "1.12")]
+ 		public unowned Clutter.EventSequence get_sequence (uint point);
+@@ -6246,9 +5815,13 @@ namespace Clutter {
+ 		public float threshold_trigger_distance_y { get; construct; }
+ 		[Version (since = "1.18")]
+ 		public Clutter.GestureTriggerEdge threshold_trigger_edge { get; construct; }
++		[Version (since = "1.8")]
+ 		public virtual signal bool gesture_begin (Clutter.Actor actor);
++		[Version (since = "1.8")]
+ 		public virtual signal void gesture_cancel (Clutter.Actor actor);
++		[Version (since = "1.8")]
+ 		public virtual signal void gesture_end (Clutter.Actor actor);
++		[Version (since = "1.8")]
+ 		public virtual signal bool gesture_progress (Clutter.Actor actor);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_grid_layout_get_type ()")]
+@@ -6278,19 +5851,6 @@ namespace Clutter {
+ 		public bool row_homogeneous { get; set; }
+ 		public uint row_spacing { get; set; }
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_group_get_type ()")]
+-	[Version (since = "0.2")]
+-	public class Group : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public Group ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public int get_n_children ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public unowned Clutter.Actor get_nth_child (int index_);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void remove_all ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_image_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class Image : GLib.Object, Clutter.Content {
+@@ -6306,6 +5866,8 @@ namespace Clutter {
+ 	public class InputDevice : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		protected InputDevice ();
++		[Version (since = "1.2")]
++		public unowned Clutter.Actor get_actor (Clutter.EventSequence? sequence);
+ 		[Version (since = "1.6")]
+ 		public unowned Clutter.InputDevice get_associated_device ();
+ 		[Version (since = "1.6")]
+@@ -6313,7 +5875,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public bool get_axis_value ([CCode (array_length = false)] double[] axes, Clutter.InputAxis axis, out double value);
+ 		[Version (since = "1.12")]
+-		public bool get_coords (Clutter.EventSequence? sequence, Clutter.Point point);
++		public bool get_coords (Clutter.EventSequence? sequence, Graphene.Point point);
+ 		[Version (since = "1.0")]
+ 		public int get_device_id ();
+ 		[Version (since = "1.6")]
+@@ -6325,12 +5887,9 @@ namespace Clutter {
+ 		public Clutter.InputDeviceType get_device_type ();
+ 		[Version (since = "1.6")]
+ 		public bool get_enabled ();
+-		[CCode (cname = "clutter_get_input_device_for_id")]
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-		public static unowned Clutter.InputDevice get_for_id (int id_);
+ 		[Version (since = "1.10")]
+ 		public unowned Clutter.Actor get_grabbed_actor ();
+-		public int get_group_n_modes (int group);
++		public virtual int get_group_n_modes (int group);
+ 		[Version (since = "1.6")]
+ 		public bool get_has_cursor ();
+ 		[Version (since = "1.6")]
+@@ -6346,23 +5905,21 @@ namespace Clutter {
+ 		public int get_n_mode_groups ();
+ 		public int get_n_rings ();
+ 		public int get_n_strips ();
+-		public bool get_physical_size (double width, double height);
+-		[Version (since = "1.2")]
+-		public unowned Clutter.Actor get_pointer_actor ();
+ 		[Version (since = "1.2")]
+ 		public unowned Clutter.Stage get_pointer_stage ();
+ 		[Version (since = "1.22")]
+ 		public unowned string get_product_id ();
++		public unowned Clutter.Seat get_seat ();
+ 		[Version (since = "1.6")]
+ 		public GLib.List<weak Clutter.InputDevice> get_slave_devices ();
+ 		[Version (since = "1.22")]
+ 		public unowned string get_vendor_id ();
+ 		[Version (since = "1.10")]
+ 		public void grab (Clutter.Actor actor);
+-		public bool is_grouped (Clutter.InputDevice other_device);
+-		public bool is_mode_switch_button (uint group, uint button);
++		public virtual bool is_grouped (Clutter.InputDevice other_device);
++		public virtual bool is_mode_switch_button (uint group, uint button);
+ 		[Version (since = "1.10")]
+-		public bool keycode_to_evdev (uint hardware_keycode, uint evdev_keycode);
++		public virtual bool keycode_to_evdev (uint hardware_keycode, uint evdev_keycode);
+ 		[Version (since = "1.12")]
+ 		public unowned Clutter.Actor sequence_get_grabbed_actor (Clutter.EventSequence sequence);
+ 		[Version (since = "1.12")]
+@@ -6378,12 +5935,11 @@ namespace Clutter {
+ 		public void ungrab ();
+ 		[Version (since = "1.2")]
+ 		public void update_from_event (Clutter.Event event, bool update_stage);
++		[NoWrapper]
++		public virtual void update_from_tool (Clutter.InputDeviceTool tool);
+ 		[NoAccessorMethod]
+ 		[Version (since = "1.6")]
+ 		public Clutter.Backend backend { owned get; construct; }
+-		[NoAccessorMethod]
+-		[Version (since = "1.6")]
+-		public Clutter.DeviceManager device_manager { owned get; construct; }
+ 		public Clutter.InputMode device_mode { get; construct; }
+ 		public string device_node { get; construct; }
+ 		[Version (since = "1.2")]
+@@ -6406,6 +5962,7 @@ namespace Clutter {
+ 		public string name { owned get; construct; }
+ 		[Version (since = "1.22")]
+ 		public string product_id { get; construct; }
++		public Clutter.Seat seat { get; construct; }
+ 		[Version (since = "1.22")]
+ 		public string vendor_id { get; construct; }
+ 	}
+@@ -6430,7 +5987,7 @@ namespace Clutter {
+ 		[NoWrapper]
+ 		public virtual void commit_text (string text);
+ 		[NoWrapper]
+-		public virtual void delete_surrounding (uint offset, uint len);
++		public virtual void delete_surrounding (int offset, uint len);
+ 		public bool filter_key_event (Clutter.KeyEvent key);
+ 		[NoWrapper]
+ 		public virtual void focus_in (Clutter.InputMethod input_method);
+@@ -6443,7 +6000,7 @@ namespace Clutter {
+ 		public void set_can_show_preedit (bool can_show_preedit);
+ 		public void set_content_hints (Clutter.InputContentHintFlags hint);
+ 		public void set_content_purpose (Clutter.InputContentPurpose purpose);
+-		public void set_cursor_location (Clutter.Rect rect);
++		public void set_cursor_location (Graphene.Rect rect);
+ 		public void set_input_panel_state (Clutter.InputPanelState state);
+ 		[NoWrapper]
+ 		public virtual void set_preedit_text (string preedit, uint cursor);
+@@ -6462,7 +6019,7 @@ namespace Clutter {
+ 		[NoWrapper]
+ 		public virtual void reset ();
+ 		[NoWrapper]
+-		public virtual void set_cursor_location (Clutter.Rect rect);
++		public virtual void set_cursor_location (Graphene.Rect rect);
+ 		public void set_input_panel_state (Clutter.InputPanelState state);
+ 		public void set_preedit_text (string? preedit, uint cursor);
+ 		[NoWrapper]
+@@ -6479,9 +6036,9 @@ namespace Clutter {
+ 		public Clutter.InputContentPurpose content_purpose { get; set; }
+ 		[HasEmitter]
+ 		public signal void commit (string text);
+-		public signal void cursor_location_changed (Clutter.Rect object);
++		public signal void cursor_location_changed (Graphene.Rect object);
+ 		[HasEmitter]
+-		public signal void delete_surrounding (uint offset, uint len);
++		public signal void delete_surrounding (int offset, uint len);
+ 		public signal void input_panel_state (Clutter.InputPanelState object);
+ 		[HasEmitter]
+ 		public signal void request_surrounding ();
+@@ -6555,28 +6112,28 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false)]
+ 		protected Keymap ();
+ 		public virtual bool get_caps_lock_state ();
++		public virtual Pango.Direction get_direction ();
+ 		public virtual bool get_num_lock_state ();
+ 		public signal void state_changed ();
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_layer_node_get_type ()")]
++	public class LayerNode : Clutter.PaintNode {
++		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
++		public LayerNode (Cogl.Matrix projection, Cairo.Rectangle viewport, float width, float height, uint8 opacity);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_layout_manager_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public abstract class LayoutManager : GLib.InitiallyUnowned {
+ 		[CCode (has_construct_function = false)]
+ 		protected LayoutManager ();
+-		public virtual void allocate (Clutter.Container container, Clutter.ActorBox allocation, Clutter.AllocationFlags flags);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public virtual unowned Clutter.Alpha begin_animation (uint duration, ulong mode);
++		public virtual void allocate (Clutter.Container container, Clutter.ActorBox allocation);
+ 		public void child_get (Clutter.Container container, Clutter.Actor actor, ...);
+ 		public void child_get_property (Clutter.Container container, Clutter.Actor actor, string property_name, GLib.Value value);
+ 		public void child_set (Clutter.Container container, Clutter.Actor actor, ...);
+ 		public void child_set_property (Clutter.Container container, Clutter.Actor actor, string property_name, GLib.Value value);
+ 		[NoWrapper]
+ 		public virtual unowned Clutter.LayoutMeta create_child_meta (Clutter.Container container, Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public virtual void end_animation ();
+ 		public unowned GLib.ParamSpec find_child_property (string name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.2")]
+-		public virtual double get_animation_progress ();
+ 		[Version (since = "1.0")]
+ 		public unowned Clutter.LayoutMeta get_child_meta (Clutter.Container container, Clutter.Actor actor);
+ 		[NoWrapper]
+@@ -6632,12 +6189,12 @@ namespace Clutter {
+ 		protected OffscreenEffect ();
+ 		public virtual Cogl.Handle create_texture (float width, float height);
+ 		[Version (since = "1.14")]
+-		public bool get_target_rect (out unowned Clutter.Rect rect);
++		public bool get_target_rect (out unowned Graphene.Rect rect);
+ 		[Version (deprecated = true, deprecated_since = "1.14", since = "1.8")]
+ 		public bool get_target_size (out float width, out float height);
+ 		[Version (since = "1.10")]
+ 		public unowned Cogl.Handle get_texture ();
+-		public virtual void paint_target ();
++		public virtual void paint_target (Clutter.PaintContext paint_context);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_page_turn_effect_get_type ()")]
+ 	[Version (since = "1.4")]
+@@ -6654,6 +6211,17 @@ namespace Clutter {
+ 		public double period { get; set; }
+ 		public float radius { get; set; }
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", ref_function = "clutter_paint_context_ref", type_id = "clutter_paint_context_get_type ()", unref_function = "clutter_paint_context_unref")]
++	[Compact]
++	public class PaintContext {
++		public void destroy ();
++		public unowned Cogl.Framebuffer get_framebuffer ();
++		public unowned Cairo.Region get_redraw_clip ();
++		public void pop_framebuffer ();
++		public void push_framebuffer (Cogl.Framebuffer framebuffer);
++		public unowned Clutter.PaintContext @ref ();
++		public void unref ();
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_paint_node_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public abstract class PaintNode {
+@@ -6663,7 +6231,8 @@ namespace Clutter {
+ 		public void add_multitexture_rectangle (Clutter.ActorBox rect, float text_coords, uint text_coords_len);
+ 		public void add_rectangle (Clutter.ActorBox rect);
+ 		public void add_texture_rectangle (Clutter.ActorBox rect, float x_1, float y_1, float x_2, float y_2);
+-		public void paint ();
++		public unowned Cogl.Framebuffer get_framebuffer ();
++		public void paint (Clutter.PaintContext paint_context);
+ 		public unowned Clutter.PaintNode @ref ();
+ 		public void set_name (string name);
+ 		public void unref ();
+@@ -6681,7 +6250,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public float get_height ();
+ 		[Version (since = "1.6")]
+-		public Clutter.Vertex get_origin ();
++		public void get_origin (out unowned Graphene.Point3D vertex);
+ 		[Version (since = "1.6")]
+ 		public float get_width ();
+ 		[Version (since = "1.6")]
+@@ -6691,7 +6260,7 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public void set_height (float height);
+ 		[Version (since = "1.6")]
+-		public void set_origin (Clutter.Vertex origin);
++		public void set_origin (Graphene.Point3D origin);
+ 		[Version (since = "1.6")]
+ 		public void set_width (float width);
+ 		[Version (since = "1.6")]
+@@ -6778,88 +6347,29 @@ namespace Clutter {
+ 		public Clutter.Path path { get; set; }
+ 		public signal void node_reached (Clutter.Actor actor, uint index);
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", ref_function = "clutter_pick_context_ref", type_id = "clutter_pick_context_get_type ()", unref_function = "clutter_pick_context_unref")]
++	[Compact]
++	public class PickContext {
++		public void destroy ();
++		public unowned Clutter.PickContext @ref ();
++		public void unref ();
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_pipeline_node_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class PipelineNode : Clutter.PaintNode {
+ 		[CCode (has_construct_function = false)]
+ 		protected PipelineNode ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_point_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.12")]
+-	public class Point {
+-		public float x;
+-		public float y;
+-		public static Clutter.Point alloc ();
+-		public Clutter.Point copy ();
+-		public float distance (Clutter.Point b, out float x_distance, out float y_distance);
+-		public bool equals (Clutter.Point b);
+-		public void free ();
+-		public unowned Clutter.Point init (float x, float y);
+-		public static unowned Clutter.Point zero ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_property_transition_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class PropertyTransition : Clutter.Transition, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false, type = "ClutterTransition*")]
+ 		public PropertyTransition (string? property_name);
++		[CCode (has_construct_function = false, type = "ClutterTransition*")]
++		public PropertyTransition.for_actor (Clutter.Actor actor, string? property_name);
+ 		public unowned string get_property_name ();
+-		public void set_property_name (string? property_name);
+-		public string property_name { get; set; }
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_rect_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.12")]
+-	public class Rect {
+-		public weak Clutter.Point origin;
+-		public weak Clutter.Size size;
+-		public static Clutter.Rect alloc ();
+-		public void clamp_to_pixel ();
+-		public bool contains_point (Clutter.Point point);
+-		public bool contains_rect (Clutter.Rect b);
+-		public Clutter.Rect copy ();
+-		public bool equals (Clutter.Rect b);
+-		public void free ();
+-		public void get_center (Clutter.Point center);
+-		public float get_height ();
+-		public float get_width ();
+-		public float get_x ();
+-		public float get_y ();
+-		public unowned Clutter.Rect init (float x, float y, float width, float height);
+-		public void inset (float d_x, float d_y);
+-		public bool intersection (Clutter.Rect b, Clutter.Rect? res);
+-		public Clutter.Rect normalize ();
+-		public void offset (float d_x, float d_y);
+-		public void scale (float s_x, float s_y);
+-		public void union (Clutter.Rect b, Clutter.Rect res);
+-		public static unowned Clutter.Rect zero ();
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_rectangle_get_type ()")]
+-	[Version (since = "0.2")]
+-	public class Rectangle : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public Rectangle ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public Clutter.Color get_border_color ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public uint get_border_width ();
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public Clutter.Color get_color ();
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void set_border_color (Clutter.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.2")]
+-		public void set_border_width (uint width);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void set_color (Clutter.Color color);
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public Rectangle.with_color (Clutter.Color color);
+-		public Clutter.Color border_color { get; set; }
+-		public uint border_width { get; set; }
+-		public Clutter.Color color { get; set; }
+-		[NoAccessorMethod]
+-		public bool has_border { get; set; }
++		public void set_property_name (string? property_name);
++		public string property_name { get; set; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_root_node_get_type ()")]
+ 	public class RootNode : Clutter.PaintNode {
+@@ -6880,15 +6390,11 @@ namespace Clutter {
+ 		public Script ();
+ 		[Version (since = "0.8")]
+ 		public void add_search_paths ([CCode (array_length_cname = "n_paths", array_length_pos = 1.1, array_length_type = "gsize")] string[] paths);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.8")]
+-		public void add_states (string? name, Clutter.State state);
+ 		public void connect_signals (void* user_data);
+ 		public void connect_signals_full (Clutter.ScriptConnectFunc func);
+ 		public void ensure_objects ();
+ 		public unowned GLib.Object get_object (string name);
+ 		public int get_objects (...);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.8")]
+-		public unowned Clutter.State get_states (string? name);
+ 		[Version (since = "1.10")]
+ 		public unowned string get_translation_domain ();
+ 		public virtual GLib.Type get_type_from_name (string type_name);
+@@ -6916,8 +6422,8 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false, type = "ClutterActor*")]
+ 		public ScrollActor ();
+ 		public Clutter.ScrollMode get_scroll_mode ();
+-		public void scroll_to_point (Clutter.Point point);
+-		public void scroll_to_rect (Clutter.Rect rect);
++		public void scroll_to_point (Graphene.Point point);
++		public void scroll_to_rect (Graphene.Rect rect);
+ 		public void set_scroll_mode (Clutter.ScrollMode mode);
+ 		public Clutter.ScrollMode scroll_mode { get; set; }
+ 	}
+@@ -6939,6 +6445,47 @@ namespace Clutter {
+ 		public float x;
+ 		public float y;
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_seat_get_type ()")]
++	public abstract class Seat : GLib.Object {
++		[CCode (has_construct_function = false)]
++		protected Seat ();
++		[NoWrapper]
++		public virtual void apply_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
++		public virtual void bell_notify ();
++		public virtual void compress_motion (Clutter.Event event, Clutter.Event to_discard);
++		[NoWrapper]
++		public virtual void copy_event_data (Clutter.Event src, Clutter.Event dest);
++		public virtual Clutter.VirtualInputDevice create_virtual_device (Clutter.InputDeviceType device_type);
++		public void ensure_a11y_state ();
++		[NoWrapper]
++		public virtual void free_event_data (Clutter.Event event);
++		public void get_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
++		public virtual unowned Clutter.InputDevice get_keyboard ();
++		public virtual unowned Clutter.Keymap get_keymap ();
++		public virtual unowned Clutter.InputDevice get_pointer ();
++		public void get_pointer_a11y_settings (Clutter.PointerA11ySettings settings);
++		public bool get_touch_mode ();
++		public void inhibit_unfocus ();
++		public bool is_unfocus_inhibited ();
++		public GLib.List<weak Clutter.InputDevice> list_devices ();
++		public void set_kbd_a11y_settings (Clutter.KbdA11ySettings settings);
++		public void set_pointer_a11y_dwell_click_type (Clutter.PointerA11yDwellClickType click_type);
++		public void set_pointer_a11y_settings (Clutter.PointerA11ySettings settings);
++		public void uninhibit_unfocus ();
++		public virtual void warp_pointer (int x, int y);
++		[NoAccessorMethod]
++		public Clutter.Backend backend { owned get; construct; }
++		public bool touch_mode { get; }
++		public signal void device_added (Clutter.InputDevice object);
++		public signal void device_removed (Clutter.InputDevice object);
++		public signal void is_unfocus_inhibited_changed ();
++		public signal void kbd_a11y_flags_changed (uint settings_flags, uint changed_mask);
++		public signal void kbd_a11y_mods_state_changed (uint latched_mask, uint locked_mask);
++		public signal void ptr_a11y_dwell_click_type_changed (Clutter.PointerA11yDwellClickType click_type);
++		public signal void ptr_a11y_timeout_started (Clutter.InputDevice device, Clutter.PointerA11yTimeoutType timeout_type, uint delay);
++		public signal void ptr_a11y_timeout_stopped (Clutter.InputDevice device, Clutter.PointerA11yTimeoutType timeout_type, bool clicked);
++		public signal void tool_changed (Clutter.InputDevice object, Clutter.InputDeviceTool p0);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_settings_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public class Settings : GLib.Object {
+@@ -7011,18 +6558,6 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false)]
+ 		protected ShaderMatrix ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_size_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.12")]
+-	public class Size {
+-		public float height;
+-		public float width;
+-		public static Clutter.Size alloc ();
+-		public Clutter.Size copy ();
+-		public bool equals (Clutter.Size b);
+-		public void free ();
+-		public unowned Clutter.Size init (float width, float height);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_snap_constraint_get_type ()")]
+ 	[Version (since = "1.6")]
+ 	public class SnapConstraint : Clutter.Constraint {
+@@ -7043,135 +6578,66 @@ namespace Clutter {
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_stage_get_type ()")]
+ 	[Version (since = "0.2")]
+-	public class Stage : Clutter.Group, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
++	public class Stage : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false, type = "ClutterActor*")]
+ 		[Version (since = "0.8")]
+ 		public Stage ();
+-		public bool capture (bool paint, Cairo.RectangleInt rect, Clutter.Capture captures, int n_captures);
+ 		public void capture_into (bool paint, Cairo.RectangleInt rect, uint8 data);
++		public void clear_stage_views ();
+ 		[CCode (cname = "clutter_stage_event")]
+ 		[Version (since = "0.4")]
+ 		public bool emit_event (Clutter.Event event);
+-		[Version (deprecated = true, since = "0.8")]
+-		public void ensure_current ();
+-		[Version (since = "1.0")]
+-		public void ensure_redraw ();
+ 		[Version (since = "1.0")]
+ 		public void ensure_viewport ();
+-		public void freeze_updates ();
+-		[Version (since = "1.6")]
+-		public bool get_accept_focus ();
+-		public unowned Clutter.Actor get_actor_at_pos (Clutter.PickMode pick_mode, int x, int y);
++		public unowned Clutter.Actor get_actor_at_pos (Clutter.PickMode pick_mode, float x, float y);
+ 		public bool get_capture_final_size (Cairo.RectangleInt rect, int width, int height, float scale);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public Clutter.Color get_color ();
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public static unowned Clutter.Stage get_default ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public Clutter.Fog get_fog ();
+ 		public int64 get_frame_counter ();
+-		[Version (since = "1.0")]
+-		public bool get_fullscreen ();
+ 		[Version (since = "0.6")]
+ 		public unowned Clutter.Actor get_key_focus ();
+ 		[Version (since = "1.2")]
+ 		public void get_minimum_size (out uint width, out uint height);
+ 		[Version (since = "1.8")]
+ 		public bool get_motion_events_enabled ();
+-		[Version (since = "1.4")]
+-		public bool get_no_clear_hint ();
+ 		public Clutter.Perspective get_perspective ();
+-		[Version (since = "1.8")]
+-		public Cairo.RectangleInt get_redraw_clip_bounds ();
+ 		[Version (since = "1.0")]
+ 		public bool get_throttle_motion_events ();
+ 		[Version (since = "0.4")]
+ 		public unowned string get_title ();
+-		[Version (since = "1.2")]
+ 		public bool get_use_alpha ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public bool get_use_fog ();
+-		[Version (since = "0.4")]
+-		public bool get_user_resizable ();
+-		[Version (since = "0.4")]
+-		public void hide_cursor ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-		public bool is_default ();
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-		public void queue_redraw ();
++		public bool paint_to_buffer (Cairo.RectangleInt rect, float scale, uint8 data, int stride, Cogl.PixelFormat format, Clutter.PaintFlag paint_flags) throws GLib.Error;
++		public void paint_to_framebuffer (Cogl.Framebuffer framebuffer, Cairo.RectangleInt rect, float scale, Clutter.PaintFlag paint_flags);
+ 		[CCode (array_length = false)]
+ 		public uint8[] read_pixels (int x, int y, int width = -1, int height = -1);
+-		[CCode (cname = "clutter_redraw")]
+-		public void redraw ();
+-		[Version (since = "1.6")]
+-		public void set_accept_focus (bool accept_focus);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void set_color (Clutter.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public void set_fog (Clutter.Fog fog);
+-		[Version (since = "1.0")]
+-		public void set_fullscreen (bool fullscreen);
++		public void schedule_update ();
+ 		[Version (since = "0.6")]
+ 		public void set_key_focus (Clutter.Actor? actor);
+ 		[Version (since = "1.2")]
+ 		public void set_minimum_size (uint width, uint height);
+ 		[Version (since = "1.8")]
+ 		public void set_motion_events_enabled (bool enabled);
+-		[Version (since = "1.4")]
+-		public void set_no_clear_hint (bool no_clear);
+-		public void set_perspective (Clutter.Perspective perspective);
+ 		[Version (since = "1.0")]
+ 		public void set_throttle_motion_events (bool throttle);
+ 		[Version (since = "0.4")]
+ 		public void set_title (string title);
+-		[Version (since = "1.2")]
+ 		public void set_use_alpha (bool use_alpha);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public void set_use_fog (bool fog);
+-		[Version (since = "0.4")]
+-		public void set_user_resizable (bool resizable);
+-		public void show_cursor ();
+-		public void thaw_updates ();
+-		public void update_resource_scales ();
+-		[Version (since = "1.6")]
+-		public bool accept_focus { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public Clutter.Color color { get; set; }
+-		[NoAccessorMethod]
+-		public bool cursor_visible { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public Clutter.Fog fog { get; set; }
+-		[NoAccessorMethod]
+-		public bool fullscreen_set { get; }
+ 		[Version (since = "1.2")]
+ 		public Clutter.Actor key_focus { get; set; }
+-		[Version (since = "1.4")]
+-		public bool no_clear_hint { get; set; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public bool offscreen { get; set; }
+ 		[Version (since = "0.8")]
+-		public Clutter.Perspective perspective { get; set; }
++		public Clutter.Perspective perspective { get; }
+ 		[Version (since = "0.4")]
+ 		public string title { get; set; }
+-		[Version (since = "1.2")]
+-		public bool use_alpha { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-		public bool use_fog { get; set; }
+-		[Version (since = "0.4")]
+-		public bool user_resizable { get; set; }
+ 		[Version (since = "0.6")]
+ 		public virtual signal void activate ();
+ 		[Version (since = "1.20")]
+-		public signal void after_paint ();
++		public signal void after_paint (Clutter.StageView view);
++		public signal void after_update (Clutter.StageView view);
++		public signal void before_paint (Clutter.StageView view);
++		public signal void before_update (Clutter.StageView view);
+ 		[Version (since = "0.6")]
+ 		public virtual signal void deactivate ();
+ 		[Version (since = "1.2")]
+ 		public virtual signal bool delete_event (Clutter.Event event);
+-		[Version (since = "0.6")]
+-		public virtual signal void fullscreen ();
+-		[Version (since = "0.6")]
+-		public virtual signal void unfullscreen ();
++		public virtual signal void paint_view (Clutter.StageView view, Cairo.Region redraw_clip);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_stage_manager_get_type ()")]
+ 	[Version (since = "1.0")]
+@@ -7185,8 +6651,6 @@ namespace Clutter {
+ 		[Version (since = "0.8")]
+ 		public GLib.SList<weak Clutter.Stage> list_stages ();
+ 		public unowned GLib.SList<Clutter.Stage> peek_stages ();
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "0.8")]
+-		public void set_default_stage (Clutter.Stage stage);
+ 		[Version (since = "0.8")]
+ 		public Clutter.Stage default_stage { get; }
+ 		[Version (since = "0.8")]
+@@ -7206,63 +6670,33 @@ namespace Clutter {
+ 		public uint32 time;
+ 		public Clutter.EventType type;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_state_get_type ()")]
+-	[Version (since = "1.4")]
+-	public class State : GLib.Object, Clutter.Scriptable {
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_stage_view_get_type ()")]
++	public class StageView : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public State ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public uint get_duration (string? source_state_name, string? target_state_name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public GLib.List<weak Clutter.StateKey> get_keys (string? source_state_name, string? target_state_name, GLib.Object? object, string? property_name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_state ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public GLib.List<weak string> get_states ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned Clutter.Timeline get_timeline ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void remove_key (string? source_state_name, string? target_state_name, GLib.Object? object, string? property_name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_duration (string? source_state_name, string? target_state_name, uint duration);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned Clutter.State set_key (string? source_state_name, string target_state_name, GLib.Object object, string property_name, uint mode, GLib.Value value, double pre_delay, double post_delay);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned Clutter.Timeline set_state (string target_state_name);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned Clutter.Timeline warp_to_state (string target_state_name);
++		protected StageView ();
++		public void assign_next_scanout (Cogl.Scanout scanout);
++		public unowned Cogl.Framebuffer get_framebuffer ();
++		public void get_layout (Cairo.RectangleInt rect);
++		public virtual void get_offscreen_transformation_matrix (Cogl.Matrix matrix);
++		public unowned Cogl.Framebuffer get_onscreen ();
++		public float get_scale ();
++		public void invalidate_offscreen_blit_pipeline ();
++		[NoWrapper]
++		public virtual void setup_offscreen_blit_pipeline (Cogl.Pipeline pipeline);
++		[NoWrapper]
++		public virtual void transform_rect_to_onscreen (Cairo.RectangleInt src_rect, int dst_width, int dst_height, Cairo.RectangleInt dst_rect);
+ 		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public uint duration { get; set; }
++		public Cairo.RectangleInt layout { owned get; set construct; }
+ 		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public string state { owned get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public virtual signal void completed ();
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_state_key_get_type ()")]
+-	[Compact]
+-	[Version (since = "1.4")]
+-	public class StateKey {
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public ulong get_mode ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned GLib.Object get_object ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public double get_post_delay ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public double get_pre_delay ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_property_name ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public GLib.Type get_property_type ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_source_state_name ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public unowned string get_target_state_name ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool get_value (GLib.Value value);
++		public string name { owned get; construct; }
++		[NoAccessorMethod]
++		public float refresh_rate { get; set construct; }
++		[NoAccessorMethod]
++		public float scale { get; set construct; }
++		[NoAccessorMethod]
++		public Clutter.Stage stage { owned get; construct; }
++		[NoAccessorMethod]
++		public bool use_shadowfb { get; construct; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_swipe_action_get_type ()")]
+ 	[Version (since = "1.8")]
+@@ -7274,53 +6708,6 @@ namespace Clutter {
+ 		[Version (since = "1.14")]
+ 		public virtual signal bool swipe (Clutter.Actor actor, Clutter.SwipeDirection direction);
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_table_layout_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "1.4")]
+-	public class TableLayout : Clutter.LayoutManager {
+-		[CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
+-		public TableLayout ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void get_alignment (Clutter.Actor actor, out Clutter.TableAlignment x_align, out Clutter.TableAlignment y_align);
+-		public int get_column_count ();
+-		public uint get_column_spacing ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public uint get_easing_duration ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public ulong get_easing_mode ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void get_expand (Clutter.Actor actor, out bool x_expand, out bool y_expand);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void get_fill (Clutter.Actor actor, out bool x_fill, out bool y_fill);
+-		public int get_row_count ();
+-		public uint get_row_spacing ();
+-		public void get_span (Clutter.Actor actor, out int column_span, out int row_span);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool get_use_animations ();
+-		public void pack (Clutter.Actor actor, int column, int row);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_alignment (Clutter.Actor actor, Clutter.TableAlignment x_align, Clutter.TableAlignment y_align);
+-		public void set_column_spacing (uint spacing);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_easing_duration (uint msecs);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_easing_mode (ulong mode);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_expand (Clutter.Actor actor, bool x_expand, bool y_expand);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_fill (Clutter.Actor actor, bool x_fill, bool y_fill);
+-		public void set_row_spacing (uint spacing);
+-		public void set_span (Clutter.Actor actor, int column_span, int row_span);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_use_animations (bool animate);
+-		public uint column_spacing { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public uint easing_duration { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public ulong easing_mode { get; set; }
+-		public uint row_spacing { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool use_animations { get; set; }
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_tap_action_get_type ()")]
+ 	[Version (since = "1.14")]
+ 	public class TapAction : Clutter.GestureAction {
+@@ -7348,7 +6735,7 @@ namespace Clutter {
+ 		public Clutter.Color get_cursor_color ();
+ 		public int get_cursor_position ();
+ 		[Version (since = "1.16")]
+-		public void get_cursor_rect (out unowned Clutter.Rect rect);
++		public void get_cursor_rect (out unowned Graphene.Rect rect);
+ 		public uint get_cursor_size ();
+ 		public bool get_cursor_visible ();
+ 		public bool get_editable ();
+@@ -7467,7 +6854,7 @@ namespace Clutter {
+ 		[Version (since = "1.16")]
+ 		public virtual signal void cursor_changed ();
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public virtual signal void cursor_event (Clutter.Geometry geometry);
++		public virtual signal void cursor_event (Graphene.Rect rect);
+ 		[HasEmitter]
+ 		[Version (since = "1.2")]
+ 		public signal void delete_text (int start_pos, int end_pos);
+@@ -7505,94 +6892,6 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
+ 		public TextNode (Pango.Layout? layout, Clutter.Color? color);
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_texture_get_type ()")]
+-	[Version (since = "0.2")]
+-	public class Texture : Clutter.Actor, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public Texture ();
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-		public Texture.from_actor (Clutter.Actor actor);
+-		[CCode (has_construct_function = false, type = "ClutterActor*")]
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public Texture.from_file (string filename) throws Clutter.TextureError;
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public void get_base_size (out int width, out int height);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public unowned Cogl.Handle get_cogl_material ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public unowned Cogl.Handle get_cogl_texture ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public Clutter.TextureQuality get_filter_quality ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_keep_aspect_ratio ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_load_async ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_load_data_async ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public int get_max_tile_waste ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public bool get_pick_with_alpha ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void get_repeat (out bool repeat_x, out bool repeat_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool get_sync_size ();
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.6")]
+-		public bool set_area_from_rgb_data ([CCode (array_length = false)] uint8[] data, bool has_alpha, int x, int y, int width, int height, int rowstride, int bpp, Clutter.TextureFlags flags) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_cogl_material (Cogl.Handle cogl_material);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_cogl_texture (Cogl.Handle cogl_tex);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public void set_filter_quality (Clutter.TextureQuality filter_quality);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.8")]
+-		public bool set_from_file (string filename) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "0.4")]
+-		public bool set_from_rgb_data ([CCode (array_length = false)] uint8[] data, bool has_alpha, int width, int height, int rowstride, int bpp, Clutter.TextureFlags flags) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public bool set_from_yuv_data ([CCode (array_length = false)] uint8[] data, int width, int height, Clutter.TextureFlags flags) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_keep_aspect_ratio (bool keep_aspect);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_load_async (bool load_async);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_load_data_async (bool load_async);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.4")]
+-		public void set_pick_with_alpha (bool pick_with_alpha);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_repeat (bool repeat_x, bool repeat_y);
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public void set_sync_size (bool sync_size);
+-		public Cogl.Material cogl_material { get; set; }
+-		public Cogl.Texture cogl_texture { get; set; }
+-		[NoAccessorMethod]
+-		public bool disable_slicing { get; construct; }
+-		[NoAccessorMethod]
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public string filename { owned get; set; }
+-		public Clutter.TextureQuality filter_quality { get; set construct; }
+-		public bool keep_aspect_ratio { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool load_async { set; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public bool load_data_async { set; }
+-		public bool pick_with_alpha { get; set; }
+-		[NoAccessorMethod]
+-		public bool repeat_x { get; set; }
+-		[NoAccessorMethod]
+-		public bool repeat_y { get; set; }
+-		public bool sync_size { get; set; }
+-		[NoAccessorMethod]
+-		public int tile_waste { get; }
+-		[Version (deprecated = true, deprecated_since = "1.12", since = "1.0")]
+-		public virtual signal void load_finished (GLib.Error error);
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public virtual signal void pixbuf_change ();
+-		[Version (deprecated = true, deprecated_since = "1.12")]
+-		public virtual signal void size_change (int width, int height);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_texture_node_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public class TextureNode : Clutter.PipelineNode {
+@@ -7604,7 +6903,7 @@ namespace Clutter {
+ 	public class Timeline : GLib.Object, Clutter.Scriptable {
+ 		[CCode (has_construct_function = false)]
+ 		[Version (since = "0.6")]
+-		public Timeline (uint msecs);
++		public Timeline (uint duration_ms);
+ 		[Version (since = "1.14")]
+ 		public void add_marker (string marker_name, double progress);
+ 		[Version (since = "0.8")]
+@@ -7612,12 +6911,15 @@ namespace Clutter {
+ 		public void advance (uint msecs);
+ 		[Version (since = "0.8")]
+ 		public void advance_to_marker (string marker_name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public Clutter.Timeline clone ();
++		[CCode (has_construct_function = false)]
++		public Timeline.for_actor (Clutter.Actor actor, uint duration_ms);
++		[CCode (has_construct_function = false)]
++		public Timeline.for_frame_clock (Clutter.FrameClock frame_clock, uint duration_ms);
++		public unowned Clutter.Actor get_actor ();
+ 		[Version (since = "1.6")]
+ 		public bool get_auto_reverse ();
+ 		[Version (since = "1.12")]
+-		public bool get_cubic_bezier_progress (Clutter.Point c_1, Clutter.Point c_2);
++		public bool get_cubic_bezier_progress (Graphene.Point c_1, Graphene.Point c_2);
+ 		[Version (since = "1.10")]
+ 		public int get_current_repeat ();
+ 		[Version (since = "0.4")]
+@@ -7631,8 +6933,6 @@ namespace Clutter {
+ 		[Version (since = "1.10")]
+ 		public int64 get_duration_hint ();
+ 		public uint get_elapsed_time ();
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public bool get_loop ();
+ 		[Version (since = "0.6")]
+ 		public double get_progress ();
+ 		[Version (since = "1.10")]
+@@ -7651,18 +6951,18 @@ namespace Clutter {
+ 		[Version (since = "0.8")]
+ 		public void remove_marker (string marker_name);
+ 		public void rewind ();
++		public void set_actor (Clutter.Actor? actor);
+ 		[Version (since = "1.6")]
+ 		public void set_auto_reverse (bool reverse);
+ 		[Version (since = "1.12")]
+-		public void set_cubic_bezier_progress (Clutter.Point c_1, Clutter.Point c_2);
++		public void set_cubic_bezier_progress (Graphene.Point c_1, Graphene.Point c_2);
+ 		[Version (since = "0.4")]
+ 		public void set_delay (uint msecs);
+ 		[Version (since = "0.6")]
+ 		public void set_direction (Clutter.TimelineDirection direction);
+ 		[Version (since = "0.6")]
+ 		public void set_duration (uint msecs);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void set_loop (bool loop);
++		public void set_frame_clock (Clutter.FrameClock frame_clock);
+ 		[Version (since = "1.10")]
+ 		public void set_progress_func (owned Clutter.TimelineProgressFunc? func);
+ 		[Version (since = "1.10")]
+@@ -7674,6 +6974,7 @@ namespace Clutter {
+ 		public void skip (uint msecs);
+ 		public void start ();
+ 		public void stop ();
++		public Clutter.Actor actor { get; set construct; }
+ 		[Version (since = "1.6")]
+ 		public bool auto_reverse { get; set; }
+ 		[Version (since = "0.4")]
+@@ -7682,8 +6983,8 @@ namespace Clutter {
+ 		public Clutter.TimelineDirection direction { get; set; }
+ 		[Version (since = "0.6")]
+ 		public uint duration { get; set; }
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public bool loop { get; set; }
++		[NoAccessorMethod]
++		public Clutter.FrameClock frame_clock { owned get; set construct; }
+ 		[Version (since = "1.10")]
+ 		public Clutter.AnimationMode progress_mode { get; set; }
+ 		[Version (since = "1.10")]
+@@ -7697,12 +6998,6 @@ namespace Clutter {
+ 		[Version (since = "1.12")]
+ 		public virtual signal void stopped (bool is_finished);
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Compact]
+-	public class TimeoutPool {
+-		[CCode (has_construct_function = false)]
+-		public TimeoutPool (int priority);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	[Compact]
+ 	[Version (since = "1.10")]
+@@ -7753,6 +7048,11 @@ namespace Clutter {
+ 		public float x;
+ 		public float y;
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_transform_node_get_type ()")]
++	public class TransformNode : Clutter.PaintNode {
++		[CCode (has_construct_function = false, type = "ClutterPaintNode*")]
++		public TransformNode (Cogl.Matrix projection);
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_transition_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public abstract class Transition : Clutter.Timeline, Clutter.Scriptable {
+@@ -7792,7 +7092,6 @@ namespace Clutter {
+ 		[CCode (has_construct_function = false)]
+ 		protected VirtualInputDevice ();
+ 		public int get_device_type ();
+-		public unowned Clutter.DeviceManager get_manager ();
+ 		public virtual void notify_absolute_motion (uint64 time_us, double x, double y);
+ 		public virtual void notify_button (uint64 time_us, uint32 button, Clutter.ButtonState button_state);
+ 		public virtual void notify_discrete_scroll (uint64 time_us, Clutter.ScrollDirection direction, Clutter.ScrollSource scroll_source);
+@@ -7803,28 +7102,27 @@ namespace Clutter {
+ 		public virtual void notify_touch_down (uint64 time_us, int slot, double x, double y);
+ 		public virtual void notify_touch_motion (uint64 time_us, int slot, double x, double y);
+ 		public virtual void notify_touch_up (uint64 time_us, int slot);
+-		[NoAccessorMethod]
+-		public Clutter.DeviceManager device_manager { owned get; construct; }
+ 		public Clutter.InputDeviceType device_type { get; construct; }
++		[NoAccessorMethod]
++		public Clutter.Seat seat { owned get; construct; }
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_zoom_action_get_type ()")]
+ 	[Version (since = "1.12")]
+ 	public class ZoomAction : Clutter.GestureAction {
+ 		[CCode (has_construct_function = false, type = "ClutterAction*")]
+ 		public ZoomAction ();
+-		public void get_focal_point (Clutter.Point point);
+-		public void get_transformed_focal_point (Clutter.Point point);
++		public void get_focal_point (Graphene.Point point);
++		public void get_transformed_focal_point (Graphene.Point point);
+ 		public Clutter.ZoomAxis get_zoom_axis ();
+ 		public void set_zoom_axis (Clutter.ZoomAxis axis);
+ 		public Clutter.ZoomAxis zoom_axis { get; set; }
+-		public virtual signal bool zoom (Clutter.Actor actor, Clutter.Point focal_point, double factor);
++		public virtual signal bool zoom (Clutter.Actor actor, Graphene.Point focal_point, double factor);
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_cname = "ClutterAnimatableInterface", type_id = "clutter_animatable_get_type ()")]
+ 	public interface Animatable : GLib.Object {
+-		[Version (deprecated = true, deprecated_since = "1.8", since = "1.0")]
+-		public abstract bool animate_property (Clutter.Animation animation, string property_name, GLib.Value initial_value, GLib.Value final_value, double progress, GLib.Value value);
+ 		[Version (since = "1.4")]
+ 		public abstract unowned GLib.ParamSpec find_property (string property_name);
++		public abstract unowned Clutter.Actor get_actor ();
+ 		[Version (since = "1.4")]
+ 		public abstract void get_initial_state (string property_name, GLib.Value value);
+ 		[Version (since = "1.8")]
+@@ -7835,12 +7133,9 @@ namespace Clutter {
+ 	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_container_get_type ()")]
+ 	[Version (since = "0.4")]
+ 	public interface Container : GLib.Object {
+-		public void add (params Clutter.Actor[] actors);
+ 		[CCode (vfunc_name = "add")]
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+ 		public abstract void add_actor (Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public void add_valist (Clutter.Actor first_actor, va_list var_args);
+ 		[Version (since = "0.8")]
+ 		public void child_get (Clutter.Actor actor, ...);
+ 		[Version (since = "0.8")]
+@@ -7860,18 +7155,10 @@ namespace Clutter {
+ 		public virtual void destroy_child_meta (Clutter.Actor actor);
+ 		[Version (since = "0.6")]
+ 		public unowned Clutter.Actor find_child_by_name (string child_name);
+-		[CCode (cname = "clutter_container_class_find_child_property")]
+-		public class unowned GLib.ParamSpec find_child_property (string property_name);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public abstract void @foreach (Clutter.Callback callback);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-		public virtual void foreach_with_internals (Clutter.Callback callback);
+ 		[Version (since = "0.8")]
+ 		public virtual unowned Clutter.ChildMeta get_child_meta (Clutter.Actor actor);
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+ 		public GLib.List<weak Clutter.Actor> get_children ();
+-		[CCode (cname = "clutter_container_class_list_child_properties")]
+-		public class unowned GLib.ParamSpec[] list_child_properties ();
+ 		[CCode (vfunc_name = "lower")]
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+ 		public virtual void lower_child (Clutter.Actor actor, Clutter.Actor? sibling = null);
+@@ -7883,8 +7170,6 @@ namespace Clutter {
+ 		[CCode (vfunc_name = "remove")]
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+ 		public abstract void remove_actor (Clutter.Actor actor);
+-		[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-		public void remove_valist (Clutter.Actor first_actor, va_list var_args);
+ 		[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+ 		public abstract void sort_depth_order ();
+ 		public virtual signal void actor_added (Clutter.Actor actor);
+@@ -7901,7 +7186,7 @@ namespace Clutter {
+ 		public abstract void invalidate ();
+ 		public abstract void invalidate_size ();
+ 		[NoWrapper]
+-		public abstract void paint_content (Clutter.Actor actor, Clutter.PaintNode node);
++		public abstract void paint_content (Clutter.Actor actor, Clutter.PaintNode node, Clutter.PaintContext paint_context);
+ 		[Version (since = "1.10")]
+ 		public virtual signal void attached (Clutter.Actor actor);
+ 		[Version (since = "1.10")]
+@@ -7915,47 +7200,16 @@ namespace Clutter {
+ 		public abstract void set_custom_property (Clutter.Script script, string name, GLib.Value value);
+ 		public abstract void set_id (string id_);
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	public interface StageWindow : GLib.Object {
+-		[NoWrapper]
+-		public abstract void add_redraw_clip (Clutter.Geometry stage_rectangle);
+-		[NoWrapper]
+-		public abstract void get_geometry (Clutter.Geometry geometry);
+-		[NoWrapper]
+-		public abstract int get_pending_swaps ();
+-		[NoWrapper]
+-		public abstract unowned Clutter.Actor get_wrapper ();
+-		[NoWrapper]
+-		public abstract bool has_redraw_clips ();
+-		[NoWrapper]
+-		public abstract void hide ();
+-		[NoWrapper]
+-		public abstract bool ignoring_redraw_clips ();
+-		[NoWrapper]
+-		public abstract bool realize ();
+-		[NoWrapper]
+-		public abstract void resize (int width, int height);
+-		[NoWrapper]
+-		public abstract void set_cursor_visible (bool cursor_visible);
+-		[NoWrapper]
+-		public abstract void set_fullscreen (bool is_fullscreen);
+-		[NoWrapper]
+-		public abstract void set_title (string title);
+-		[NoWrapper]
+-		public abstract void set_user_resizable (bool is_resizable);
+-		[NoWrapper]
+-		public abstract void show (bool do_raise);
+-		[NoWrapper]
+-		public abstract void unrealize ();
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "CLUTTER_TYPE_ACTOR_BOX")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_actor_box_get_type ()")]
+ 	public struct ActorBox {
+ 		public float x1;
+ 		public float y1;
+ 		public float x2;
+ 		public float y2;
++		[Version (since = "1.12")]
++		public static Clutter.ActorBox? alloc ();
+ 		[Version (since = "1.2")]
+-		public void clamp_to_pixel ();
++		public static void clamp_to_pixel (ref Clutter.ActorBox box);
+ 		[Version (since = "1.0")]
+ 		public bool contains (float x, float y);
+ 		[Version (since = "1.0")]
+@@ -7964,8 +7218,6 @@ namespace Clutter {
+ 		public bool equal (Clutter.ActorBox box_b);
+ 		[Version (since = "1.0")]
+ 		public void free ();
+-		[CCode (cname = "clutter_actor_box_from_vertices")]
+-		public ActorBox.from_vertices (Clutter.Vertex[] verts);
+ 		[Version (since = "1.0")]
+ 		public float get_area ();
+ 		[Version (since = "1.0")]
+@@ -7986,6 +7238,7 @@ namespace Clutter {
+ 		public void init_rect (float x, float y, float width, float height);
+ 		[Version (since = "1.2")]
+ 		public Clutter.ActorBox interpolate (Clutter.ActorBox final, double progress);
++		public bool is_initialized ();
+ 		[Version (since = "1.6")]
+ 		public void scale (float scale);
+ 		[Version (since = "1.6")]
+@@ -8011,7 +7264,7 @@ namespace Clutter {
+ 		public weak Cairo.Surface image;
+ 		public Cairo.RectangleInt rect;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "CLUTTER_TYPE_COLOR")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_color_get_type ()")]
+ 	public struct Color {
+ 		public uint8 red;
+ 		public uint8 green;
+@@ -8027,12 +7280,11 @@ namespace Clutter {
+ 		public bool equal (Clutter.Color v2);
+ 		[Version (since = "0.2")]
+ 		public void free ();
+-		[CCode (cname = "clutter_color_from_hls")]
+-		public Color.from_hls (float hue, float luminance, float saturation);
+-		[CCode (cname = "clutter_color_from_pixel")]
+-		public Color.from_pixel (uint32 pixel);
+-		[CCode (cname = "clutter_color_from_string")]
+-		public Color.from_string (string str);
++		public static void from_hls (out Clutter.Color color, float hue, float luminance, float saturation);
++		public static void from_pixel (out Clutter.Color color, uint32 pixel);
++		[Version (since = "1.0")]
++		public static bool from_string (out Clutter.Color color, string str);
++		[Version (since = "1.6")]
+ 		public static unowned Clutter.Color? get_static (Clutter.StaticColor color);
+ 		[Version (since = "1.0")]
+ 		public uint hash ();
+@@ -8041,8 +7293,6 @@ namespace Clutter {
+ 		[Version (since = "1.6")]
+ 		public Clutter.Color interpolate (Clutter.Color final, double progress);
+ 		public Clutter.Color lighten ();
+-		[CCode (cname = "clutter_color_from_string")]
+-		public bool parse_string (string str);
+ 		public Clutter.Color shade (double factor);
+ 		public Clutter.Color subtract (Clutter.Color b);
+ 		public void to_hls (out float hue, out float luminance, out float saturation);
+@@ -8050,23 +7300,10 @@ namespace Clutter {
+ 		[Version (since = "0.2")]
+ 		public string to_string ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_fog_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-	public struct Fog {
+-		public float z_near;
+-		public float z_far;
+-	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_geometry_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public struct Geometry {
+-		public int x;
+-		public int y;
+-		public uint width;
+-		public uint height;
+-		[Version (since = "1.4")]
+-		public bool intersects (Clutter.Geometry geometry1);
+-		[Version (since = "1.4")]
+-		public Clutter.Geometry union (Clutter.Geometry geometry_b);
++	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
++	public struct FrameListenerIface {
++		public weak global::before_frame before_frame;
++		public weak global::frame frame;
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	public struct KbdA11ySettings {
+@@ -8078,7 +7315,7 @@ namespace Clutter {
+ 		public int mousekeys_max_speed;
+ 		public int mousekeys_accel_time;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_knot_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_knot_get_type ()")]
+ 	[Version (since = "0.2")]
+ 	public struct Knot {
+ 		public int x;
+@@ -8087,8 +7324,19 @@ namespace Clutter {
+ 		public bool equal (Clutter.Knot knot_b);
+ 		public void free ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h")]
++	[CCode (cheader_filename = "clutter/clutter.h", type_id = "COGL_TYPE_MATRIX")]
+ 	public struct Matrix : Cogl.Matrix {
++		[Version (since = "1.12")]
++		public static Clutter.Matrix? alloc ();
++		[Version (since = "1.12")]
++		public void free ();
++		public static GLib.Type get_type ();
++		[Version (since = "1.12")]
++		public unowned Clutter.Matrix? init_from_array ([CCode (array_length = false)] float values[16]);
++		[Version (since = "1.12")]
++		public unowned Clutter.Matrix? init_from_matrix (Clutter.Matrix b);
++		[Version (since = "1.12")]
++		public unowned Clutter.Matrix? init_identity ();
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	public struct PadButtonEvent {
+@@ -8130,7 +7378,7 @@ namespace Clutter {
+ 		public double value;
+ 		public uint32 mode;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_path_node_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_path_node_get_type ()")]
+ 	[Version (since = "1.0")]
+ 	public struct PathNode {
+ 		public Clutter.PathNodeType type;
+@@ -8140,7 +7388,7 @@ namespace Clutter {
+ 		public bool equal (Clutter.PathNode node_b);
+ 		public void free ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_perspective_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_perspective_get_type ()")]
+ 	[Version (since = "0.4")]
+ 	public struct Perspective {
+ 		public float fovy;
+@@ -8149,6 +7397,19 @@ namespace Clutter {
+ 		public float z_far;
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
++	public struct PointerA11ySettings {
++		public Clutter.PointerA11yFlags controls;
++		public Clutter.PointerA11yDwellClickType dwell_click_type;
++		public Clutter.PointerA11yDwellMode dwell_mode;
++		public Clutter.PointerA11yDwellDirection dwell_gesture_single;
++		public Clutter.PointerA11yDwellDirection dwell_gesture_double;
++		public Clutter.PointerA11yDwellDirection dwell_gesture_drag;
++		public Clutter.PointerA11yDwellDirection dwell_gesture_secondary;
++		public int secondary_click_delay;
++		public int dwell_delay;
++		public int dwell_threshold;
++	}
++	[CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
+ 	[Version (since = "1.28")]
+ 	public struct ProximityEvent {
+ 		public Clutter.EventType type;
+@@ -8158,47 +7419,16 @@ namespace Clutter {
+ 		public weak Clutter.Actor source;
+ 		public weak Clutter.InputDevice device;
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "CLUTTER_TYPE_UNITS")]
++	[CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_units_get_type ()")]
+ 	[Version (since = "1.0")]
+ 	public struct Units {
+ 		public Clutter.Units? copy ();
+ 		public void free ();
+-		[CCode (cname = "clutter_units_from_cm")]
+-		public Units.from_cm (float cm);
+-		[CCode (cname = "clutter_units_from_em")]
+-		public Units.from_em (float em);
+-		[CCode (cname = "clutter_units_from_em_for_font")]
+-		public Units.from_em_for_font (string font_name, float em);
+-		[CCode (cname = "clutter_units_from_mm")]
+-		public Units.from_mm (float mm);
+-		[CCode (cname = "clutter_units_from_pixels")]
+-		public Units.from_pixels (int px);
+-		[CCode (cname = "clutter_units_from_pt")]
+-		public Units.from_pt (float pt);
+-		[CCode (cname = "clutter_units_from_string")]
+-		public Units.from_string (string str);
+ 		public Clutter.UnitType get_unit_type ();
+ 		public float get_unit_value ();
+ 		public float to_pixels ();
+ 		public string to_string ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_vertex_get_type ()")]
+-	[Version (since = "0.4")]
+-	public struct Vertex {
+-		public float x;
+-		public float y;
+-		public float z;
+-		[Version (since = "1.12")]
+-		public static Clutter.Vertex? alloc ();
+-		[Version (since = "1.0")]
+-		public Clutter.Vertex? copy ();
+-		[Version (since = "1.0")]
+-		public bool equal (Clutter.Vertex vertex_b);
+-		[Version (since = "1.0")]
+-		public void free ();
+-		[Version (since = "1.10")]
+-		public unowned Clutter.Vertex? init (float x, float y, float z);
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_ACTOR_ALIGN_", type_id = "clutter_actor_align_get_type ()")]
+ 	[Version (since = "1.10")]
+ 	public enum ActorAlign {
+@@ -8223,14 +7453,6 @@ namespace Clutter {
+ 		Y_AXIS,
+ 		BOTH
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_", type_id = "clutter_allocation_flags_get_type ()")]
+-	[Flags]
+-	[Version (since = "1.0")]
+-	public enum AllocationFlags {
+-		ALLOCATION_NONE,
+-		ABSOLUTE_ORIGIN_CHANGED,
+-		DELEGATE_LAYOUT
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_", type_id = "clutter_animation_mode_get_type ()")]
+ 	[Version (since = "1.0")]
+ 	public enum AnimationMode {
+@@ -8336,6 +7558,27 @@ namespace Clutter {
+ 		Y_AXIS,
+ 		BOTH
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DEBUG_", type_id = "clutter_debug_flag_get_type ()")]
++	[Flags]
++	public enum DebugFlag {
++		MISC,
++		ACTOR,
++		TEXTURE,
++		EVENT,
++		PAINT,
++		PANGO,
++		BACKEND,
++		SCHEDULER,
++		SCRIPT,
++		SHADER,
++		MULTISTAGE,
++		ANIMATION,
++		LAYOUT,
++		PICK,
++		EVENTLOOP,
++		CLIPPING,
++		OOB_TRANSFORMS
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DRAG_", type_id = "clutter_drag_axis_get_type ()")]
+ 	[Version (since = "1.4")]
+ 	public enum DragAxis {
+@@ -8343,11 +7586,24 @@ namespace Clutter {
+ 		X_AXIS,
+ 		Y_AXIS
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_EFFECT_PAINT_ACTOR_", type_id = "clutter_effect_paint_flags_get_type ()")]
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DEBUG_", type_id = "clutter_draw_debug_flag_get_type ()")]
++	[Flags]
++	public enum DrawDebugFlag {
++		DISABLE_SWAP_EVENTS,
++		DISABLE_CLIPPED_REDRAWS,
++		REDRAWS,
++		PAINT_VOLUMES,
++		DISABLE_CULLING,
++		DISABLE_OFFSCREEN_REDIRECT,
++		CONTINUOUS_REDRAW,
++		PAINT_DEFORM_TILES,
++		PAINT_DAMAGE_REGION
++	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_EFFECT_PAINT_", type_id = "clutter_effect_paint_flags_get_type ()")]
+ 	[Flags]
+ 	public enum EffectPaintFlags {
+-		[CCode (cname = "CLUTTER_EFFECT_PAINT_ACTOR_DIRTY")]
+-		ACTOR_DIRTY
++		ACTOR_DIRTY,
++		BYPASS_EFFECT
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_EVENT_", type_id = "clutter_event_flags_get_type ()")]
+ 	[Flags]
+@@ -8392,21 +7648,12 @@ namespace Clutter {
+ 	[Flags]
+ 	[Version (since = "0.4")]
+ 	public enum FeatureFlags {
+-		TEXTURE_NPOT,
+-		SWAP_THROTTLE,
+-		TEXTURE_YUV,
+-		TEXTURE_READ_PIXELS,
+ 		STAGE_STATIC,
+-		STAGE_USER_RESIZE,
+ 		STAGE_CURSOR,
+ 		SHADERS_GLSL,
+ 		OFFSCREEN,
+ 		STAGE_MULTIPLE,
+-		SWAP_EVENTS;
+-		[CCode (cname = "clutter_feature_available")]
+-		public bool is_available ();
+-		[CCode (cname = "clutter_feature_get_all")]
+-		public static Clutter.FeatureFlags @get ();
++		SWAP_EVENTS
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_FLOW_", type_id = "clutter_flow_orientation_get_type ()")]
+ 	[Version (since = "1.2")]
+@@ -8414,12 +7661,10 @@ namespace Clutter {
+ 		HORIZONTAL,
+ 		VERTICAL
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_FONT_", type_id = "clutter_font_flags_get_type ()")]
+-	[Flags]
+-	[Version (deprecated = true, deprecated_since = "1.22", since = "1.0")]
+-	public enum FontFlags {
+-		MIPMAPPING,
+-		HINTING
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_FRAME_RESULT_", type_id = "clutter_frame_result_get_type ()")]
++	public enum FrameResult {
++		PENDING_PRESENTED,
++		IDLE
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_GESTURE_TRIGGER_EDGE_", type_id = "clutter_gesture_trigger_edge_get_type ()")]
+ 	[Version (since = "1.18")]
+@@ -8634,7 +7879,8 @@ namespace Clutter {
+ 	[Version (since = "1.8")]
+ 	public enum OffscreenRedirect {
+ 		AUTOMATIC_FOR_OPACITY,
+-		ALWAYS
++		ALWAYS,
++		ON_IDLE
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_ORIENTATION_", type_id = "clutter_orientation_get_type ()")]
+ 	[Version (since = "1.12")]
+@@ -8642,6 +7888,13 @@ namespace Clutter {
+ 		HORIZONTAL,
+ 		VERTICAL
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_PAINT_FLAG_", type_id = "clutter_paint_flag_get_type ()")]
++	[Flags]
++	public enum PaintFlag {
++		NONE,
++		NO_CURSORS,
++		FORCE_CURSORS
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_PAN_", type_id = "clutter_pan_axis_get_type ()")]
+ 	[Version (since = "1.12")]
+ 	public enum PanAxis {
+@@ -8661,6 +7914,11 @@ namespace Clutter {
+ 		REL_LINE_TO,
+ 		REL_CURVE_TO
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_DEBUG_NOP_", type_id = "clutter_pick_debug_flag_get_type ()")]
++	[Flags]
++	public enum PickDebugFlag {
++		PICKING
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_PICK_", type_id = "clutter_pick_mode_get_type ()")]
+ 	[Version (since = "1.0")]
+ 	public enum PickMode {
+@@ -8668,13 +7926,46 @@ namespace Clutter {
+ 		REACTIVE,
+ 		ALL
+ 	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_A11Y_DWELL_CLICK_TYPE_", type_id = "clutter_pointer_a11y_dwell_click_type_get_type ()")]
++	public enum PointerA11yDwellClickType {
++		NONE,
++		PRIMARY,
++		SECONDARY,
++		MIDDLE,
++		DOUBLE,
++		DRAG
++	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_A11Y_DWELL_DIRECTION_", type_id = "clutter_pointer_a11y_dwell_direction_get_type ()")]
++	public enum PointerA11yDwellDirection {
++		NONE,
++		LEFT,
++		RIGHT,
++		UP,
++		DOWN
++	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_A11Y_DWELL_MODE_", type_id = "clutter_pointer_a11y_dwell_mode_get_type ()")]
++	public enum PointerA11yDwellMode {
++		WINDOW,
++		GESTURE
++	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_A11Y_", type_id = "clutter_pointer_a11y_flags_get_type ()")]
++	[Flags]
++	public enum PointerA11yFlags {
++		SECONDARY_CLICK_ENABLED,
++		DWELL_ENABLED
++	}
++	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_A11Y_TIMEOUT_TYPE_", type_id = "clutter_pointer_a11y_timeout_type_get_type ()")]
++	public enum PointerA11yTimeoutType {
++		SECONDARY_CLICK,
++		DWELL,
++		GESTURE
++	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_REPAINT_FLAGS_", type_id = "clutter_repaint_flags_get_type ()")]
+ 	[Flags]
+ 	[Version (since = "1.10")]
+ 	public enum RepaintFlags {
+ 		PRE_PAINT,
+-		POST_PAINT,
+-		QUEUE_REDRAW_ON_ADD
++		POST_PAINT
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_REQUEST_", type_id = "clutter_request_mode_get_type ()")]
+ 	[Version (since = "0.8")]
+@@ -8755,8 +8046,6 @@ namespace Clutter {
+ 	[Flags]
+ 	[Version (since = "0.4")]
+ 	public enum StageState {
+-		FULLSCREEN,
+-		OFFSCREEN,
+ 		ACTIVATED
+ 	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_COLOR_", type_id = "clutter_static_color_get_type ()")]
+@@ -8823,13 +8112,6 @@ namespace Clutter {
+ 		LEFT,
+ 		RIGHT
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_TABLE_ALIGNMENT_", type_id = "clutter_table_alignment_get_type ()")]
+-	[Version (deprecated = true, deprecated_since = "1.22", since = "1.4")]
+-	public enum TableAlignment {
+-		START,
+-		CENTER,
+-		END
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_TEXT_DIRECTION_", type_id = "clutter_text_direction_get_type ()")]
+ 	[Version (since = "1.2")]
+ 	public enum TextDirection {
+@@ -8905,28 +8187,16 @@ namespace Clutter {
+ 		VALUE;
+ 		public static GLib.Quark quark ();
+ 	}
+-	[CCode (cheader_filename = "clutter/clutter.h", cprefix = "CLUTTER_TEXTURE_ERROR_")]
+-	[Version (since = "0.4")]
+-	public errordomain TextureError {
+-		OUT_OF_MEMORY,
+-		NO_YUV,
+-		BAD_FORMAT;
+-		public static GLib.Quark quark ();
+-	}
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	[Version (since = "1.24")]
+ 	public delegate Clutter.Actor ActorCreateChildFunc (GLib.Object item);
+-	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+-	[Version (deprecated = true, deprecated_since = "1.12", since = "0.2")]
+-	public delegate double AlphaFunc (Clutter.Alpha alpha);
+-	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 2.9)]
+-	[Version (deprecated = true, deprecated_since = "1.6", since = "0.2")]
+-	public delegate void BehaviourForeachFunc (Clutter.Behaviour behaviour, Clutter.Actor actor);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 4.9)]
+ 	[Version (since = "1.0")]
+ 	public delegate bool BindingActionFunc (GLib.Object gobject, string action_name, uint key_val, Clutter.ModifierType modifiers);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	public delegate void Callback (Clutter.Actor actor);
++	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
++	public delegate void EmitInputDeviceEvent (Clutter.Event event, Clutter.InputDevice device);
+ 	[CCode (cheader_filename = "clutter/clutter.h", instance_pos = 1.9)]
+ 	[Version (since = "1.18")]
+ 	public delegate bool EventFilterFunc (Clutter.Event event);
+@@ -8957,9 +8227,6 @@ namespace Clutter {
+ 	[Version (since = "0.8")]
+ 	public const int PRIORITY_REDRAW;
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.12")]
+-	public static Clutter.ActorBox? actor_box_alloc ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public static void base_init ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "1.12")]
+@@ -8971,37 +8238,12 @@ namespace Clutter {
+ 	[Version (since = "1.10")]
+ 	public static bool check_windowing_backend (string backend_type);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-	public static void clear_glyph_cache ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	public static void color_from_hls (out Clutter.Color color, float hue, float luminance, float saturation);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	public static void color_from_pixel (out Clutter.Color color, uint32 pixel);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.0")]
+-	public static bool color_from_string (out Clutter.Color color, string str);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.6")]
+-	public static unowned Clutter.Color? color_get_static (Clutter.StaticColor color);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "1.14")]
+ 	public static void disable_accessibility ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.4")]
+ 	public static void do_event (Clutter.Event event);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static uint event_add_filter (Clutter.Stage? stage, [CCode (delegate_target_pos = 2.2, destroy_notify_pos = 2.1)] owned Clutter.EventFilterFunc func);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.4")]
+-	public static Clutter.Event event_get ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.4")]
+-	public static unowned Clutter.Event event_peek ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static void event_remove_filter (uint id);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.4")]
+ 	public static bool events_pending ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+@@ -9014,9 +8256,6 @@ namespace Clutter {
+ 	[Version (since = "1.0")]
+ 	public static uint32 get_current_event_time ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static bool get_debug_enabled ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.4")]
+ 	public static unowned Clutter.Backend get_default_backend ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+@@ -9026,18 +8265,9 @@ namespace Clutter {
+ 	[Version (since = "1.2")]
+ 	public static Clutter.TextDirection get_default_text_direction ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-	public static Clutter.FontFlags get_font_flags ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "1.0")]
+ 	public static unowned Pango.FontMap get_font_map ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static unowned Clutter.Actor get_keyboard_grab ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-	public static bool get_motion_events_enabled ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.2")]
+ 	public static GLib.OptionGroup get_option_group ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+@@ -9045,26 +8275,8 @@ namespace Clutter {
+ 	public static GLib.OptionGroup get_option_group_without_init ();
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.6")]
+-	public static unowned Clutter.Actor get_pointer_grab ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+ 	public static unowned string get_script_id (GLib.Object gobject);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.4")]
+-	public static bool get_show_fps ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static ulong get_timestamp ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void grab_keyboard (Clutter.Actor actor);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void grab_pointer (Clutter.Actor actor);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-	public static void grab_pointer_for_device (Clutter.Actor actor, int id_);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public static Clutter.InitError init ([CCode (array_length_cname = "argc", array_length_pos = 0.5)] ref unowned string[]? argv);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "0.2")]
+@@ -9080,41 +8292,6 @@ namespace Clutter {
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	public static void set_custom_backend_func (void* func);
+ 	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.6")]
+-	public static void set_default_frame_rate (uint frames_per_sec);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-	public static void set_font_flags (Clutter.FontFlags flags);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "0.6")]
+-	public static void set_motion_events_enabled (bool enable);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static void test_add_data_full (string test_path, owned GLib.TestDataFunc test_func);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static bool test_check_actor_at_point (Clutter.Actor stage, Clutter.Point point, Clutter.Actor actor, out Clutter.Actor? result);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static bool test_check_color_at_point (Clutter.Actor stage, Clutter.Point point, Clutter.Color color, out Clutter.Color result);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static unowned Clutter.Actor test_get_stage ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	public static void test_init (int argc, string argv);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "1.18")]
+-	public static int test_run ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void ungrab_keyboard ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (since = "0.6")]
+-	public static void ungrab_pointer ();
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-	public static void ungrab_pointer_for_device (int id_);
+-	[CCode (cheader_filename = "clutter/clutter.h")]
+ 	[Version (since = "1.10")]
+ 	public static uint unicode_to_keysym (uint32 wc);
+ }
+diff --git vapi/mutter-cogl-5-custom.vala vapi/mutter-cogl-6-custom.vala
+similarity index 100%
+rename from vapi/mutter-cogl-5-custom.vala
+rename to vapi/mutter-cogl-6-custom.vala
+diff --git vapi/mutter-cogl-4.deps vapi/mutter-cogl-6.deps
+similarity index 100%
+rename from vapi/mutter-cogl-4.deps
+rename to vapi/mutter-cogl-6.deps
+diff --git vapi/mutter-cogl-5.vapi vapi/mutter-cogl-6.vapi
+similarity index 68%
+rename from vapi/mutter-cogl-5.vapi
+rename to vapi/mutter-cogl-6.vapi
+index a8961224..195e3b17 100644
+--- vapi/mutter-cogl-5.vapi
++++ vapi/mutter-cogl-6.vapi
+@@ -1,6 +1,6 @@
+-/* mutter-cogl-5.vapi generated by vapigen, do not modify. */
++/* mutter-cogl-6.vapi generated by vapigen, do not modify. */
+ 
+-[CCode (cprefix = "Cogl", gir_namespace = "Cogl", gir_version = "5", lower_case_cprefix = "cogl_")]
++[CCode (cprefix = "Cogl", gir_namespace = "Cogl", gir_version = "6", lower_case_cprefix = "cogl_")]
+ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle", type_id = "cogl_bitmap_get_gtype ()")]
+ 	[Compact]
+@@ -28,9 +28,10 @@ namespace Cogl {
+ 		public bool set_data (size_t offset, [CCode (array_length_type = "size_t")] uint8[] data);
+ 		public void unmap ();
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Compact]
+-	public class Euler {
++	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_context_get_gtype ()")]
++	public class Context : Cogl.Object {
++		[CCode (has_construct_function = false)]
++		protected Context ();
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_frame_closure_get_gtype ()")]
+ 	[Compact]
+@@ -65,62 +66,17 @@ namespace Cogl {
+ 		[CCode (has_construct_function = false)]
+ 		[Version (deprecated = true, deprecated_since = "1.16")]
+ 		public Material ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.2")]
+-		public Cogl.Material copy ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void foreach_layer (Cogl.MaterialLayerCallback callback);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_ambient (Cogl.Color ambient);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Color get_color ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_diffuse (Cogl.Color diffuse);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_emission (Cogl.Color emission);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public bool get_layer_point_sprite_coords_enabled (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_p (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_s (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_t (int layer_index);
+-		public unowned GLib.List<Cogl.MaterialLayer> get_layers ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public int get_n_layers ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public float get_point_size ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public float get_shininess ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_specular (Cogl.Color specular);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public unowned Cogl.Handle get_user_program ();
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "1.0")]
+-		public static unowned Cogl.Handle @ref (Cogl.Handle material);
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public void remove_layer (int layer_index);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_alpha_test_function (Cogl.MaterialAlphaFunc alpha_func, float alpha_reference);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_ambient (Cogl.Color ambient);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_ambient_and_diffuse (Cogl.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public bool set_blend (string blend_string) throws GLib.Error;
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_blend_constant (Cogl.Color constant_color);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_color (Cogl.Color color);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_color4f (float red, float green, float blue, float alpha);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_diffuse (Cogl.Color diffuse);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_emission (Cogl.Color emission);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_layer (int layer_index, Cogl.Handle texture);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
+@@ -133,41 +89,13 @@ namespace Cogl {
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+ 		public bool set_layer_point_sprite_coords_enabled (int layer_index, bool enable) throws GLib.Error;
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_p (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_s (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_t (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+ 		public void set_point_size (float point_size);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_shininess (float shininess);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_specular (Cogl.Color specular);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+ 		public void set_user_program (Cogl.Handle program);
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "1.0")]
+-		public static void unref (Cogl.Handle material);
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+ 	[Compact]
+ 	public class MaterialLayer {
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialFilter get_mag_filter ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialFilter get_min_filter ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public unowned Cogl.Handle get_texture ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialLayerType get_type ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_p ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_s ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_t ();
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_object_get_gtype ()")]
+ 	public abstract class Object {
+@@ -178,13 +106,9 @@ namespace Cogl {
+ 	public class Offscreen : Cogl.Object, Cogl.Framebuffer {
+ 		[CCode (has_construct_function = false)]
+ 		protected Offscreen ();
+-		[Version (deprecated = true, deprecated_since = "1.2")]
+-		public static void* @ref (void* offscreen);
+ 		[CCode (has_construct_function = false)]
+ 		[Version (deprecated = true, deprecated_since = "1.16")]
+ 		public Offscreen.to_texture (Cogl.Texture texture);
+-		[Version (deprecated = true, deprecated_since = "1.2")]
+-		public static void unref (void* offscreen);
+ 		[CCode (has_construct_function = false)]
+ 		public Offscreen.with_texture (Cogl.Texture texture);
+ 	}
+@@ -196,9 +120,6 @@ namespace Cogl {
+ 		public Cogl.OnscreenDirtyClosure add_dirty_callback ([CCode (delegate_target_pos = 1.5)] Cogl.OnscreenDirtyCallback callback, Cogl.UserDataDestroyCallback? destroy);
+ 		[Version (since = "2.0")]
+ 		public Cogl.OnscreenResizeClosure add_resize_callback ([CCode (delegate_target_pos = 1.5)] Cogl.OnscreenResizeCallback callback, Cogl.UserDataDestroyCallback? destroy);
+-		[Version (deprecated = true, deprecated_since = "1.14", since = "1.10")]
+-		public uint add_swap_buffers_callback (Cogl.SwapBuffersNotify callback);
+-		public static void clutter_backend_set_size_CLUTTER (int width, int height);
+ 		[Version (since = "1.14")]
+ 		public int get_buffer_age ();
+ 		[Version (since = "1.14")]
+@@ -213,8 +134,6 @@ namespace Cogl {
+ 		public void remove_frame_callback (Cogl.FrameClosure closure);
+ 		[Version (since = "2.0")]
+ 		public void remove_resize_callback (Cogl.OnscreenResizeClosure closure);
+-		[Version (deprecated = true, deprecated_since = "1.14", since = "1.10")]
+-		public void remove_swap_buffers_callback (uint id);
+ 		[Version (since = "2.0")]
+ 		public void set_resizable (bool resizable);
+ 		[Version (since = "2.0")]
+@@ -244,7 +163,8 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_pipeline_get_gtype ()")]
+ 	public class Pipeline : Cogl.Object {
+ 		[CCode (has_construct_function = false)]
+-		protected Pipeline ();
++		[Version (since = "2.0")]
++		public Pipeline (Cogl.Context context);
+ 		[Version (since = "2.0")]
+ 		public Cogl.Pipeline copy ();
+ 		[Version (since = "2.0")]
+@@ -254,16 +174,10 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public float get_alpha_test_reference ();
+ 		[Version (since = "2.0")]
+-		public void get_ambient (Cogl.Color ambient);
+-		[Version (since = "2.0")]
+ 		public Cogl.Color get_color ();
+ 		[Version (since = "2.0")]
+ 		public Cogl.PipelineCullFaceMode get_cull_face_mode ();
+ 		[Version (since = "2.0")]
+-		public void get_diffuse (Cogl.Color diffuse);
+-		[Version (since = "2.0")]
+-		public void get_emission (Cogl.Color emission);
+-		[Version (since = "2.0")]
+ 		public Cogl.Winding get_front_face_winding ();
+ 		[Version (since = "1.10")]
+ 		public Cogl.PipelineFilter get_layer_mag_filter (int layer_index);
+@@ -274,8 +188,6 @@ namespace Cogl {
+ 		[Version (since = "1.10")]
+ 		public unowned Cogl.Texture get_layer_texture (int layer_index);
+ 		[Version (since = "1.6")]
+-		public Cogl.PipelineWrapMode get_layer_wrap_mode_p (int layer_index);
+-		[Version (since = "1.6")]
+ 		public Cogl.PipelineWrapMode get_layer_wrap_mode_s (int layer_index);
+ 		[Version (since = "1.6")]
+ 		public Cogl.PipelineWrapMode get_layer_wrap_mode_t (int layer_index);
+@@ -286,10 +198,6 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public float get_point_size ();
+ 		[Version (since = "2.0")]
+-		public float get_shininess ();
+-		[Version (since = "2.0")]
+-		public void get_specular (Cogl.Color specular);
+-		[Version (since = "2.0")]
+ 		public int get_uniform_location (string uniform_name);
+ 		[Version (since = "2.0")]
+ 		public unowned Cogl.Handle get_user_program ();
+@@ -298,10 +206,6 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public void set_alpha_test_function (Cogl.PipelineAlphaFunc alpha_func, float alpha_reference);
+ 		[Version (since = "2.0")]
+-		public void set_ambient (Cogl.Color ambient);
+-		[Version (since = "2.0")]
+-		public void set_ambient_and_diffuse (Cogl.Color color);
+-		[Version (since = "2.0")]
+ 		public bool set_blend (string blend_string) throws GLib.Error;
+ 		[Version (since = "2.0")]
+ 		public void set_blend_constant (Cogl.Color constant_color);
+@@ -314,10 +218,6 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public void set_cull_face_mode (Cogl.PipelineCullFaceMode cull_face_mode);
+ 		[Version (since = "2.0")]
+-		public void set_diffuse (Cogl.Color diffuse);
+-		[Version (since = "2.0")]
+-		public void set_emission (Cogl.Color emission);
+-		[Version (since = "2.0")]
+ 		public void set_front_face_winding (Cogl.Winding front_winding);
+ 		[Version (since = "2.0")]
+ 		public bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
+@@ -335,8 +235,6 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public void set_layer_wrap_mode (int layer_index, Cogl.PipelineWrapMode mode);
+ 		[Version (since = "2.0")]
+-		public void set_layer_wrap_mode_p (int layer_index, Cogl.PipelineWrapMode mode);
+-		[Version (since = "2.0")]
+ 		public void set_layer_wrap_mode_s (int layer_index, Cogl.PipelineWrapMode mode);
+ 		[Version (since = "2.0")]
+ 		public void set_layer_wrap_mode_t (int layer_index, Cogl.PipelineWrapMode mode);
+@@ -345,10 +243,6 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public void set_point_size (float point_size);
+ 		[Version (since = "2.0")]
+-		public void set_shininess (float shininess);
+-		[Version (since = "2.0")]
+-		public void set_specular (Cogl.Color specular);
+-		[Version (since = "2.0")]
+ 		public void set_uniform_1f (int uniform_location, float value);
+ 		[Version (since = "2.0")]
+ 		public void set_uniform_1i (int uniform_location, int value);
+@@ -382,10 +276,6 @@ namespace Cogl {
+ 		public static void uniform_matrix (int uniform_no, int size, bool transpose, [CCode (array_length_pos = 2.9)] float[] value);
+ 		public void use ();
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Compact]
+-	public class Quaternion {
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle", ref_function = "cogl_shader_ref", unref_function = "cogl_shader_unref")]
+ 	[Compact]
+ 	public class Shader : Cogl.Handle {
+@@ -465,12 +355,10 @@ namespace Cogl {
+ 		public int get_alpha_bits ();
+ 		[Version (since = "1.8")]
+ 		public int get_blue_bits ();
++		[Version (since = "1.8")]
++		public unowned Cogl.Context get_context ();
+ 		[Version (since = "2.0")]
+ 		public int get_depth_bits ();
+-		[Version (since = "1.14")]
+-		public unowned Cogl.Texture get_depth_texture ();
+-		[Version (since = "1.14")]
+-		public bool get_depth_texture_enabled ();
+ 		[Version (since = "1.18")]
+ 		public bool get_depth_write_enabled ();
+ 		[Version (since = "1.8")]
+@@ -516,6 +404,7 @@ namespace Cogl {
+ 		public void push_matrix ();
+ 		[Version (since = "1.10")]
+ 		public void push_rectangle_clip (float x_1, float y_1, float x_2, float y_2);
++		public void push_region_clip (Cairo.Region region);
+ 		[Version (since = "1.10")]
+ 		public void push_scissor_clip (int x, int y, int width, int height);
+ 		[Version (since = "1.10")]
+@@ -529,13 +418,9 @@ namespace Cogl {
+ 		[Version (since = "1.10")]
+ 		public void rotate (float angle, float x, float y, float z);
+ 		[Version (since = "2.0")]
+-		public void rotate_euler (Cogl.Euler euler);
+-		[Version (since = "2.0")]
+-		public void rotate_quaternion (Cogl.Quaternion quaternion);
++		public void rotate_euler (Graphene.Euler euler);
+ 		[Version (since = "1.10")]
+ 		public void scale (float x, float y, float z);
+-		[Version (since = "1.14")]
+-		public void set_depth_texture_enabled (bool enabled);
+ 		[Version (since = "1.18")]
+ 		public void set_depth_write_enabled (bool depth_write_enabled);
+ 		[Version (since = "1.8")]
+@@ -635,10 +520,6 @@ namespace Cogl {
+ 		public void set_blue_byte (uint8 blue);
+ 		[Version (since = "1.4")]
+ 		public void set_blue_float (float blue);
+-		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
+-		public void set_from_4f (float red, float green, float blue, float alpha);
+-		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
+-		public void set_from_4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+ 		[Version (since = "1.4")]
+ 		public void set_green (float green);
+ 		[Version (since = "1.4")]
+@@ -662,7 +543,7 @@ namespace Cogl {
+ 		public weak string name;
+ 		public ulong instance_count;
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "COGL_TYPE_MATRIX")]
++	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "COGL_TYPE_MATRIX")]
+ 	public struct Matrix {
+ 		public float xx;
+ 		public float yx;
+@@ -692,8 +573,7 @@ namespace Cogl {
+ 		public bool get_inverse (out Cogl.Matrix inverse);
+ 		[CCode (cname = "cogl_matrix_init_identity")]
+ 		public Matrix.identity ();
+-		public void init_from_euler (Cogl.Euler euler);
+-		public void init_from_quaternion (Cogl.Quaternion quaternion);
++		public void init_from_euler (Graphene.Euler euler);
+ 		[Version (since = "2.0")]
+ 		public void init_translation (float tx, float ty, float tz);
+ 		[Version (since = "1.8")]
+@@ -702,19 +582,15 @@ namespace Cogl {
+ 		public void look_at (float eye_position_x, float eye_position_y, float eye_position_z, float object_x, float object_y, float object_z, float world_up_x, float world_up_y, float world_up_z);
+ 		[CCode (cname = "cogl_matrix_multiply")]
+ 		public Matrix.multiply (Cogl.Matrix a, Cogl.Matrix b);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void ortho (float left, float right, float bottom, float top, float near, float far);
+ 		[Version (since = "1.10")]
+ 		public void orthographic (float x_1, float y_1, float x_2, float y_2, float near, float far);
+ 		public void perspective (float fov_y, float aspect, float z_near, float z_far);
+ 		public void project_points (int n_components, size_t stride_in, void* points_in, size_t stride_out, void* points_out, int n_points);
+ 		public void rotate (float angle, float x, float y, float z);
+ 		[Version (since = "2.0")]
+-		public void rotate_euler (Cogl.Euler euler);
+-		[Version (since = "2.0")]
+-		public void rotate_quaternion (Cogl.Quaternion quaternion);
++		public void rotate_euler (Graphene.Euler euler);
+ 		public void scale (float sx, float sy, float sz);
+-		public void transform_point (ref float x, ref float y, ref float z, ref float w);
++		public static void transform_point (ref Cogl.Matrix matrix, ref float x, ref float y, ref float z, ref float w);
+ 		public void transform_points (int n_components, size_t stride_in, void* points_in, size_t stride_out, void* points_out, int n_points);
+ 		public void translate (float x, float y, float z);
+ 		[Version (since = "1.10")]
+@@ -818,38 +694,33 @@ namespace Cogl {
+ 		NONE,
+ 		NO_GET_DATA
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FEATURE_", has_type_id = false)]
+-	[Flags]
+-	[Version (since = "0.8")]
+-	public enum FeatureFlags {
+-		TEXTURE_YUV,
+-		TEXTURE_READ_PIXELS,
+-		OFFSCREEN,
+-		OFFSCREEN_MULTISAMPLE,
+-		FOUR_CLIP_PLANES,
+-		STENCIL_BUFFER,
+-		VBOS,
+-		PBOS,
+-		UNSIGNED_INT_INDICES,
+-		DEPTH_RANGE,
+-		POINT_SPRITE,
+-		MAP_BUFFER_FOR_READ,
+-		MAP_BUFFER_FOR_WRITE,
+-		ONSCREEN_MULTIPLE,
+-		DEPTH_TEXTURE
++	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FEATURE_ID_", has_type_id = false)]
++	[Version (since = "1.10")]
++	public enum FeatureID {
++		[CCode (cname = "COGL_FEATURE_ID_UNSIGNED_INT_INDICES")]
++		OGL_FEATURE_ID_UNSIGNED_INT_INDICES,
++		[CCode (cname = "COGL_FEATURE_ID_MAP_BUFFER_FOR_READ")]
++		OGL_FEATURE_ID_MAP_BUFFER_FOR_READ,
++		[CCode (cname = "COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE")]
++		OGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE,
++		[CCode (cname = "COGL_FEATURE_ID_SWAP_BUFFERS_EVENT")]
++		OGL_FEATURE_ID_SWAP_BUFFERS_EVENT,
++		[CCode (cname = "COGL_FEATURE_ID_PRESENTATION_TIME")]
++		OGL_FEATURE_ID_PRESENTATION_TIME,
++		[CCode (cname = "COGL_FEATURE_ID_FENCE")]
++		OGL_FEATURE_ID_FENCE,
++		[CCode (cname = "COGL_FEATURE_ID_TEXTURE_RG")]
++		OGL_FEATURE_ID_TEXTURE_RG,
++		[CCode (cname = "COGL_FEATURE_ID_BUFFER_AGE")]
++		OGL_FEATURE_ID_BUFFER_AGE,
++		[CCode (cname = "COGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL")]
++		OGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FILTER_", has_type_id = false)]
+ 	public enum FilterReturn {
+ 		CONTINUE,
+ 		REMOVE
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FOG_MODE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum FogMode {
+-		LINEAR,
+-		EXPONENTIAL,
+-		EXPONENTIAL_SQUARED
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FRAME_EVENT_", has_type_id = false)]
+ 	[Version (since = "1.14")]
+ 	public enum FrameEvent {
+@@ -862,6 +733,14 @@ namespace Cogl {
+ 		FRAMEBUFFER_ERROR_ALLOCATE;
+ 		public static uint32 quark ();
+ 	}
++	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_GRAPHICS_RESET_STATUS_", has_type_id = false)]
++	public enum GraphicsResetStatus {
++		NO_ERROR,
++		GUILTY_CONTEXT_RESET,
++		INNOCENT_CONTEXT_RESET,
++		UNKNOWN_CONTEXT_RESET,
++		PURGED_CONTEXT_RESET
++	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_INDICES_TYPE_UNSIGNED_", has_type_id = false)]
+ 	public enum IndicesType {
+ 		BYTE,
+@@ -888,12 +767,6 @@ namespace Cogl {
+ 		NEAREST_MIPMAP_LINEAR,
+ 		LINEAR_MIPMAP_LINEAR
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_LAYER_TYPE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum MaterialLayerType {
+-		[CCode (cname = "COGL_MATERIAL_LAYER_TYPE_TEXTURE")]
+-		MATERIAL_LAYER_TYPE_TEXTURE
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_WRAP_MODE_", has_type_id = false)]
+ 	[Version (since = "1.4")]
+ 	public enum MaterialWrapMode {
+@@ -971,6 +844,8 @@ namespace Cogl {
+ 		DEPTH_16,
+ 		DEPTH_32,
+ 		DEPTH_24_STENCIL_8;
++		public int get_bytes_per_pixel (int plane);
++		public int get_n_planes ();
+ 		public unowned string to_string ();
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_READ_PIXELS_COLOR_", has_type_id = false)]
+@@ -1064,9 +939,9 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+ 	[Version (since = "1.8")]
+ 	public delegate void DebugObjectForeachTypeCallback (Cogl.DebugObjectTypeInfo info);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-	public delegate bool MaterialLayerCallback (Cogl.Material material, int layer_index);
++	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
++	[Version (since = "0.10")]
++	public delegate void FeatureCallback (Cogl.FeatureID feature);
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+ 	[Version (since = "1.16")]
+ 	public delegate void OnscreenDirtyCallback (Cogl.Onscreen onscreen, Cogl.OnscreenDirtyInfo info);
+@@ -1074,13 +949,9 @@ namespace Cogl {
+ 	[Version (since = "2.0")]
+ 	public delegate void OnscreenResizeCallback (Cogl.Onscreen onscreen, int width, int height);
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	public delegate void OnscreenX11MaskCallback (Cogl.Onscreen onscreen, uint32 event_mask);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+ 	[Version (since = "2.0")]
+ 	public delegate bool PipelineLayerCallback (Cogl.Pipeline pipeline, int layer_index);
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+-	public delegate void SwapBuffersNotify (Cogl.Framebuffer framebuffer);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+ 	public delegate bool Texture2DEGLImageExternalAlloc (Cogl.Texture2D tex_2d) throws GLib.Error;
+ 	[CCode (cheader_filename = "cogl/cogl.h", has_target = false)]
+ 	public delegate void UserDataDestroyCallback (void* data);
+@@ -1092,6 +963,8 @@ namespace Cogl {
+ 	public const int BGR_BIT;
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_DEPTH_BIT")]
+ 	public const int DEPTH_BIT;
++	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_PIXEL_FORMAT_MAX_PLANES")]
++	public const int PIXEL_FORMAT_MAX_PLANES;
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_PREMULT_BIT")]
+ 	public const int PREMULT_BIT;
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_STENCIL_BIT")]
+@@ -1099,19 +972,8 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_TEXTURE_MAX_WASTE")]
+ 	public const int TEXTURE_MAX_WASTE;
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void begin_gl ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	public static bool blit_framebuffer (Cogl.Framebuffer src, Cogl.Framebuffer dest, int src_x, int src_y, int dst_x, int dst_y, int width, int height) throws GLib.Error;
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static bool check_extension (string name, string ext);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void clear (Cogl.Color color, ulong buffers);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static bool clutter_check_extension_CLUTTER (string name, string ext);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	public static bool clutter_winsys_has_feature_CLUTTER (Cogl.WinsysFeature feature);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.0")]
+@@ -1129,57 +991,38 @@ namespace Cogl {
+ 	[Version (since = "1.8")]
+ 	public static void debug_object_print_instances ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void disable_fog ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void end_gl ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static bool features_available (Cogl.FeatureFlags features);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.0")]
+ 	public static void flush ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8.2")]
+-	public static void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
++	[Version (since = "1.10")]
++	public static void foreach_feature (Cogl.Context context, Cogl.FeatureCallback callback);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static bool get_backface_culling_enabled ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8")]
+-	public static void get_bitmasks (out int red, out int green, out int blue, out int alpha);
++	[Version (since = "1.14")]
++	public static int64 get_clock_time (Cogl.Context context);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static bool get_depth_test_enabled ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.8")]
+-	public static unowned Cogl.Framebuffer get_draw_framebuffer ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-	public static Cogl.FeatureFlags get_features ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Matrix get_modelview_matrix ();
++	public static Cogl.GraphicsResetStatus get_graphics_reset_status (Cogl.Context context);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 	public static GLib.OptionGroup get_option_group ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	public static GLib.Callback get_proc_address (string s);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Matrix get_projection_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void* get_source ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void get_viewport ([CCode (array_length = false)] out float v[4]);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18")]
+ 	public static GLib.Type gtype_matrix_get_type ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.10")]
++	public static bool has_feature (Cogl.Context context, Cogl.FeatureID feature);
++	[CCode (cheader_filename = "cogl/cogl.h")]
++	[Version (since = "1.10")]
++	public static bool is_context (void* object);
++	[CCode (cheader_filename = "cogl/cogl.h")]
++	[Version (since = "1.10")]
+ 	public static bool is_framebuffer (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.10")]
+@@ -1193,53 +1036,9 @@ namespace Cogl {
+ 	[Version (since = "1.10")]
+ 	public static bool is_texture_2d_sliced (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-	public static bool is_vertex_buffer_indices (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.4")]
+ 	public static bool matrix_equal (void* v1, void* v2);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-	public static void ortho (float left, float right, float bottom, float top, float near, float far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void perspective (float fovy, float aspect, float z_near, float z_far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void polygon (Cogl.TextureVertex vertices, uint n_vertices, bool use_color);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void pop_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void pop_source ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void push_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void push_source (void* material);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static void rectangle (float x_1, float y_1, float x_2, float y_2);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangle_with_multitexture_coords (float x1, float y1, float x2, float y2, [CCode (array_length = false)] float[] tex_coords, int tex_coords_len);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangle_with_texture_coords (float x1, float y1, float x2, float y2, float tx1, float ty1, float tx2, float ty2);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangles ([CCode (array_length = false)] float[] verts, uint n_rects);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "0.8.6")]
+-	public static void rectangles_with_texture_coords ([CCode (array_length = false)] float[] verts, uint n_rects);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void rotate (float angle, float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void scale (float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static void set_backface_culling_enabled (bool setting);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+@@ -1247,53 +1046,11 @@ namespace Cogl {
+ 	public static void set_depth_test_enabled (bool setting);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_fog (Cogl.Color fog_color, Cogl.FogMode mode, float density, float z_near, float z_far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void set_modelview_matrix (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void set_projection_matrix (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source (void* material);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color (Cogl.Color color);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color4f (float red, float green, float blue, float alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_texture (Cogl.Texture texture);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "1.2")]
+-	public static void set_viewport (int x, int y, int width, int height);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_compile (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static string shader_get_info_log (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static Cogl.ShaderType shader_get_type (Cogl.Handle handle);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static bool shader_is_compiled (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static unowned Cogl.Handle shader_ref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static void shader_source (Cogl.Handle shader, string source);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_unref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18", since = "1.0")]
+ 	public static Cogl.Texture texture_new_from_bitmap (Cogl.Bitmap bitmap, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+@@ -1306,59 +1063,6 @@ namespace Cogl {
+ 	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+ 	public static Cogl.Texture texture_new_with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.4")]
+-	public static void transform (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void translate (float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_add (Cogl.Handle handle, string attribute_name, uint8 n_components, Cogl.AttributeType type, bool normalized, uint16 stride, void* pointer);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_delete (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_disable (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_draw (Cogl.Handle handle, Cogl.VerticesMode mode, int first, int count);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_draw_elements (Cogl.Handle handle, Cogl.VerticesMode mode, Cogl.Handle indices, int min_index, int max_index, int indices_offset, int count);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_enable (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static uint vertex_buffer_get_n_vertices (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static unowned Cogl.Handle vertex_buffer_indices_get_for_quads (uint n_indices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.IndicesType vertex_buffer_indices_get_type (Cogl.Handle indices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static unowned Cogl.Handle vertex_buffer_new (uint n_vertices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static unowned Cogl.Handle vertex_buffer_ref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_submit (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static void vertex_buffer_unref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "0.8.2")]
+-	public static void viewport (uint width, uint height);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static uint32 x11_onscreen_get_visual_xid (Cogl.Onscreen onscreen);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.10")]
+ 	public static uint32 x11_onscreen_get_window_xid (Cogl.Onscreen onscreen);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "2.0")]
+-	public static void x11_onscreen_set_foreign_window_xid (Cogl.Onscreen onscreen, uint32 xid, [CCode (scope = "async")] Cogl.OnscreenX11MaskCallback update);
+ }
+diff --git vapi/mutter-cogl-4-custom.vala vapi/mutter-cogl-7-custom.vala
+similarity index 81%
+rename from vapi/mutter-cogl-4-custom.vala
+rename to vapi/mutter-cogl-7-custom.vala
+index 2551885a..c4d4b93a 100644
+--- vapi/mutter-cogl-4-custom.vala
++++ vapi/mutter-cogl-7-custom.vala
+@@ -1,10 +1,4 @@
+ namespace Cogl {
+-	[Compact]
+-	[CCode (cname = "CoglHandle")]
+-	public class Bitmap: Handle {
+-		public static Bitmap new_from_file (string filename) throws GLib.Error;
+-	}
+-
+ 	[Compact]
+ 	[CCode (cname = "CoglHandle")]
+ 	public class Buffer: Handle {
+@@ -42,7 +36,7 @@ namespace Cogl {
+ 		public bool is_vertex_buffer ();
+ 	}
+ 
+-	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "cogl_path_copy")] 
++	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "cogl_path_copy")]
+ 	[Compact]
+ 	public class Path {
+ 		public static void @new ();
+@@ -82,18 +76,6 @@ namespace Cogl {
+ 		public void source (string source);
+ 	}
+ 
+-	[Compact]
+-	[CCode (cname = "CoglHandle", ref_function = "cogl_texture_ref", unref_function = "cogl_texture_unref")]
+-	public class Texture: Handle {
+-		public Cogl.PixelFormat get_format ();
+-		public uint get_rowstride ();
+-		public Texture.from_bitmap (Cogl.Bitmap bmp_handle, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-		public Texture.from_data (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, uint rowstride, [CCode (array_length = false)] uchar[] data);
+-		public Texture.from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
+-		public Texture.from_sub_texture (Cogl.Texture full_texture, int sub_x, int sub_y, int sub_width, int sub_height);
+-		public Texture.with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-	}
+-
+ 	[Compact]
+ 	[CCode (cname = "CoglHandle", ref_function = "cogl_vertex_buffer_ref", unref_function = "cogl_vertex_buffer_unref")]
+ 	public class VertexBuffer: Handle {
+diff --git vapi/mutter-cogl-5.deps vapi/mutter-cogl-7.deps
+similarity index 100%
+rename from vapi/mutter-cogl-5.deps
+rename to vapi/mutter-cogl-7.deps
+diff --git vapi/mutter-cogl-4.vapi vapi/mutter-cogl-7.vapi
+similarity index 59%
+rename from vapi/mutter-cogl-4.vapi
+rename to vapi/mutter-cogl-7.vapi
+index 5de8f447..620c2317 100644
+--- vapi/mutter-cogl-4.vapi
++++ vapi/mutter-cogl-7.vapi
+@@ -1,12 +1,13 @@
+-/* mutter-cogl-4.vapi generated by vapigen, do not modify. */
++/* mutter-cogl-7.vapi generated by vapigen, do not modify. */
+ 
+-[CCode (cprefix = "Cogl", gir_namespace = "Cogl", gir_version = "4", lower_case_cprefix = "cogl_")]
++[CCode (cprefix = "Cogl", gir_namespace = "Cogl", gir_version = "7", lower_case_cprefix = "cogl_")]
+ namespace Cogl {
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle", type_id = "cogl_bitmap_get_gtype ()")]
+-	[Compact]
+-	public class Bitmap : Cogl.Handle {
++	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_bitmap_get_gtype ()")]
++	public class Bitmap : Cogl.Object {
++		[CCode (has_construct_function = false)]
++		protected Bitmap ();
+ 		public static uint32 error_quark ();
+-		[CCode (has_construct_function = false, type = "CoglBitmap*")]
++		[CCode (has_construct_function = false)]
+ 		[Version (since = "1.0")]
+ 		public Bitmap.from_file (string filename) throws GLib.Error;
+ 		[Version (since = "1.10")]
+@@ -16,10 +17,9 @@ namespace Cogl {
+ 		[Version (since = "1.10")]
+ 		public int get_rowstride ();
+ 		[Version (since = "1.0")]
+-		public static Cogl.Bool get_size_from_file (string filename, out int width, out int height);
++		public static bool get_size_from_file (string filename, out int width, out int height);
+ 		[Version (since = "1.10")]
+ 		public int get_width ();
+-		public static Cogl.Bitmap new_from_file (string filename) throws GLib.Error;
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle")]
+ 	[Compact]
+@@ -28,15 +28,28 @@ namespace Cogl {
+ 		public bool set_data (size_t offset, [CCode (array_length_type = "size_t")] uint8[] data);
+ 		public void unmap ();
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+-	[Compact]
+-	public class Euler {
++	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_context_get_gtype ()")]
++	public class Context : Cogl.Object {
++		[CCode (has_construct_function = false)]
++		protected Context ();
++		public bool is_hardware_accelerated ();
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_frame_closure_get_gtype ()")]
+ 	[Compact]
+ 	[Version (since = "1.14")]
+ 	public class FrameClosure {
+ 	}
++	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_frame_info_get_gtype ()")]
++	public class FrameInfo : Cogl.Object {
++		[CCode (has_construct_function = false)]
++		protected FrameInfo ();
++		[Version (since = "1.14")]
++		public int64 get_frame_counter ();
++		[Version (since = "1.14")]
++		public int64 get_presentation_time ();
++		[Version (since = "1.14")]
++		public float get_refresh_rate ();
++	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", ref_function = "cogl_handle_ref", unref_function = "cogl_handle_unref")]
+ 	[Compact]
+ 	public class Handle {
+@@ -65,65 +78,20 @@ namespace Cogl {
+ 		[CCode (has_construct_function = false)]
+ 		[Version (deprecated = true, deprecated_since = "1.16")]
+ 		public Material ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.2")]
+-		public Cogl.Material copy ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void foreach_layer (Cogl.MaterialLayerCallback callback);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_ambient (Cogl.Color ambient);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Color get_color ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_diffuse (Cogl.Color diffuse);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_emission (Cogl.Color emission);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.Bool get_layer_point_sprite_coords_enabled (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_p (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_s (int layer_index);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-		public Cogl.MaterialWrapMode get_layer_wrap_mode_t (int layer_index);
+-		public unowned GLib.List<Cogl.MaterialLayer> get_layers ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public int get_n_layers ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public float get_point_size ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public float get_shininess ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void get_specular (Cogl.Color specular);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public unowned Cogl.Handle get_user_program ();
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "1.0")]
+-		public static unowned Cogl.Handle @ref (Cogl.Handle material);
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public void remove_layer (int layer_index);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_alpha_test_function (Cogl.MaterialAlphaFunc alpha_func, float alpha_reference);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_ambient (Cogl.Color ambient);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_ambient_and_diffuse (Cogl.Color color);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Bool set_blend (string blend_string) throws GLib.Error;
++		public bool set_blend (string blend_string) throws GLib.Error;
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_blend_constant (Cogl.Color constant_color);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_color (Cogl.Color color);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_color4f (float red, float green, float blue, float alpha);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_diffuse (Cogl.Color diffuse);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_emission (Cogl.Color emission);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_layer (int layer_index, Cogl.Handle texture);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public Cogl.Bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
++		public bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 		public void set_layer_combine_constant (int layer_index, Cogl.Color constant);
+ 		[Version (deprecated = true, deprecated_since = "1.16")]
+@@ -131,43 +99,15 @@ namespace Cogl {
+ 		[Version (deprecated = true, deprecated_since = "1.16")]
+ 		public void set_layer_matrix (int layer_index, Cogl.Matrix matrix);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.Bool set_layer_point_sprite_coords_enabled (int layer_index, Cogl.Bool enable) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_p (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_s (int layer_index, Cogl.MaterialWrapMode mode);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public void set_layer_wrap_mode_t (int layer_index, Cogl.MaterialWrapMode mode);
++		public bool set_layer_point_sprite_coords_enabled (int layer_index, bool enable) throws GLib.Error;
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+ 		public void set_point_size (float point_size);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_shininess (float shininess);
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-		public void set_specular (Cogl.Color specular);
+ 		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+ 		public void set_user_program (Cogl.Handle program);
+-		[Version (deprecated = true, deprecated_since = "1.2", since = "1.0")]
+-		public static void unref (Cogl.Handle material);
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+ 	[Compact]
+ 	public class MaterialLayer {
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialFilter get_mag_filter ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialFilter get_min_filter ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public unowned Cogl.Handle get_texture ();
+-		[Version (deprecated = true, deprecated_since = "1.16")]
+-		public Cogl.MaterialLayerType get_type ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_p ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_s ();
+-		[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-		public Cogl.MaterialWrapMode get_wrap_mode_t ();
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_object_get_gtype ()")]
+ 	public abstract class Object {
+@@ -178,13 +118,9 @@ namespace Cogl {
+ 	public class Offscreen : Cogl.Object, Cogl.Framebuffer {
+ 		[CCode (has_construct_function = false)]
+ 		protected Offscreen ();
+-		[Version (deprecated = true, deprecated_since = "1.2")]
+-		public static void* @ref (void* offscreen);
+ 		[CCode (has_construct_function = false)]
+ 		[Version (deprecated = true, deprecated_since = "1.16")]
+ 		public Offscreen.to_texture (Cogl.Texture texture);
+-		[Version (deprecated = true, deprecated_since = "1.2")]
+-		public static void unref (void* offscreen);
+ 		[CCode (has_construct_function = false)]
+ 		public Offscreen.with_texture (Cogl.Texture texture);
+ 	}
+@@ -194,17 +130,16 @@ namespace Cogl {
+ 		protected Onscreen ();
+ 		[Version (since = "1.16")]
+ 		public Cogl.OnscreenDirtyClosure add_dirty_callback ([CCode (delegate_target_pos = 1.5)] Cogl.OnscreenDirtyCallback callback, Cogl.UserDataDestroyCallback? destroy);
++		[Version (since = "1.14")]
++		public Cogl.FrameClosure add_frame_callback ([CCode (delegate_target_pos = 1.5)] Cogl.FrameCallback callback, Cogl.UserDataDestroyCallback? destroy);
+ 		[Version (since = "2.0")]
+ 		public Cogl.OnscreenResizeClosure add_resize_callback ([CCode (delegate_target_pos = 1.5)] Cogl.OnscreenResizeCallback callback, Cogl.UserDataDestroyCallback? destroy);
+-		[Version (deprecated = true, deprecated_since = "1.14", since = "1.10")]
+-		public uint add_swap_buffers_callback (Cogl.SwapBuffersNotify callback);
+-		public static void clutter_backend_set_size_CLUTTER (int width, int height);
+ 		[Version (since = "1.14")]
+ 		public int get_buffer_age ();
+ 		[Version (since = "1.14")]
+ 		public int64 get_frame_counter ();
+ 		[Version (since = "2.0")]
+-		public Cogl.Bool get_resizable ();
++		public bool get_resizable ();
+ 		[Version (since = "2.0")]
+ 		public void hide ();
+ 		[Version (since = "1.16")]
+@@ -213,18 +148,16 @@ namespace Cogl {
+ 		public void remove_frame_callback (Cogl.FrameClosure closure);
+ 		[Version (since = "2.0")]
+ 		public void remove_resize_callback (Cogl.OnscreenResizeClosure closure);
+-		[Version (deprecated = true, deprecated_since = "1.14", since = "1.10")]
+-		public void remove_swap_buffers_callback (uint id);
+ 		[Version (since = "2.0")]
+-		public void set_resizable (Cogl.Bool resizable);
++		public void set_resizable (bool resizable);
+ 		[Version (since = "2.0")]
+ 		public void show ();
+ 		[Version (since = "1.10")]
+-		public void swap_buffers ();
++		public void swap_buffers (Cogl.FrameInfo frame_info);
+ 		[Version (since = "1.16")]
+-		public void swap_buffers_with_damage (int rectangles, int n_rectangles);
++		public void swap_buffers_with_damage (int rectangles, int n_rectangles, Cogl.FrameInfo info);
+ 		[Version (since = "1.10")]
+-		public void swap_region (int rectangles, int n_rectangles);
++		public void swap_region (int rectangles, int n_rectangles, Cogl.FrameInfo info);
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "cogl_onscreen_dirty_closure_get_gtype ()")]
+ 	[Compact]
+@@ -244,7 +177,8 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_pipeline_get_gtype ()")]
+ 	public class Pipeline : Cogl.Object {
+ 		[CCode (has_construct_function = false)]
+-		protected Pipeline ();
++		[Version (since = "2.0")]
++		public Pipeline (Cogl.Context context);
+ 		[Version (since = "2.0")]
+ 		public Cogl.Pipeline copy ();
+ 		[Version (since = "2.0")]
+@@ -254,44 +188,30 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public float get_alpha_test_reference ();
+ 		[Version (since = "2.0")]
+-		public void get_ambient (Cogl.Color ambient);
+-		[Version (since = "2.0")]
+ 		public Cogl.Color get_color ();
+-		[Version (since = "1.8")]
+-		public Cogl.ColorMask get_color_mask ();
+ 		[Version (since = "2.0")]
+ 		public Cogl.PipelineCullFaceMode get_cull_face_mode ();
+ 		[Version (since = "2.0")]
+-		public void get_diffuse (Cogl.Color diffuse);
+-		[Version (since = "2.0")]
+-		public void get_emission (Cogl.Color emission);
+-		[Version (since = "2.0")]
+ 		public Cogl.Winding get_front_face_winding ();
+ 		[Version (since = "1.10")]
+ 		public Cogl.PipelineFilter get_layer_mag_filter (int layer_index);
+ 		[Version (since = "1.10")]
+ 		public Cogl.PipelineFilter get_layer_min_filter (int layer_index);
+ 		[Version (since = "2.0")]
+-		public Cogl.Bool get_layer_point_sprite_coords_enabled (int layer_index);
++		public bool get_layer_point_sprite_coords_enabled (int layer_index);
+ 		[Version (since = "1.10")]
+ 		public unowned Cogl.Texture get_layer_texture (int layer_index);
+ 		[Version (since = "1.6")]
+-		public Cogl.PipelineWrapMode get_layer_wrap_mode_p (int layer_index);
+-		[Version (since = "1.6")]
+ 		public Cogl.PipelineWrapMode get_layer_wrap_mode_s (int layer_index);
+ 		[Version (since = "1.6")]
+ 		public Cogl.PipelineWrapMode get_layer_wrap_mode_t (int layer_index);
+ 		[Version (since = "2.0")]
+ 		public int get_n_layers ();
+ 		[Version (since = "2.0")]
+-		public Cogl.Bool get_per_vertex_point_size ();
++		public bool get_per_vertex_point_size ();
+ 		[Version (since = "2.0")]
+ 		public float get_point_size ();
+ 		[Version (since = "2.0")]
+-		public float get_shininess ();
+-		[Version (since = "2.0")]
+-		public void get_specular (Cogl.Color specular);
+-		[Version (since = "2.0")]
+ 		public int get_uniform_location (string uniform_name);
+ 		[Version (since = "2.0")]
+ 		public unowned Cogl.Handle get_user_program ();
+@@ -300,11 +220,7 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public void set_alpha_test_function (Cogl.PipelineAlphaFunc alpha_func, float alpha_reference);
+ 		[Version (since = "2.0")]
+-		public void set_ambient (Cogl.Color ambient);
+-		[Version (since = "2.0")]
+-		public void set_ambient_and_diffuse (Cogl.Color color);
+-		[Version (since = "2.0")]
+-		public Cogl.Bool set_blend (string blend_string) throws GLib.Error;
++		public bool set_blend (string blend_string) throws GLib.Error;
+ 		[Version (since = "2.0")]
+ 		public void set_blend_constant (Cogl.Color constant_color);
+ 		[Version (since = "2.0")]
+@@ -313,46 +229,35 @@ namespace Cogl {
+ 		public void set_color4f (float red, float green, float blue, float alpha);
+ 		[Version (since = "2.0")]
+ 		public void set_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-		[Version (since = "1.8")]
+-		public void set_color_mask (Cogl.ColorMask color_mask);
+ 		[Version (since = "2.0")]
+ 		public void set_cull_face_mode (Cogl.PipelineCullFaceMode cull_face_mode);
+ 		[Version (since = "2.0")]
+-		public void set_diffuse (Cogl.Color diffuse);
+-		[Version (since = "2.0")]
+-		public void set_emission (Cogl.Color emission);
+-		[Version (since = "2.0")]
+ 		public void set_front_face_winding (Cogl.Winding front_winding);
+ 		[Version (since = "2.0")]
+-		public Cogl.Bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
++		public bool set_layer_combine (int layer_index, string blend_string) throws GLib.Error;
+ 		[Version (since = "2.0")]
+ 		public void set_layer_combine_constant (int layer_index, Cogl.Color constant);
+ 		[Version (since = "1.10")]
+ 		public void set_layer_filters (int layer_index, Cogl.PipelineFilter min_filter, Cogl.PipelineFilter mag_filter);
+ 		[Version (since = "1.10")]
+ 		public void set_layer_matrix (int layer_index, Cogl.Matrix matrix);
++		public void set_layer_max_mipmap_level (int layer, int max_level);
+ 		[Version (since = "1.10")]
+-		public void set_layer_null_texture (int layer_index, Cogl.TextureType texture_type);
++		public void set_layer_null_texture (int layer_index);
+ 		[Version (since = "2.0")]
+-		public Cogl.Bool set_layer_point_sprite_coords_enabled (int layer_index, Cogl.Bool enable) throws GLib.Error;
++		public bool set_layer_point_sprite_coords_enabled (int layer_index, bool enable) throws GLib.Error;
+ 		public void set_layer_texture (int layer_index, Cogl.Texture texture);
+ 		[Version (since = "2.0")]
+ 		public void set_layer_wrap_mode (int layer_index, Cogl.PipelineWrapMode mode);
+ 		[Version (since = "2.0")]
+-		public void set_layer_wrap_mode_p (int layer_index, Cogl.PipelineWrapMode mode);
+-		[Version (since = "2.0")]
+ 		public void set_layer_wrap_mode_s (int layer_index, Cogl.PipelineWrapMode mode);
+ 		[Version (since = "2.0")]
+ 		public void set_layer_wrap_mode_t (int layer_index, Cogl.PipelineWrapMode mode);
+ 		[Version (since = "2.0")]
+-		public Cogl.Bool set_per_vertex_point_size (Cogl.Bool enable) throws GLib.Error;
++		public bool set_per_vertex_point_size (bool enable) throws GLib.Error;
+ 		[Version (since = "2.0")]
+ 		public void set_point_size (float point_size);
+ 		[Version (since = "2.0")]
+-		public void set_shininess (float shininess);
+-		[Version (since = "2.0")]
+-		public void set_specular (Cogl.Color specular);
+-		[Version (since = "2.0")]
+ 		public void set_uniform_1f (int uniform_location, float value);
+ 		[Version (since = "2.0")]
+ 		public void set_uniform_1i (int uniform_location, int value);
+@@ -361,7 +266,7 @@ namespace Cogl {
+ 		[Version (since = "2.0")]
+ 		public void set_uniform_int (int uniform_location, int n_components, int count, int value);
+ 		[Version (since = "2.0")]
+-		public void set_uniform_matrix (int uniform_location, int dimensions, int count, Cogl.Bool transpose, float value);
++		public void set_uniform_matrix (int uniform_location, int dimensions, int count, bool transpose, float value);
+ 		[Version (since = "2.0")]
+ 		public void set_user_program (Cogl.Handle program);
+ 	}
+@@ -388,7 +293,7 @@ namespace Cogl {
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", has_type_id = false)]
+ 	[Compact]
+-	public class Quaternion {
++	public class Scanout {
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle", ref_function = "cogl_shader_ref", unref_function = "cogl_shader_unref")]
+ 	[Compact]
+@@ -401,48 +306,23 @@ namespace Cogl {
+ 		public bool is_compiled ();
+ 		public void source (string source);
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle", ref_function = "cogl_texture_ref", type_id = "cogl_texture_get_gtype ()", unref_function = "cogl_texture_unref")]
+-	[Compact]
+-	public class Texture : Cogl.Handle {
+-		public Cogl.Bool allocate () throws GLib.Error;
+-		public static uint32 error_quark ();
+-		public Texture.from_bitmap (Cogl.Bitmap bmp_handle, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-		public Texture.from_data (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, uint rowstride, [CCode (array_length = false)] uchar[] data);
+-		public Texture.from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
+-		public Texture.from_sub_texture (Cogl.Texture full_texture, int sub_x, int sub_y, int sub_width, int sub_height);
+-		[Version (since = "1.18")]
+-		public Cogl.TextureComponents get_components ();
+-		public int get_data (Cogl.PixelFormat format, uint rowstride, uint8 data);
+-		public Cogl.PixelFormat get_format ();
+-		public Cogl.Bool get_gl_texture (out uint out_gl_handle, out uint out_gl_target);
+-		public uint get_height ();
+-		public int get_max_waste ();
+-		[Version (since = "1.18")]
+-		public Cogl.Bool get_premultiplied ();
+-		public uint get_rowstride ();
+-		public uint get_width ();
+-		public Cogl.Bool is_sliced ();
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "1.0")]
+-		public static Cogl.Texture new_from_bitmap (Cogl.Bitmap bitmap, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_from_data (int width, int height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, int rowstride, uint8 data);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_from_foreign (uint gl_handle, uint gl_target, uint width, uint height, uint x_pot_waste, uint y_pot_waste, Cogl.PixelFormat format);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "1.2")]
+-		public Cogl.Texture new_from_sub_texture (int sub_x, int sub_y, int sub_width, int sub_height);
+-		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-		public static Cogl.Texture new_with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+-		[Version (since = "1.18")]
+-		public void set_components (Cogl.TextureComponents components);
+-		public Cogl.Bool set_data (Cogl.PixelFormat format, int rowstride, uint8 data, int level) throws GLib.Error;
+-		[Version (since = "1.18")]
+-		public void set_premultiplied (Cogl.Bool premultiplied);
+-		public Cogl.Bool set_region (int src_x, int src_y, int dst_x, int dst_y, uint dst_width, uint dst_height, int width, int height, Cogl.PixelFormat format, uint rowstride, uint8 data);
+-		[Version (since = "1.8")]
+-		public Cogl.Bool set_region_from_bitmap (int src_x, int src_y, int dst_x, int dst_y, uint dst_width, uint dst_height, Cogl.Bitmap bitmap);
+-		public Texture.with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
++	[CCode (cheader_filename = "cogl/cogl.h", lower_case_csuffix = "texture_2d", type_id = "cogl_texture_2d_get_gtype ()")]
++	public class Texture2D : Cogl.Object, Cogl.Texture {
++		[CCode (has_construct_function = false)]
++		protected Texture2D ();
++		public void egl_image_external_alloc_finish (void* user_data, GLib.DestroyNotify destroy);
++		public void egl_image_external_bind ();
++		[CCode (has_construct_function = false)]
++		[Version (since = "2.0")]
++		public Texture2D.from_bitmap (Cogl.Bitmap bitmap);
++	}
++	[CCode (cheader_filename = "cogl/cogl.h", lower_case_csuffix = "texture_2d_sliced", type_id = "cogl_texture_2d_sliced_get_gtype ()")]
++	public class Texture2DSliced : Cogl.Object, Cogl.Texture {
++		[CCode (has_construct_function = false)]
++		protected Texture2DSliced ();
++		[CCode (has_construct_function = false)]
++		[Version (since = "1.16")]
++		public Texture2DSliced.from_bitmap (Cogl.Bitmap bmp, int max_waste);
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "CoglHandle", ref_function = "cogl_vertex_buffer_ref", unref_function = "cogl_vertex_buffer_unref")]
+ 	[Compact]
+@@ -468,7 +348,7 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_framebuffer_get_gtype ()")]
+ 	public interface Framebuffer : Cogl.Object {
+ 		[Version (since = "1.8")]
+-		public Cogl.Bool allocate () throws GLib.Error;
++		public bool allocate () throws GLib.Error;
+ 		[Version (since = "1.8")]
+ 		public void clear (ulong buffers, Cogl.Color color);
+ 		[Version (since = "1.8")]
+@@ -488,6 +368,7 @@ namespace Cogl {
+ 		public static uint32 error_quark ();
+ 		[Version (since = "1.10")]
+ 		public void finish ();
++		public void flush ();
+ 		[Version (since = "1.10")]
+ 		public void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
+ 		[Version (since = "1.8")]
+@@ -495,22 +376,18 @@ namespace Cogl {
+ 		[Version (since = "1.8")]
+ 		public int get_blue_bits ();
+ 		[Version (since = "1.8")]
+-		public Cogl.ColorMask get_color_mask ();
++		public unowned Cogl.Context get_context ();
+ 		[Version (since = "2.0")]
+ 		public int get_depth_bits ();
+-		[Version (since = "1.14")]
+-		public unowned Cogl.Texture get_depth_texture ();
+-		[Version (since = "1.14")]
+-		public Cogl.Bool get_depth_texture_enabled ();
+ 		[Version (since = "1.18")]
+-		public Cogl.Bool get_depth_write_enabled ();
++		public bool get_depth_write_enabled ();
+ 		[Version (since = "1.8")]
+-		public Cogl.Bool get_dither_enabled ();
++		public bool get_dither_enabled ();
+ 		[Version (since = "1.8")]
+ 		public int get_green_bits ();
+ 		[Version (since = "1.8")]
+ 		public int get_height ();
+-		public Cogl.Bool get_is_stereo ();
++		public bool get_is_stereo ();
+ 		[Version (since = "1.10")]
+ 		public Cogl.Matrix get_modelview_matrix ();
+ 		[Version (since = "1.10")]
+@@ -547,12 +424,13 @@ namespace Cogl {
+ 		public void push_matrix ();
+ 		[Version (since = "1.10")]
+ 		public void push_rectangle_clip (float x_1, float y_1, float x_2, float y_2);
++		public void push_region_clip (Cairo.Region region);
+ 		[Version (since = "1.10")]
+ 		public void push_scissor_clip (int x, int y, int width, int height);
+ 		[Version (since = "1.10")]
+-		public Cogl.Bool read_pixels (int x, int y, int width, int height, Cogl.PixelFormat format, uint8 pixels);
++		public bool read_pixels (int x, int y, int width, int height, Cogl.PixelFormat format, uint8 pixels);
+ 		[Version (since = "1.10")]
+-		public Cogl.Bool read_pixels_into_bitmap (int x, int y, Cogl.ReadPixelsFlags source, Cogl.Bitmap bitmap);
++		public bool read_pixels_into_bitmap (int x, int y, Cogl.ReadPixelsFlags source, Cogl.Bitmap bitmap);
+ 		[Version (since = "1.8")]
+ 		public void resolve_samples ();
+ 		[Version (since = "1.8")]
+@@ -560,19 +438,13 @@ namespace Cogl {
+ 		[Version (since = "1.10")]
+ 		public void rotate (float angle, float x, float y, float z);
+ 		[Version (since = "2.0")]
+-		public void rotate_euler (Cogl.Euler euler);
+-		[Version (since = "2.0")]
+-		public void rotate_quaternion (Cogl.Quaternion quaternion);
++		public void rotate_euler (Graphene.Euler euler);
+ 		[Version (since = "1.10")]
+ 		public void scale (float x, float y, float z);
+-		[Version (since = "1.8")]
+-		public void set_color_mask (Cogl.ColorMask color_mask);
+-		[Version (since = "1.14")]
+-		public void set_depth_texture_enabled (Cogl.Bool enabled);
+ 		[Version (since = "1.18")]
+-		public void set_depth_write_enabled (Cogl.Bool depth_write_enabled);
++		public void set_depth_write_enabled (bool depth_write_enabled);
+ 		[Version (since = "1.8")]
+-		public void set_dither_enabled (Cogl.Bool dither_enabled);
++		public void set_dither_enabled (bool dither_enabled);
+ 		[Version (since = "1.10")]
+ 		public void set_modelview_matrix (Cogl.Matrix matrix);
+ 		[Version (since = "1.10")]
+@@ -588,6 +460,39 @@ namespace Cogl {
+ 		[Version (since = "1.10")]
+ 		public void translate (float x, float y, float z);
+ 	}
++	[CCode (cheader_filename = "cogl/cogl.h", type_id = "cogl_texture_get_gtype ()")]
++	public interface Texture : Cogl.Object {
++		public bool allocate () throws GLib.Error;
++		public static uint32 error_quark ();
++		[Version (since = "1.18")]
++		public Cogl.TextureComponents get_components ();
++		public int get_data (Cogl.PixelFormat format, uint rowstride, [CCode (array_length = false)] uint8[]? data);
++		public bool get_gl_texture (out uint out_gl_handle, out uint out_gl_target);
++		public uint get_height ();
++		public int get_max_waste ();
++		[Version (since = "1.18")]
++		public bool get_premultiplied ();
++		public uint get_width ();
++		public bool is_sliced ();
++		[Version (deprecated = true, deprecated_since = "1.18", since = "1.0")]
++		public static Cogl.Texture new_from_bitmap (Cogl.Bitmap bitmap, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
++		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
++		public static Cogl.Texture new_from_data (int width, int height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, int rowstride, [CCode (array_length = false)] uint8[] data);
++		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
++		public static Cogl.Texture new_from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
++		[Version (deprecated = true, deprecated_since = "1.18", since = "1.2")]
++		public Cogl.Texture new_from_sub_texture (int sub_x, int sub_y, int sub_width, int sub_height);
++		[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
++		public static Cogl.Texture new_with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
++		[Version (since = "1.18")]
++		public void set_components (Cogl.TextureComponents components);
++		public bool set_data (Cogl.PixelFormat format, int rowstride, [CCode (array_length = false)] uint8[] data, int level) throws GLib.Error;
++		[Version (since = "1.18")]
++		public void set_premultiplied (bool premultiplied);
++		public bool set_region (int src_x, int src_y, int dst_x, int dst_y, uint dst_width, uint dst_height, int width, int height, Cogl.PixelFormat format, uint rowstride, [CCode (array_length = false)] uint8[] data);
++		[Version (since = "1.8")]
++		public bool set_region_from_bitmap (int src_x, int src_y, int dst_x, int dst_y, uint dst_width, uint dst_height, Cogl.Bitmap bitmap);
++	}
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[SimpleType]
+ 	public struct Angle : int32 {
+@@ -635,10 +540,6 @@ namespace Cogl {
+ 		public void set_blue_byte (uint8 blue);
+ 		[Version (since = "1.4")]
+ 		public void set_blue_float (float blue);
+-		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
+-		public void set_from_4f (float red, float green, float blue, float alpha);
+-		[Version (deprecated = true, deprecated_since = "1.4", since = "1.0")]
+-		public void set_from_4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+ 		[Version (since = "1.4")]
+ 		public void set_green (float green);
+ 		[Version (since = "1.4")]
+@@ -662,7 +563,7 @@ namespace Cogl {
+ 		public weak string name;
+ 		public ulong instance_count;
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", type_id = "COGL_TYPE_MATRIX")]
++	[CCode (cheader_filename = "cogl/cogl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "COGL_TYPE_MATRIX")]
+ 	public struct Matrix {
+ 		public float xx;
+ 		public float yx;
+@@ -689,32 +590,27 @@ namespace Cogl {
+ 		public void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
+ 		public unowned float[] get_array ();
+ 		[Version (since = "1.2")]
+-		public Cogl.Bool get_inverse (out Cogl.Matrix inverse);
++		public bool get_inverse (out Cogl.Matrix inverse);
+ 		[CCode (cname = "cogl_matrix_init_identity")]
+ 		public Matrix.identity ();
+-		public void init_from_euler (Cogl.Euler euler);
+-		public void init_from_quaternion (Cogl.Quaternion quaternion);
++		public void init_from_euler (Graphene.Euler euler);
+ 		[Version (since = "2.0")]
+ 		public void init_translation (float tx, float ty, float tz);
+ 		[Version (since = "1.8")]
+-		public Cogl.Bool is_identity ();
++		public bool is_identity ();
+ 		[Version (since = "1.8")]
+ 		public void look_at (float eye_position_x, float eye_position_y, float eye_position_z, float object_x, float object_y, float object_z, float world_up_x, float world_up_y, float world_up_z);
+ 		[CCode (cname = "cogl_matrix_multiply")]
+ 		public Matrix.multiply (Cogl.Matrix a, Cogl.Matrix b);
+-		[Version (deprecated = true, deprecated_since = "1.10")]
+-		public void ortho (float left, float right, float bottom, float top, float near, float far);
+ 		[Version (since = "1.10")]
+ 		public void orthographic (float x_1, float y_1, float x_2, float y_2, float near, float far);
+ 		public void perspective (float fov_y, float aspect, float z_near, float z_far);
+ 		public void project_points (int n_components, size_t stride_in, void* points_in, size_t stride_out, void* points_out, int n_points);
+ 		public void rotate (float angle, float x, float y, float z);
+ 		[Version (since = "2.0")]
+-		public void rotate_euler (Cogl.Euler euler);
+-		[Version (since = "2.0")]
+-		public void rotate_quaternion (Cogl.Quaternion quaternion);
++		public void rotate_euler (Graphene.Euler euler);
+ 		public void scale (float sx, float sy, float sz);
+-		public void transform_point (ref float x, ref float y, ref float z, ref float w);
++		public static void transform_point (ref Cogl.Matrix matrix, ref float x, ref float y, ref float z, ref float w);
+ 		public void transform_points (int n_components, size_t stride_in, void* points_in, size_t stride_out, void* points_out, int n_points);
+ 		public void translate (float x, float y, float z);
+ 		[Version (since = "1.10")]
+@@ -801,16 +697,6 @@ namespace Cogl {
+ 		WINDOW_BUFFER,
+ 		OFFSCREEN_BUFFER
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_COLOR_MASK_", has_type_id = false)]
+-	[Flags]
+-	public enum ColorMask {
+-		NONE,
+-		RED,
+-		GREEN,
+-		BLUE,
+-		ALPHA,
+-		ALL
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_DEPTH_TEST_FUNCTION_", has_type_id = false)]
+ 	public enum DepthTestFunction {
+ 		NEVER,
+@@ -822,46 +708,41 @@ namespace Cogl {
+ 		GEQUAL,
+ 		ALWAYS
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FEATURE_", has_type_id = false)]
++	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_EGL_IMAGE_FLAG_", has_type_id = false)]
+ 	[Flags]
+-	[Version (since = "0.8")]
+-	public enum FeatureFlags {
+-		TEXTURE_RECTANGLE,
+-		TEXTURE_NPOT,
+-		TEXTURE_YUV,
+-		TEXTURE_READ_PIXELS,
+-		SHADERS_GLSL,
+-		OFFSCREEN,
+-		OFFSCREEN_MULTISAMPLE,
+-		OFFSCREEN_BLIT,
+-		FOUR_CLIP_PLANES,
+-		STENCIL_BUFFER,
+-		VBOS,
+-		PBOS,
+-		UNSIGNED_INT_INDICES,
+-		DEPTH_RANGE,
+-		TEXTURE_NPOT_BASIC,
+-		TEXTURE_NPOT_MIPMAP,
+-		TEXTURE_NPOT_REPEAT,
+-		POINT_SPRITE,
+-		TEXTURE_3D,
+-		MAP_BUFFER_FOR_READ,
+-		MAP_BUFFER_FOR_WRITE,
+-		ONSCREEN_MULTIPLE,
+-		DEPTH_TEXTURE
++	public enum EglImageFlags {
++		NONE,
++		NO_GET_DATA
++	}
++	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FEATURE_ID_", has_type_id = false)]
++	[Version (since = "1.10")]
++	public enum FeatureID {
++		[CCode (cname = "COGL_FEATURE_ID_UNSIGNED_INT_INDICES")]
++		OGL_FEATURE_ID_UNSIGNED_INT_INDICES,
++		[CCode (cname = "COGL_FEATURE_ID_MAP_BUFFER_FOR_READ")]
++		OGL_FEATURE_ID_MAP_BUFFER_FOR_READ,
++		[CCode (cname = "COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE")]
++		OGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE,
++		[CCode (cname = "COGL_FEATURE_ID_SWAP_BUFFERS_EVENT")]
++		OGL_FEATURE_ID_SWAP_BUFFERS_EVENT,
++		[CCode (cname = "COGL_FEATURE_ID_PRESENTATION_TIME")]
++		OGL_FEATURE_ID_PRESENTATION_TIME,
++		[CCode (cname = "COGL_FEATURE_ID_FENCE")]
++		OGL_FEATURE_ID_FENCE,
++		[CCode (cname = "COGL_FEATURE_ID_TEXTURE_RG")]
++		OGL_FEATURE_ID_TEXTURE_RG,
++		[CCode (cname = "COGL_FEATURE_ID_BUFFER_AGE")]
++		OGL_FEATURE_ID_BUFFER_AGE,
++		[CCode (cname = "COGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL")]
++		OGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL,
++		[CCode (cname = "COGL_FEATURE_ID_BLIT_FRAMEBUFFER")]
++		OGL_FEATURE_ID_BLIT_FRAMEBUFFER
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FILTER_", has_type_id = false)]
+ 	public enum FilterReturn {
+ 		CONTINUE,
+ 		REMOVE
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FOG_MODE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum FogMode {
+-		LINEAR,
+-		EXPONENTIAL,
+-		EXPONENTIAL_SQUARED
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_FRAME_EVENT_", has_type_id = false)]
+ 	[Version (since = "1.14")]
+ 	public enum FrameEvent {
+@@ -874,6 +755,14 @@ namespace Cogl {
+ 		FRAMEBUFFER_ERROR_ALLOCATE;
+ 		public static uint32 quark ();
+ 	}
++	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_GRAPHICS_RESET_STATUS_", has_type_id = false)]
++	public enum GraphicsResetStatus {
++		NO_ERROR,
++		GUILTY_CONTEXT_RESET,
++		INNOCENT_CONTEXT_RESET,
++		UNKNOWN_CONTEXT_RESET,
++		PURGED_CONTEXT_RESET
++	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_INDICES_TYPE_UNSIGNED_", has_type_id = false)]
+ 	public enum IndicesType {
+ 		BYTE,
+@@ -900,12 +789,6 @@ namespace Cogl {
+ 		NEAREST_MIPMAP_LINEAR,
+ 		LINEAR_MIPMAP_LINEAR
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_LAYER_TYPE_", has_type_id = false)]
+-	[Version (since = "1.0")]
+-	public enum MaterialLayerType {
+-		[CCode (cname = "COGL_MATERIAL_LAYER_TYPE_TEXTURE")]
+-		MATERIAL_LAYER_TYPE_TEXTURE
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_MATERIAL_WRAP_MODE_", has_type_id = false)]
+ 	[Version (since = "1.4")]
+ 	public enum MaterialWrapMode {
+@@ -970,6 +853,10 @@ namespace Cogl {
+ 		BGRA_1010102,
+ 		ARGB_2101010,
+ 		ABGR_2101010,
++		RGBA_FP_16161616,
++		BGRA_FP_16161616,
++		ARGB_FP_16161616,
++		ABGR_FP_16161616,
+ 		RGBA_8888_PRE,
+ 		BGRA_8888_PRE,
+ 		ARGB_8888_PRE,
+@@ -980,9 +867,16 @@ namespace Cogl {
+ 		BGRA_1010102_PRE,
+ 		ARGB_2101010_PRE,
+ 		ABGR_2101010_PRE,
++		RGBA_FP_16161616_PRE,
++		BGRA_FP_16161616_PRE,
++		ARGB_FP_16161616_PRE,
++		ABGR_FP_16161616_PRE,
+ 		DEPTH_16,
+ 		DEPTH_32,
+-		DEPTH_24_STENCIL_8
++		DEPTH_24_STENCIL_8;
++		public int get_bytes_per_pixel (int plane);
++		public int get_n_planes ();
++		public unowned string to_string ();
+ 	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_READ_PIXELS_COLOR_", has_type_id = false)]
+ 	[Flags]
+@@ -1041,13 +935,6 @@ namespace Cogl {
+ 		NO_SLICING,
+ 		NO_ATLAS
+ 	}
+-	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_TEXTURE_TYPE_", has_type_id = false)]
+-	[Version (since = "1.10")]
+-	public enum TextureType {
+-		@2D,
+-		@3D,
+-		RECTANGLE
+-	}
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_VERTICES_MODE_", has_type_id = false)]
+ 	[Version (since = "1.0")]
+ 	public enum VerticesMode {
+@@ -1067,7 +954,6 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", cprefix = "COGL_WINSYS_FEATURE_", has_type_id = false)]
+ 	public enum WinsysFeature {
+ 		MULTIPLE_ONSCREEN,
+-		SWAP_THROTTLE,
+ 		VBLANK_COUNTER,
+ 		VBLANK_WAIT,
+ 		TEXTURE_FROM_PIXMAP,
+@@ -1082,9 +968,12 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+ 	[Version (since = "1.8")]
+ 	public delegate void DebugObjectForeachTypeCallback (Cogl.DebugObjectTypeInfo info);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-	public delegate Cogl.Bool MaterialLayerCallback (Cogl.Material material, int layer_index);
++	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
++	[Version (since = "0.10")]
++	public delegate void FeatureCallback (Cogl.FeatureID feature);
++	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 3.9)]
++	[Version (since = "1.14")]
++	public delegate void FrameCallback (Cogl.Onscreen onscreen, Cogl.FrameEvent event, Cogl.FrameInfo info);
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+ 	[Version (since = "1.16")]
+ 	public delegate void OnscreenDirtyCallback (Cogl.Onscreen onscreen, Cogl.OnscreenDirtyInfo info);
+@@ -1092,12 +981,10 @@ namespace Cogl {
+ 	[Version (since = "2.0")]
+ 	public delegate void OnscreenResizeCallback (Cogl.Onscreen onscreen, int width, int height);
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+-	public delegate void OnscreenX11MaskCallback (Cogl.Onscreen onscreen, uint32 event_mask);
+-	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 2.9)]
+ 	[Version (since = "2.0")]
+-	public delegate Cogl.Bool PipelineLayerCallback (Cogl.Pipeline pipeline, int layer_index);
++	public delegate bool PipelineLayerCallback (Cogl.Pipeline pipeline, int layer_index);
+ 	[CCode (cheader_filename = "cogl/cogl.h", instance_pos = 1.9)]
+-	public delegate void SwapBuffersNotify (Cogl.Framebuffer framebuffer);
++	public delegate bool Texture2DEGLImageExternalAlloc (Cogl.Texture2D tex_2d) throws GLib.Error;
+ 	[CCode (cheader_filename = "cogl/cogl.h", has_target = false)]
+ 	public delegate void UserDataDestroyCallback (void* data);
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_AFIRST_BIT")]
+@@ -1108,6 +995,8 @@ namespace Cogl {
+ 	public const int BGR_BIT;
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_DEPTH_BIT")]
+ 	public const int DEPTH_BIT;
++	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_PIXEL_FORMAT_MAX_PLANES")]
++	public const int PIXEL_FORMAT_MAX_PLANES;
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_PREMULT_BIT")]
+ 	public const int PREMULT_BIT;
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_STENCIL_BIT")]
+@@ -1115,21 +1004,12 @@ namespace Cogl {
+ 	[CCode (cheader_filename = "cogl/cogl.h", cname = "COGL_TEXTURE_MAX_WASTE")]
+ 	public const int TEXTURE_MAX_WASTE;
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void begin_gl ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static Cogl.Bool check_extension (string name, string ext);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void clear (Cogl.Color color, ulong buffers);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static Cogl.Bool clutter_check_extension_CLUTTER (string name, string ext);
++	public static bool blit_framebuffer (Cogl.Framebuffer src, Cogl.Framebuffer dest, int src_x, int src_y, int dst_x, int dst_y, int width, int height) throws GLib.Error;
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static Cogl.Bool clutter_winsys_has_feature_CLUTTER (Cogl.WinsysFeature feature);
++	public static bool clutter_winsys_has_feature_CLUTTER (Cogl.WinsysFeature feature);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.0")]
+-	public static Cogl.Bool color_equal (void* v1, void* v2);
++	public static bool color_equal (void* v1, void* v2);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.16")]
+ 	public static void color_init_from_hsl (out Cogl.Color color, float hue, float saturation, float luminance);
+@@ -1143,234 +1023,87 @@ namespace Cogl {
+ 	[Version (since = "1.8")]
+ 	public static void debug_object_print_instances ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void disable_fog ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void end_gl ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Bool features_available (Cogl.FeatureFlags features);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.0")]
+ 	public static void flush ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8.2")]
+-	public static void frustum (float left, float right, float bottom, float top, float z_near, float z_far);
++	[Version (since = "1.10")]
++	public static void foreach_feature (Cogl.Context context, Cogl.FeatureCallback callback);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Bool get_backface_culling_enabled ();
++	public static bool get_backface_culling_enabled ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8")]
+-	public static void get_bitmasks (out int red, out int green, out int blue, out int alpha);
++	[Version (since = "1.14")]
++	public static int64 get_clock_time (Cogl.Context context);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Bool get_depth_test_enabled ();
++	public static bool get_depth_test_enabled ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.8")]
+-	public static unowned Cogl.Framebuffer get_draw_framebuffer ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "0.8")]
+-	public static Cogl.FeatureFlags get_features ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Matrix get_modelview_matrix ();
++	public static Cogl.GraphicsResetStatus get_graphics_reset_status (Cogl.Context context);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+ 	public static GLib.OptionGroup get_option_group ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	public static GLib.Callback get_proc_address (string s);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static Cogl.Matrix get_projection_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void* get_source ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void get_viewport ([CCode (array_length = false)] out float v[4]);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18")]
+ 	public static GLib.Type gtype_matrix_get_type ();
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.10")]
+-	public static Cogl.Bool is_framebuffer (void* object);
++	public static bool has_feature (Cogl.Context context, Cogl.FeatureID feature);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.10")]
+-	public static Cogl.Bool is_onscreen (void* object);
++	public static bool is_context (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "2.0")]
+-	public static Cogl.Bool is_pipeline (void* object);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.4")]
+-	public static Cogl.Bool is_vertex_buffer_indices (Cogl.Handle handle);
++	public static bool is_frame_info (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.4")]
+-	public static Cogl.Bool matrix_equal (void* v1, void* v2);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.0")]
+-	public static void ortho (float left, float right, float bottom, float top, float near, float far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void perspective (float fovy, float aspect, float z_near, float z_far);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void polygon (Cogl.TextureVertex vertices, uint n_vertices, Cogl.Bool use_color);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void pop_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void pop_source ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void push_matrix ();
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.6")]
+-	public static void push_source (void* material);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static void rectangle (float x_1, float y_1, float x_2, float y_2);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangle_with_multitexture_coords (float x1, float y1, float x2, float y2, [CCode (array_length = false)] float[] tex_coords, int tex_coords_len);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangle_with_texture_coords (float x1, float y1, float x2, float y2, float tx1, float ty1, float tx2, float ty2);
++	[Version (since = "1.10")]
++	public static bool is_framebuffer (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "1.0")]
+-	public static void rectangles ([CCode (array_length = false)] float[] verts, uint n_rects);
++	[Version (since = "1.10")]
++	public static bool is_onscreen (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "0.8.6")]
+-	public static void rectangles_with_texture_coords ([CCode (array_length = false)] float[] verts, uint n_rects);
++	[Version (since = "2.0")]
++	public static bool is_pipeline (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void rotate (float angle, float x, float y, float z);
++	public static bool is_texture_2d (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void scale (float x, float y, float z);
++	[Version (since = "1.10")]
++	public static bool is_texture_2d_sliced (void* object);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_backface_culling_enabled (Cogl.Bool setting);
++	[Version (since = "1.4")]
++	public static bool matrix_equal (void* v1, void* v2);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_depth_test_enabled (Cogl.Bool setting);
++	public static void set_backface_culling_enabled (bool setting);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void set_fog (Cogl.Color fog_color, Cogl.FogMode mode, float density, float z_near, float z_far);
++	public static void set_depth_test_enabled (bool setting);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void set_modelview_matrix (Cogl.Matrix matrix);
++	public static void set_tracing_disabled_on_thread (void* data);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void set_projection_matrix (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source (void* material);
++	public static void set_tracing_enabled_on_thread (void* data, string group, string filename);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color (Cogl.Color color);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color4f (float red, float green, float blue, float alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_color4ub (uint8 red, uint8 green, uint8 blue, uint8 alpha);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16", since = "1.0")]
+-	public static void set_source_texture (Cogl.Texture texture);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "1.2")]
+-	public static void set_viewport (int x, int y, int width, int height);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_compile (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static string shader_get_info_log (Cogl.Handle handle);
++	public static void set_tracing_enabled_on_thread_with_fd (void* data, string group, int fd);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static Cogl.ShaderType shader_get_type (Cogl.Handle handle);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.Bool shader_is_compiled (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static unowned Cogl.Handle shader_ref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+ 	public static void shader_source (Cogl.Handle shader, string source);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void shader_unref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18", since = "1.0")]
+ 	public static Cogl.Texture texture_new_from_bitmap (Cogl.Bitmap bitmap, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-	public static Cogl.Texture texture_new_from_data (int width, int height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, int rowstride, uint8 data);
++	public static Cogl.Texture texture_new_from_data (int width, int height, Cogl.TextureFlags flags, Cogl.PixelFormat format, Cogl.PixelFormat internal_format, int rowstride, [CCode (array_length = false)] uint8[] data);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+ 	public static Cogl.Texture texture_new_from_file (string filename, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format) throws GLib.Error;
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+-	public static Cogl.Texture texture_new_from_foreign (uint gl_handle, uint gl_target, uint width, uint height, uint x_pot_waste, uint y_pot_waste, Cogl.PixelFormat format);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.18", since = "0.8")]
+ 	public static Cogl.Texture texture_new_with_size (uint width, uint height, Cogl.TextureFlags flags, Cogl.PixelFormat internal_format);
+ 	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10", since = "1.4")]
+-	public static void transform (Cogl.Matrix matrix);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.10")]
+-	public static void translate (float x, float y, float z);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_add (Cogl.Handle handle, string attribute_name, uint8 n_components, Cogl.AttributeType type, Cogl.Bool normalized, uint16 stride, void* pointer);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_delete (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_disable (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_draw (Cogl.Handle handle, Cogl.VerticesMode mode, int first, int count);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_draw_elements (Cogl.Handle handle, Cogl.VerticesMode mode, Cogl.Handle indices, int min_index, int max_index, int indices_offset, int count);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_enable (Cogl.Handle handle, string attribute_name);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static uint vertex_buffer_get_n_vertices (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static unowned Cogl.Handle vertex_buffer_indices_get_for_quads (uint n_indices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static Cogl.IndicesType vertex_buffer_indices_get_type (Cogl.Handle indices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static unowned Cogl.Handle vertex_buffer_new (uint n_vertices);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static unowned Cogl.Handle vertex_buffer_ref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.16")]
+-	public static void vertex_buffer_submit (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.2")]
+-	public static void vertex_buffer_unref (Cogl.Handle handle);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (deprecated = true, deprecated_since = "1.8", since = "0.8.2")]
+-	public static void viewport (uint width, uint height);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	public static uint32 x11_onscreen_get_visual_xid (Cogl.Onscreen onscreen);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+ 	[Version (since = "1.10")]
+ 	public static uint32 x11_onscreen_get_window_xid (Cogl.Onscreen onscreen);
+-	[CCode (cheader_filename = "cogl/cogl.h")]
+-	[Version (since = "2.0")]
+-	public static void x11_onscreen_set_foreign_window_xid (Cogl.Onscreen onscreen, uint32 xid, [CCode (scope = "async")] Cogl.OnscreenX11MaskCallback update);
+ }
+diff --git vapi/polkit-gobject-1.vapi vapi/polkit-gobject-1.vapi
+index 93eff8a5..fedc6a4a 100644
+--- vapi/polkit-gobject-1.vapi
++++ vapi/polkit-gobject-1.vapi
+@@ -7,7 +7,7 @@ namespace Polkit {
+ 		[CCode (has_construct_function = false)]
+ 		protected ActionDescription ();
+ 		public unowned string get_action_id ();
+-		public unowned string get_annotation (string key);
++		public unowned string? get_annotation (string key);
+ 		[CCode (array_length = false, array_null_terminated = true)]
+ 		public unowned string[] get_annotation_keys ();
+ 		public unowned string get_description ();
+@@ -34,7 +34,7 @@ namespace Polkit {
+ 		public Polkit.AuthorityFeatures get_backend_features ();
+ 		public unowned string get_backend_name ();
+ 		public unowned string get_backend_version ();
+-		public string get_owner ();
++		public string? get_owner ();
+ 		public static Polkit.Authority get_sync (GLib.Cancellable? cancellable = null) throws GLib.Error;
+ 		public async bool register_authentication_agent (Polkit.Subject subject, string locale, string object_path, GLib.Cancellable? cancellable) throws GLib.Error;
+ 		public bool register_authentication_agent_sync (Polkit.Subject subject, string locale, string object_path, GLib.Cancellable? cancellable = null) throws GLib.Error;
+@@ -56,21 +56,22 @@ namespace Polkit {
+ 	public class AuthorizationResult : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		public AuthorizationResult (bool is_authorized, bool is_challenge, Polkit.Details? details);
+-		public unowned Polkit.Details get_details ();
++		public unowned Polkit.Details? get_details ();
++		[Version (since = "0.101")]
+ 		public bool get_dismissed ();
+ 		public bool get_is_authorized ();
+ 		public bool get_is_challenge ();
+ 		public bool get_retains_authorization ();
+-		public unowned string get_temporary_authorization_id ();
++		public unowned string? get_temporary_authorization_id ();
+ 	}
+ 	[CCode (cheader_filename = "polkit/polkit.h", type_id = "polkit_details_get_type ()")]
+ 	public class Details : GLib.Object {
+ 		[CCode (has_construct_function = false)]
+ 		public Details ();
+ 		[CCode (array_length = false, array_null_terminated = true)]
+-		public string[] get_keys ();
++		public string[]? get_keys ();
+ 		public void insert (string key, string? value);
+-		public unowned string lookup (string key);
++		public unowned string? lookup (string key);
+ 	}
+ 	[CCode (cheader_filename = "polkit/polkit.h", type_id = "polkit_permission_get_type ()")]
+ 	public class Permission : GLib.Permission, GLib.AsyncInitable, GLib.Initable {
+@@ -88,7 +89,8 @@ namespace Polkit {
+ 		[CCode (has_construct_function = false)]
+ 		protected SystemBusName ();
+ 		public unowned string get_name ();
+-		public Polkit.Subject get_process_sync (GLib.Cancellable? cancellable = null) throws GLib.Error;
++		public Polkit.Subject? get_process_sync (GLib.Cancellable? cancellable = null) throws GLib.Error;
++		public Polkit.UnixUser? get_user_sync (GLib.Cancellable? cancellable = null) throws GLib.Error;
+ 		public static Polkit.Subject @new (string name);
+ 		public void set_name (string name);
+ 		public string name { get; set construct; }
+@@ -146,9 +148,10 @@ namespace Polkit {
+ 		protected UnixSession ();
+ 		public unowned string get_session_id ();
+ 		public static Polkit.Subject @new (string session_id);
+-		public static async Polkit.Subject new_for_process (int pid, GLib.Cancellable? cancellable) throws GLib.Error;
+-		public static Polkit.Subject new_for_process_sync (int pid, GLib.Cancellable? cancellable = null) throws GLib.Error;
++		public static async Polkit.Subject? new_for_process (int pid, GLib.Cancellable? cancellable) throws GLib.Error;
++		public static Polkit.Subject? new_for_process_sync (int pid, GLib.Cancellable? cancellable = null) throws GLib.Error;
+ 		public void set_session_id (string session_id);
++		[NoAccessorMethod]
+ 		public int pid { construct; }
+ 		public string session_id { get; set construct; }
+ 	}
+@@ -156,17 +159,17 @@ namespace Polkit {
+ 	public class UnixUser : GLib.Object, Polkit.Identity {
+ 		[CCode (has_construct_function = false)]
+ 		protected UnixUser ();
+-		public unowned string get_name ();
++		public unowned string? get_name ();
+ 		public int get_uid ();
+ 		public static Polkit.Identity @new (int uid);
+-		public static Polkit.Identity new_for_name (string name) throws GLib.Error;
++		public static Polkit.Identity? new_for_name (string name) throws GLib.Error;
+ 		public void set_uid (int uid);
+ 		public int uid { get; set construct; }
+ 	}
+ 	[CCode (cheader_filename = "polkit/polkit.h", type_id = "polkit_identity_get_type ()")]
+ 	public interface Identity : GLib.Object {
+ 		public abstract bool equal (Polkit.Identity b);
+-		public static Polkit.Identity from_string (string str) throws GLib.Error;
++		public static Polkit.Identity? from_string (string str) throws GLib.Error;
+ 		public abstract uint hash ();
+ 		public abstract string to_string ();
+ 	}
+@@ -201,7 +204,7 @@ namespace Polkit {
+ 		ADMINISTRATOR_AUTHENTICATION_REQUIRED_RETAINED,
+ 		AUTHORIZED;
+ 		public static bool from_string (string string, Polkit.ImplicitAuthorization out_implicit_authorization);
+-		public static unowned string to_string (Polkit.ImplicitAuthorization implicit_authorization);
++		public unowned string to_string ();
+ 	}
+ 	[CCode (cheader_filename = "polkit/polkit.h", cprefix = "POLKIT_ERROR_")]
+ 	public errordomain Error {
+@@ -212,7 +215,7 @@ namespace Polkit {
+ 		public static GLib.Quark quark ();
+ 	}
+ 	[CCode (cheader_filename = "polkit/polkit.h")]
+-	public static Polkit.Identity identity_from_string (string str) throws GLib.Error;
++	public static Polkit.Identity? identity_from_string (string str) throws GLib.Error;
+ 	[CCode (cheader_filename = "polkit/polkit.h")]
+ 	public static Polkit.Subject subject_from_string (string str) throws GLib.Error;
+ }
+-- 
+2.28.0
+
diff --git a/srcpkgs/budgie-desktop/template b/srcpkgs/budgie-desktop/template
index b32e7734d3b..ae5a9d5f769 100644
--- a/srcpkgs/budgie-desktop/template
+++ b/srcpkgs/budgie-desktop/template
@@ -1,7 +1,7 @@
 # Template file for 'budgie-desktop'
 pkgname=budgie-desktop
 version=10.5.1
-revision=3
+revision=4
 build_style=meson
 build_helper=gir
 configure_args="-Dwith-gtk-doc=false -Dwith-desktop-icons=none"

From 17ef4c9601c7069ae73c1f28ba3b54de096f176e Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 06:23:59 +0200
Subject: [PATCH 103/104] New package: gnome-core-3.36.0

---
 srcpkgs/gnome-core/template | 54 +++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 srcpkgs/gnome-core/template

diff --git a/srcpkgs/gnome-core/template b/srcpkgs/gnome-core/template
new file mode 100644
index 00000000000..037497ccb55
--- /dev/null
+++ b/srcpkgs/gnome-core/template
@@ -0,0 +1,54 @@
+# Template file for 'gnome-core'
+pkgname=gnome-core
+version=3.38.0
+revision=1
+build_style=meta
+short_desc="GNOME meta-package for Void Linux - core components"
+maintainer="q66 <daniel@octaforge.org>"
+license="GPL-2.0-only, LGPL-2.0-only"
+homepage="https://www.gnome.org"
+
+depends="
+ adwaita-icon-theme>=3.38.0
+ at-spi2-core>=2.38.0
+ at-spi2-atk>=2.38.0
+ cantarell-fonts>=0.201
+ caribou>=0.4.21
+ dconf>=0.36.0
+ evolution-data-server>=3.38.0
+ folks>=0.14.0
+ font-adobe-source-code-pro>=2.030R
+ gcr>=3.36.0
+ gdm>=3.38.0
+ geocode-glib>=3.26.0
+ gfbgraph>=0.2.4
+ gjs>=1.66.0
+ glib>=2.66.0
+ glib-networking>=2.66.0
+ gmime3>=3.2.7
+ gnome-backgrounds>=3.38.0
+ gnome-bluetooth>=3.34.1
+ gnome-color-manager>=3.36.0
+ gnome-control-center>=3.38.0
+ gnome-desktop>=3.38.0
+ gnome-getting-started-docs>=3.36.2
+ gnome-initial-setup>=3.38.0
+ gnome-keyring>=3.36.0
+ gnome-online-accounts>=3.37.90
+ gnome-online-miners>=3.34.0
+ gnome-session>=3.38.0
+ gnome-settings-daemon>=3.38.0
+ gnome-shell>=3.38.0
+ gnome-shell-extensions>=3.38.0
+ gnome-themes-standard>=3.28
+ gnome-user-docs>=3.38.0
+ gnome-video-effects>=0.5.0
+ gsettings-desktop-schemas>=3.38.0
+ gvfs>=1.46.0
+ mutter>=3.38.0
+ nautilus>=3.38.0
+ sushi>=3.34.0
+ tracker3>=3.0.0
+ yelp>=3.38.0
+ xdg-desktop-portal-gtk>=1.8.0
+ zenity>=3.32.0"

From d93968620f2a5f4aa33de95e6fe320aff5f91de1 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Thu, 17 Sep 2020 06:24:06 +0200
Subject: [PATCH 104/104] gnome: update to 3.38.0

[ci skip]
---
 srcpkgs/gnome/template | 241 ++++++++++++++---------------------------
 1 file changed, 79 insertions(+), 162 deletions(-)

diff --git a/srcpkgs/gnome/template b/srcpkgs/gnome/template
index 9e7b6c21336..83cfcf4512a 100644
--- a/srcpkgs/gnome/template
+++ b/srcpkgs/gnome/template
@@ -1,181 +1,98 @@
 # Template file for 'gnome'
 pkgname=gnome
-version=3.32.0
-revision=3
+version=3.38.0
+revision=1
 build_style=meta
 short_desc="GNOME meta-package for Void Linux"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-only, LGPL-2.0-only"
 homepage="https://www.gnome.org"
 
-depends="NetworkManager>=1.14.0_1
- adwaita-icon-theme>=3.32.0
- at-spi2-atk>=2.32.0
- at-spi2-core>=2.32.0
- atk>=2.32.0
- atkmm>=2.24.2
- cairomm>=1.12.2_2
- cantarell-fonts>=0.0.25
- caribou>=0.4.21
- chrome-gnome-shell>=10.0.0
- clutter>=1.26.2
- clutter-gst3>=3.0.24
- clutter-gtk>=1.8.4
- cogl>=1.22.2
- dconf>=0.30.0
- eog>=3.32.0
- evince>=3.32.0
- evolution-data-server>=3.32.0
- file-roller>=3.32.0
- folks>=0.11.4
- font-adobe-source-code-pro>=2.030R
- gcab>=0.7
- gcr>=3.28.0
- gdk-pixbuf>=2.38.0
- gdm>=3.32.0
- geocode-glib>=3.26.0_1
- gfbgraph>=0.2.3
- gjs>=1.56.0
- glib>=2.60.0
- glib-networking>=2.60.0
- glibmm>=2.60.0
- gmime>=2.6.23
- gnome-backgrounds>=3.32.0
- gnome-bluetooth>=3.32.0
- gnome-color-manager>=3.32.0
- gnome-control-center>=3.32.0
- gnome-desktop>=3.32.0
- gnome-getting-started-docs>=3.32.0
- gnome-initial-setup>=3.32.0
- gnome-keyring>=3.28.1
- gnome-online-accounts>=3.32.0
- gnome-online-miners>=3.30.0
- gnome-session>=3.32.0
- gnome-settings-daemon>=3.32.0
- gnome-shell>=3.32.0
- gnome-shell-extensions>=3.32.0
- gnome-themes-standard>=3.22.3
- gnome-tweaks>=3.32.0
- gnome-user-docs>=3.32.0
- gnome-video-effects>=0.4.3
- gobject-introspection>=1.60.0
- gom>=0.3.2_1
- grilo>=0.3.4
- grilo-plugins>=0.3.5
- gsettings-desktop-schemas>=3.32.0
+depends="
+ gnome-core>=${version}
+ baobab>=3.38.0
+ cheese>=3.38.0
+ eog>=3.38.0
+ evince>=3.38.0
+ file-roller>=3.38.0
+ gedit>=3.38.0
+ gnome-calculator>=3.38.0
+ gnome-calendar>=3.38.0
+ gnome-characters>=3.34.0
+ gnome-clocks>=3.38.0
+ gnome-contacts>=3.37.2
+ gnome-disk-utility>=3.38.0
+ gnome-font-viewer>=3.34.0
+ gnome-maps>=3.38.0
+ gnome-music>=3.38.0
+ gnome-screenshot>=3.38.0
+ gnome-system-monitor>=3.38.0
+ gnome-terminal>=3.38.0
+ gnome-tweaks>=3.34.0
+ gnome-weather>=3.36.1
  gsound>=1.0.2
- gspell>=1.8.0
- gssdp>=1.0.2
- gtk+3>=3.24.0
- gtkmm>=3.22.1
- gtksourceview>=3.24.4
- gupnp>=1.0.2
- gupnp-av>=0.12.10
- gupnp-dlna>=0.10.5
- gupnp-igd>=0.2.4
- gvfs>=1.40.0
- json-glib>=1.4.2
- libcroco>=0.6.12
- libgdata>=0.16.1_2
- libgee08>=0.20.0
- libgepub>=0.4_1
- libgnomekbd>=3.26.0
- libgsf>=1.14.41
- libgtop>=2.40.0
- libgweather>=3.32.0
- libgxps>=0.2.5_1
- libmediaart>=1.9.4
- libnotify>=0.7.6_4
- libpeas>=1.22.0
- librsvg>=2.44.0
- libsecret>=0.18.5
- libsigc++>=2.10.0
- libsoup>=2.60.0
- libxml2>=2.6.30
- libxslt>=1.1.22
- libzapojit>=0.0.3
- mm-common>=0.9.10_2
- mousetweaks>=3.12.0
- mutter>=3.32.0
- nautilus>=3.32.0
+ gspell>=1.8.3
+ mousetweaks>=3.32.0
  network-manager-applet>=1.8.2
- orca>=3.32.0
- pango>=1.42.0
- pangomm>=2.40.1
- phodav>=2.2
- python-atspi>=2.26.0
- python-gobject>=3.26.0
- rest>=0.8.0
- tracker>=2.0.0
- vala>=0.44.0
- vte3>=0.54.0
- yelp>=3.32.0
- yelp-tools>=3.32.0
- yelp-xsl>=3.32.0
- zenity>=3.32.0"
+ orca>=3.38.0
+ phodav>=2.5
+ simple-scan>=3.38.0
+ totem>=3.38.0
+ yelp-tools>=3.38.0"
 
-_apps_depends="baobab>=3.32.0
- cheese>=3.32.0
- dconf-editor>=3.32.0
- devhelp>=3.32.0
- epiphany>=3.32.0
- evolution>=3.32.0
- ghex>=3.18.3
- gitg>=3.26.0
- gedit>=3.32.0
- gedit-plugins>=3.32.0
- gnome-boxes>=3.32.0
- gnome-builder>=3.32.0
- gnome-calculator>=3.32.0
- gnome-calendar>=3.32.0
- gnome-characters>=3.32.0
- gnome-clocks>=3.32.0
- gnome-dictionary>=3.26.0
- gnome-disk-utility>=3.32.0
- gnome-documents>=3.32.0
- gnome-font-viewer>=3.32.0
- gnome-maps>=3.32.0
- gnome-music>=3.32.0
+_apps_depends="
+ dconf-editor>=3.38.0
+ devhelp>=3.38.0
+ epiphany>=3.38.0
+ evolution>=3.38.0
+ ghex>=3.18.4
+ gitg>=3.32.1
+ gedit-plugins>=3.38.0
+ gnome-boxes>=3.38.0
+ gnome-builder>=3.38.0
+ gnome-calculator>=3.38.0
+ gnome-calendar>=3.38.0
+ gnome-characters>=3.34.0
+ gnome-clocks>=3.38.0
+ gnome-dictionary>=3.26.1
+ gnome-disk-utility>=3.38.0
+ gnome-documents>=3.34.0
+ gnome-font-viewer>=3.34.0
+ gnome-maps>=3.38.0
+ gnome-music>=3.38.0
  gnome-nettool>=3.8.1
- gnome-photos>=3.32.0
- gnome-recipes>=2.0.0
- gnome-screenshot>=3.32.0
- gnome-sound-recorder>=3.32.0
- gnome-system-monitor>=3.32.0
- gnome-terminal>=3.32.0
- gnome-tweaks>=3.32.0
- gtk-vnc>=0.6.0_2
- libchamplain>=0.12.16
- nautilus-sendto>=3.8.0
+ gnome-photos>=3.37.91.1
+ gnome-recipes>=2.0.2
+ gnome-screenshot>=3.38.0
+ gnome-sound-recorder>=3.34.0
+ gnome-system-monitor>=3.38.0
+ gnome-terminal>=3.38.0
  nemiver>=0.9.6
- polari>=3.32.0
- rygel>=0.36.0
- simple-scan>=3.32.0
- sushi>=3.32.0
- totem>=3.32.0
- totem-pl-parser>=3.26.0
+ polari>=3.37.3
+ rygel>=0.40.0
+ simple-scan>=3.38.0
+ totem>=3.38.0
  vino>=3.22.0"
 
 _games_collection_depends="
- aisleriot>=3.22.3
- five-or-more>=3.32.0
- four-in-a-row>=3.32.0
- gnome-2048>=3.32.0
- gnome-chess>=3.32.0
- gnome-klotski>=3.32.0
- gnome-mahjongg>=3.32.0
- gnome-mines>=3.32.0
- gnome-nibbles>=3.24.0
- gnome-robots>=3.32.0
- gnome-sudoku>=3.32.0
- gnome-tetravex>=3.32.0
- hitori>=3.22.4
- iagno>=3.32.0
- lightsoff>=3.26.0
- quadrapassel>=3.32.0
- swell-foop>=3.26.0
- tali>=3.32.0
-"
+ aisleriot>=3.22.12
+ five-or-more>=3.32.2
+ four-in-a-row>=3.36.4
+ gnome-2048>=3.36.4
+ gnome-chess>=3.36.1
+ gnome-klotski>=3.36.3
+ gnome-mahjongg>=3.36.2
+ gnome-mines>=3.36.1
+ gnome-nibbles>=3.26.1
+ gnome-robots>=3.36.1
+ gnome-sudoku>=3.36.0
+ gnome-tetravex>=3.36.4
+ hitori>=3.38.0
+ iagno>=3.36.4
+ lightsoff>=3.36.0
+ quadrapassel>=3.36.05
+ swell-foop>=3.34.1
+ tali>=3.36.4"
 
 gnome-apps_package() {
 	depends="$_apps_depends"

  parent reply	other threads:[~2020-09-17  4:32 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-13 16:59 [PR PATCH] " q66
2020-08-13 17:01 ` q66
2020-08-13 17:27 ` [PR PATCH] [Updated] " q66
2020-08-14  5:46 ` mnabid
2020-08-14 15:25 ` [PR PATCH] [Updated] " q66
2020-08-14 15:31 ` q66
2020-08-14 19:00 ` q66
2020-08-14 19:03 ` q66
2020-08-14 19:05 ` q66
2020-08-14 19:05 ` q66
2020-08-14 19:51 ` mnabid
2020-08-14 22:37 ` [PR PATCH] [Updated] " q66
2020-08-14 23:48 ` sgn
2020-08-16  5:18 ` [PR PATCH] [Updated] " q66
2020-08-16 19:49 ` q66
2020-08-16 19:51 ` q66
2020-08-16 19:52 ` q66
2020-08-17 12:37 ` shizonic
2020-08-17 19:21 ` q66
2020-08-18  3:36 ` [PR PATCH] [Updated] " q66
2020-08-18  4:28 ` q66
2020-08-18  4:34 ` q66
2020-08-18  5:12 ` q66
2020-08-20 12:22 ` shizonic
2020-08-20 13:52 ` q66
2020-08-20 16:18 ` shizonic
2020-08-22 17:12 ` toluschr
2020-08-22 17:13 ` toluschr
2020-08-22 17:17 ` toluschr
2020-08-22 17:45 ` q66
2020-08-22 17:46 ` [PR PATCH] [Updated] " q66
2020-08-22 17:57 ` toluschr
2020-08-22 18:35 ` toluschr
2020-08-22 18:51 ` toluschr
2020-08-22 19:03 ` q66
2020-08-24 10:00 ` q66
2020-08-24 10:04 ` q66
2020-08-25  8:13 ` shizonic
2020-08-31 22:49 ` [PR PATCH] [Updated] " q66
2020-09-05 20:25 ` q66
2020-09-12  1:46 ` q66
2020-09-13  4:29 ` fosslinux
2020-09-13 12:13 ` q66
2020-09-13 22:54 ` fosslinux
2020-09-13 22:54 ` fosslinux
2020-09-16 15:18 ` shizonic
2020-09-16 20:31 ` circhioz
2020-09-16 21:18 ` circhioz
2020-09-16 23:03 ` [PR PATCH] [Updated] " q66
2020-09-17  0:35 ` q66
2020-09-17  3:14 ` q66
2020-09-17  4:27 ` q66
2020-09-17  4:31 ` q66
2020-09-17  4:32 ` q66 [this message]
2020-09-17  6:04 ` fosslinux
2020-09-17 12:49 ` Gottox
2020-09-17 13:09 ` sgn
2020-09-17 21:13 ` [PR PATCH] [Updated] " q66
2020-09-17 21:21 ` q66
2020-09-17 22:20 ` pullmoll
2020-09-17 22:23 ` pullmoll
2020-09-17 22:26 ` pullmoll
2020-09-17 22:29 ` pullmoll
2020-09-17 22:41 ` [PR PATCH] [Updated] " q66
2020-09-17 23:52 ` q66
2020-09-18  1:58 ` [PR PATCH] [Updated] " q66
2020-09-18  1:59 ` q66
2020-09-18  6:38 ` Gottox
2020-09-18 12:52 ` Gottox
2020-09-18 12:54 ` Gottox
2020-09-18 13:46 ` pullmoll
2020-09-18 13:48 ` pullmoll
2020-09-18 13:48 ` pullmoll
2020-09-18 13:58 ` sgn
2020-09-18 13:59 ` pullmoll
2020-09-18 14:04 ` sgn
2020-09-18 14:05 ` sgn
2020-09-18 14:07 ` sgn
2020-09-18 14:10 ` q66
2020-09-18 14:13 ` q66
2020-09-18 14:14 ` sgn
2020-09-18 14:18 ` Gottox
2020-09-18 14:25 ` pullmoll
2020-09-18 14:58 ` q66
2020-09-18 15:27 ` [PR PATCH] [Updated] " q66
2020-09-18 15:28 ` q66
2020-09-18 16:46 ` [PR PATCH] [Closed]: " q66

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200917043253.3Hz1XZl-2uL4HIazzrv9AV8YRyEvvJYTRNvqWTO_yEw@z \
    --to=q66@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).