From a1d3a8b37dcf82ea68bc3bf07102b01bf953119d Mon Sep 17 00:00:00 2001 From: Ward from fusion-voyager-3 Date: Tue, 13 Aug 2024 11:22:25 -0400 Subject: [PATCH] attempt to fix xwayland frac scale --- .github/build-canary-v3 | 1 + .github/build-nest-v3 | 1 + .github/release-canary-v3 | 1 + .github/release-nest-v3 | 1 + .github/workflows/build-canaryv3.yml | 37 + .github/workflows/build-nestv3.yml | 37 + .github/workflows/release-canaryv3.yml | 40 + .github/workflows/release-nestv3.yml | 40 + .github/workflows/release.yml | 49 - debian/.gitignore | 14 + debian/README.Debian | 17 + debian/README.Ubuntu | 61 - debian/changelog | 5600 ++++++++++++++++- debian/clean | 1 - debian/control | 441 +- debian/control.in | 182 - debian/copyright | 349 +- debian/gbp.conf | 3 +- debian/gir1.2-mutter-14.install | 3 + debian/gnome-shell-common.alternatives | 4 - debian/gnome-shell-common.dirs | 1 - debian/gnome-shell-common.install | 9 - debian/gnome-shell-extension-prefs.install | 4 - debian/gnome-shell.bug-control | 2 - debian/gnome-shell.docs | 2 - debian/gnome-shell.gsettings-override | 2 - debian/gnome-shell.install | 11 - debian/gnome-shell.lintian-overrides | 14 - debian/gnome-shell.maintscript | 1 - debian/gnome-shell.postinst | 18 - debian/libmutter-14-0.bug-control | 1 + debian/libmutter-14-0.install | 2 + debian/libmutter-14-0.symbols | 2710 ++++++++ debian/libmutter-14-dev.install | 12 + debian/libmutter-test-14.install | 4 + debian/libmutter-test-14.symbols | 61 + debian/mutter-14-tests.install | 4 + debian/mutter-common-bin.install | 2 + debian/mutter-common.install | 7 + debian/mutter.docs | 1 + debian/mutter.install | 2 + debian/mutter.postinst | 16 + debian/mutter.prerm | 12 + debian/rules | 118 +- debian/salsa-ci.yml | 3 - debian/shlibs.local | 1 - debian/source/format | 2 +- debian/source/lintian-overrides | 2 + debian/source_gnome-shell.py | 45 - debian/tests/build | 9 + debian/tests/control | 17 + debian/tests/installed-tests | 35 + debian/tests/libmutter-14-dev | 41 + debian/ubuntu-session-mods/ubuntu.json | 14 - debian/upstream/metadata | 10 +- debian/watch | 2 +- main.sh | 22 +- orig.source.txt | 1 - ...ard-Spawn-tecla-to-show-keyboard-map.patch | 24 - ...oreground-color-to-text-as-a-PangoAt.patch | 95 - .../debian/Revert-build-Port-to-gcr4.patch | 107 - .../Revert-tests-Fail-on-warnings-too.patch | 22 - ...port-Dynamic-triple-double-buffering.patch | 1912 ++++++ ...on-prefs-Give-Debian-specific-advice.patch | 32 - ...o-not-mark-CI-test-tools-as-required.patch | 22 + .../tests-Do-not-run-screencast-tests.patch | 26 + ...ingerprint-service-synchronously-whe.patch | 249 - ...sible-to-set-debug-flags-dynamically.patch | 249 - ...ut-Destroy-panel-barrier-on-shutdown.patch | 44 - ...-when-magnifier-is-enabled-and-scale.patch | 172 - ...ktrace-crashes-all-and-backtrace-all.patch | 47 - ...nularity-of-backtraces-in-SHELL_DEBU.patch | 169 - ...n-error-message-on-gnome-shell-crash.patch | 30 - ...irection-in-OverviewShown-state-mach.patch | 74 - patches/pika/xwayland-scaling-support.patch | 2125 +++++++ ...restrictions-with-pika-gnome-session.patch | 26 - patches/series | 41 +- ...add-support-for-debugFlags-parameter.patch | 46 - patches/ubuntu/background_login.patch | 50 - patches/ubuntu/configure_login_screen.patch | 211 - ...support-to-Yaru-theme-color-variants.patch | 81 - patches/ubuntu/desktop_detect.patch | 65 - patches/ubuntu/gdm_alternatives.patch | 42 - ...keep-ubuntu-logo-bright-lp1867133-v1.patch | 36 - ...locate-before-getting-size-of-tracke.patch | 34 - patches/ubuntu/lightdm-user-switching.patch | 93 - patches/ubuntu/lock_on_suspend.patch | 48 - ...loading-multiple-Yaru-theme-variants.patch | 345 - .../ubuntu/resolve_alternate_theme_path.patch | 50 - ...ncel-method-on-providers-when-no-dat.patch | 163 - patches/ubuntu/secure_mode_extension.patch | 89 - ...rt-for-configuring-an-icons-resource.patch | 38 - ...not-move-snap-apps-to-gnome-apps-sco.patch | 75 - ...rk-several-additional-tests-as-flaky.patch | 155 + ...s-Avoid-converting-16bpc-float-16bpc.patch | 73 + ...ault-deadline-evasion-to-1000-micros.patch | 29 + .../place-Always-center-initial-setup.patch | 26 + ...ication-tests-as-incomplete-in-big-e.patch | 48 + .../tests-Skip-thread-priority-test.patch | 35 + ...dth-size-check-as-it-may-lead-to-une.patch | 29 + release.sh | 8 +- 101 files changed, 13900 insertions(+), 3537 deletions(-) create mode 100644 .github/build-canary-v3 create mode 100644 .github/build-nest-v3 create mode 100644 .github/release-canary-v3 create mode 100644 .github/release-nest-v3 create mode 100644 .github/workflows/build-canaryv3.yml create mode 100644 .github/workflows/build-nestv3.yml create mode 100644 .github/workflows/release-canaryv3.yml create mode 100644 .github/workflows/release-nestv3.yml delete mode 100644 .github/workflows/release.yml create mode 100644 debian/.gitignore create mode 100644 debian/README.Debian delete mode 100644 debian/README.Ubuntu delete mode 100644 debian/clean delete mode 100644 debian/control.in create mode 100644 debian/gir1.2-mutter-14.install delete mode 100644 debian/gnome-shell-common.alternatives delete mode 100644 debian/gnome-shell-common.dirs delete mode 100644 debian/gnome-shell-common.install delete mode 100644 debian/gnome-shell-extension-prefs.install delete mode 100644 debian/gnome-shell.bug-control delete mode 100644 debian/gnome-shell.docs delete mode 100644 debian/gnome-shell.gsettings-override delete mode 100644 debian/gnome-shell.install delete mode 100644 debian/gnome-shell.lintian-overrides delete mode 100644 debian/gnome-shell.maintscript delete mode 100644 debian/gnome-shell.postinst create mode 100644 debian/libmutter-14-0.bug-control create mode 100644 debian/libmutter-14-0.install create mode 100644 debian/libmutter-14-0.symbols create mode 100644 debian/libmutter-14-dev.install create mode 100644 debian/libmutter-test-14.install create mode 100644 debian/libmutter-test-14.symbols create mode 100755 debian/mutter-14-tests.install create mode 100644 debian/mutter-common-bin.install create mode 100755 debian/mutter-common.install create mode 100644 debian/mutter.docs create mode 100644 debian/mutter.install create mode 100644 debian/mutter.postinst create mode 100644 debian/mutter.prerm delete mode 100644 debian/shlibs.local delete mode 100644 debian/source_gnome-shell.py create mode 100644 debian/tests/build create mode 100644 debian/tests/control create mode 100755 debian/tests/installed-tests create mode 100755 debian/tests/libmutter-14-dev delete mode 100644 debian/ubuntu-session-mods/ubuntu.json delete mode 100644 orig.source.txt delete mode 100644 patches/Revert-keyboard-Spawn-tecla-to-show-keyboard-map.patch delete mode 100644 patches/Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch delete mode 100644 patches/debian/Revert-build-Port-to-gcr4.patch delete mode 100644 patches/debian/Revert-tests-Fail-on-warnings-too.patch create mode 100644 patches/debian/Support-Dynamic-triple-double-buffering.patch delete mode 100644 patches/debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch create mode 100644 patches/debian/meson-Do-not-mark-CI-test-tools-as-required.patch create mode 100644 patches/debian/tests-Do-not-run-screencast-tests.patch delete mode 100644 patches/gdm-util-Only-start-fingerprint-service-synchronously-whe.patch delete mode 100644 patches/global-make-possible-to-set-debug-flags-dynamically.patch delete mode 100644 patches/layout-Destroy-panel-barrier-on-shutdown.patch delete mode 100644 patches/magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch delete mode 100644 patches/main-add-backtrace-crashes-all-and-backtrace-all.patch delete mode 100644 patches/main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch delete mode 100644 patches/main-show-an-error-message-on-gnome-shell-crash.patch delete mode 100644 patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch create mode 100755 patches/pika/xwayland-scaling-support.patch delete mode 100644 patches/remove-dbus-restrictions-with-pika-gnome-session.patch delete mode 100644 patches/sessionMode-add-support-for-debugFlags-parameter.patch delete mode 100644 patches/ubuntu/background_login.patch delete mode 100644 patches/ubuntu/configure_login_screen.patch delete mode 100644 patches/ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch delete mode 100644 patches/ubuntu/desktop_detect.patch delete mode 100644 patches/ubuntu/gdm_alternatives.patch delete mode 100644 patches/ubuntu/keep-ubuntu-logo-bright-lp1867133-v1.patch delete mode 100644 patches/ubuntu/layout-Try-to-allocate-before-getting-size-of-tracke.patch delete mode 100644 patches/ubuntu/lightdm-user-switching.patch delete mode 100644 patches/ubuntu/lock_on_suspend.patch delete mode 100644 patches/ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch delete mode 100644 patches/ubuntu/resolve_alternate_theme_path.patch delete mode 100644 patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch delete mode 100644 patches/ubuntu/secure_mode_extension.patch delete mode 100644 patches/ubuntu/sessionMode-Add-support-for-configuring-an-icons-resource.patch delete mode 100644 patches/ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch create mode 100644 patches/workarounds/Mark-several-additional-tests-as-flaky.patch create mode 100644 patches/workarounds/cogl-tests-Avoid-converting-16bpc-float-16bpc.patch create mode 100644 patches/workarounds/kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch create mode 100644 patches/workarounds/place-Always-center-initial-setup.patch create mode 100644 patches/workarounds/tests-Mark-view-verification-tests-as-incomplete-in-big-e.patch create mode 100644 patches/workarounds/tests-Skip-thread-priority-test.patch create mode 100644 patches/workarounds/tests-skip-monitor-width-size-check-as-it-may-lead-to-une.patch diff --git a/.github/build-canary-v3 b/.github/build-canary-v3 new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/.github/build-canary-v3 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/.github/build-nest-v3 b/.github/build-nest-v3 new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/.github/build-nest-v3 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/.github/release-canary-v3 b/.github/release-canary-v3 new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.github/release-canary-v3 @@ -0,0 +1 @@ +1 diff --git a/.github/release-nest-v3 b/.github/release-nest-v3 new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/.github/release-nest-v3 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/.github/workflows/build-canaryv3.yml b/.github/workflows/build-canaryv3.yml new file mode 100644 index 0000000..bff3d86 --- /dev/null +++ b/.github/workflows/build-canaryv3.yml @@ -0,0 +1,37 @@ +name: PikaOS Package Build Only (Canary) (amd64-v3) + +on: + push: + branches: + - main + paths: + - '.github/build-canary-v3' + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ghcr.io/pikaos-linux/pikaos-builder:canaryv3 + volumes: + - /proc:/proc + options: --privileged -it + + steps: + - uses: actions/checkout@v3 + + - name: Install SSH key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_KEY }} + name: id_rsa + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + + - name: Update APT Cache + run: apt-get update -y + + - name: Set Build Config + run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh + + - name: Build Package + run: ./main.sh diff --git a/.github/workflows/build-nestv3.yml b/.github/workflows/build-nestv3.yml new file mode 100644 index 0000000..3c9c34d --- /dev/null +++ b/.github/workflows/build-nestv3.yml @@ -0,0 +1,37 @@ +name: PikaOS Package Build Only (amd64-v3) + +on: + push: + branches: + - main + paths: + - '.github/build-nest-v3' + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ghcr.io/pikaos-linux/pikaos-builder:nestv3 + volumes: + - /proc:/proc + options: --privileged -it + + steps: + - uses: actions/checkout@v3 + + - name: Install SSH key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_KEY }} + name: id_rsa + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + + - name: Update APT Cache + run: apt-get update -y + + - name: Set Build Config + run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh + + - name: Build Package + run: ./main.sh diff --git a/.github/workflows/release-canaryv3.yml b/.github/workflows/release-canaryv3.yml new file mode 100644 index 0000000..436c8ff --- /dev/null +++ b/.github/workflows/release-canaryv3.yml @@ -0,0 +1,40 @@ +name: PikaOS Package Build & Release (Canary) (amd64-v3) + +on: + push: + branches: + - main + paths: + - '.github/release-canary-v3' + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ghcr.io/pikaos-linux/pikaos-builder:canaryv3 + volumes: + - /proc:/proc + options: --privileged -it + + steps: + - uses: actions/checkout@v3 + + - name: Install SSH key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_KEY }} + name: id_rsa + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + + - name: Update APT Cache + run: apt-get update -y + + - name: Set Build Config + run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh + + - name: Build Package + run: ./main.sh + + - name: Release Package + run: ./release.sh diff --git a/.github/workflows/release-nestv3.yml b/.github/workflows/release-nestv3.yml new file mode 100644 index 0000000..ed42bb7 --- /dev/null +++ b/.github/workflows/release-nestv3.yml @@ -0,0 +1,40 @@ +name: PikaOS Package Build & Release (amd64-v3) + +on: + push: + branches: + - main + paths: + - '.github/release-nest-v3' + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ghcr.io/pikaos-linux/pikaos-builder:nestv3 + volumes: + - /proc:/proc + options: --privileged -it + + steps: + - uses: actions/checkout@v3 + + - name: Install SSH key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_KEY }} + name: id_rsa + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + + - name: Update APT Cache + run: apt-get update -y + + - name: Set Build Config + run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh + + - name: Build Package + run: ./main.sh + + - name: Release Package + run: ./release.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index fc0c2ef..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: PikaOS Package Release - -on: - workflow_dispatch - -jobs: - build: - runs-on: self-hosted - container: - image: ghcr.io/pikaos-linux/pika-package-container:latest - volumes: - - /proc:/proc - options: --privileged -it - - steps: - - uses: actions/checkout@v3 - - - name: Import GPG key - id: import_gpg - uses: crazy-max/ghaction-import-gpg@v5 - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - passphrase: ${{ secrets.PASSPHRASE }} - - - name: Install SSH key - uses: shimataro/ssh-key-action@v2 - with: - key: ${{ secrets.SSH_KEY }} - name: id_rsa - known_hosts: ${{ secrets.KNOWN_HOSTS }} - if_key_exists: replace - - - name: Update apt cache - run: apt update - - - name: Build Package - run: ./main.sh - - - name: Release Package - run: ./release.sh - - - name: Purge cache - uses: strrife/cloudflare-chunked-purge-action@master - env: - # Zone is required by both authentication methods - CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }} - - CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} - PURGE_URLS: ${{ vars.PURGE_URLS }} diff --git a/debian/.gitignore b/debian/.gitignore new file mode 100644 index 0000000..2d01ce9 --- /dev/null +++ b/debian/.gitignore @@ -0,0 +1,14 @@ +/*.debhelper.log +/*.substvars +/.debhelper/ +/debhelper-build-stamp +/files +/gir1.2-mutter-*/ +/libmutter-*-0/ +/libmutter-*-dev/ +/libmutter-test-*/ +/mutter-*-tests/ +/mutter-common-bin/ +/mutter-common/ +/mutter/ +/tmp/ diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..169b50e --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,17 @@ +Mutter Compositor +=================== + +Mutter includes a compositor based on Clutter. Mutter by default adds +very simple effects using the compositor, such as a drop-shadow. The +compositor may be used by plugins to add more effects. GNOME Shell is +an example of one such plugin. + +The compositor can be enabled on the fly by setting the gconf key +/apps/mutter/general/compositing_manager to true by using +gconf-editor or gconftool-2. + +Before enabling the compositor, you need to make sure your X server +configuration has the composite extension, as well as DRI loaded and +enabled. + + -- Gustavo Noronha Silva , Sun, 26 Jul 2009 13:14:57 +0200 diff --git a/debian/README.Ubuntu b/debian/README.Ubuntu deleted file mode 100644 index 8c24832..0000000 --- a/debian/README.Ubuntu +++ /dev/null @@ -1,61 +0,0 @@ -# Reporting Shell theme changes to Yaru. - -Our default theme is Yaru, it means that any changes, especially breaking changes (meaning, changes that can't be done -without a theme update) needs to be coordinated between the gnome-shell updates and Yaru. Probably with a **Breaks:** stenza -in `debian/control` - -## What should be reported? - -The upstream GNOME Shell `data/theme/` directory is used as a basis for our Yaru GNOME Shell theme so any change made upstream needs to be reflected in our derivative version. Most of the sass files are under the `gnome-shell-sass/` subdirectory. - -Note that Yaru has its own `meson.build` file. Changes there shouldn't be in general reported apart if new assets are installed. -It should be a simple assessment in general if you need to do anything on the build system side. - -## Structure - -Ensure you cloned the Yaru repository via `git clone https://github.com/ubuntu/yaru`. The shell theme is under `gnome-shell`. -It contains two subdirectories: - * `upstream/` is the latest upstream sass source we based on. This is the reference. - * `src` is the Yaru theme, which is `upstream/` + the yaru modifications. - -Basically diffing `upstream` and `src` provides you the difference between the default GNOME Shell theme and our Yaru Shell theme. - -## Reporting changes - -### Checking what to report - -Note: you should do that either recursively, or directly on each file that was modified for the new GNOME Shell release. -Basically, you can run: `diff -r yaru/gnome-shell/upstream new-gnome-shell-version/data/theme | lsdiff` to get the list between -latest upstream snapshot in Yaru and current upstream changes. - -The easiest way is a 3-way merge diff and manually reporting what makes sense. I personally used `meld` for this and run: -``` -$ meld yaru/gnome-shell/upstream/ new-gnome-shell-version/data/theme/ yaru/gnome-shell/src/ -``` - -Note: as diff, meld can infer the filename (only repeat it once) as long as you point to the correct directory. - -You will see a window with 3 columns: - * New changes are visible between the first two columns (diff between old upstream and new upstream). You report them, -as you may see it fit (clicking meld arrow or manually) on the third column. - * Second to third column diff is consequently the new additional delta you are introducing, if needed. It should be most -of the time be null (no diff) or minimal once you are done. - -Commit all those changes, don't forget the svg assets. - -### Taking a new upstream snapshot - -Once done, snapshot the new GNOME Shell upstream directory we based our changes on for the next Shell update involving a new 3 way merge: -``` -$ rm -r yaru/gnome-shell/upstream/ -$ cp -a new-gnome-shell-version/data/theme/ yaru/gnome-shell/upstream/ -``` - -### Changing package coordination - -Once again, if the changes are breaking, updates the **Breaks:** or other fields between **gnome-shell** and -**yaru-theme-gnome-shell** to ensure people are getting both updates simultaneously. - -### Submitting - -Commit that, and submit a MP against https://github.com/ubuntu/yaru. diff --git a/debian/changelog b/debian/changelog index 7034ca3..8265603 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5599 @@ -gnome-shell (45.1-100pika4) pikauwu; urgency=medium +mutter (46.4-101pika1) pika; urgency=medium - * Why are there two control files? wtffffffffffffff + * fix xwayland blur in fracscale - -- Ward Nakchbandi Fri, 07 Oct 2022 23:26:00 +0300 + -- Jeremy Bícha Sun, 04 Aug 2024 12:37:19 -0400 + +mutter (46.4-1) unstable; urgency=medium + + * New upstream release + * debian/libmutter-14-0.symbols: Update + + -- Jeremy Bícha Sun, 04 Aug 2024 12:37:19 -0400 + +mutter (46.3.1-7) unstable; urgency=medium + + [ Daniel van Vugt ] + * Delete patches that aren't needed for LP#2073009 + + [ Jeremy Bícha ] + * Stop ignoring build test failures on Debian ports. + The test failures make it appear that GNOME Shell/Mutter is broken there. + + -- Jeremy Bícha Thu, 01 Aug 2024 14:08:54 -0400 + +mutter (46.3.1-6) unstable; urgency=medium + + * Run dh_auto_test everywhere even if results are skipped on some + architectures + + -- Jeremy Bícha Sat, 27 Jul 2024 11:45:53 -0400 + +mutter (46.3.1-4) unstable; urgency=medium + + [ Daniel van Vugt ] + * Add patches to fix ppc64el build tests on Ubuntu (LP: #2073009) + + [ Jeremy Bícha ] + * Stop disabling libdisplay-info on Ubuntu + + -- Jeremy Bícha Sat, 27 Jul 2024 09:41:03 -0400 + +mutter (46.3.1-3) unstable; urgency=medium + + [ Simon McVittie ] + * Remove version constraints unnecessary since bullseye (oldstable) + * Explicitly version various dependencies as per meson.build + * Make the package cross-compilable + - d/control: Explicitly depend on gir1.2-*-dev for every GIR XML + module mentioned in 'includes:' + - d/control: Build-Depend on gobject-introspection (>= 1.80) + instead of libgirepository1.0-dev + - d/rules: Opt-in to cross-friendly gobject-introspection + (workaround for #1060838) + - d/control: Add ${gir:Provides} to gir1.2-mutter-14 + - d/control: Add ${gir:Depends}, ${gir:Provides} to -dev package + - d/control: Remove unused Build-Depends on python3-attr, -jinja2. + ei-scanner from the libei source package needs these, but it's run + at libei build time and is not packaged. + - d/control: Require a build-architecture copy of cvt. + We run it during the build, and the xcvt package is not yet marked + Multi-Arch: foreign. + * d/control: Don't annotate python3-dbusmock as , avoiding + FTBFS when built with nocheck. + The build system checks for this if we are building the "as-installed" + tests, even if we are not going to run tests during the build. + + [ Jeremy Bícha ] + * Update patch to fix build with gcc-14 on some architectures + (Closes: #1077078) + + -- Jeremy Bícha Sat, 27 Jul 2024 08:24:02 -0400 + +mutter (46.3.1-2) unstable; urgency=medium + + * Release to unstable + + -- Jeremy Bícha Fri, 12 Jul 2024 18:26:34 -0400 + +mutter (46.3.1-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * Drop patch applied in new release + + [ Daniel van Vugt ] + * Refresh Support-Dynamic-triple-double-buffering.patch + + [ Marco Trevisan (Treviño) ] + * debian/patches: Import patch from Fedora to always center Initial Setup + (LP: #2016013) + + -- Jeremy Bícha Mon, 08 Jul 2024 17:27:17 -0400 + +mutter (46.2-1) experimental; urgency=medium + + [ Daniel van Vugt ] + * New upstream release 46.2 (LP: #2068598) + - Fixed mouse clicks falling through to the window behind (LP: #2026194) + - Fixed a crash in meta_wayland_transaction_commit (LP: #2061739) + - Fixed night light getting stuck on (LP: #2066902) + * Update Support-Dynamic-triple-double-buffering.patch: + - Removed bogus changes introduced in 46.1-2 (unrelated files) + - Fixed debugging mode "MUTTER_DEBUG_TRIPLE_BUFFERING=always" which had + temporarily stopped working in 46.1 but also nobody should have been + using it. + - Updated commit message to mention the upstream source is maintained + in 'triple-buffering-v4-46'. + * Refreshed patches: + - meson-Do-not-mark-CI-test-tools-as-required.patch + - Mark-several-additional-tests-as-flaky.patch + * Add clutter/conform gesture tests to the list of known flaky ones: + it is a new test in mutter 46 + * Add patch to compile gsettings schemas for use in build tests + + [ Jeremy Bícha ] + * Stop compiling gsettings schemas in debian/rules + * Opt into Salsa CI + + -- Jeremy Bícha Wed, 12 Jun 2024 11:23:13 -0400 + +mutter (46.1-2) experimental; urgency=medium + + * Update libmutter-14-0.symbols for i386 + * Drop packaging references to Hurd since this is Linux-only + + -- Jeremy Bícha Mon, 29 Apr 2024 16:04:02 -0400 + +mutter (46.1-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * Update libmutter-14-0.symbols + * Update Breaks + * Drop Nvidia-secondary-GPU-copy-acceleration.patch: applied in new release + + [ Daniel van Vugt ] + * Update triple buffering patch + + -- Jeremy Bícha Mon, 29 Apr 2024 14:43:24 -0400 + +mutter (46.0-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * Update binary package names for soname bump + * Update symbols + * Add Build-Depends: libpixman-1-dev, libdisplay-info-dev + * Drop obsolete Build-Depends: libjson-glib-dev + * Bump minimum wayland-protocols to 1.33 + * Drop 4 patches applied in new release + * Refresh patches + + [ Daniel van Vugt ] + * Update triple buffering patch + * Add kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch + to fix cursor stutter in Wayland sessions when nothing else is + animating on screen (LP: #2040977) + * Add Nvidia-secondary-GPU-copy-acceleration.patch + to enable hardware accelerated screen updates on secondary GPU-connected + monitors (LP: #1970291). + + -- Jeremy Bícha Mon, 18 Mar 2024 15:11:40 -0400 + +mutter (45.3-3) experimental; urgency=medium + + * Cherry-pick several cursor fixes to fix compatibility with latest + adwaita-icon-theme (Closes: #1063640) + + -- Jeremy Bícha Sat, 17 Feb 2024 09:58:59 +0100 + +mutter (45.3-2) experimental; urgency=medium + + * Team upload + + [ Daniel van Vugt ] + * Drop cogl-onscreen-glx-Forcefully-disable-cogl_onscreen_glx_ge.patch. + The bug was fixed properly in Mutter 45.0 and in Mesa 23.3.0. + + [ Jeremy Bícha ] + * debian/control: Add Homepage + + [ Simon McVittie ] + * Merge packaging changes from unstable + - d/control: Build-depend on systemd-dev instead of udev + (Closes: #1060619) + - All other changes were included in 45.3-1 + + -- Simon McVittie Mon, 15 Jan 2024 17:46:16 +0000 + +mutter (44.8-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * Rename libraries for 64-bit time_t transition. Closes: #1064248 + + -- Benjamin Drung Wed, 28 Feb 2024 21:33:39 +0000 + +mutter (44.8-3) unstable; urgency=medium + + * Cherry-pick several cursor fix to fix compatibility with latest + adwaita-icon-theme (Closes: #1063640) + + -- Jeremy Bícha Sat, 10 Feb 2024 07:56:05 -0500 + +mutter (44.8-2) unstable; urgency=medium + + * Cherry-pick patch from 45.1 to fix using caps lock to enter + accented characters with ibus 1.5.29 (Closes: #1054214) (LP: #2035076) + + -- Jeremy Bícha Thu, 25 Jan 2024 16:00:55 -0500 + +mutter (44.8-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Fix a crash involving the workspace indicator extension + (gnome-shell-extensions#469, related to gjs#591) + - Avoid relayout happening at the wrong time, which is a performance + problem and should not happen (mutter#3425) + - Fix a grey area at the top of fullscreen X11 windows (mutter#2937) + - Fix build without Wayland headers (mutter#3046, does not affect Debian) + - Show the configured background colour around backgrounds that do not + fill the screen, instead of always black (mutter#1911) + * d/patches: Mark several additional tests as flaky (backported from + experimental). + Most of these have never been reliable on Debian buildds, especially + on ARM, so having them fail is not a regression. They usually succeed + after a few retries, but that's time-consuming and unsuitable to be + a QA gate. + The restore-size test was previously not run at all: now it is run, + but marked as flaky (so its result is ignored). + + -- Simon McVittie Mon, 15 Jan 2024 13:49:28 +0000 + +mutter (44.7-2) unstable; urgency=medium + + * Team upload + * d/control, d/rules: Stop generating d/control from d/control.in + * d/control: Build-depend on systemd-dev instead of udev + (Closes: #1060619) + + -- Simon McVittie Sun, 14 Jan 2024 19:32:46 +0000 + +mutter (45.3-1) experimental; urgency=medium + + * New upstream release + * debian/libmutter-13-0.symbols: Add new symbol + * Drop overrides for non-Linux since we build for Linux only + + -- Jeremy Bícha Mon, 08 Jan 2024 15:58:29 -0500 + +mutter (45.2-3) experimental; urgency=medium + + [ Daniel van Vugt ] + * Update Support-Dynamic-triple-double-buffering.patch + with a fix to the frame clock for a regression inherited from + 45.1 (8f27ebf8) whereby it would enter triple buffering mode + prematurely. And because it was premature, the clock would soon + notice that triple buffering isn't required and drop back to double + buffering. But the switch from triple to double buffering stalls the + client frame queue by one frame which for some clients like Firefox + is seen as a frame skip. (LP: #2046360) + + -- Jeremy Bícha Wed, 20 Dec 2023 09:29:22 -0500 + +mutter (45.2-2) experimental; urgency=medium + + * Team upload + + [ Chris Hofstaedtler ] + * Honor udev.pc's udevdir when installing udev rules (Closes: #1057319) + + [ Simon McVittie ] + * Merge with version 44.7-1 from unstable + * d/control, d/rules: Stop generating d/control from d/control.in + * d/patches: Mark several additional tests as flaky. + Most of these have never been reliable on Debian buildds, especially + on ARM, so having them fail is not a regression. They usually succeed + after a few retries, but that's time-consuming and unsuitable to be a + QA gate. + The restore-size test was previously not run at all: now it is run, but + marked as flaky (so its result is ignored). + + -- Simon McVittie Wed, 13 Dec 2023 17:08:10 +0000 + +mutter (44.7-1) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * New upstream release + * Drop patches that were included in the upstream release + + [ Chris Hofstaedtler ] + * Honor udev.pc's udevdir when installing udev rules (Closes: #1057319) + + -- Simon McVittie Tue, 12 Dec 2023 13:31:00 +0000 + +mutter (45.2-1) experimental; urgency=medium + + * New upstream release (LP: #2043000) + * Drop patches applied in new release + * Drop unimportant patch not included in the mutter 45.2 backports + + -- Jeremy Bícha Mon, 04 Dec 2023 08:54:20 -0500 + +mutter (45.1-2) experimental; urgency=medium + + * Cherry-pick several commits to fix Wacom on X11 issues (LP: #2043027) + * Cherry-pick other commits suggested in !3414 to fix several issues + + -- Jeremy Bícha Wed, 29 Nov 2023 09:48:34 -0500 + +mutter (45.1-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release (LP: #2043000) + - Fix capital accent letters (LP: #2035076) + - Fix crash when screen locked or heavy load with some Ryzen systems + (LP: #2034619) + * debian/libmutter-13-0.symbols: Add new symbols + * debian/libmutter-13-0.symbols: Add missing Build-Depends-Package annotation + * Update build autopkgtest to not run dh_auto_test (LP: #2038564) + * Drop patches applied in new release + + [ Daniel van Vugt ] + * Rebase triple buffering patch + + -- Jeremy Bícha Wed, 08 Nov 2023 18:49:03 +0200 + +mutter (45.0-3) experimental; urgency=medium + + [ Simon McVittie ] + * Merge packaging from 44.5-2 in unstable. + - Add versioned Build-Depends/Breaks to ensure Xwayland supports + the -byteswappedclients option (Closes: #1050642) + - All changes to the upstream code were already included in 45.0-1 + or earlier + + [ Daniel van Vugt ] + * Add kms-crtc-Increase-default-deadline-evasion-to-800-microse.patch + to fix cursor stuttering on low/normal frequency mice and touchpads + (LP: #2033719). The same patch is already merged into 45.1 upstream. + + [ Jeremy Bícha ] + * Add autopkgtest to ensure mutter is still buildable (LP: #1993226) + * Cherry-pick 2 more future 45.1 commits to fix crashes + + -- Jeremy Bícha Tue, 03 Oct 2023 18:38:45 -0400 + +mutter (45.0-2) experimental; urgency=medium + + [ Daniel van Vugt ] + * Update triple buffering patch to fix freezing + seen when running apps full screen (LP: #2035016) + + [ Jeremy Bícha ] + * Cherry-pick patch to fix changing input language in modal popups + + -- Jeremy Bícha Fri, 22 Sep 2023 10:50:00 -0400 + +mutter (45.0-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + - Fix focus-follows-mouse regression (Closes: #1051780) + * debian/libmutter-13-0.symbols: Add new symbol + * Refresh patches + + [ Simon McVittie ] + * Merge packaging from 44.4-3 in unstable + + [ Daniel van Vugt ] + * Update Support-Dynamic-triple-double-buffering.patch to match upstream. + This fixes a leak when a monitor is unplugged, which may have been + preventing discrete GPUs from entering a lower power state. + It also moves the freeze fix by a couple of lines so as to match the + current upstream merge proposals but I doubt that has any behavioural + impact. + + -- Jeremy Bícha Mon, 18 Sep 2023 10:21:08 -0400 + +mutter (45~rc-4) experimental; urgency=medium + + * Also skip the new "thread priority" test on i386 + + -- Jeremy Bícha Mon, 11 Sep 2023 10:31:41 -0400 + +mutter (45~rc-3) experimental; urgency=medium + + * Fix sysprof Build-Depends for i386 again + + -- Jeremy Bícha Sun, 10 Sep 2023 23:02:07 -0400 + +mutter (45~rc-2) experimental; urgency=medium + + * Merge changes from 44.4-2 + + -- Jeremy Bícha Sun, 10 Sep 2023 22:16:34 -0400 + +mutter (45~rc-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * debian/control.in: Bump minimum libei to 1.0.901 + * debian/control.in: Bump minimum compatible GNOME Shell to 45~rc + * debian/libmutter-13-0.symbols: Update + * Add new Mtk sublibrary files to gir & dev install lists + * Drop "45" and sysprof patches: applied in new release + + [ Daniel van Vugt ] + * Add cogl-onscreen-glx-Forcefully-disable-cogl_onscreen_glx_ge.patch + to work around https://launchpad.net/bugs/2034672 + + -- Jeremy Bícha Sun, 10 Sep 2023 21:04:02 -0400 + +mutter (45~beta.1-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * Update binary package names for soname bump + * Update symbols + * debian/control.in: Build-Depend on libei-dev & libeis-dev + * Drop many 44 patches applied in new release + * Move the remaining unapplied patches to 45 + * Drop wayland-data-device-Allow-any-drag-timestamp patch: + No longer needed (Closes: #1050025) + * Add patch to skip new thread priority modification test on arm + * Refresh patches + + [ Daniel van Vugt ] + * Update triple buffering patch + + -- Jeremy Bícha Mon, 21 Aug 2023 11:19:08 -0400 + +mutter (44.5-2) unstable; urgency=medium + + * Team upload + * d/patches: Update to gnome-44 branch commit 44.5-6-g0173cfffcd + - Backport a change from 45~alpha to fix an intermittent crash in the + closeWithActiveWindows test (mutter#6808) + - Backport a change from 45~beta to fix clicks not always taking effect + (mutter#2918) + - Backport a change from 45~rc to fix an uninitialized memory read + (mutter#2964) + - Backport a change from 45~rc to fix a crash (mutter#2978) + - These changes also fix a crash while restarting gnome-shell in X11 + mode with Alt+F2, "r" (mutter#2977, another possible cause + for the symptoms seen in #1050502) + * Add versioned Build-Depends/Breaks to ensure Xwayland supports + the -byteswappedclients option (Closes: #1050642) + + -- Simon McVittie Mon, 25 Sep 2023 10:14:07 +0100 + +mutter (44.5-1) unstable; urgency=medium + + * New upstream release + - Fix redraw issue when buffer age is unavailable + (regression in 44.1, mutter#2771) + - Fix crash during GNOME Shell restart in Xorg mode + (mutter#2852, mutter!3247; Closes: #1050502) + - Fix unresponsive touchscreen after titlebar drag when using a + touchscreen (mutter#2836) + - Fix some XWayland windows not getting mapped + (regression in 44.1, mutter#2965, mutter#2820, mutter#2867) + - Avoid a possible crash while changing monitor layout + (regression in 44.1, mutter!3229) + - Correct a check for monitor portrait orientation when choosing + whether to allow tiling (mutter!3199, mutter!3248) + - Other crash fixes were included in 44.4-3 already + * d/watch: Only watch for v44.x + * d/patches: Drop patches that were applied upstream + * d/p/x11-events-NULL-Check-input-event-when-getting-name.patch: + Add patch from upstream 45~alpha to avoid a crash when being + profiled with sysprof 45~rc (mutter#3030) + * d/libmutter-12-0.symbols: Update + + -- Simon McVittie Sun, 17 Sep 2023 16:54:02 +0100 + +mutter (44.4-3) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * d/patches: Update to gnome-44 branch commit 44.4-2-g7fc141552a + - d/p/monitor-manager-xrandr-Trap-DPMS-changes.patch: + Under X11, don't crash if changing display power-saving settings + fails (mutter#2857, gnome-shell#6883, Closes: #1050512) + - d/p/backends-x11-Trap-errors-from-XIAllowTouchEvents.patch: + Under X11, don't crash if some touchscreen operations fail + (mutter#2808, LP: #2029413) + + [ Jeremy Bícha ] + * Remove sysprof build-dependency on i386 + + -- Simon McVittie Thu, 14 Sep 2023 10:19:15 +0100 + +mutter (44.4-2) unstable; urgency=medium + + * Don't enable sysprof profiling integration on i386 + + -- Jeremy Bícha Fri, 01 Sep 2023 14:27:36 -0400 + +mutter (44.4-1) unstable; urgency=medium + + * New upstream release + * Drop '44' patches applied in new release + * Cherry-pick proposed patch to build with sysprof 45 + * debian/control.in: Build-Depend on libsysprof-6-dev + + -- Jeremy Bícha Fri, 01 Sep 2023 09:49:10 -0400 + +mutter (44.3-7) unstable; urgency=medium + + * Team upload + * d/tests/installed-tests: Run installed-tests via a wrapper script. + This collects logs as test artifacts, and lets us fail the test if a + packaging bug results in no matching tests being present. + * d/tests/installed-tests: Ignore test failures on some architectures. + These are the same architectures where we don't run build-time tests. + On s390x the tests are timing out at the default 5 minute cutoff, and + it's not clear whether they would finish successfully if allowed to + run for longer. + + -- Simon McVittie Mon, 21 Aug 2023 20:57:49 +0100 + +mutter (44.3-6) unstable; urgency=medium + + * Team upload + * d/patches: Update to upstream gnome-44 branch commit + 44.3-15-g0b5ab083b4 (no functional changes) + - Patches previously in d/patches/45 have been applied to the gnome-44 + branch and move to d/patches/44 + * Merge packaging from unstable + - No functional changes; all changes relevant to this branch were + already in experimental + - d/p/tests-Reinstate-meta_test_get_plugin_name.patch intentionally + omitted to avoid creating longer-term delta + * Upload to unstable (starts transition: #1043144) + + -- Simon McVittie Sun, 20 Aug 2023 21:30:31 +0100 + +mutter (43.7-2) unstable; urgency=medium + + * Team upload + * d/patches: Update to upstream gnome-43 branch commit + 43.7-9-g3139cbb47c, excluding CI-only changes + - d/p/output-kms-Use-meta_kms_connector_get_preferred_mode-in-i.patch: + Make the choice of preferred video mode consistent between code + paths, fixing choice of video mode on some monitors (mutter!3055) + - d/p/cogl-gl-framebuffer-Fix-inverted-test-in-ensure_bits_init.patch: + change was already included in 43.7-1, just update metadata + - d/p/clutter-stage-Add-is-grabbed-property.patch, + d/p/window-Postpone-focusing-until-grab-ended-if-uninteractab.patch: + Give focus to new app windows when launched from the gnome-shell + overview, fixing a regression in 43.3-5 and upstream 43.4 + (Closes: #1035092, #1049934) + - d/p/tests-Introduce-and-use-a-custom-test-shell.patch, + d/p/tests-test-shell-Emulate-overview-grabs.patch, + d/p/tests-test-runner-Add-toggle_overview-command.patch, + d/p/tests-Add-test-case-for-restoring-focus-after-overview.patch: + Add unit test coverage for #1035092 + * d/p/tests-Reinstate-meta_test_get_plugin_name.patch: + Reinstate a symbol in libmutter-test-11 removed by the above patches, + in case a dependent package is using it + * d/libmutter-test-11.symbols: Add a new symbol introduced by the test + for #1035092 + + -- Simon McVittie Sun, 20 Aug 2023 11:35:31 +0100 + +mutter (44.3-5) experimental; urgency=medium + + * Team upload + * d/patches: Reorder patch series with closest-to-upstream first + * d/patches: Improve tracking of bug references and upstream status + * d/.gitignore: Add + * d/patches/44/, d/patches/45/: Move patches that were applied upstream + into topic subdirs. + We have enough patches in this package, some of them short-term and + some of them long-term delta, that it seems useful to keep track + of this. + * d/patches, d/rules: Stop trying to force gles2 driver on armel, armhf. + This patch was rejected by upstream, and according to comments on the + upstream merge request, it is no longer effective either, because + mutter's driver selection is now done in a higher layer. + Users of systems with a working gles2 driver but a broken or slow gl3 + driver can work around this by setting environment variable + CLUTTER_DRIVER=gles2. + See #1050014 for more details of what would be involved in making this + driver choice happen automatically in an upstreamable way. + * d/p/cursor-renderer-native-Workaround-broken-arm64-drivers.patch: + Drop patch forcing use of simpler cursor buffers on aarch64. + According to the upstream and Ubuntu bugs, this should be fixed in Mesa + since 22.3.3, which is included in the Debian 12 initial release and in + Ubuntu 22.04 as an update. + * Merge packaging from unstable + - No functional changes; all changes relevant to this branch were + already in experimental + * d/gbp.conf: Use upstream/44.x branch. + The Ubuntu GNOME team have already started packaging v45 prereleases. + + -- Simon McVittie Fri, 18 Aug 2023 20:49:18 +0100 + +mutter (43.7-1) unstable; urgency=medium + + * Team upload + * New upstream stable release 43.7 + - Functionally equivalent to 43.6-1 + * d/p/wayland-outputs-Fix-potential-crash-when-output-has-no-mo.patch: + Drop patch, applied upstream + * d/gbp.conf, d/control.in: Use debian/trixie branch + * d/p/cogl-gl-framebuffer-Fix-inverted-test-in-ensure_bits_init.patch: + Add patch from upstream 45.beta to fix a test failure with recent Mesa + (Closes: #1042055, LP: #2025287) + * d/patches: Improve tracking of upstream status + + -- Simon McVittie Fri, 18 Aug 2023 17:40:39 +0100 + +mutter (44.3-4) experimental; urgency=medium + + * Team upload + * d/patches: Update to upstream gnome-44 branch commit 44.3-7-g5d0354035b, + excluding CI-only changes + - Make the choice of preferred video mode consistent between code + paths, fixing choice of video mode on some monitors (mutter!3055) + - Fix the configuration option to allow byteswapped X11 clients so + that it is possible to allow them (mutter#2938) + - Fix a crash if a window is destroyed by a Wayland protocol error + while it is being moved (mutter#2853) + - Translation update: fa + * d/p/clutter-stage-Add-is-grabbed-property.patch, + d/p/window-Postpone-focusing-until-grab-ended-if-uninteractab.patch, + d/p/compositor-Handle-grab-state-through-ClutterStage-is-grab.patch: + Add patches from upstream to give focus to new app windows when + launched from the gnome-shell overview (Closes: #1035092, #1049934) + * d/p/tests-Introduce-and-use-a-custom-test-shell.patch, + d/p/tests-test-shell-Emulate-overview-grabs.patch, + d/p/tests-test-runner-Add-toggle_overview-command.patch, + d/p/tests-Add-test-case-for-restoring-focus-after-overview.patch: + Add patches from upstream adding test coverage for #1035092 + * d/libmutter-test-12.symbols: Update for #1035092 changes. + Ignore removal of meta_test_get_plugin_name(): this is a private + symbol and is not declared in any headers. + + -- Simon McVittie Thu, 17 Aug 2023 10:44:06 +0100 + +mutter (44.3-3) experimental; urgency=medium + + * debian/control.in: Build-Depend on libgtk-4-dev & libsysprof-4-dev + + -- Jeremy Bícha Mon, 14 Aug 2023 17:54:56 -0400 + +mutter (44.3-2) experimental; urgency=medium + + [ Simon McVittie ] + * Merge changelog from unstable + - All fixes in 43.6 were also in 44.2 or earlier + * d/control: Regenerate + + [ Daniel van Vugt ] + * Update Support-Dynamic-triple-double-buffering.patch: + Fix increased mouse pointer latency that occurred in 44.1 when using + the default atomic KMS backend with Wayland sessions (LP: #2023363) + + -- Jeremy Bícha Mon, 14 Aug 2023 17:08:48 -0400 + +mutter (44.3-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * Drop 2 patches applied in new release + + [ Daniel van Vugt ] + * Update triple buffering patch + + -- Jeremy Bícha Thu, 06 Jul 2023 17:04:05 -0400 + +mutter (44.2-3) experimental; urgency=medium + + * Cherry-pick patch to fix build test with mesa 23.1 (LP: #2025287) + + -- Jeremy Bícha Wed, 28 Jun 2023 15:29:10 -0400 + +mutter (44.2-2) experimental; urgency=medium + + [ Daniel van Vugt ] + * Cherry-pick 2 patches for stuttering fixes + * Avoid cursor stuttering over some windows (LP: #2023766). This will also + improve best-case input latency by roughly half a frame. + * Avoid render stuttering in some fullscreen games (LP: #2016990). + * Update Support-Dynamic-triple-double-buffering.patch + * Fix a failure to resume from sleep (frozen black screen), which seems + to be an old bug but only became likely in 44.1. + * Fix a crash on resume from sleep (LP: #2020049). + + -- Jeremy Bícha Wed, 28 Jun 2023 09:42:56 -0400 + +mutter (44.2-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release (LP: #2022951) + - Fix drag and drop for Qt applications (LP: #2013235) + * Drop display-Set-compositor-selection-earlier patch: applied in new release + * Try dropping 2 of our flaky tests patches + + [ Daniel van Vugt ] + * Update triple buffering patch to avoid NULL dereference on resume + from suspend (LP: #2020652) + + -- Jeremy Bícha Mon, 05 Jun 2023 11:47:52 -0400 + +mutter (43.6-1) unstable; urgency=medium + + * New upstream stable release 43.5 + - Always update surfaces belonging to a window that is being recorded + or included in a screencast, even if the window is not visible + on a local display (mutter#2538, mutter!2789) + - Export previously-private meta_window_has_pointer(), needed by + screenshot UI fixes in gnome-shell 43.5 (mutter!2928) + + d/libmutter-11-0.symbols: Update to add that symbol + - All other changes were already present in 43.4-2 + * New upstream stable release 43.6 + - Fix a resource leak when a compositor view is destroyed (mutter!2991) + - Fix a crash when headless gdm greeter via gnome-remote-desktop + attempts to blank the screen (mutter#2841) + * d/patches: Drop patches that were applied upstream + * d/p/wayland-outputs-Fix-potential-crash-when-output-has-no-mo.patch: + Backport patch from 44~beta to fix a crash during suspend/resume on + some systems (mutter#2570, Closes: #1036268) + + -- Simon McVittie Sat, 10 Jun 2023 21:17:19 +0100 + +mutter (43.4-2) unstable; urgency=medium + + * Team upload + * d/patches: Update to upstream gnome-43 branch commit 43.4-5-gc35e9f8c0 + - d/p/clutter-actor-Get-next-action-from-list-before-handling-c.patch: + Fix a use-after-free that was always a problem in theory, but causes + crashes in practice with GLib 2.76.x (mutter!2955, gnome-shell#6552) + - d/p/cursor-tracker-Don-t-leak-window-cursor-on-exit.patch: + Fix a minor memory leak (mutter!2969) + - d/p/wayland-cursor-surface-Update-cursor-on-dispose.patch: + Fix a crash in rare situations involving Wayland cursor changes, + and add test coverage (mutter!2969) + * d/libmutter-11-0.symbols: Add new private symbols used by tests + for the above changes + * d/p/wayland-xdg-shell-Dismiss-instead-of-destroy-invalid-popu.patch: + Backport a fix from upstream 44.x branch to fix popup-related crashes + (mutter#2728, mutter!2940, Closes: #1033484) + + -- Simon McVittie Fri, 21 Apr 2023 10:10:24 +0100 + +mutter (43.4-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Improve performance by reducing memory bandwidth use on some GPUs + (GNOME/mutter!2091) + - Fix handling of rotated screens, for example on Pinephone Pro and + Pinebook Pro (GNOME/mutter#2557) + - Avoid warnings when destroying a ClutterText object with recent + GLib versions (GNOME/mutter#2566) + - Other changes were included in previous Debian packaging updates + * Drop most patches, applied upstream + * d/patches: Update to upstream gnome-43 branch commit 43.4-2-gba5cb0542 + - Fix a crash with newer GStreamer gtkwaylandsink (GNOME/mutter!2917) + - Translation update: ab + * Remove #1032388 from 43.3-5 changelog entry. + I hoped !2878 would fix both #1032388 and #1031945, but in fact it + only fixes #1031945. + + -- Simon McVittie Mon, 10 Apr 2023 14:07:33 +0100 + +mutter (44.1-1) experimental; urgency=medium + + [ Jeremy Bícha ] + * New upstream release + * Drop bash patch applied in new release + * debian/libmutter-12-0.symbols: Add new symbols + + [ Daniel van Vugt ] + * Update triple buffering patch for Mutter 44.1 + + [ Marco Trevisan (Treviño) ] + * Fix issue with Firefox opening black window in wayland sessions + - Add d/p/display-Set-compositor-selection-earlier-on-XWayland.patch + (LP: #1987976) + + -- Jeremy Bícha Fri, 19 May 2023 16:18:13 -0400 + +mutter (44.0-2) experimental; urgency=medium + + * Update debian/patches/debian/Support-Dynamic-triple-double-buffering.patch: + Compared to the last update, a crash on resuming from sleep has been + fixed. And some minor code tidying. + + -- Daniel van Vugt Mon, 27 Mar 2023 09:27:35 -0400 + +mutter (44.0-1) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * New upstream release: + - Fixes feedback loops with old statically compiled SDL applications + (LP: #2011803) + * debian/patches: refresh indexes + * debian/patches/debian/Support-Dynamic-triple-double-buffering.patch: Update + We still keep it enabled, given that we're in experimental anyways + + [ Simon McVittie ] + * Remove #1032388 from previous changelog entry. + I hoped !2878 would fix both #1032388 and #1031945, but in fact it + only solves #1031945. + + -- Marco Trevisan (Treviño) Mon, 20 Mar 2023 20:35:02 +0100 + +mutter (44~rc-1) experimental; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + * d/p/wayland-Don-t-overwrite-surface-offsets.patch, + d/p/x11-Avoid-updating-focus-on-wayland-compositor.patch: + Drop, applied in new release + * debian/control.in: Build-Depend on libgnome-desktop-4-dev instead of -3 + * debian/control.in: Mark libgtk-3-dev as only needed for build tests + * debian/control.in: Bump minimum wayland-protocols to 1.31 + * debian/*.symbols: Update; some "private" meta_* symbols were dropped + + [ Simon McVittie ] + * Merge packaging from unstable (Closes: #1031945, #1031847) + - Drop patches that were backported from upstream 44.rc into unstable + - d/p/tests-Use-a-more-interoperable-path-to-bash.patch: + Fix path to interpreter in x11-test.sh instead of disabling it + - d/p/tests-Disable-broken-test.patch: Drop patch, no longer needed + * d/p/debian/backends-native-kms-crtc-Don-t-compare-gamma-values-on-un.patch: + Drop patch from upstream !2371, which no longer applies cleanly. + As far as I can see, this is unnecessary since commit 9001fa97 + "kms/crtc: Always read the gamma state" from !2435. + + [ Marco Trevisan (Treviño) ] + * d/p/debian/Support-Dynamic-triple-double-buffering.patch: + Refreshed with the 44-WIP version from Daniel, it's working properly in + main tested scenarios. + * debian/patches: Drop patch removing dependency on glib 2.75 + * debian/control: Bump build-dependency on glib-2.75 + * debian/control: Add breaks on gnome-shell << 44~rc. + It's not possible to compile older gnome-shell versions with mutter + 44~rc due to the gtk dependency removal + + -- Marco Trevisan (Treviño) Wed, 08 Mar 2023 02:29:22 +0100 + +mutter (44~beta-3) experimental; urgency=medium + + * debian/control.in: Fix misspelling Replaces + * Mark 2 more tests as flaky for now + * Ignore test failures on s390x for now + * Cherry-pick a focus fix + + -- Jeremy Bicha Wed, 22 Feb 2023 20:34:02 -0500 + +mutter (44~beta-2) experimental; urgency=medium + + * Add patch to keep using glib 2.74 for now + * debian/control.in: Build-Depend on glib 2.74.0 + * Have libmutter-12-0 depend on the required mutter-common-bin + (Closes: #1031688) + + -- Jeremy Bicha Mon, 20 Feb 2023 11:33:16 -0500 + +mutter (44~beta-1) experimental; urgency=medium + + * New upstream release + * Rename packages for API bump (mutter-11 -> mutter-12) + * Update symbols files + * Add mutter-common-bin to install libexec binaries + * Have libmutter-test-12 install the new MetaTest typelib + and add a Provides for it instead of creating a new binary package + * debian/mutter.install: mutter.desktop is no longer provided + * Bump minimum glib to 2.75.1 + * Refresh patches + * Update triple buffering patch to the latest version + * Drop patch applied in new release + * Drop 2 patches that no longer apply: + - theme-load-icons-as-Gtk-does-with-fallback-and-RTL-suppor.patch + - theme-use-gtk_render_icon_suface-to-paint-button-icon.patch + + -- Jeremy Bicha Fri, 17 Feb 2023 16:41:43 -0500 + +mutter (43.3-5) unstable; urgency=medium + + * Team upload + * d/patches: Use the same order in which patches were applied upstream + * d/p/color-device-Make-sure-lcms_context-is-not-NULL.patch, + d/p/color-device-Don-t-close-lcms-profile-on-error-from-cd_ic.patch: + Use final version of these patches as applied upstream + * d/p/Revert-x11-Do-not-move-X11-input-focus-during-grabs.patch, + d/p/Revert-x11-events-Do-not-update-focus-XWindow-during-grab.patch, + d/p/x11-Ignore-_NET_ACTIVE_WINDOW-client-messages-while-grabb.patch, + d/p/core-Avoid-focusing-windows-on-map-during-grabs.patch: + Backport upstream merge request !2878, fixing X11 focus regressions + (Closes: #1031945) + * d/p/tests-Use-a-more-interoperable-path-to-bash.patch: + Fix path to interpreter in x11-test.sh instead of disabling it + - d/p/tests-Disable-broken-test.patch: Drop patch, no longer needed + + -- Simon McVittie Mon, 06 Mar 2023 11:35:23 +0000 + +mutter (43.3-4) unstable; urgency=medium + + * Team upload + * d/p/color-device-Make-sure-lcms_context-is-not-NULL.patch, + d/p/color-device-Don-t-close-lcms-profile-on-error-from-cd_ic.patch: + Fix a double-free when loading the ICC profile from a device's EDID + fails (Closes: #1031847) + + -- Simon McVittie Thu, 02 Mar 2023 08:50:50 +0000 + +mutter (43.3-3) unstable; urgency=medium + + * Team upload + * d/p/x11-Avoid-updating-focus-on-wayland-compositor.patch: + Add patch from upstream fixing a focus-handling regression in + Wayland sessions. + In 43.3, switching from an Xwayland window to a native Wayland window + would not always work. + + -- Simon McVittie Sat, 18 Feb 2023 18:44:12 +0000 + +mutter (43.3-2) unstable; urgency=medium + + * Team upload + * Mention LP: #1985089 in the 43.2-6 changelog + * d/p/Support-Dynamic-triple-double-buffering.patch: + Record the exact revision that was used (no content changes) + * Remove Lintian overrides that are no longer necessary now that + lintian/lintian!452 is in a release + * Upload to unstable + + -- Simon McVittie Thu, 16 Feb 2023 09:37:11 +0000 + +mutter (43.3-1) experimental; urgency=medium + + * Team upload + * Initially uploading to experimental pending feedback on whether the + downclocking patch needs adjustment for 43.3 + + [ Daniel van Vugt ] + * d/p/Support-Dynamic-triple-double-buffering.patch: + Improve downclocking (triple to double buffering) support so it + happens sooner and more reliably. This reduces input latency during + light rendering as well as reducing CPU usage of cursor movement. + Also correct the origin information. + + [ Simon McVittie ] + * New upstream release + - Make sure there is always a non-null list of extensions + (LP: #1994011) + - Fix a crash when colour management operations are cancelled + (mutter!2794) + - Fix lockup when pointer crosses the intersection of 4 displays + (mutter#2598) + - Fix some small memory leaks (mutter!2811) + - Fix a misleading error message (mutter!2811) + - Revert a problematic change to the handling of frame event timing + (mutter!2835) + - On X11, Don't allow focus to be taken by an app during grabs + (gnome-shell#5932, mutter!2832) + - Many changes that were already in 43.2-6 + * Drop patches that were applied upstream + * d/p/wayland-Don-t-overwrite-surface-offsets.patch: + Add patch from upstream to fix drag-and-drop cursor position on Wayland + (mutter#2622) + This updates us to upstream gnome-43 branch commit 43.3-1-ga8a348185b. + * d/control.in, d/gbp.conf, d/watch: Set up branches for 43.x in bookworm. + This leaves the default branch available for GNOME 44 betas in + experimental and Ubuntu. + + -- Simon McVittie Wed, 15 Feb 2023 17:00:58 +0000 + +mutter (43.2-6) unstable; urgency=medium + + * Team upload + * d/patches: Update to upstream gnome-43 branch commit 43.2-29-g35763ca0cc + - Avoid lag while altering the split point between edge-tiled windows + on the left and right halves of the screen + (mutter#2246, LP: #1985089) + - Disable direct scanout optimization during drag-and-drop to ensure + the dragged content is visible (mutter#2470) + - Performance improvements (mutter!2671) + - Enable the direct scanout optimization for fullscreen mpv in Wayland + (mutter#2550) + - Revert an optimization which caused some extensions to regress + - Prevent mouse cursor disappearing for windows that appeared while a + menu was open (mutter#2553) + - Make pointer confinement compatible with subsurfaces (mutter#2223) + - Report width and height of rotated screens consistently with the spec + and other compositors (mutter#2519) + - Avoid unintended focus change on secondary display when switching + workspace on primary display (mutter#2548) + - Make workspace-switching more resilient against crashes (mutter!2707) + - Fix a crash during screen recording at certain resolution/scale + combinations (mutter#2542) + - Fix cursor position scaling while recording a single window + (mutter#1541) + - Avoid integer overflow during screencasting (mutter!2762) + - Ensure cursor reappears when using touchscreen and then mouse in X11 + (mutter#2344) + - Ensure keyboard accessibility works at beginning of session if + previously enabled in configuration (mutter#1858) + - Fix mapping between graphics tablets and displays (mutter!2767) + - Fix a small memory leak (mutter!2799) + - Translation updates: ru + * d/patches: Sort closest-to-upstream first + * d/patches: Improve metadata + * d/control.in: Drop Multi-Arch from libmutter-test-11. + The test library is not usefully multiarch, because it depends on a + matching architecture of mutter. + * lintian-overrides: Silence a false positive for libegl1-mesa-dev + libegl1-mesa-dev is not transitional or obsolete, see lintian/lintian!452. + * d/copyright: Add a missing short name field + * d/control.in: Standards-Version: 4.6.2 (no changes required) + + -- Simon McVittie Sun, 29 Jan 2023 15:26:48 +0000 + +mutter (43.2-5) unstable; urgency=medium + + [ Daniel van Vugt ] + * Update Support-Dynamic-triple-double-buffering.patch. + Fix tearing on monitors attached to secondary GPUs (LP: #1999216) + * Add patch for cursor-renderer-native to workaround broken arm64 drivers. + By forcing cursors to use dumb buffers. At least until Mesa gets fixed + for panfrost, vc4, v3d... (LP: #1988859) + + -- Jeremy Bicha Mon, 23 Jan 2023 11:30:06 -0500 + +mutter (43.2-4) unstable; urgency=medium + + * Team upload + * Mark xwayland test-case as known to be flaky on 32-bit ARM. + Mitigates: #1026445 + + -- Simon McVittie Tue, 20 Dec 2022 12:48:02 +0000 + +mutter (43.2-3) unstable; urgency=medium + + * Team upload + * Rebuild source package with non-expired signing key + + -- Simon McVittie Sun, 18 Dec 2022 22:32:32 +0000 + +mutter (43.2-2) unstable; urgency=medium + + * Team upload + * d/p/workspace-Don-t-crash-on-invalid-argument-to-meta_workspa.patch: + Add proposed patch to avoid crashing on an invalid argument + * d/p/tests-Break-up-stacking-installed-tests-into-more-smaller.patch: + Add proposed patch to have more, smaller installed-tests. + As well as doing what it was intended to do, this also avoids a crash + during autopkgtest. (Mitigates: #1024438) + + -- Simon McVittie Sun, 18 Dec 2022 21:29:01 +0000 + +mutter (43.2-1) unstable; urgency=medium + + * New upstream release + * Update symbols files + + -- Jeremy Bicha Sat, 10 Dec 2022 16:46:15 -0500 + +mutter (43.1-2) unstable; urgency=medium + + * Team upload + * Disable restore-size test. + This avoids intermittent FTBFS, especially on armel and armhf. + * Build-/test-depend on dbus-daemon instead of dbus + * d/upstream/metadata: Add Repository field + + -- Simon McVittie Tue, 15 Nov 2022 10:32:45 +0000 + +mutter (43.1-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Among other fixes, this avoids a fullscreen window on one display + being replicated on another display (Closes: #1023256, LP: #1990563) + * Refresh patch series + - Drop patches that were included upstream + - Update triple-buffering patch from GNOME/mutter!1441 + * Set field Upstream-Name in debian/copyright. + * d/upstream/metadata: Add + * Update symbols file for new upstream release + * Reduce entropy of .symbols file. + The SONAME changed in version 43~beta, so there's no point in keeping + track of whether symbols are older than that version. + Similarly, if a symbol was introduced in a prerelease, we want + dependent packages to depend on the final release, so there's little + point in finer-grained tracking of which specific prerelease each + symbol came from. + + -- Simon McVittie Fri, 04 Nov 2022 20:09:07 +0000 + +mutter (43.0-3) unstable; urgency=medium + + * Cherry-pick patch to fix Night Light availability in GNOME Settings + (Closes: #1020941) (LP: #1990207) + * Cherry-pick patches to avoid crash when ICC color profile is invalid + (Closes: #1021680) (LP: #1993114) + + -- Jeremy Bicha Mon, 17 Oct 2022 06:57:50 -0400 + +mutter (43.0-2) unstable; urgency=medium + + * Release to unstable (Closes: #1009990, #1019266, #1020515) + + -- Jeremy Bicha Tue, 27 Sep 2022 19:00:48 -0400 + +mutter (43.0-1) experimental; urgency=medium + + * Team upload + + [ Simon McVittie ] + * Team upload + * New upstream release + * d/copyright: Update + * Standards-Version: 4.6.1 (no changes required) + * d/libmutter-11-0.symbols: Add new symbols + + [ Jeremy Bicha ] + * Mark as Linux-any + - Build tests indicate mutter doesn't work on Hurd or kFreeBSD + - Mutter is only used by GNOME Shell and Budgie, neither of which + are currently available on those architectures for other reasons + + -- Simon McVittie Sun, 18 Sep 2022 20:18:26 +0100 + +mutter (43~rc-2) experimental; urgency=medium + + [ Simon McVittie ] + * d/control: Drop compatibility with old libgdk-pixbuf2.0-dev package + + [ Marco Trevisan (Treviño) ] + * debian/patches: Update triple-buffering patch against newest version + (LP: #1969422, #1988625) + + -- Marco Trevisan (Treviño) Thu, 08 Sep 2022 17:35:16 +0200 + +mutter (43~rc-1) experimental; urgency=medium + + * New upstream release + * Build-Depend on libcolord-dev & liblcms2-dev + * debian/*.symbols: Update + * Drop Consistently-pass-timestamp….patch: Applied in new release + * Refresh 2 patches + + -- Jeremy Bicha Tue, 06 Sep 2022 14:07:28 -0400 + +mutter (43~beta-4) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * debian/control: Remove from xvfb-run + + [ Jeremy Bicha ] + * debian/tests/libmutter-11-dev: fix a reference to mutter-10 + + -- Jeremy Bicha Thu, 25 Aug 2022 05:28:09 -0400 + +mutter (43~beta-3) experimental; urgency=medium + + * Add patches from Ubuntu: + - Support-Dynamic-triple-double-buffering.patch + - backends-native-kms-crtc-Don-t-compare-gamma-values-on-un.patch + + Avoid memory errors when comparing gamma values + - wayland-data-device-Allow-any-drag-timestamp....patch + + Allow any drag timestamp as drag start serial + * debian/libmutter-11-0.symbols: Add new symbols from triple buffering patch + + -- Jeremy Bicha Sun, 21 Aug 2022 12:27:28 -0400 + +mutter (43~beta-2) experimental; urgency=medium + + * Update mutter-10 to mutter-11 in more places + + -- Jeremy Bicha Sun, 21 Aug 2022 10:35:35 -0400 + +mutter (43~beta-1) experimental; urgency=medium + + * New upstream release + * Rename packages for API bump (mutter-10 -> mutter-11) + * debian/libmutter-11-0.symbols: Update + * debian/control.in: Bump minimum libwayland and wayland-protocols + * Refresh patches + * Add temporary patch to skip broken build test + + -- Jeremy Bicha Tue, 16 Aug 2022 12:07:41 -0400 + +mutter (42.4-1) unstable; urgency=medium + + * New upstream release + * debian/patches: Refresh + * debian/libmutter-10-0.symbols: Sync with new and removed internal symbols + + -- Marco Trevisan (Treviño) Thu, 11 Aug 2022 19:21:12 -0400 + +mutter (42.3-2) unstable; urgency=medium + + * debian/libmutter-10-0.symbols: Add new symbols + + -- Jeremy Bicha Sat, 16 Jul 2022 14:14:30 +0200 + +mutter (42.3-1) unstable; urgency=medium + + * New upstream release + + -- Jeremy Bicha Thu, 14 Jul 2022 16:33:25 +0200 + +mutter (42.2-1) unstable; urgency=medium + + * New upstream release (LP: #1976381) + - Fix crash when restarting GNOME Shell on Xorg (LP: #1969893) + + -- Jeremy Bicha Tue, 31 May 2022 10:10:28 -0400 + +mutter (42.1-1) unstable; urgency=medium + + * New upstream release + (LP: #1972726, #1967274, #1965557, #1969574, #1948410, #1967219, #1971693) + * Drop patches applied in new release + * debian/libmutter-10-0.symbols: Add new symbol + * debian/libmutter-10-0.symbols: Drop a symbol that was only in experimental + * Add Breaks against old gtk3 & gtk4 versions. + See Ubuntu bug 1972721 + * Release to unstable + + -- Jeremy Bicha Mon, 09 May 2022 16:51:12 -0400 + +mutter (42.0-5) experimental; urgency=medium + + * Team upload + * d/patches: Update to upstream commit 42.0-74-g6c8e8fbba + - Bug fixes targeted for 42.1 + - d/p/clutter-stage-Repick-when-pointer-actor-goes-unmapped.patch: + Replace with the version that was applied upstream + - d/p/core-Account-ClutterStage-grabs-on-Wayland-key-focus-sync.patch: + Mark as applied upstream + + -- Simon McVittie Mon, 25 Apr 2022 10:04:42 +0100 + +mutter (42.0-4) unstable; urgency=medium + + * Team upload + * d/patches: Update to upstream commit 42.0-55-gbe9deeba0 + - Update translations + - Update upstream status of cherry-picked patches + - Add various bug fixes including LP: #1959888, LP: #1964037 + * d/p/core-Account-ClutterStage-grabs-on-Wayland-key-focus-sync.patch: + Add patch proposed upstream to fix grabs vs. system-modal prompts. + This is particularly annoying when using pkexec, or when using gcr as + a passphrase prompt for PGP, ssh and/or sudo. + (Closes: #1008998, LP: #1964442) + + -- Simon McVittie Tue, 19 Apr 2022 11:54:56 +0100 + +mutter (42.0-3) unstable; urgency=medium + + [ Marco Trevisan (Treviño) ] + * debian/patches: Cherry-pick upstream fixes targeting 42.1 + * debian/patches: Ensure repick happens on actors visibility changed + (LP: #1964545) + + [ Jeremy Bicha ] + * Release to unstable + + -- Jeremy Bicha Mon, 28 Mar 2022 09:34:27 -0400 + +mutter (42.0-1) experimental; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + + [ Marco Trevisan (Treviño) ] + * debian/patches: Skip monitor-size tests that may fail on autopkgtest + + -- Jeremy Bicha Mon, 14 Mar 2022 09:28:30 -0400 + +mutter (42~rc-1) experimental; urgency=medium + + * New upstream release + * debian/control.in: Add Breaks: gnome-shell (<< 42~rc) + * debian/control.in: Bump minimum meson, libwayland-dev & wayland-protocols + * debian/libmutter-10-0.symbols: Add new symbols + * Refresh patches + + -- Jeremy Bicha Wed, 09 Mar 2022 13:11:43 -0500 + +mutter (42~beta-1) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * New upstream release: + - Implement a new Clutter grab API + - Support KMS testing via QEMU + - Add support for privacy screen + - Allow changing monitor configuration policy + - Fix possible missed clicks on menus + - Place popups on the same monitor as the anchor rect (LP: #1930567) + - Announce DMA-BUF support via pipewire + - Raise the file descriptor limit of the wayland compositor + - Fix resetting idle time on lid open + - Reset idletime when unplugging the power cable + - Keep a single cursor sprite visible with tablets + - Sync keyboard LEDs after layout changes (LP: #1830637) + - Honor window input area in picking + - Handle mixture of keycombo/no action in pad rings/strips + - Fix videos in Firefox stuttering in overview + - Fix X11 middle button emulation setting + - Fix crash on empty frame info queue (LP: #1960585) + - Fix window size after returning from fullscreen (LP: #1947467) + - Don't change workspaces of unmanaged windows (LP: #1933996) + - Ensure constraints after client resize (LP: #1917939) + * debian/watch: Accept pre-release version + Can still use gbp import --upstream-version=XX.Y to get stable only + * debian: Rename packages to use mutter-10 API + * debian/rules: Compute mutter API version on unstable releases too + * debian/control: Update dependencies + * debian/patches: Refresh and update to latest code + * debian/libmutter-(test-)10.symbols: Update + + [ Jeremy Bicha ] + * Update autopkgtest & lintian override for new version + + -- Jeremy Bicha Fri, 18 Feb 2022 07:32:24 -0500 + +mutter (41.3-3) unstable; urgency=medium + + * Build-Depend on xcvt instead of xserver-xorg-core (Closes: #1005299) + + -- Jeremy Bicha Fri, 11 Feb 2022 07:48:31 -0500 + +mutter (41.3-2) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * Adjust previous changelog entry to mention Launchpad bug 1872870 + against the correct bullet point + * d/control.in: Build-depend on sysprof as well as + libsysprof-capture-4-dev. + The D-Bus interfaces are currently in sysprof, although arguably they + should move to a -dev package. + + [ Marco Trevisan (Treviño) ] + * debian/control: Depend on xvfb even on nocheck, as it's checked during + configuration + + -- Simon McVittie Mon, 07 Feb 2022 18:55:58 +0000 + +mutter (41.3-1) unstable; urgency=medium + + * New upstream release: + - Check keyboard serials for activation + - Fix mixed up refresh rates in multi-monitor setups (LP: #1788535) + - Allow disabling HW cursors + - Improve damage handling + - Consider xrandr flags for advertised modes + - Ensure constraints after client resize + - window-group: Disable culling when rendering clone to offscreen buffer + (LP: #1872870) + - Fix workspace switch animation in default plugin + - Fix unfullscreening of window that were mapped fullscreen + - Fix DMA-BUF screencasts with unredirected fullscreen windows + - Fix orientation changes on devices with 90° + + -- Marco Trevisan (Treviño) Tue, 25 Jan 2022 03:26:38 +0100 + +mutter (41.2-2) unstable; urgency=medium + + * Team upload + * d/p/Consistently-pass-timestamp-as-uint64-when-creating-MetaS.patch: + Add proposed patch to fix FTBFS on 32-bit architectures + * d/patches: Update to 41.2-6-g7b64c159a + - Surface damage viewport improvements + * Update patch metadata with upstream status + + -- Simon McVittie Wed, 22 Dec 2021 19:47:37 +0000 + +mutter (41.2-1) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * New upstream release + * d/patches: Drop patches that were applied upstream + * d/patches: Update to upstream gnome-41 branch commit 41.2-3-g5d0c26631 + - wayland: Check keyboard serials for activation + - Sync refresh rate to the correct monitor for maximized/full-screen + apps in a multi-monitor layout + - Add a debug environment variable to disable hardware cursors for + faulty hardware and drivers + + [ Laurent Bigonville ] + * debian/rules: Disable systemd support on non-linux architectures + + -- Simon McVittie Wed, 22 Dec 2021 10:57:19 +0000 + +mutter (41.1-1) unstable; urgency=medium + + * Team upload + * New upstream release + * Drop a patch that came from upstream + * Update Lintian overrides + * Replace patches for #995929 with the version that was applied upstream + * Remove workaround for #994806 + * d/libmutter-9-0.symbols: Ignore removal of clutter_stage_capture_into. + Nothing else in Debian references this symbol, except for forks of + the mutter codebase. + + -- Simon McVittie Fri, 05 Nov 2021 16:40:11 +0000 + +mutter (41.0-5) unstable; urgency=medium + + * Team upload + * Merge packaging from unstable + - No changes relative to 41.0-4, except for the changelog + * Close #995929 via changelog. + The patches in 41.0-4 seem to have been successful. + * Release to unstable (starts transition: #996607) + + -- Simon McVittie Sat, 16 Oct 2021 18:52:20 +0100 + +mutter (41.0-4) experimental; urgency=medium + + * Team upload + * d/control.in: libmutter-test-9 Depends on mutter. + It wants the libdefault.so plugin, which is in mutter.deb. + * Update Lintian overrides for RUNPATH + * d/patches: Another try at fixing #995929 (Closes: #995929) + * d/rules: Disable gvfs when running unit tests + + -- Simon McVittie Mon, 11 Oct 2021 11:41:12 +0100 + +mutter (41.0-3) experimental; urgency=medium + + * Team upload + * d/p/tests-Change-how-we-wait-for-an-orientation-change.patch: + Add patch attempting to fix #995929 + * d/p/tests-Add-additional-debug-in-wait_for_orientation.patch, + d/p/tests-Watch-the-orientation-manager-independently.patch: + Try to diagnose what's going on if #995929 is still not fixed + + -- Simon McVittie Sun, 10 Oct 2021 21:05:02 +0100 + +mutter (41.0-2) experimental; urgency=medium + + * Team upload + * Build-depend on libgl-dev instead of transitional libgl1-mesa-dev + * (Build-)Depend on libgles-dev instead of transitional libgles2-mesa-dev + * d/rules: Don't let log from flaky tests overwrite log from main tests + * d/p/tests-dbus-runner-Make-sure-to-tear-down-even-on-test-fai.patch: + Add patch from upstream to stop failing tests causing a timeout. + Failing tests will generally still cause FTBFS, but failing immediately + is more buildd-friendly than timing out. + * d/p/tests-Don-t-use-TestEnvironment.patch, + d/p/tests-Don-t-continue-if-setup-commands-fail.patch: + Update patches for installed-tests to latest version submitted upstream + * d/p/tests-Add-additional-debug-for-Debian-995929.patch: + Add more debug logging to try to diagnose #995929 + + -- Simon McVittie Sat, 09 Oct 2021 18:54:23 +0100 + +mutter (41.0-1) experimental; urgency=medium + + * Team upload + + [ Jeremy Bicha ] + * debian/watch: Watch for stable releases + + [ Simon McVittie ] + * New upstream release + * Update package names for ABI break + * Update build-dependencies + * d/copyright: Update + * Rebase patch series + * Update symbols file + * d/p/debian/synaptics-support.patch: + Stop patching in Xorg synaptics driver support. + Upstream rejected this patch back in 2018, but we continued to apply it + as a transitional step for Ubuntu 18.04. Since then we've had stable/LTS + releases of Debian 10, Ubuntu 18.04, Debian 11 and Ubuntu 20.04, + libinput has improved, and both Debian and Ubuntu have switched to + running GNOME in Wayland mode by default; let's have another try at + following upstream on this. (Closes: #993171) + * d/rules: Use upstream driver selection, except on 32-bit ARM. + Specifying -Ddefault_driver=gl on x86 (and other architectures that are + not 32-bit ARM) is no longer the same as the upstream default: the + upstream default is now gl3, meaning modern OpenGL, whereas the gl driver + is legacy (pre-3.2) OpenGL. Assume upstream are doing this for a reason. + For now we continue to specify -Ddefault_driver=gles2 on 32-bit ARM, and + apply the patch that adds the default_driver option, because 32-bit ARM + has historically been an exception to the usual rules. + * Add test-dependency on python3-dbus, python3-dbusmock + * d/p/meta-dbus-runner-Import-importlib.util.patch: + Add patch to fix test failure by working around #994806 + * d/p/tests-Don-t-use-TestEnvironment.patch, + d/p/tests-Don-t-continue-if-setup-commands-fail.patch: + Add patch to avoid using TestEnvironment. + This works around a gnome-desktop-testing bug. + * Add Lintian override for another RUNPATH in the tests. + As with the existing tests, this is necessary to use mutter's fork of + clutter and cogl. + * Standards-Version: 4.6.0 (no changes required) + * Put the new libmutter-test-9 in its own binary package. + To avoid micro-packages, this includes the -dev files too; there is no + explicit dependency on libmutter-9-dev, but packages compiling against + this library are expected to build-depend on both. Outside mutter + itself, it is only expected to be used by gnome-shell. + + -- Simon McVittie Tue, 21 Sep 2021 18:44:18 +0100 + +mutter (40.5-1) unstable; urgency=medium + + * New upstream release: + - Fix monitor screencast scanouts + - Fix middle-click emulation support on X11 + + -- Marco Trevisan (Treviño) Fri, 24 Sep 2021 21:11:07 +0200 + +mutter (40.4-2) unstable; urgency=medium + + * Team upload + + [ Jeremy Bicha ] + * Build-Depend on libsysprof-capture-4-dev instead of sysprof + + [ Simon McVittie ] + * Upload to unstable, part of transition #992870 + + -- Simon McVittie Sat, 11 Sep 2021 21:34:10 +0100 + +mutter (40.4-1) experimental; urgency=medium + + * Team upload + * New upstream release + - Don't require a newly attached buffer to apply state + - Fix upside-down Xshape surface with EGLstream + - Handle failure to allocate offscreen + - Improve window state checks + - Fix area-based screencast recording for unredirected windows such + as fullscreen games + - Fix ability to map a graphics tablet to a monitor + - Fix a crash if scanout fails unexpectedly + - Fix a logic error in determining number of input device modes + - Translation updates + * Don't let debhelper 13.4+ make all of /usr/libexec executable. + This is not what we want for installed-tests' associated data. + * Add a lintian override for dh-exec-subst-unknown-variable + + -- Simon McVittie Tue, 31 Aug 2021 10:14:04 +0100 + +mutter (40.2.1-1) experimental; urgency=medium + + * New upstream release + * debian/patches: Refresh + + -- Marco Trevisan (Treviño) Wed, 16 Jun 2021 01:36:22 +0200 + +mutter (40.2-1) experimental; urgency=medium + + * New upstream release: + - Fix mouse position in remote desktop with fractional scaling + - Fix fd leak + - Disable KMS modifiers on radeon driver + - Fix adding virtual monitor to physical session + - Unbreak press-drag-release to pop up and select right click menus + - Fix VKMS detection + * debian/patches: Refresh, dropping applied upstream + * d/p: Mark view-verification tests as incomplete in big-endian archs. + Saved pixmaps are invalid in big-endian architectures, so let's disable + the tests for now, checking only the basic metadata but not comparing + the contents. + + -- Marco Trevisan (Treviño) Tue, 15 Jun 2021 22:07:25 +0200 + +mutter (40.1-1) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * New upstream release: + - Only snap to window edges when CTRL is pressed (LP: #1727225) + - Fix viewport of offscreen effects (LP: #1825126) + * debian: Update library name to follow soname (mutter-8) + * debian/control: Bump dependencies to match upstream requirements + * debian/patches: + - Refresh + - Do not run screencast tests. + They require to have a full running pipewire (that requires a system + dbus daemon) so, we can't easily get one up and running while building. + * debian/libmutter-8-0.symbols: Sync with new library symbols + * debian/control: Do not break on old gnome-shell versions + * debian: Enable sysprof profiler on linux + * debian/libmutter-8-0.symbols: Add new cogl trace symbols + * debian/rules: Enforce symbols checking via higher gen symbols check level + * debian/patches: Fix failing installed tests and ensure they work with runner + * debian: Enable installed tests and package them in mutter-8-tests + * debian/tests: Run installed tests as part of the autopkg tests + * debian/control: Add dependency on xwayland to mutter-tests + * debian/tests: Use multiple stanzas to run the autopkg tests + * debian/rules: disable native tests on non-linux + * debian/control: Depend on binary version for mutter package + * debian: Use dh-exec to install linux-only files + * debian/libmutter-8-0.symbols: Mark more symbols as linux-only + * debian/mutter-8-tests.lintian-override: Use versioned package name + + [ Laurent Bigonville ] + * debian/watch: Updated to follow the new versioning scheme + * Remove Conflicts for old libmutter-*-dev packages + + -- Laurent Bigonville Thu, 27 May 2021 21:31:05 +0200 + +mutter (3.38.6-2) unstable; urgency=medium + + * Team upload + * d/p/monitor-manager-Don-t-include-generated-code-in-header-fi.patch: + Add patch from upstream 40.1 to fix FTBFS seen on s390x. + Thanks to Adrian Bunk. + + -- Simon McVittie Thu, 26 Aug 2021 16:12:19 +0100 + +mutter (3.38.6-1) unstable; urgency=medium + + [ Marco Trevisan ] + * d/gbp.conf, d/control.in: Update VCS details for debian/unstable branch + + [ Simon McVittie ] + * New upstream release + - xwayland: Check permissions on /tmp/.X11-unix + - Ensure valid window texture size after viewport changes + - kms: Improve handling of common video modes that might exceed the + possible bandwidth + - Fix damage propagation for rotated transforms with viewport + - Improve Wayland subsurface reordering + * Update GLib build-dependency (no practical effect, the new dependency + is already in bullseye) + + [ Laurent Bigonville ] + * Fixes for non-Linux ports: + - Build-depend on libegl1-mesa-dev on all architectures (not just Linux). + It is required for EGL support. + - Only build-depend on udev on Linux architectures + - Only depend on libwayland on Linux architectures + - Drop unnecessary -dev dependency on libudev-dev + + -- Simon McVittie Thu, 26 Aug 2021 08:54:46 +0100 + +mutter (3.38.4-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Fix Wayland spec compliance when reordering subsurfaces. + This is likely to be required by future Firefox versions in native + Wayland mode. + - Many other fixes that we already had via debian/patches + * Drop most patches, included in the new upstream release + + -- Simon McVittie Wed, 17 Mar 2021 09:52:33 +0000 + +mutter (3.38.3-5) unstable; urgency=medium + + * Team upload + + [ Marco Trevisan (Treviño) ] + * debian/patches: Include a missing commit from upstream gnome-3-38 + branch to fix X11 UI stutters + + -- Simon McVittie Wed, 10 Mar 2021 09:37:00 +0000 + +mutter (3.38.3-4) unstable; urgency=medium + + * Team upload + + [ Marco Trevisan (Treviño) ] + * debian/patches: cherry-pick more upstream gnome-3-38 fixes + - Correctly restore focus to applications that use globally active + input handling, such as AWT/Swing Java apps + - Disable double buffered shadow buffering, which was intended to + improve performance with e.g. llvmpipe but currently makes it worse + * debian/tests: Adapt autopkgtest name and linked library to current soname + * debian/tests/control: Update references to libmutter-7-dev + + [ Simon McVittie ] + * d/patches: Update to commit 3.38.3-26-g30c542ddc from gnome-3-38 branch + - Fix X11 frame timing getting stuck if frames are skipped, resulting + in X11 applications not always being redrawn when they should be + - Fix a crash when clicking below titlebar with broken GTK themes + + -- Simon McVittie Tue, 09 Mar 2021 20:34:42 +0000 + +mutter (3.38.3-3) unstable; urgency=medium + + * Team upload + * d/patches: Update to commit 3.38.3-20-g2818cfda8 from gnome-3-38 branch + - Wayland geometry scale fixes + - Fix a crash that can occur on resume from suspend + - Fix drag-and-drop from X11 source to Wayland destination + + -- Simon McVittie Tue, 23 Feb 2021 09:27:54 +0000 + +mutter (3.38.3-2) unstable; urgency=medium + + * Team upload + * d/patches: Update to commit 3.38.3-12-g2d424a739 from gnome-3-38 branch + - Cope with monitors with metacharacters in their EDID data + - Don't crash if parsing monitor configuration fails + - Don't crash if an extension tries to add the same window to a + workspace more than once, such as auto-move-windows + - Cope with monitor configuration changes during screencasting + - Speed up workspace switching when many windows are open + - Fix Xwayland windows not always appearing in the gnome-shell overview + - Avoid warning spam and poor performance when unmanaging a window + (probably Closes: #970295, LP: #1841774) + + -- Simon McVittie Thu, 04 Feb 2021 10:26:19 +0000 + +mutter (3.38.3-1) unstable; urgency=medium + + * Team upload + * d/watch: Only watch for 3.38.x versions + * New upstream release + + -- Simon McVittie Thu, 14 Jan 2021 20:13:35 +0000 + +mutter (3.38.2-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Don't crash during screencasting if cursor is not available + - Don't crash if a kernel bug results in appearing to have multiple + builtin panels + - Log warnings instead of crashing if user-defined keymap is + misconfigured + - Don't forget we have a touchscreen if a non-touchscreen input device + is connected + - Log warnings instead of crashing if invalid barriers are created + - Otherwise functionally equivalent to 3.38.1-4 + * Drop patches cherry-picked from upstream or applied upstream + * d/gbp.conf: Use upstream 3.38.x branch. + Version 40~alpha was already released, so it's misleading to say that + 3.38.x is the latest. + * Standards-Version: 4.5.1 (no changes required) + * d/rules: Don't run tests if built with nocheck option + * Upload to unstable + + -- Simon McVittie Thu, 03 Dec 2020 10:23:26 +0000 + +mutter (3.38.1-4) experimental; urgency=medium + + * Team upload + * Update to upstream gnome-3-38 branch, commit 3.38.1-50-gc70610c43 + - If cursor theme is missing, draw a grey semi-transparent square + instead of crashing + - Allow primary GPU to be overridden with a udev rule + - Fix fullscreen toggle for some applications (Closes: #975453) + - Only schedule frame drawing for each surface (window) according to + one stage view (monitor) + - Fix size hints for client-side-decorated windows + - Avoid adding input devices too soon + - Performance optimizations + - Do not disable the X Security extension if Xwayland was built with it + * Don't depend on transitional libgdk-pixbuf2.0-dev + * Explicitly build-depend on gdk-pixbuf. + Previously it was pulled in by some other dependency (presumably + gnome-desktop3 and gtk), but mutter's build system checks for it, so + we should build-depend on it here too. + * d/p/clutter-frame-clock-Schedule-a-frame-at-least-once-per-se.patch: + Add proposed patch to ensure frame clock does not stop (Closes: #974172) + + -- Simon McVittie Wed, 25 Nov 2020 10:23:36 +0000 + +mutter (3.38.1-3) experimental; urgency=medium + + * Team upload + * Update to upstream gnome-3-38 branch, commit 3.38.1-33-g067af969c + - Prevent a use-after-free on (virtual) device removal + - Prevent crash on startup caused by dispatching libinput events too + early + - If Wayland subsurfaces have circular relationships, disconnect the + client instead of crashing + - When resizing terminals interactively, don't offset the position + - Fix broken timestamp behaviour if X11 timestamps overflow + - Fix a memory leak + - Ensure clock is updated when going from fullscreen app to overview + - Fix artifacts around GNOME Shell magnifier cursor + - Fix monitor tiling on X11 + - Configure input devices correctly in X11 + (LP: #1899206, LP: #1899509) + - Avoid spurious warnings in log + - Event does not have a stage: discarding + - assertion 'CLUTTER_IS_STAGE (stage)' failed + - Make sure build fails if Xwayland -initfd is requested but not + available (not relevant in Debian, we don't request this yet) + - Update translations: pt + * d/p/backend-Don-t-pull-generated-headers-indirectly.patch: + Add a patch from upstream git master to fix parallel builds + + -- Simon McVittie Thu, 12 Nov 2020 18:17:44 +0000 + +mutter (3.38.1-2) unstable; urgency=medium + + * debian/patches: Wayland start Xwayland on public X11 sockets as well + (LP: #1897224) + * debian/patches: Don't override window tile monitor (LP: #1900009) + * debian/patches: Fix resizing issues (LP: #1878293) + + -- Marco Trevisan (Treviño) Fri, 23 Oct 2020 12:38:01 +0200 + +mutter (3.38.1-1) unstable; urgency=medium + + * New upstream release: + - Fix Night Light updates after DPMS (LP: #1894596) + - Fix button scrolling on X11 + - Always use correct font-dpi setting on X11 + - Improve handling of scanout failures + - Fix middle/right button mixup in scroll button assignment + - Fix resizing of attached modal dialogs on wayland + - Enable KMS modifiers on devices that need them + - Fix IM handling on X11 + - Fix glitches in "undefined" screencast areas + - Fix visual glitches on background with fractional scaling (LP: #1898080) + - Fix using correct refresh rate under X11 (LP: #1898645) + - Misc. bug fixes and cleanups + - Plugged memory leaks + * debian/patches: Refresh as per upstream changes + * debian/mutter-common.install: Include mutter udev rules + * debian/control: Add udev build-dependency + + -- Marco Trevisan (Treviño) Sun, 11 Oct 2020 01:43:05 +0200 + +mutter (3.38.0-2) unstable; urgency=medium + + * Team upload + * Release to unstable (starts transition: #969321) + * d/rules: Ignore test failures in flaky tests on all architectures. + Upstream presumably marked them as flaky for a reason, and they do + fail on amd64 when under load. + * Revert "debian/watch: Watch unstable versions" + + -- Simon McVittie Fri, 25 Sep 2020 10:53:27 +0100 + +mutter (3.38.0-1) experimental; urgency=medium + + * New upstream release: + - screencast: Only use DMA buffers for i915 + - Fixed crashes + * debian/patches: Refresh + * d/p/input-mapper-Don-t-match-touchscreens-to-the-absence-of-a.patch: + - Dropped, applied upstream + + -- Marco Trevisan (Treviño) Tue, 15 Sep 2020 15:45:52 +0200 + +mutter (3.37.92-2) experimental; urgency=medium + + * Team upload + * d/p/input-mapper-Don-t-match-touchscreens-to-the-absence-of-a.patch: + Add patch to work around a crash with gnome-remote-desktop + + -- Simon McVittie Wed, 09 Sep 2020 12:00:31 +0100 + +mutter (3.37.92-1) experimental; urgency=medium + + * Team upload + * New upstream release + - Fix stale cursor positions in remote desktop sessions + - xwayland: Add a setting to disable selected X extensions + - Fix screencasting when using QXL + - Cull actors that don't intersect with the redraw clip + - Optimize painting of backgrounds when culling is unavailable + - Improve support for Hangul input method + - Support debug paint overlay for opaque regions + - Fix launching flatpak applications when autostarting Xwayland + - Add support for capture scanouts in screencasts + - Allow integrated tablet devices to cycle outputs + - Improve mapping input devices to the most relevant output + - Only enable auto-rotation in touch mode + - Fix various crashes + * d/control.in: Update libgbm build-dependency + * d/copyright: Update + * d/control.in, d/rules: Enable Pipewire on Debian (but not Ubuntu). + Now that we have Pipewire 0.3 in experimental, we can enable + screencasting and remote desktop support. + * debian/libmutter-7-0.symbols: Update + + -- Simon McVittie Tue, 08 Sep 2020 15:50:11 +0100 + +mutter (3.37.91-1) experimental; urgency=medium + + * New upstream release + - Support unredirecting fullscreen wayland surfaces + - Support area screencasts + - Allow inhibiting remote access + - Drive each monitor by its own frame clock (LP: #1730460) + - Fix copy/paste failures on X11 (LP: #1879968) + - Make window-aliveness checks less aggressive + - Limit mipmap levels when rendering background (LP: #1862308) + - Remove more long-deprecated Clutter APIs + - Support custom keyboard layouts in $XDG_CONFIG_HOME/xkb + - Optimize resource scale computation for wayland fractional scaling + - Support tap-button-map and tap-drag-lock touchpad settings + - Fix wine copy & paste + - Add API to launch trusted wayland clients + - Invalidate offscreen effect cache on video memory purge (LP: #1855757) + * debian: Update package and file names to mutter API version + * debian/control: Bump dependencies to match upstream requirements + * debian/clean: Remove as HOME and XRD are managed now by dh + * debian/copyright: Avoid redundant globbing patterns + * debian/gbp.conf: target upstream/latest branch + * debian/libmutter-7-0.symbols: Update symbols file + * debian/patches: Refresh + * d/p/debian/tests-Tag-closed-transient-no-input-tests-as-flaky.patch: + - Renamed into d/p/debian/tests-Tag-unstable-tests-as-flaky.patch + - Reduced the number of "flaky" tests to the ones time-dependent only + * debian/rules: + - Compute and generate a MUTTER_API_VERSION and replace it everywhere + - Remove XDG_RUNTIME_DIR wrapper workaround + - Don't run tests at all in riscv64 + - Don't set again default configuration values (it makes the delta clearer) + - Never ignore test failures in amd64 + - Remove test num processes re-configuration + - Run tests in s390x, no failures currently + - Don't test in alpha hppa powerpc sparc64 x32 (Closes: #959415) + * debian/with-temp-xdg-runtime-dir: Dropped, new dh will handle it for us + * debian/watch: Scan for all versions, not just the stable-branch + * debian/*.install: Use dh variable substitution in install files + + -- Marco Trevisan (Treviño) Thu, 27 Aug 2020 16:39:49 +0100 + +mutter (3.36.6-1) unstable; urgency=medium + + * Team upload + * New upstream release + * Update symbols file + * d/control.in, d/rules: Enable Pipewire on Debian (but not Ubuntu). + Now that we have Pipewire 0.3, we can enable screencasting and remote + desktop support again. + + -- Simon McVittie Thu, 10 Sep 2020 12:46:31 +0100 + +mutter (3.36.5-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Screencast fixes and improvements + - Fix glitches when subsurfaces extend outside the toplevel + - Improve background display in overview workspace switcher + - Fix wine copy & paste + - Plug memory leaks + * Drop patches that were applied upstream + + -- Simon McVittie Thu, 13 Aug 2020 10:19:59 +0100 + +mutter (3.36.4-1) unstable; urgency=medium + + * New upstream stable release (LP: #1887998) + - Fix crash on area screenshots with fractional scaling + - Do not paint textures of fully obscured windows + - Turn off CRTCs as well when enabling DPMS + - Improve selection support + - Use a more appropriate combine function on opaque areas + - Fix remote desktop being broken without screencast session + - Fix popovers disappearing on wayland and HiDPI + - Fixed crashes (LP: #1870867, LP: #1857947) + - Plugged memory leaks + * d/p/screen-cast-Let-the-reason-for-recording-determine-what-t.patch, + d/p/screen-cast-src-Add-flag-to-maybe_record.patch, + d/p/screen-cast-src-Fix-signedness-of-timestamp-field.patch, + d/p/screen-cast-src-Make-record-functions-return-an-error-whe.patch, + d/p/screen-cast-src-Make-the-two-record-vfuncs-more-similarly.patch, + d/p/screen-cast-src-Record-follow-up-frame-after-timeout.patch, + d/p/screen-cast-src-Remove-follow-up-timeout-source-on-disabl.patch, + d/p/screen-cast-src-Use-G_USEC_PER_SEC-instead-of-1000000.patch, + d/p/screen-cast-window-stream-src-Fix-indentation.patch: + - Import more fixes for screencasting and remote desktop + + -- Marco Trevisan (Treviño) Fri, 17 Jul 2020 21:12:56 +0200 + +mutter (3.36.3-1) unstable; urgency=medium + + * New upstream release (LP: #1881971) + - Broadcast clipboard/primary offers + - Fix monitor screen cast on X11 + - Implement touch-mode detecation for the X11 backend (LP: #1880596) + - Drop external keyboard detection from touch-mode heuristics + - Fix leaked DMA buffers in screencasts + - Fixed crashes + + -- Marco Trevisan (Treviño) Wed, 03 Jun 2020 23:33:29 +0200 + +mutter (3.36.2+12+gb425f1153-1) experimental; urgency=medium + + * Team upload + * New upstream snapshot from the gnome-3-36 branch + * d/p/backend-x11-Reintroduce-XInitThreads.patch: + Drop patch, applied upstream + + -- Simon McVittie Sat, 30 May 2020 15:12:09 +0100 + +mutter (3.36.2-3) unstable; urgency=medium + + [ Simon McVittie ] + * d/rules, d/with-temp-xdg-runtime-dir: Create temporary XDG_RUNTIME_DIR + debhelper 13.1 creates a temporary XDG_RUNTIME_DIR so we don't have to. + Unfortunately, its absolute path is sufficiently long that the path to + Mutter's Wayland display socket no longer fits in the 108 bytes allowed + by struct sockaddr_un, causing FTBFS when the tests fail. Until this is + fixed, we'll have to create our own XDG_RUNTIME_DIR with a shorter + absolute path. + Wrapping with-temp-xdg-runtime-dir around dh_auto_test doesn't work, + because dh_auto_test will reset XDG_RUNTIME_DIR, so use + meson test --wrapper to wrap with-temp-xdg-runtime-dir around the + individual tests. + (Works around: #961655) + + -- Marco Trevisan (Treviño) Wed, 27 May 2020 13:54:19 +0200 + +mutter (3.36.2-2) unstable; urgency=medium + + [ Daniel van Vugt ] + * d/p/backend-x11-Reintroduce-XInitThreads.patch: + Fix a very common crash when running in X11 (LP: #1877075) + + -- Marco Trevisan (Treviño) Tue, 26 May 2020 21:41:05 +0200 + +mutter (3.36.2-1) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * New upstream stable release + - Fix FTBFS with Wayland disabled (non-Linux kernels) + - X11 copy/paste/selection fixes (LP: #1852183) + - Fix freeze with some DisplayLink devices + - Fix a memory leak + - Synchronize shadows to server-side decorations + - Fix overview key on X11 when using multiple keyboard layouts + - Fix painting the redraw clip with the damage region + - Fix capturing with multiple stage views + - Fix screencasting of non-maximized windows (LP: #1873942) + - Various misc fixes and cleanups (LP: #1874818) + - Update translation: de + + [ Marco Trevisan (Treviño) ] + * debian/libmutter-6-0.symbols: Update + * debian/rules: Ignore build failures on riscv64 + + -- Simon McVittie Fri, 01 May 2020 11:26:55 +0100 + +mutter (3.36.1+git20200419-1) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * New upstream snapshot from gnome-3-36 branch (3.36.1-42-gda9eb4718) + - Fix trackball button scrolling + - Fix tiled (MST) displays + - Copy/paste fixes, particularly for large images and incremental + transfers + - Fall back to closed laptop lid configuration if no other available + (LP: #1793496) + + [ Jeremy Bicha ] + * Drop obsolete dh_strip dbgsym migration rule + * Bump debhelper-compat to 13 + - dh_missing --fail-missing is the default + - dh_auto_test has several default improvements + - dh_autoreconf isn't needed with meson + * debian/watch: Only watch for stable releases + + -- Simon McVittie Tue, 21 Apr 2020 13:46:42 +0100 + +mutter (3.36.1-4) unstable; urgency=medium + + * Team upload + * Merge changelog from unstable + * Upload to unstable (starts transition: #954422) + * Update to upstream gnome-3-36 branch, commit 3.36.1-17-g9a2471db4 + - Fix caps-lock state becoming confused on VT switch + * d/gbp.conf: Follow upstream/3.36.x branch + + -- Simon McVittie Fri, 10 Apr 2020 17:56:10 +0100 + +mutter (3.34.4-1) unstable; urgency=medium + + * Team upload + * d/gbp.conf: Follow debian/unstable branch + * New upstream release + * d/patches: Apply post-release fixes up to 3.34.4-5-g2709a4ffb + * Standards-Version: 4.5.0 (no changes required) + + -- Simon McVittie Tue, 25 Feb 2020 16:26:10 +0000 + +mutter (3.36.1-3) experimental; urgency=medium + + * Team upload + * Update to upstream gnome-3-36 branch, commit 3.36.1-16-gdb164bcfa + - Fix a crash during X11 drag-and-drop, for example when dragging + a JPEG file onto GIMP's splash screen + - Fix a crash in X11 input device handling + - Translate coordinates of absolute input devices for rotated screens + + -- Simon McVittie Wed, 08 Apr 2020 11:18:37 +0100 + +mutter (3.36.1-2) experimental; urgency=medium + + * Team upload + * Standards-Version: 4.5.0 (no changes required) + * d/copyright: Consolidate entries and update + * Update to upstream gnome-3-36 branch, commit 3.36.1-13-gbc47f0a1a + + -- Simon McVittie Tue, 07 Apr 2020 18:27:45 +0100 + +mutter (3.36.1-1) experimental; urgency=medium + + * Team upload + * New upstream release + * d/copyright: Update + * Refresh patches + * Update symbols file. + Note that this includes ABI breaks: some symbols that are only used + internally have disappeared from mutter's private fork of Clutter and + Cogl. The only user of this version of mutter is GNOME Shell, which + does not use these symbols. + * d/patches: Update from gnome-3-36 branch up to 3.36.1-8-ge339a57dd + * d/p/clutter-stage-Don-t-assume-stage-relayouts-reallocate-eve.patch: + Add patch proposed upstream to fix a gnome-shell crash with the + "Native window placement" extension. + + -- Simon McVittie Fri, 03 Apr 2020 14:23:52 +0100 + +mutter (3.36.0-2) experimental; urgency=medium + + * control: Build against gnome-desktop 3.36 and break old gnome-shell. So we + get dependencies on libgnome-desktop-3-19. Otherwise we get two different + versions of gnome-desktop loaded into GNOME Shell, which crashes. Break + old gnome-shell for the inverse reason - it needs to be upgraded otherwise + we get the mismatch the other way around. + + -- Iain Lane Mon, 16 Mar 2020 13:20:44 +0000 + +mutter (3.36.0-1) experimental; urgency=medium + + * New upstream release + + Fix placement of popup windows in multi-monitor setups + + Fix invisible mouse cursor on some hardware + + Updated translations + + -- Andre Moreira Magalhaes Fri, 13 Mar 2020 19:36:29 +0000 + +mutter (3.35.92-1) experimental; urgency=medium + + * New upstream release + + Add side channel for starting required X11 services + + Allow remote desktop services to inhibit animations + + Avoid flicker when (un)redirecting windows + + Fix clipping glitches in long text entries + + Fix visibility of initially hidden windows + + Implement scaled/transformed hardware cursors + + Let BindConstraints update the preferred size + + Make check-alive timeouts configurable + + Make each stage view correspond to a single CRTC + + Make Xwayland startup asynchronous + + Ping windows on every window focus + + Remove overhead from hot code paths + + Support synchronized wayland popup moving + + Update screen-cast code to PipeWire 0.3 API + + Use DMA buffers for screencasting if possible + * d/p/*: Rebase + * rules: Disable remote-desktop temporarily. This now requires pipewire 0.3 + which is not packaged yet and needs to be worked on + * control: Bump wayland-protocols dep to 1.19 per meson.build + * debian/libmutter-6-0.symbols: Add new symbols for this release. One symbol + which was introduced in .90 was dropped; -6's ABI is not stable yet. + + -- Iain Lane Tue, 03 Mar 2020 16:34:25 +0000 + +mutter (3.35.91-1) experimental; urgency=medium + + * New upstream release + - Fix clipboard handling when an app provides multiple types (LP: #1852183) + - Fixed flickers around windows in Wayland sessions (LP: #1751593) + - Fixed white Background when using scaling in vmware (LP: #1825842) + - Fixed crash in meta_surface_actor_get_texture() (LP: #1859259) + - Fixed Subpixel font rendering in shell panels (LP: #1836700) + - Fixed bug causing workspaces not to be preserved on restart + under X11 (LP :#1819890) + - Using graphene (insted of cogl) for handling various primitives + - Honor accelerometer orientation on monitor config changes + - Make the cursor renderer use the transactional KMS API + - Lots of crash fixes and cleanups + * debian/patches: + - refreshed + - d/p/EGL-Include-EGL-eglmesaext.h.patch: + + dropped, merged upstream + * debian/control: + - build-depend on graphene (1.9.3) + - Add libgraphene-1.0-dev as libmutter-6-dev dependency + - bump build dependency on meson 0.50 + - bump build dependency on libinput 1.7 + - bump package name to mutter-6 + * d/libmutter-6-0.symbols: update symbols + + -- Marco Trevisan (Treviño) Mon, 24 Feb 2020 17:42:35 +0000 + +mutter (3.34.3-1) unstable; urgency=medium + + * New upstream release + + Fix window recording on HiDPI + + Fix top-left pixel being insensitive to clicks (LP: #1849135) + + -- Iain Lane Mon, 06 Jan 2020 13:39:48 +0000 + +mutter (3.34.2-2) unstable; urgency=medium + + * d/p/EGL-Include-EGL-eglmesaext.h.patch: Cherry pick from master. This + fixes the generated EGL includes for the move of exlext.h from mesa to + libglvnd, which has just happened in Debian. + + -- Iain Lane Sun, 22 Dec 2019 15:42:09 +0000 + +mutter (3.34.2-1) unstable; urgency=medium + + * Team upload + * New upstream release + - d/libmutter-5-0.symbols: Update + - d/copyright: Update + * d/gbp.conf: Use upstream/3.34.x branch + * Remove obsolete Lintian override + * Standards-Version: 4.4.1 (no changes required) + * d/tests: Use correct compiler for proposed autopkgtest + cross-architecture testing support + + -- Simon McVittie Mon, 16 Dec 2019 16:55:47 +0000 + +mutter (3.34.1+git20191107-1) unstable; urgency=high + + * New upstream snapshot + - Fixes a regression from the previous upload, which caused a hang when + interacting with the desktop icons. + * x11-Update-X11-focus-before-updating-MetaDisplay-focus.patch: Drop. This + was a cherrry-pick that is included in this snapshot. + * debian/libmutter-5-0.symbols: Add new symbol in this snapshot + + -- Iain Lane Thu, 07 Nov 2019 11:10:59 +0000 + +mutter (3.34.1+git20191022-2) unstable; urgency=medium + + * debian/patches: Update X11 focus before display focus: + - Fixes an infinite loop causing an hang when showing the "application is + not responding" dialog (LP: #1845302) + + -- Marco Trevisan (Treviño) Fri, 25 Oct 2019 17:56:43 +0100 + +mutter (3.34.1+git20191022-1) unstable; urgency=medium + + * New upstream snapshot release + + Fix night mode in wayland session (LP: #1847551) + + Don't emit key-focus-out events on destroyed actors (LP: #1848119) + + Fix an headers syntax error (LP: #1841709) + + backends: Update inhibited state for the monitor and respect that state + + clutter-backend-x11: Don't push keymap events to clutter + + Fix drag and drop for applications in wayland + + Avoid X11 roundtrips on underscanning checks + + -- Marco Trevisan (Treviño) Wed, 23 Oct 2019 10:53:23 +0100 + +mutter (3.34.1-3) unstable; urgency=medium + + * Bump meson test timeout multiplier from 4 to 6 for armel + + -- Jeremy Bicha Sun, 20 Oct 2019 22:48:29 -0400 + +mutter (3.34.1-1) unstable; urgency=medium + + * New upstream release + + Fix focusing of Java applications (LP: #1847184) + + Fix freeze of pointer event delivery on X11 + + Fix initial view perspective + + Fix memory leak when using implicit animations + + Fix _NET_ACTIVE_WINDOW emission + + Fix numlock state for native backend (LP: #1845031) + + Fix scaling of DND surface actors + + Fix scaling of stylus input coordinates with HiDPI + + Fix screenshots and window animations when scaled + + Fix startup of X11 session services on wayland + + kms: Predict state changes when processing update (LP: #1847044) + + Optimize blitting of untransformed offscreen stage views + + Re-enable coredumps when capabilities are set + * Drop several upstream backports which are now applied + - d/p/build-Compile-with-ffloat-store-on-x86-32-bit.patch + - d/p/clutter-actor-Cancel-delayed-timelines-on-removal.patch + - d/p/clutter-timeline-Don-t-emit-paused-signal-on-delayed-time.patch + - d/p/clutter-timeline-Use-a-function-to-cancel-the-delay-timeo.patch + - d/p/core-Split-x11-display-initialization-in-2-signals.patch + - d/p/x11-Minor-refactor-of-input-focus-handling-code.patch + - d/p/x11-Use-the-currently-focused-X-window-for-_NET_ACTIVE_WI.patch + * rules: Skip tests when DEB_BUILD_OPTIONS=nocheck is set + + -- Iain Lane Wed, 09 Oct 2019 11:17:08 +0100 + +mutter (3.34.0-4) unstable; urgency=medium + + * Team upload. + * Upload to unstable. + + -- Andreas Henriksson Mon, 30 Sep 2019 13:26:44 +0200 + +mutter (3.34.0-3) experimental; urgency=medium + + * d/p/clutter-*: Cherry-pick from upstream to fix a crash. During + animations, which was particularly bad when using Dash-to-Dock in + auto-hide mode. (LP: #1841794) + + -- Iain Lane Fri, 20 Sep 2019 16:08:03 +0100 + +mutter (3.34.0-2) experimental; urgency=medium + + * d/p/core-Split-x11-display-initialization-in-2-signals.patch: Cherry-pick. + Fixes starting up of gsd-xsettings on Wayland. (LP: #1843107) + + -- Iain Lane Fri, 13 Sep 2019 11:10:15 +0100 + +mutter (3.34.0-1) experimental; urgency=medium + + [ Simon McVittie ] + * libmutter-5-0: Add Breaks on apparmor (<< 2.13.3-5~). + This ensures that #935058 has been fixed, so X11 apps with the X + abstraction can read /run/user/1000/.mutter-Xwaylandauth.* + (Closes: #939736) + * d/tests: Add a superficial build-test for the -dev package. + I'm deliberately not testing the included forks of clutter and cogl here + since those are an implementation detail of Mutter. + * Use default libexecdir. + The version of the FHS used in Debian has supported this since + Policy 4.1.5. + * d/rules: Use a temporary home directory for build-time tests + * d/clean: Clean up temporary home directory and XDG_RUNTIME_DIR + * Standards-Version: 4.4.0 (no changes required) + * Rewrite package descriptions based on the upstream README. + This removes the strange breakfast cereal references, and reframes + Mutter as primarily a shared library used by GNOME Shell and only + secondarily a standalone window manager, matching its real upstream + maintenance status. + + [ Iain Lane ] + * d/p/x11*: Cherry pick fixes from upstream to fix focus order on X11 + (LP: #1842971) + * New upstream release + + Fix xdg-output v3 support + + Fix crash when changing decoration state + + Add and remove connectors on hot-plug + * d/p/*: Drop upstream cherry-picks + * d/p/build-Compile-with-ffloat-store-on-x86-32-bit.patch: Take from MR 785. + This fixes the testsuite on i386, which is broken because of the use of + x87 extended precision introducing rounding errors. + + -- Iain Lane Tue, 10 Sep 2019 11:46:06 +0100 + +mutter (3.33.92-1) experimental; urgency=medium + + * New upstream release + + Add additional sysprof trace points + + Add meta_window_actor_get_image() + + Fix lost keyboard focus after DND + + Fix position of drag surfaces + + Implement geometric picking + + Implement subsurface.place_below() for parents + + Misc. pointer a11y improvements + + Remove GLX "threaded swap wait" used on Nvidia + + Restore inhibit shortcut for overlay key + + Revert faulty optimization from !719 + + Turn MetaShapedTexture into a ClutterContent implementation + * control: Bump libxi-dev per upstream + * d/p/*: Refresh. In particular synaptics-support.patch needed rebasing. + Hopefully this can be dropped soon. + * d/p: Sync with upstream as of 5111e339487b4bfb4b90b3281d57b1ee4cbf7f95 + * d/libmutter-5-0.symbols: Refresh up to 3.33.92. There are dropped symbols + here. As a reminder, libmutter5 is not considered ABI stable until 3.34.0 + + -- Iain Lane Thu, 05 Sep 2019 15:25:59 +0100 + +mutter (3.33.91-1) experimental; urgency=medium + + [ Dmitry Shachnev ] + * Update dh_girepository argument from mutter-4 to mutter-5 + + [ Iain Lane ] + * New upstream release + + Fix primary selection copy and paste between X11 and wayland + + Improve monitor hotplug support + + Remove a source of frame skips + + Fix windows being lowered after unmaximizing with double click + + Remove Clutter API for global grabs + + Improve processing of incompressible events + + Add xdg-output v3 support + * control: Bump BDs per upstream + * debian/libmutter-5-0.symbols: Update for new/dropped symbols. + The ABI of libmutter-5-0 is *not* considered stable until the final + release. + + -- Iain Lane Fri, 23 Aug 2019 15:15:50 +0100 + +mutter (3.33.90-2) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * debian/rules: Use more verbose logging, printing failure output + + [ Iain Lane ] + * tests-Tag-closed-transient-no-input-tests-as-flaky.patch, rules: Tag some + tests as 'flaky' and run them non-fatally. + * rules: Add mips64el to mips arches to not run tests on + + -- Iain Lane Wed, 14 Aug 2019 16:26:24 +0100 + +mutter (3.33.90-1) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * New upstream release + + Avoid repainting covered areas + + Start Xwayland on demand + + Expose layout manager properties to transitions + * debian/patches: Refresh + + [ Simon McVittie ] + * d/libmutter-5-0.bug-control: Include GL drivers in bug reports + + -- Marco Trevisan (Treviño) Tue, 13 Aug 2019 09:58:27 +0100 + +mutter (3.33.4-1) experimental; urgency=medium + + * New upstream release + + Add API to reorder workspaces + + Add a Sysprof-based profiler + + Add initial KMS transactional support + + Add xdg-output v2 support + + Consolidate frame throttling + + Defer actor allocation till shown + + Discard page flip retries on hotplug + + Don't emit ::size-changed when only position changed + + Don't use grab modifiers when shortcuts are inhibited + + Expose workspace layout properties + + Fix background corruption on Nvidia after resuming from suspend (LP: + #1809407) + + Fix black shadows when using fractional scaling + + Fix modifier-drag on wayland subsurfaces + + Fix running X11 applications with sudo under wayland + + Fix setting blank cursor under wayland + + Fix stuttering due to unchanged power save mode notifications + + Fix text selection color rendering + + Handle returning from fullscreen/maximization better + + Honor startup sequence workspace on wayland + + Implement locate-pointer accessibility feature + + Implement mouse accessibility + + Implement toggle-keys notification + + Improve finding new focus window when the old one is closed + + Improve screencast support on multi-monitor systems + + Make picking a new focus window more reliable + + Only emit 'grab-op-end` signal after dropping grabs + + Only grab the locate-pointer key when necessary + + Pixel-align OpenGL cursors + + Prepare for running Xwayland on demand + + Relax "xwayland-allow-grabs" setting + + Restore DRM format fallbacks + + Try to use primary GPU for copy instead of glReadPixels + + Unset pointer focus when the cursor is hidden + * debian/control: Update dependencies per meson.build + * debian/rules: Disable profiler. + We need to split sysprof into a library before we can enable this, so + that all users don't get headers / the profiler application installed + * Drop patches applied upstream + - window-x11-Focus-a-window-in-the-active-workspace-as-take.patch + - metatest-Dispatch-the-destruction-instead-of-sleeping-aft.patch + - debian/Revert-meson-Bump-meson-requirement-to-0.50.0.patch + * cogl-tests-Only-install-run-tests.sh-when-building-instal.patch: + Cherry-pick to fix building without installed tests + * build-Bump-API-version-automatically-each-development-cyc.patch: + Cherry-pick - bump ABI + * Refresh patches + * Bump to libmutter-5 and update symbols + * BD on a gnome-desktop that provides libgnome-desktop-3-18 + + -- Iain Lane Tue, 30 Jul 2019 18:16:52 +0100 + +mutter (3.32.2+git20190711-2) experimental; urgency=medium + + * d/p/window-x11-Focus-a-window-in-the-active-workspace-as-take.patch: + - Fix possible crash on closing Java dialogs (Related to LP: #1834583) + d/p/metatest-Dispatch-the-destruction-instead-of-sleeping-aft.patch: + - Tests: don't wait too much after window destruction, causing failures + + -- Marco Trevisan (Treviño) Fri, 19 Jul 2019 16:55:02 +0100 + +mutter (3.32.2+git20190711-1) experimental; urgency=medium + + * New upstream snapshot up to commit ccab0f470 + - Fix No-input WM_TAKE_FOCUS dialogs causing GNOME Shell to hang + and ensure we always have a window focused if we have a valid + focus canididate (LP: #1834583) + - Don't crash on shell close / reload under X11 when releasing + surface actor display resources (LP: #1826918) + * d/p/debian/Revert-meson-Bump-meson-requirement-to-0.50.0.patch: + - Revert dependency on meson 0.50.0 + + -- Marco Trevisan (Treviño) Fri, 12 Jul 2019 14:11:53 +0100 + +mutter (3.32.2+git20190626-1) experimental; urgency=medium + + * New upstream snapshot release: + - Don't crash when try to focus unfocusable windows (LP: #1791574) + - Valgrind use-after-free warning fixes in the native backend + - renderer/native: add missing eglTerminate in EGLDevice error path + - Fix Alt+F2 -> restart to work again in X11 + - window: Emit an error and return when trying to activate an unmanaged + (LP: #1827401) + - Setting cursor to "none" doesn't hide it under Wayland + - Fix broken selected text in entries + - Tests memory fixes + + -- Marco Trevisan (Treviño) Thu, 27 Jun 2019 13:02:32 +0100 + +mutter (3.32.2-1) experimental; urgency=medium + + * New upstream release + * d/p/clutter-evdev-disable-mousekeys-with-Numlock-ON.patch, + d/p/clutter-x11-disable-mousekeys-with-Numlock-ON.patch, + d/p/compositor-Destroy-window-actors-list-on-destruction.patch, + d/p/compositor-Disconnect-from-stage-signals-on-destruction.patch, + d/p/input-settings-Use-0-initialized-struct-for-kbd-a11y.patch: + - Dropped, merged upstream. + * d/p/meson-add-back-default_driver-option.patch: + - Refreshed + + -- Marco Trevisan (Treviño) Tue, 21 May 2019 12:31:38 +0100 + +mutter (3.32.1-2) experimental; urgency=medium + + * Cherry-pick patches from upstream gnome-3-32 branch: + - compositor-Destroy-window-actors-list-on-destruction.patch, + compositor-Disconnect-from-stage-signals-on-destruction.patch: Fix crash + when exiting. (LP: #1813716) + - 0-initialize a struct we'll be memcmp()ing. + * Reorder patch series so upstream patches come first (no conflicts, no + refreshing required). + + -- Iain Lane Wed, 01 May 2019 09:34:30 +0100 + +mutter (3.32.1-1) experimental; urgency=medium + + * New upstream release + * debian/patches: disable mousekeys with Numlock ON to match the + documentation (cherry picked from the 3.32 branch) + + -- Laurent Bigonville Mon, 22 Apr 2019 21:57:33 +0200 + +mutter (3.32.0+git20190410-2) experimental; urgency=medium + + [ Gunnar Hjalmarsson ] + * Add gnome-control-center-data to Build-Depends. This package provides + gnome-keybindings.{its,loc}. These are needed if the translation template + is regenerated at build-time to translate the key bindings defined in + data/50-*.xml. (LP: #1823722) + + -- Iain Lane Sun, 14 Apr 2019 11:11:22 +0100 + +mutter (3.32.0+git20190410-1) experimental; urgency=medium + + * New upstream snapshot up to commit + b2d0184c6efa164ad5dd7a2ca8b10cf13acf5b4c. Fixes Launchpad bugs: + + GNOME Shell task bar menus not updated with external monitor primary and + laptop screen fractionally scaled (LP: #1803319) + + (In Xorg sessions only) apps launched from gnome shell do not get input + focus (LP: #1817924) + + Touch input is offset with two screens (even appearing on the wrong + screen) in Xorg sessions (LP: #1821933) + + gnome-shell crashed with SIGABRT. Assertion failure in + meta_gpu_kms_flip_crtc: "monitor_manager->power_save_mode == + META_POWER_SAVE_ON" (LP: #1820331) + * debian/patches/various: Drop upstream cherry-picks. We had cherry-picked + the stable branch into Debian patches in the previous upload, but that + would get out of hand if we carried on. Instead we are using a tarball + snapshot. So drop the cherry-picks. + * Update symbols. A typo was fixed in a public symbol. This is an ABI break, + but upstream didn't consider this worthy of a SONAME change. A codesearch + / github / web search doesn't reveal any external users either, so we will + eat this to avoid another transition. + * Use debhelper-compat 12 and BD on dh-sequence-{gnome,gir}. We were missing + a direct BD on the providers. Thanks, Lintian. + + -- Iain Lane Wed, 10 Apr 2019 16:36:23 +0100 + +mutter (3.32.0-1) experimental; urgency=medium + + * New upstream release + + Fix deadlock when cancelling a theme sound + + Stop swizzling BGRA buffers (bye-bye inverted colors in screenshots and + animations) + * debian/patches/*: Update to master at + 318164779c07c12c5acfcddde7834980c7521aac. These are patches which will go + into 3.32.1. Also refresh all other patches. + * debian/control: Build-Depend on dbus for tests. We run the tests under + `dbus-run-session`. Apparently whatever waas pulling this in before + stopped doing that, so BD on it directly. + + -- Iain Lane Tue, 12 Mar 2019 12:45:14 +0000 + +mutter (3.31.92-1) experimental; urgency=medium + + * New upstream release + + Add back support for system-wide monitor configurations + + Add cursor-mode support to window screencasting + + Add flag parameter to grab accelerator API + + Add fractional scaling support + + Consider remapped keys when guessing keycode from keysym + + Don't disable page flips after temporary failues + + Fix crash when using "restore shortcuts" without focus window + + Fix flicker of apps that use multiple SHM buffers + + Fix infinite loop in EDID matching + + Improve redraw performance + + Reuse old CRTC if possible to avoid flicker on hotplug + + Stop turning on-screen-keyboard off on focus changes + + wayland: Don't maximize windows if minimum size is too big + + wayland: Don't resetin text-input state prematurely + * Drop old cherry-picks which are upstream, refresh other patches. + Dropped: + debian/patches/Update-Basque-translation.patch + debian/patches/Update-French-translation.patch + * d/p/sound-player-Don-t-deadlock-in-finish_cb.patch: Cherry-pick. + This fixes a deadlock bug when scrolling over the volume indicator. (LP: + #1817546) + * debian/control: Breaks gnome-settings-daemon << 3.31.91. Altering the + GrabAccelerator API will break key grabbing under g-s-d versions which + don't use the new parameter. + * debian/libmutter-4-0.symbols: Update. Upstream dropped a load of + deprecated functions. This obviously is an ABI break, but we don't + consider the ABI stable until the final release. Also some additions. + + -- Iain Lane Wed, 06 Mar 2019 13:44:08 +0000 + +mutter (3.31.90-2) experimental; urgency=medium + + * control: BD on dmz-cursor-theme instead of adwaita-icon-theme for tests. + We actually only need *a* cursor theme, not the full icon theme. + + -- Iain Lane Thu, 21 Feb 2019 13:52:05 +0000 + +mutter (3.31.90-1) experimental; urgency=medium + + [ Marco Trevisan (Treviño) ] + * New upstream release + - Fix crash in dual monitor setup and gdm activation (LP: #1790525, + LP: #1795774) + - Fix regression causing one of the external displays to be off sometimes + (LP: #1772811) + * debian/rules: + - Compile using meson, autotools has been removed upstream + - Ignore test failures in s390x + - tests: increase meson tests timeout or they will fail in some archs, + using meson test to run them + - Explicitly enable Wayland EGL stream + * debian/control: + - Build depend on meson and pkg-config + - Build depend on gsettings-desktop-schemas-dev (>= 3.31.0) + - Build depend on xserver-xorg-core in linux (as it ships 'cvt') + - Build depend on libnvidia-egl-wayland-dev in linux per EGL stream support + - Build depend on packages needed for running tests: + + adwaita-icon-theme + + at-spi2-core + + gnome-settings-daemon-dev, gnome-settings-daemon-common + + XWayland (in linux) + - Set build dependency versions on libgbm-dev, libinput-dev, libxi-dev and + libxcomposite-dev to match upstream required versions + - libmutter-4-dev depends on libgles2 development files, + - removed breaks as per SONAME change + * debian/*: SONAME 3 -> 4 + * debian/libmutter-4-0.symbols: Add new symbols, remove deprecated ones + * debian/libmutter-4-0.lintian-overrides: + - ignore library-not-linked-against-libc for libmutter-cogl-gles2 + * d/p/Sync-to-the-hardware-refresh-rate-not-just-60.00Hz.patch, + d/p/clutter-Avoid-rounding-compensation-when-invalidating-2D-.patch, + d/p/clutter-Fix-offscreen-effect-painting-of-clones.patch, + d/p/clutter-offscreen-effect-Disable-if-no-texture.patch, + d/p/cogl-auto-texture-Avoid-a-double-free-crash.patch, + d/p/screen-cast-Fix-monitor-recording-on-HiDPI.patch, + d/p/tests-Don-t-check-pixels-outside-actor-allocation.patch: + - dropped as applied upstream + * d/p/bgo768531_workaround-startup-notifications.patch: + - not needed anymore as per startup notifications upstream refactory + * d/p/debian/skip-texture-test.patch: + - removed since the test now passes in all tested archs + * d/p/debian/synaptics-support.patch, + d/p/debian/skip-texture-test.patch, + d/p/theme-load-icons-as-Gtk-does-with-fallback-and-RTL-suppor.patch, + d/p/theme-use-gtk_render_icon_suface-to-paint-button-icon.patch: + - refreshed + * d/p/meson-add-back-default_driver-option.patch: + - Add option to choose at build time the default cogl driver + + [ Iain Lane ] + * debian/rules: No need to remove .la files in meson + + -- Iain Lane Wed, 20 Feb 2019 17:07:10 +0000 + +mutter (3.30.2-6) unstable; urgency=medium + + * Team upload + * Update to upstream gnome-3-30 branch at 3.30.2-8-g7260ba5db + - Avoid rendering beyond the bounds of a 2D actor + - Fix screencasting/monitor recording on HiDPI + - Fix a regression in 3.30.1 that sometimes turned off secondary displays + - Update translations: fr, eu + + -- Simon McVittie Wed, 06 Feb 2019 10:02:14 +0000 + +mutter (3.30.2-5) unstable; urgency=medium + + * d/p/clutter-Avoid-rounding-compensation-when-invalidating-2D-.patch, + d/p/clutter-Fix-offscreen-effect-painting-of-clones.patch: + - Fix offscreen-effect painting of clones in zoom mode (LP: #1767648, + LP: #1779615) + * d/p/cogl-auto-texture-Avoid-a-double-free-crash.patch, + d/p/clutter-offscreen-effect-Disable-if-no-texture.patch: + - Fix crash in dual monitor setup and gdm activation (LP: #1790525, + LP: #1795774) + + -- Marco Trevisan (Treviño) Thu, 24 Jan 2019 18:00:14 +0000 + +mutter (3.30.2-4) unstable; urgency=medium + + * Add -Wl,-O1 to our LDFLAGS + * Bump Standards-Version to 4.3.0 + + -- Jeremy Bicha Thu, 27 Dec 2018 11:10:51 -0500 + +mutter (3.30.2-3) unstable; urgency=medium + + * control: Depend on g-s-d-common instead of g-s-d. We only need the + schemas. + + -- Iain Lane Thu, 13 Dec 2018 16:45:30 +0000 + +mutter (3.30.2-2) unstable; urgency=medium + + [ Daniel van Vugt ] + * Add Sync-to-the-hardware-refresh-rate-not-just-60.00Hz.patch to render at + the full monitor refresh rate (LP: #1763892). + + [ Jeremy Bicha ] + * debian/libmutter-3-0.symbols: Mark a Wacom symbol as linux-any + + [ Patrice Duroux ] + * add back lost NEWS (Closes: #914942) + + -- Iain Lane Thu, 29 Nov 2018 17:29:57 +0000 + +mutter (3.30.2-1) unstable; urgency=medium + + * Team upload + * New upstream release + - Drop cherry-picked patches + + -- Simon McVittie Thu, 15 Nov 2018 09:11:25 +0000 + +mutter (3.30.1-4) unstable; urgency=medium + + [ Andrea Azzarone ] + * d/p/x11-close-display-in-an-idle-function.patch: + - close the x11 display in an idle function. This fixes a crash when running + 'gnome-shell --replace'. + + [ Daniel van Vugt ] + * Drop clutter-Smooth-out-master-clock-to-smooth-visuals.patch: It was + abandoned upstream, but also seems to be limiting refresh rates in + Xorg sessions to 60Hz when previously they were unlimited (LP: #1763892). + + -- Andrea Azzarone Mon, 12 Nov 2018 11:53:37 +0000 + +mutter (3.30.1-3) unstable; urgency=medium + + * Team upload + + [ Jeremy Bicha ] + * Only depend on libegl1-mesa-dev on Linux + * debian/libmutter-3-0.symbols: Mark many symbols as Linux-only + + [ Simon McVittie ] + * debian/patches: Update to upstream gnome-3-30 branch at commit + 3.30.1-8-g1abab3fe2 + - In particular this fixes two memory leaks introduced in 3.30.1 + (Closes: #913028) + + -- Simon McVittie Tue, 06 Nov 2018 09:33:22 +0000 + +mutter (3.30.1-2) unstable; urgency=medium + + * Only Build-Depend on libdrm-dev and libgbm-dev on Linux + + -- Jeremy Bicha Sun, 14 Oct 2018 13:46:58 -0400 + +mutter (3.30.1-1) unstable; urgency=medium + + * New upstream release (LP: #1796772) + * Drop cherry-picked patches applied in new release + * debian/libmutter-3-0.symbols: Add new symbols + * Don't run the build tests on mips & mipsel since they fail + and time out too much. + * Drop skip-failing-tests.patch: + - These tests seem to run ok except on mips and mipsel + + -- Jeremy Bicha Mon, 08 Oct 2018 20:24:51 -0400 + +mutter (3.30.0-6) unstable; urgency=medium + + * Team upload + + [ Simon McVittie ] + * Update to upstream git master branch at commit 3.30.0-28-g95649fd2b. + According to upstream, all of this should be in 3.30.1. + - In particular this fixes a crash when combining a touchscreen + and graphics tablet (Closes: #910370, #908153, LP: #1788483) + * d/libmutter-3-0.symbols: + - Ignore removal of private function meta_input_device_is_trackball() + - Add meta_region_scale_double() + + [ Jeremy Bicha ] + * Modify debian/skip-failing-tests.patch: + - Go back to skipping the actor-shader-effect-test since it's flaky + (LP: #1795556) + + -- Simon McVittie Mon, 08 Oct 2018 07:53:09 +0100 + +mutter (3.30.0-5) unstable; urgency=medium + + * Restore debian/skip-failing-tests-325.patch: + - The test still fails on mips + + -- Jeremy Bicha Tue, 02 Oct 2018 20:51:51 -0400 + +mutter (3.30.0-4) unstable; urgency=medium + + [ Simon McVittie ] + * Try again to put all the changes since 3.30.0-2 in their correct + debian/changelog entries + + [ Jeremy Bicha ] + * Drop 2 patches that no longer seem needed: + - debian/skip-failing-tests.patch + - debian/skip-failing-tests-325.patch + * Use "xvfb-run -a" instead of just xvfb-run for build tests + + -- Jeremy Bicha Sat, 29 Sep 2018 12:03:42 -0400 + +mutter (3.30.0-3) unstable; urgency=medium + + * Team upload + + [ Jeremy Bicha ] + * Add debian/skip-texture-test.patch: + - Skip the texture test since it fails on several architectures + * Don't ignore build test failures + * Update debian/gbp.conf + + [ Laurent Bigonville ] + * debian/rules: Enable gles2 support (Closes: #883307) + - Use gles2 by default on armel and armhf + * debian/control.in: Drop libcogl-dev build-dependency now that we + are using an embedded version of it + + [ Simon McVittie ] + * d/p/window-unmanage-dialog-when-clearing-transient_for.patch, + d/p/actor-Fix-logic-error-in-determining-terminal-effect-for-.patch, + d/p/actor-Always-use-get_paint_volume-override-for-active-eff.patch, + d/p/actor-Also-recompute-paint-volume-if-we-recently-dropped-.patch, + d/p/compositor-Skip-windows-not-visible-to-the-compositor.patch, + d/p/wayland-No-xdg-output-events-without-a-logical-monitor.patch: + Cherry-pick the same changes from upstream git master that have been + applied to the upstream gnome-3-28 branch + - In particular the last of those patches should fix a crash + on gnome-shell startup (Closes: #909243) + + -- Simon McVittie Fri, 28 Sep 2018 10:48:08 +0100 + +mutter (3.30.0-2) unstable; urgency=medium + + [ Jeremy Bicha ] + * Build with remote desktop support except on Ubuntu. + Note that this feature requires gnome-remote-desktop to be installed (not + available in Debian yet). + Ubuntu will need pipewire to be promoted to main to enable this. + + [ Laurent Bigonville ] + * Only enable the remote desktop feature on linux architectures + * debian/libmutter-3-0.symbols: Add the newly exported symbols for the + remote desktop feature + + -- Laurent Bigonville Wed, 26 Sep 2018 08:34:14 +0200 + +mutter (3.30.0-1) unstable; urgency=medium + + [ Didier Roche ] + * New upstream release: + - Updated translations + + [ Iain Lane ] + * Merge experimental branch back into master and update references to it + accordingly. This upload is going to unstable. + + -- Didier Roche Wed, 05 Sep 2018 11:30:26 +0100 + +mutter (3.29.92-1) experimental; urgency=medium + + * Team upload + + [ Marco Trevisan (Treviño) ] + * New upstream development release + - Fix a crash when drmModeGetResources() fails, for example when + using Wayland on Nvidia hardware (Closes: #900002) + * Rebase patch series + * d/p/renderer-native-Check-calculated-transform-when-creating-.patch: + - dropped as applied upstream + + [ Simon McVittie ] + * Standards-Version: 4.2.1 (no changes required) + * Update debian/libmutter-3-0.symbols + + -- Simon McVittie Thu, 30 Aug 2018 08:45:01 +0100 + +mutter (3.29.91-1) experimental; urgency=medium + + * Team upload + * New upstream development release + * Update wayland-protocols build-dependency to 1.16 + * d/copyright: Update + * Rebase patch series + * d/*.install: Sort file lists (wrap-and-sort -a) + * Normalize package lists with wrap-and-sort -a + * d/control: Normalize package stanza order with wrap-and-sort -abk + * Standards-Version: 4.2.0 (no changes required) + * d/libmutter-3-0.symbols: Update + * d/rules: Tell dh_shlibdeps about our private libraries + + -- Simon McVittie Mon, 20 Aug 2018 21:17:31 +0100 + +mutter (3.29.90-2) experimental; urgency=medium + + * Team upload + * Build-depend on GLib 2.57.2 for the new approach to overriding + GSettings per desktop + * d/p/clutter-actor-Inherit-clone-branch-depth-from-parent.patch, + d/p/Updated-Slovenian-translation.patch, + d/p/Updated-Slovenian-translation-1.patch: + Update to upstream 3.29.90-3-ga87c447b7 + * d/p/renderer-native-Check-calculated-transform-when-creating-.patch: + Apply proposed patch to fix a regression with rotated screens + (Closes: #905363) + * d/gbp.conf: Don't number patches + + -- Simon McVittie Sat, 04 Aug 2018 16:32:49 +0100 + +mutter (3.29.90-1) experimental; urgency=medium + + * Team upload + * New upstream release + - Don't try to use an invalid monitor mode to figure out scaling + (LP: #1723615) + * d/p/window-wayland-Always-update-monitor-for-non-user-ops.patch, + d/p/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch, + d/p/wayland-Nullify-monitor-resources-when-updating-outputs.patch, + d/p/monitor-manager-Filter-out-low-screen-resolutions.patch, + d/p/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch, + d/p/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch: + Drop patches that were applied upstream + * d/libmutter-3-0.symbols: Update + - Ignore ABI change in experimental: removal of + meta_prefs_override_preference_schema() + - Add Breaks on previous experimental gnome-shell + + -- Simon McVittie Wed, 01 Aug 2018 09:03:19 +0100 + +mutter (3.29.4-3) experimental; urgency=medium + + * Team upload + + [ Marco Trevisan (Treviño) ] + * d/p/window-wayland-Always-update-monitor-for-non-user-ops.patch: + - Always update monitor in wayland, avoiding crash (LP: #1784398) + * d/p/monitor-manager-Filter-out-low-screen-resolutions.patch: + - Don't return screen resolutions that can't be applied (LP: #1772831) + + [ Simon McVittie ] + * d/p/series: Sort patches that were already applied upstream to the + beginning of the patch series + * d/p/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch, + d/p/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch: + Add patches from upstream to avoid crashing if a modal dialog closes + while being dragged (LP: #1422253) + * d/p/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch, + d/p/wayland-Nullify-monitor-resources-when-updating-outputs.patch: + Add more bug fixes from upstream + * Update symbols file + + -- Simon McVittie Tue, 31 Jul 2018 09:43:13 +0100 + +mutter (3.29.4-2) experimental; urgency=medium + + * Generate dependencies for libmutter-3-0, not libmutter-2-0 + * d/libmutter-3-0.symbols: Update + * Standards-Version: 4.1.5 (no changes required) + * Set Rules-Requires-Root to no + * d/copyright: Remove obsolete FSF postal addresses + + -- Simon McVittie Fri, 27 Jul 2018 09:49:53 +0100 + +mutter (3.29.4-1) experimental; urgency=medium + + * debian/control*, gbp.conf: Update for experimental (3.29 series). + * New upstream release 3.29.4 (etc) + + Fix crash with parent-less modal dialogs + + Preserve paint volumes where possible to optimize CPU usage + + Fix Korean Hangul support on wayland + + Improve support for proprietary Nvidia driver + + Only upload HW cursor sprite to the GPU that will display them + + Improve EGLstream support + + Remove MetaScreen to prepare for non-mandatary X11 dependency + + Misc. bug fixes + + Fix size change animations on wayland + + Handle touch events on server-side titlebars + + Fix various input-method regressions + + Fix wayland build on FreeBSD + + Fix swapped colors in screenshots (again) + + Allow building with elogind + + Consider display rotation for cursor + + Fall back to non-modifier GBM surfaces + + Take inhibitors into account for monitoring idle + * debian/control*: Drop libupower-glib BD - mutter now accesses upower + directly. + * d/p/core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch: Drop, + this is applied upstream. + * debian/*: SONAME 2 -> 3 + + -- Iain Lane Wed, 25 Jul 2018 17:39:37 +0100 + +mutter (3.28.3-2) unstable; urgency=medium + + * Team upload + + [ Iain Lane ] + * debian/gbp.conf: Set the upstream branch to upstream/3.28.x, since we've + branched for experimental now. + + [ Marco Trevisan (Treviño) ] + * d/p/native-gpu-Handle-drmModeSetCrtc-failing-gracefully.patch: + - Avoid crashing when warning about wrongly set crtc mode + (LP: #1754949) + * d/p/gpu-kms-Don-t-crash-if-drmModeGetResources-returns-N.patch: + - Don't crash if drmModeGetResources returns NULL (LP: #1767956) + * d/p/window-wayland-Always-update-monitor-for-non-user-ops.patch: + - Always update monitor in wayland, avoiding crash (LP: #1784398) + * d/p/monitor-manager-Filter-out-low-screen-resolutions.patch: + - Don't return screen resolutions that can't be applied (LP: #1772831) + * d/p/window-Don-t-refuse-to-move-focus-to-the-grab-window.patch, + d/p/window-Explicitly-exclude-unmanaging-window-from-focus-ag.patch: + - Don't crash if a modal dialog closes while being dragged + (LP: #1422253) + * d/p/monitor-Use-current-monitor-mode-to-check-whether-active.patch: + - Don't try to use an invalid monitor mode to figure out scaling + (LP: #1723615) + + [ Simon McVittie ] + * Sort patch series in upstream order, with patches applied upstream + first + * d/copyright: Remove obsolete FSF postal addresses + * Standards-Version: 4.1.5 (no changes required) + * Set Rules-Requires-Root to no + * Update symbols file + + -- Simon McVittie Tue, 31 Jul 2018 15:35:03 +0100 + +mutter (3.28.3-1) unstable; urgency=medium + + * New upstream release + * d/p/backends-Add-logical-monitor-monitor-output-crtc-ref-chai.patch, + d/p/backends-Move-MetaOutput-crtc-field-into-private-struct.patch, + d/p/clutter-device-evdev-Get-devices-from-main-seat-if-no-rea.patch, + d/p/clutter-evdev-Don-t-ignore-CAPS-lock-as-modifier.patch, + d/p/clutter-evdev-ignore-injected-events-from-IM.patch, + d/p/clutter-seat-evdev-Add-function-to-get-device-by-id.patch, + d/p/device-manager-evdev-Add-main-seat-to-seats-by-default.patch, + d/p/device-manager-evdev-Free-the-main-seat-on-finalize.patch, + d/p/device-manager-evdev-Set-and-unset-the-stage-for-the-main.patch, + d/p/frames-Allow-for-unknown-mouse-buttons.patch, + d/p/frames-Handle-touch-events.patch, + d/p/frames-Make-1st-button-motion-handlers-take-generic-event.patch, + d/p/renderer-native-Don-t-crash-if-the-FB-surface-can-t-be-lo.patch, + d/p/wayland-Compare-geometries-after-chaining-up.patch, + d/p/wayland-Don-t-reset-input-focus-on-text-commit.patch, + d/p/wayland-Use-cursor-position-in-logical-monitor.patch, + d/p/wayland-update-enter-leave-output-after-effects.patch, + d/p/window-actor-add-new-signal-effects-completed.patch: + Remove patches already applied on 3.28 branch + + -- Marco Trevisan (Treviño) Thu, 19 Jul 2018 14:59:38 +0100 + +mutter (3.28.2-3) unstable; urgency=medium + + * Team upload + * d/p/backends-Move-MetaOutput-crtc-field-into-private-struct.patch, + d/p/backends-Add-logical-monitor-monitor-output-crtc-ref-chai.patch: + Mark as applied upstream + * d/p/backends-Move-MetaOutput-crtc-field-into-private-struct.patch: + Update to the version that was applied upstream + * d/p/frames-Handle-touch-events.patch, + d/p/frames-Make-1st-button-motion-handlers-take-generic-event.patch, + d/p/frames-Allow-for-unknown-mouse-buttons.patch: + Reinstate patches dropped in previous upload, along with the + upstream fix for #899181 + * d/p/wayland-Compare-geometries-after-chaining-up.patch, + d/p/window-actor-add-new-signal-effects-completed.patch, + d/p/wayland-update-enter-leave-output-after-effects.patch, + d/p/frames-Allow-for-unknown-mouse-buttons.patch, + d/p/wayland-Don-t-reset-input-focus-on-text-commit.patch, + d/p/clutter-seat-evdev-Add-function-to-get-device-by-id.patch, + d/p/clutter-device-evdev-Get-devices-from-main-seat-if-no-rea.patch, + d/p/device-manager-evdev-Set-and-unset-the-stage-for-the-main.patch, + d/p/device-manager-evdev-Free-the-main-seat-on-finalize.patch, + d/p/device-manager-evdev-Add-main-seat-to-seats-by-default.patch, + d/p/renderer-native-Don-t-crash-if-the-FB-surface-can-t-be-lo.patch: + Update to upstream gnome-3-28 branch + * Add a symbols file for libmutter-2-0 + * d/copyright: Copy many licenses and copyright holders into this file, + multiplying its length by 5 (Closes: #891156) + + -- Simon McVittie Sun, 08 Jul 2018 11:32:56 +0100 + +mutter (3.28.2-2) unstable; urgency=medium + + * Team upload + * d/p/frames-Handle-touch-events.patch, + d/p/frames-Make-1st-button-motion-handlers-take-generic-event.patch: + Drop cherry-picked patches that caused a regression (Closes: #899181) + + -- Simon McVittie Sun, 20 May 2018 15:21:35 +0100 + +mutter (3.28.2-1) unstable; urgency=medium + + * Team upload + * New upstream release + * d/p/theme-frames-Use-surface-device-scale-instead-of-cairo_sc.patch, + d/p/xwayland-Don-t-abort-if-Xwayland-crashes.patch, + d/p/xwayland-use-g_autoptr-for-GError-in-xserver_died.patch: + Drop patches that were applied upstream + * d/p/debian/synaptics-support.patch, + d/p/debian/skip-failing-tests.patch, + d/p/debian/skip-failing-tests-325.patch: + Move patches not expected to be applied upstream to + debian/patches/debian + * Re-order patch series so most-upstreamable patches are first + * d/p/clutter-evdev-Don-t-ignore-CAPS-lock-as-modifier.patch, + d/p/clutter-evdev-ignore-injected-events-from-IM.patch, + d/p/frames-Handle-touch-events.patch, + d/p/frames-Make-1st-button-motion-handlers-take-generic-event.patch, + d/p/wayland-Use-cursor-position-in-logical-monitor.patch: + Add post-release fixes from upstream 3.28 branch + + -- Simon McVittie Thu, 17 May 2018 10:37:25 +0100 + +mutter (3.28.1-2) unstable; urgency=medium + + * Add xwayland-use-g_autoptr-for-GError-in-xserver_died.patch, + xwayland-Don-t-abort-if-Xwayland-crashes.patch: + - Cherry picked from upstream, to reduce noise of mutter on crashes + which are actually caused by XWayland (LP: #1748450) + + -- Marco Trevisan (Treviño) Mon, 23 Apr 2018 10:46:57 -0500 + +mutter (3.28.1-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + - Fix window button spacing when display is scaled (LP: #1725133) + * Bump Standards-Version to 4.1.4 + + [ Marco Trevisan (Treviño) ] + * Add patches proposed upstream: + * theme-frames-Use-surface-device-scale-instead-of-cairo_sc.patch: + - theme, frames: Use surface device scale instead of cairo_scale + (LP: #1764554) + * theme-use-gtk_render_icon_suface-to-paint-button-icon.patch: + - theme: use gtk_render_icon_suface to paint button icon + (LP: #1764558) + * theme-load-icons-as-Gtk-does-with-fallback-and-RTL-suppor.patch: + - theme: load icons as Gtk does with fallback and RTL support + * clutter-Smooth-out-master-clock-to-smooth-visuals.patch: + - clutter: Smooth out master clock to smooth visuals + * core-Return-1-if-meta_window_get_monitor-is-called-on-an-.patch: + - core: Return -1 if meta_window_get_monitor is called on an + unmanaged window (LP: #1724439) + * backends-Move-MetaOutput-crtc-field-into-private-struct.patch: + - backends: Move MetaOutput::crtc field into private struct + (LP: #1703668) + * backends-Add-logical-monitor-monitor-output-crtc-ref-chai.patch: + - backends: Add logical monitor -> monitor -> output -> crtc ref + chain (LP: #1703668) + + -- Jeremy Bicha Mon, 16 Apr 2018 22:35:14 -0400 + +mutter (3.28.0-2) unstable; urgency=medium + + [ Simon McVittie ] + * Update Vcs-* for migration from Alioth svn to salsa.debian.org git + * debian/gbp.conf: Add + * Refresh patch series with gbp pq + + [ Daniel van Vugt ] + * Add synaptics-support.patch + - Allow touchpad settings to work with xserver-xorg-input-synaptics. + Note that this is unneeded on GNOME on Wayland where libinput is + always used. (LP: #1686081) + + [ Jeremy Bicha ] + * Bump debhelper compat to 11 + + -- Jeremy Bicha Sun, 18 Mar 2018 20:11:29 -0400 + +mutter (3.28.0-1) unstable; urgency=high + + * New upstream release + - Fix crashes when launching apps from apps in GNOME on Wayland + (LP: #1754169) + * Bump urgency for this targeted fix + + -- Jeremy Bicha Mon, 12 Mar 2018 18:04:54 -0400 + +mutter (3.27.92-2) unstable; urgency=medium + + [ Simon McVittie ] + * Build-depend on libgnome-desktop-3-dev (>= 3.27.90) to carry out + libgnome-desktop-3-17 transition + + [ Jeremy Bicha ] + * Release to unstable + + -- Jeremy Bicha Sat, 10 Mar 2018 19:34:02 -0500 + +mutter (3.27.92-1) experimental; urgency=medium + + * New upstream release candidate (LP: #1752123, LP: #1718238) + * Bump minimum wayland-protocols to 1.12 + * Drop bump-api.patch: Applied in new release + + -- Jeremy Bicha Mon, 05 Mar 2018 20:38:24 -0500 + +mutter (3.27.91-1) experimental; urgency=medium + + * New upstream development release (LP: #1751070) + * Bump minimum libgbm-dev to 17.1 and libdrm-dev to 2.4.83 + * Build-Depend on libcogl-dev (needed for build but shouldn't be…) + * Cherry-pick bump-api.patch + * Update package names for soname bump + + -- Jeremy Bicha Thu, 22 Feb 2018 08:54:47 -0500 + +mutter (3.26.2-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * New upstream release + * Drop all cherry-picked patches, applied in new release + + [ Simon McVittie ] + * d/changelog: Retroactively add a reference from 3.26.1-2 to #878353 + * d/p/*.patch: Add metadata to mark remaining patches as Debian-specific + + -- Jeremy Bicha Sun, 05 Nov 2017 13:03:02 -0500 + +mutter (3.26.1-6) unstable; urgency=high + + * debian/control.in: Bump libegl1-mesa-dev to (>= 17) (Closes: #878702) + * Cherry-pick more fixes from gnome-3-26 branch to fix crashes + and fix unredirecting full-screen windows: + - 0012-x11-window-Don-t-manage-InputOnly-windows.patch + - 0013-compositor-Ignore-offscreen-windows.patch + (LP: #1725821) + - 0015-monitor-normal-Prefer-modes-with-same-flags.patch + - 0016-monitor-unit-tests-Check-non-first-preferred-modes.patch + (LP: #1725153) + - 0017-compositor-Avoid-a-crash-if-top-window-finalized.patch + - 0018-Revert-ClutterActor-Optimize-away-idempotent-scale.patch + - 0019-Revert-tests-Fix-actor-anchors-test.patch + (Closes: #788140) + * Set urgency to high to not further delay the gjs/mutter transition + + -- Jeremy Bicha Sat, 21 Oct 2017 19:47:22 -0400 + +mutter (3.26.1-5) unstable; urgency=medium + + * Add 0012-Use-a-single-supported-scales.patch: + - Allow HiDPI scaling even when non-HiDPI displays are connected + (LP: #1724024) + + -- Jeremy Bicha Mon, 16 Oct 2017 20:17:15 -0400 + +mutter (3.26.1-4) unstable; urgency=medium + + * Release to unstable + + -- Jeremy Bicha Fri, 13 Oct 2017 16:24:12 -0400 + +mutter (3.26.1-3) experimental; urgency=medium + + * Cherry-pick more fixes from gnome-3-26 branch (LP: #1722811): + - 0001-wayland-dma-buf-Don-t-send-modifiers-to-old-clients.patch + - 0007-settings-Get-UI-scaling-factor-from-primary-logical-.patch + - 0008-backends-add-monitors-updated-internal-signal-to-onl.patch + - 0009-monitor-manager-use-g_return_val_if_fail-if-trying-t.patch + - 0010-backend-move-the-cursor-render-update-on-screen-chan.patch + - 0011-workspace-ensure-that-workarea-data-is-valid-when-fe.patch + + -- Jeremy Bicha Fri, 13 Oct 2017 09:44:26 -0400 + +mutter (3.26.1-2) experimental; urgency=medium + + * Add git_fix_xorg_maximize_crash.patch: + - Cherry-pick fix for crash when closing windows on Budgie or + GNOME Shell (LP: #1722510, Closes: #878353) + + -- Jeremy Bicha Tue, 10 Oct 2017 10:22:41 -0400 + +mutter (3.26.1-1) experimental; urgency=medium + + * New upstream release + * Bump Standards-Version to 4.1.1 + + -- Jeremy Bicha Wed, 04 Oct 2017 17:42:30 -0400 + +mutter (3.26.0+20170925~ea214fb-1) experimental; urgency=medium + + * New upstream git snapshot (LP: #1717272) + + -- Jeremy Bicha Mon, 25 Sep 2017 18:26:10 -0400 + +mutter (3.26.0-2) experimental; urgency=medium + + * debian/patches/src-core-screen.c-Set-_NET_NUMBER_OF_DESKTOPS-in-met.patch: + Cherry-pick from upstream. Fix positioning of desktop icons at startup. + (LP: #1696621) + + -- Iain Lane Fri, 22 Sep 2017 19:13:26 +0100 + +mutter (3.26.0-1) experimental; urgency=medium + + * Team upload + * debian/watch: Only watch stable branch again + * New upstream release, functionally identical to the previous + snapshot + + -- Simon McVittie Wed, 13 Sep 2017 09:22:55 +0100 + +mutter (3.25.92+20170911~5b5737f-1) experimental; urgency=medium + + * Team upload + * New upstream git snapshot (really fixes LP: #1714330, we hope) + * debian/watch: Scan for all versions, not just the stable-branch + * debian/control.in: Add versioned Breaks for gnome-control-center, + and bump Suggests to match, to account for functionality that moved + between packages (Closes: #874514) + + -- Simon McVittie Tue, 12 Sep 2017 10:39:01 +0100 + +mutter (3.25.91+20170902~ce515c5-1) experimental; urgency=medium + + * New upstream git snapshot (LP: #1714330) + * Drop git_fix-wayland-color-inversion.patch: Applied + * debian/control.in: + - Bump minimum libgudev-dev to >= 232 + - Drop Build-Depends on libgl1-mesa-dri + * debian/rules: + - Ignore test failures on Debian. See bug 874077. + + -- Jeremy Bicha Sat, 02 Sep 2017 15:46:15 -0400 + +mutter (3.25.91-2) experimental; urgency=medium + + * Build-Depend on libgl1-mesa-dri for build tests since + Debian's mesa packages currently only recommends it + + -- Jeremy Bicha Thu, 31 Aug 2017 12:47:34 -0400 + +mutter (3.25.91-1) experimental; urgency=medium + + * New upstream release + * Add skip-failing-tests-325.patch: + - Skip one more test that started failing with 3.25 + * Add git_fix-wayland-color-inversion.patch: + - Cherry-pick patch to fix wrong colors in clutter apps on Wayland + (LP: #1712986) + * Bump Standards-Version to 4.1.0 + + -- Jeremy Bicha Thu, 31 Aug 2017 07:11:39 -0400 + +mutter (3.25.90-1) experimental; urgency=medium + + [ Jeremy Bicha ] + * New upstream release (LP: #1662805) + * libmutter0 has been renamed upstream to libmutter-0-0 + * Rename gir1.2-mutter-3.0 to gir1.2-mutter-0 + * Rename libmutter-dev to libmutter-0-dev + * debian/control.in: + - Drop obsolete Conflicts/Replaces now that the library + uses different file names + - Loosen dependency on -common package + - Don't recommend gnome-session | x-session-manager (LP: #1703685) + - Build-depend on xauth and xfvb for build tests + - Add Conflicts: libmutter-0-dev to libmutter-1-dev since + both ship the same development header file names + * debian/rules: + - Build with --enable-egl-device (LP: #1666664) + This enables experimental support for using NVIDIA proprietary + drivers with GNOME on Wayland + - Run build tests but don't make them fatal yet + * Add skip-failing-tests.patch: + - Don't run a few tests that have been reported as failing + + [ Simon McVittie ] + * Add patch metadata + * Correctly label debian/patches/git_revert_call_threaded_swap.patch + as a revert, not as the change that is being reverted + + [ Andreas Henriksson ] + * New upstream beta release, 3.25.90. + * Bump versions of build-dependencies according to configure.ac changes. + * Rename packages according to libmutter bumping soname, 0->1. + + [ Jeremy Bicha ] + * Drop git_revert_call_threaded_swap.patch, no longer needed + + -- Andreas Henriksson Tue, 15 Aug 2017 15:45:47 +0200 + +mutter (3.22.4-2) unstable; urgency=medium + + [ Jeremy Bicha ] + * Add missing depends on gnome-settings-daemon (LP: #1561706) + + [ Laurent Bigonville ] + * debian/patches/bgo782472_fix_copypaste_x11_wayland.patch: Fix copy/paste + between some X11 applications (firefox/chromium) and wayland (Closes: + #865788) + * debian/control.in: Bump Standards-Version to 4.0.0 (no further changes) + + -- Laurent Bigonville Fri, 30 Jun 2017 19:08:41 +0200 + +mutter (3.22.4-1) unstable; urgency=medium + + * New upstream release. + * Drop patches which have been merged upstream. + + -- Michael Biebl Tue, 11 Apr 2017 15:56:47 +0200 + +mutter (3.22.3-2) unstable; urgency=medium + + * debian/patches/clutter-clone-Unset-source-when-source-actor-is-dest.patch + - Add patch from 3.22 branch to fix a gnome-shell crash when using the + alternatetab extension. (Closes: #857290) + + -- Michael Biebl Fri, 10 Mar 2017 18:06:30 +0100 + +mutter (3.22.3-1) unstable; urgency=medium + + * New upstream release. + * Drop patches which have been merged upstream. + + -- Michael Biebl Fri, 17 Feb 2017 18:17:07 +0100 + +mutter (3.22.2-3) unstable; urgency=medium + + [ Jeremy Bicha ] + * Add git_flush_all_swap_notifies_on_idle.patch: + - Add patch from 3.22 branch that fixes freezes with multiple monitors + on Wayland + + [ Andreas Henriksson ] + * Add debian/patches/bgo768531_workaround-startup-notifications.patch + - temporary workaround used in both Fedora and Arch for getting + working application startup notifications under Wayland. + - See bgo#768531 for when a real solution is ready to replace this. + + -- Andreas Henriksson Sun, 08 Jan 2017 03:12:13 +0100 + +mutter (3.22.2-2) unstable; urgency=critical + + [ Raphaël Hertzog ] + * Team upload. + * Urgency critical as gnome-shell is entirely broken in testing + for many users. + + [ Jeremy Bicha ] + * Add git_dont_set_unavailable_scroll_methods.patch: + - Add patch from 3.22 branch that prevented logging into GNOME on X + for some users (LP: #1643370, Closes: #846898) + + -- Raphaël Hertzog Tue, 06 Dec 2016 17:35:40 +0100 + +mutter (3.22.2-1) unstable; urgency=medium + + * New upstream release. + * Drop patches, all merged upstream. + + -- Michael Biebl Thu, 10 Nov 2016 19:17:32 +0100 + +mutter (3.22.1-2) unstable; urgency=medium + + * d/p/wayland-xdg-popup-Always-use-monitor-of-toplevel.patch + d/p/wayland-xdg-shell-Scale-configure-relative-popup-coo.patch + d/p/wayland-xdg-popup-Force-monitor-of-the-top-level.patch + d/p/wayland-xdg-shell-update-popup-window-monitor-early.patch + d/p/wayland-xdg-shell-Scale-positioner-coordinates.patch: + - Added. Fix positioning of popups on hidpi screens in + wayland (bgo#771841) + + -- Sjoerd Simons Fri, 14 Oct 2016 22:01:14 +0200 + +mutter (3.22.1-1) unstable; urgency=medium + + * New upstream release. + * Drop debian/patches/01_Wcast-align.patch. It's not necessary anymore as we + don't enable -Werror. + * Add Build-Depends on libxcb-res0-dev as per configure.ac. + + -- Michael Biebl Tue, 11 Oct 2016 13:55:44 +0200 + +mutter (3.22.0-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * debian/control.in: + - Explicitly build-depend on libegl1-mesa-dev (Closes: #836153) + + [ Michael Biebl ] + * New upstream release. + - Correctly handle tablet settings lookups with no backing libwacom info. + (Closes: #838050) + * Use non-multiarch path (/usr/lib/mutter) for libexecdir. + + -- Michael Biebl Tue, 20 Sep 2016 01:43:37 +0200 + +mutter (3.21.92-1) unstable; urgency=medium + + [ Jeremy Bicha ] + * debian/rules: + - Explicitly disable kms and wayland to fix build on kfreebsd + * Add fix-undef-build-failure.patch: + - Git patch needed for build without wayland + + [ Michael Biebl ] + * New upstream development release. + * Refresh debian/patches/01_Wcast-align.patch. + * Bump debhelper compat level to 10. + + -- Michael Biebl Tue, 13 Sep 2016 17:43:54 +0200 + +mutter (3.21.91-2) unstable; urgency=medium + + * Bump Build-Depends on libgnome-desktop-3-dev to (>= 3.21.2). + This ensures we have a matching version of libgnome-desktop which supports + mode flags via the D-Bus API. + + -- Michael Biebl Fri, 02 Sep 2016 12:03:57 +0200 + +mutter (3.21.91-1) unstable; urgency=low + + * New upstream beta release. + * Update build-dependencies according to configure.ac changes: + - bump wayland-protocols to >= 1.7 + * Drop debian/patches/Fix-build-of-clutter-tests.patch, merged upstream. + + -- Andreas Henriksson Tue, 30 Aug 2016 19:30:43 +0200 + +mutter (3.21.90-1) experimental; urgency=medium + + * New upstream beta release. + * Update (build-)dependencies according to configure.ac changes: + - drop intltool (>= 0.41), now gettext is used instead. + - add libwacom-dev (>= 0.13) [linux-any] + - bump wayland-protocols to >= 1.5 + - bump gsettings-desktop-schemas to >= 3.21.4 + - bump libinput-dev to >= 1.4 + * Drop debian/patches/clutter-Fix-typo-in-assert.patch + - now included in upstream release. + + -- Andreas Henriksson Sat, 20 Aug 2016 17:46:46 +0200 + +mutter (3.21.4-1) experimental; urgency=medium + + [ Sjoerd Simons ] + * New upstream release + * debian/patches/fix-gint64-format.patch + debian/patches/wayland-add-extended-state-for-tiled.patch: + - Dropped fixed upstream + * debian/patches/Fix-build-of-clutter-tests.patch + - Added, fix build of test (bgo#769636) + * debian/patches/clutter-Fix-typo-in-assert.patch + - Added, fix build. From upstream git + * debian/control.in: Bump libmutter0 to libmutter0i + * debian/control.in: Update build-dependencies + * debian/*.install: Install private helper libraries. + + [ Andreas Henriksson ] + * libmutter-dev: depend on packages required by mutter-clutter-1.0.pc + - libcairo2-dev, libglib2.0-dev, libatk1.0-dev, libpango1.0-dev, + libjson-glib-dev, libegl1-mesa-dev, libwayland-dev, libdrm-dev, + libgbm-dev, libinput-dev, libudev-dev, libx11-dev, libxext-dev, + libxdamage-dev, libxcomposite-dev, libxi-dev + * libmutter-dev: depend on additional packages required by mutter-cogl-1.0.pc + - libgdk-pixbuf2.0-dev, libxfixes-dev, libxrandr-dev + + -- Andreas Henriksson Fri, 12 Aug 2016 15:53:15 +0200 + +mutter (3.20.3-2) unstable; urgency=medium + + [ Simon McVittie ] + * d/p/fix-gint64-format.patch: Add patch from Luca Bruno fixing a format + string on ILP32 architectures + * d/rules: add a missing backslash so we build with the intended + configure options, and in particular not -Werror (Closes: #829140) + + [ Jeremy Bicha ] + * Replace old mutter libraries too instead of only conflicting with them + + -- Michael Biebl Fri, 01 Jul 2016 10:18:59 +0200 + +mutter (3.20.3-1) unstable; urgency=medium + + * New upstream release. + * Drop all patches which are now applied upstream. + * Convert to multiarch. + * Convert from cdbs to dh. + + -- Michael Biebl Thu, 30 Jun 2016 20:11:34 +0200 + +mutter (3.20.2-2) unstable; urgency=medium + + * Team upload + + [ Jeremy Bicha ] + * Use https for copyright headers + * Use https in d/watch and use new "special strings" to help standardize + format + + [ Simon McVittie ] + * Add all patches from upstream gnome-3-20 branch up to 2016-06-23 + - fix possible crashes in Wayland and in X11 + - ensure that Wayland output reconfiguration finishes correctly + - implement "force quit" in Wayland using kill(), like in X11 + - improve UTF-8 correctness + - update translations + - ensure that all window frames are drawn similarly + - avoid redrawing the entire window every frame + - make windows that are unmaximized via drag follow the cursor + * Backport patch from upstream to introduce XDG_SURFACE_STATE_GNOME_TILED + and mark tiled windows with it, allowing GDK versions with a + corresponding patch to report GDK_WINDOW_STATE_TILED correctly under + Wayland + + -- Simon McVittie Sat, 25 Jun 2016 00:19:53 +0100 + +mutter (3.20.2-1) unstable; urgency=medium + + * New upstream release. + * Bump Standards-Version to 3.9.8. + + -- Michael Biebl Wed, 11 May 2016 13:48:17 +0200 + +mutter (3.20.1-1) unstable; urgency=medium + + * New upstream release. + * Refresh patches. + * Bump mutter's dependency on gsettings-desktop-schemas to (>= 3.19.3). + * Upload to unstable. + + -- Michael Biebl Sun, 17 Apr 2016 00:06:56 +0200 + +mutter (3.20.0-1) experimental; urgency=medium + + * New upstream release. + + -- Andreas Henriksson Fri, 25 Mar 2016 10:12:11 +0100 + +mutter (3.19.92-2) experimental; urgency=medium + + * Rename libmutter0g -> libmutter0h + - update dependencies and conflicts as well. + + -- Andreas Henriksson Fri, 18 Mar 2016 19:15:59 +0100 + +mutter (3.19.92-1) experimental; urgency=medium + + * New upstream release. + * Update build-dependencies according to configure.ac changes: + - Bump libgtk-3-dev (>= 3.19.8) + - Bump gsettings-desktop-schemas-dev (>= 3.19.3) + - Bump libclutter-1.0-dev (>= 1.25.6) + - Add wayland-protocols (>= 1.1) [linux-any] + * 02_Handle-meta_screen_get_monitor_for_point-returning-N.patch: + - dropped, merged upstream. + + -- Andreas Henriksson Thu, 17 Mar 2016 11:02:08 +0100 + +mutter (3.18.3-2) unstable; urgency=medium + + * Drop mutter-dbg now that we have automatic dbgsym packages. + * Ensure proper upgrade from mutter-dbg to new dbgsym packages by using + dh_strip --dbgsym-migration. Bump Build-Depends on debhelper accordingly. + * Fix dh_makeshlibs args for libmutter0g. + * Bump Standards-Version to 3.9.7. + * Drop obsolete migration code from pre-wheezy. + * Fix disappearing mouse cursor under GNOME Shell with a multi-monitor + setup. Patch cherry-picked from upstream Git. + + -- Michael Biebl Tue, 15 Mar 2016 07:53:24 +0100 + +mutter (3.18.3-1) unstable; urgency=medium + + * New upstream release. + - fix crash when removing monitor/undocking (Closes: #813687) + + -- Andreas Henriksson Thu, 03 Mar 2016 18:48:49 +0100 + +mutter (3.18.2-1) unstable; urgency=medium + + * New upstream release. + + -- Michael Biebl Fri, 13 Nov 2015 00:09:29 +0100 + +mutter (3.18.1-1) unstable; urgency=medium + + * New upstream release. + * Refresh debian/patches/01_Wcast-align.patch. + * Wrap dependencies. + * Bump the dependency on gsettings-desktop-schemas to (>= 3.15.92). + * Drop the explicit versions from libmutter-dev dependencies. The + libmutter.pc file doesn't enforce any specific versions and they were + out-of-date anyway. + + -- Michael Biebl Wed, 21 Oct 2015 16:13:17 +0200 + +mutter (3.18.0-1) unstable; urgency=medium + + [ Andreas Henriksson ] + * Fix typo in previous changelog entry. + * New upstream release. + * Drop debian/patches/git_launcher-fix-vt-switch.patch, + debian/patches/git_launcher-format-string.patch: + - now part of upstream release. + + -- Laurent Bigonville Sun, 11 Oct 2015 15:21:29 +0200 + +mutter (3.17.92-1) experimental; urgency=medium + + [ Dmitry Shachnev ] + * Remove now useless dependency on gnome-themes-standard. + * Instead, bump libgtk-3-dev build-dependency to 3.14 to make sure mutter will + depend on a version of libgtk-3-common that contains the Adwaita theme. + + [ Andreas Henriksson ] + * New upstream release candidate + * Add two patches cherry-picked from upstream git: + - debian/patches/git_launcher-format-string.patch + "launcher: Don't pass variable as format string" + - debian/patches/git_launcher-fix-vt-switch.patch + "Revert "launcher: simplify getting session dbus proxy"" + + -- Andreas Henriksson Thu, 17 Sep 2015 13:42:48 +0200 + +mutter (3.17.90-1) experimental; urgency=medium + + * New upstream beta release. + * Update build-dependecies according to configure.ac changes: + - bump libclutter-1.0-dev to >= 1.23.4 + * debian/libmutter-dev.install: + - stop shipping usr/share/gtk-doc, removed upstream. See commit 7dc0b0e6. + * Rename libmutter0f to libmutter0g + - including conflicting against libmutter0f + + -- Andreas Henriksson Sat, 29 Aug 2015 11:03:17 +0200 + +mutter (3.16.3-1) unstable; urgency=medium + + * New upstream release. + * Refresh patches. + + -- Michael Biebl Thu, 02 Jul 2015 18:57:22 +0200 + +mutter (3.16.2-3) unstable; urgency=medium + + * Cherry-pick upstream commit which fixes the issue that window resize + handles were not shown. + * Drop obsolete Breaks/Replaces from pre-wheezy. + + -- Michael Biebl Tue, 30 Jun 2015 19:42:14 +0200 + +mutter (3.16.2-2) unstable; urgency=medium + + * Upload to unstable. + + -- Emilio Pozuelo Monfort Sun, 14 Jun 2015 13:44:02 +0200 + +mutter (3.16.2-1) experimental; urgency=medium + + [ Sjoerd Simons ] + * New upstream release 3.16.1. + * debian/rules: Explicitely build wayland and the native backend on linux + * debian/control.in: Bump b-d + * debian/rules: Stop shipping doc/theme-format.txt, Metacity format support + has been dropped + * bump library name to libmutter0f + + [ Emilio Pozuelo Monfort ] + * New upstream release 3.16.2. + * Upload to experimental. + + -- Emilio Pozuelo Monfort Wed, 27 May 2015 19:55:29 +0200 + +mutter (3.14.4-2) unstable; urgency=medium + + * Switch Build-Depends from the transitional libsystemd-login-dev to + libsystemd-dev. (Closes: #779761) + + -- Michael Biebl Tue, 28 Apr 2015 20:10:38 +0200 + +mutter (3.14.4-1) unstable; urgency=medium + + * New upstream translation and bugfix release. + + Includes new function required for the workaround to #768896 which + is very annoying for users of the proprietary nvidia driver. + * 10_window-actor_unredirect.patch, 11_black_background.patch: + dropped, merged upstream. + * Bump shlibs due to new function. + + -- Josselin Mouette Thu, 26 Mar 2015 21:06:28 +0100 + +mutter (3.14.2-1) unstable; urgency=medium + + * New upstream bugfix release. + * 10_window-actor_unredirect.patch: patch from upstream git. Fix crash + when closing a window. + * 11_black_background.patch: patch from upstream git. Don’t set a + black background when switching from the display manager. + + -- Josselin Mouette Sun, 30 Nov 2014 15:05:14 +0100 + +mutter (3.14.1-2) unstable; urgency=medium + + * gir1.2-mutter-3.0: tighten dependency on libmutter0e by making + it versioned to = ${binary:Version} (Closes: #766359) + + -- Andreas Henriksson Tue, 28 Oct 2014 19:57:02 +0100 + +mutter (3.14.1-1) unstable; urgency=medium + + * New upstream release. + * Refresh patches. + * Drop obsolete Conflicts/Replaces: gir1.2-mutter-2.91. + * Update Build-Depends as per configure.ac. + * Bump Standards-Version to 3.9.6. No further changes. + + -- Michael Biebl Thu, 16 Oct 2014 00:40:24 +0200 + +mutter (3.14.0-1) unstable; urgency=medium + + [ Dmitry Shachnev ] + * Make gir1.2-mutter-3.0 break gnome-shell versions older than 3.13.92. + Upstream commit a4a688ed83983fb5 removed MetaBackgroundEffects class, + which old gnome-shell (up to 3.13.91) was using via JavaScript code. + + [ Andreas Henriksson ] + * Make the libinput-dev build-dependency linux-only. + Thanks to Julien Cristau for pointing it out. + * New upstream release. + + -- Andreas Henriksson Mon, 22 Sep 2014 21:02:55 +0200 + +mutter (3.13.92-1) unstable; urgency=medium + + * New upstream release candidate. + + -- Andreas Henriksson Fri, 19 Sep 2014 20:43:41 +0200 + +mutter (3.13.91-1) experimental; urgency=medium + + [ Andreas Henriksson ] + * New upstream development release. + * Update build-dependencies according to configure.ac changes: + - bump intltool to (>= 0.41) + - bump libclutter-1.0-dev to (>= 1.19.5) + - add libinput-dev + - bump libsystemd-login-dev to (>= 212) + - add libxcb-randr0-dev, libxkbcommon-x11-dev, libxkbfile-dev and + xkb-data + * Drop patches backported from upstream: + - 0001-constraints-Complete-fix-for-size-hints-constrainmen.patch + - 0001-constraints-Size-increments-need-to-be-applied-to-th.patch + - 0001-keybindings-Make-sure-not-to-call-meta_change_keygra.patch + * Bump gobject-introspection build-dependency to (>= 1.41.3) + - this one supports new "nullable" annotation. + * libmutter-dev: bump dependency on libclutter-1.0-dev to (>= 1.19.5) + * libmutter-dev: stop installing usr/lib/lib*.a, no need for static + and they aren't built anymore. + * Stop excluding mutter-launch from fixperms + - not needed anymore, mutter-launch is now gone (see logind). + * Bump libwayland-dev to >= 1.5.90 as required for wayland support. + + [ Rico Tzschichholz ] + * Update library name to libmutter0e since the API/ABI is not compatible + with 3.12.x releases + + [ Sjoerd Simons ] + * New upstream release 3.13.91. + * Update libxkbcommon-x11-dev versioned depend + + [ Andreas Henriksson ] + * mutter.install: ship usr/lib/mutter/mutter-restart-helper + + -- Andreas Henriksson Fri, 05 Sep 2014 14:15:05 -0700 + +mutter (3.13.1-1) experimental; urgency=medium + + [ Laurent Bigonville ] + * debian/rules: Pass --as-needed to dh_autoreconf + + [ Andreas Henriksson ] + * New upstream development release. + * Drop debian/patches/prevent-double-lock-deadlock.patch + - obsoleted by upstream commit 5c99eae8a9ca04f5e + "display: clean up event handling" + * Update build-dependencies according to configure.ac changes: + - add libsystemd-login-dev (>= 207), libpam0g-dev + - drop libxrender-dev + * debian/mutter.install: drop usr/share/gnome + - see upstream commit 542a0886cf14cec3995ada2 + "Remove files no one cares about anymore" + * Add patches stolen from fedora originally backported from upstream git: + - 0001-constraints-Complete-fix-for-size-hints-constrainmen.patch + - 0001-constraints-Size-increments-need-to-be-applied-to-th.patch + - 0001-keybindings-Make-sure-not-to-call-meta_change_keygra.patch + * Bump gsettings-desktop-schemas (build-)dependencies to 3.13.1 + - need switch-to-workspace-last schema key + * Exclude mutter-launch from having permissions "fixed" + - mutter-launch needs to be suid + + -- Andreas Henriksson Sat, 02 Aug 2014 17:55:13 +0200 + +mutter (3.12.2-2) unstable; urgency=medium + + * Upload to unstable. + + -- Andreas Henriksson Mon, 14 Jul 2014 23:20:08 +0200 + +mutter (3.12.2-1) experimental; urgency=medium + + [ Sjoerd Simons ] + * debian/rules: Don't constrain the libmutter0 dependencies via shlibs + as we change the library names on ABI breaks now + + [ Andreas Henriksson ] + * New upstream release. + + -- Andreas Henriksson Fri, 16 May 2014 17:36:21 +0200 + +mutter (3.12.1+therealdeal-1) experimental; urgency=medium + + * Tweak version to be bigger then the one in unstable + + -- Sjoerd Simons Sat, 26 Apr 2014 19:38:07 +0200 + +mutter (3.12.1-1) unstable; urgency=medium + + * New upstream release + + -- Sjoerd Simons Sat, 26 Apr 2014 17:47:46 +0200 + +mutter (3.12.0-2) experimental; urgency=low + + [ Rico Tzschichholz ] + * Update library name to libmutter0d since the API/ABI is not compatible + with 3.10.x releases + + [ Emilio Pozuelo Monfort ] + * Let libmutter0d conflict with libmutter0c. + + -- Emilio Pozuelo Monfort Thu, 03 Apr 2014 10:30:00 +0200 + +mutter (3.12.0-1) experimental; urgency=low + + [ Sjoerd Simons ] + * debian/patches/prevent-double-lock-deadlock.patch: + + Added. Don't call X functions that lock the display in code paths that + have already locked the display if X threads have been initialized + (bgo#704101) + + [ Andreas Henriksson ] + * New upstream release. + * Update build-dependencies according to configure.ac changes: + - bump upower 0.99.0 + - bump cogl 1.17.1 + * Bump Standards-Version to 3.9.5 + + -- Andreas Henriksson Sat, 29 Mar 2014 22:09:55 +0100 + +mutter (3.10.1-2) experimental; urgency=low + + * Force build against G3.10 version of gnome-desktop + + -- Sjoerd Simons Sun, 03 Nov 2013 11:19:44 +0100 + +mutter (3.10.1-1) experimental; urgency=low + + * New upstream release + * Sync with Ubuntu (3.10.0-0ubuntu1~saucy1) + + Update library name to libmutter0c + + Bump build-depends + + -- Sjoerd Simons Fri, 01 Nov 2013 22:34:51 +0100 + +mutter (3.8.4-2) unstable; urgency=low + + * Upload to unstable. + + -- Emilio Pozuelo Monfort Sun, 13 Oct 2013 17:26:39 +0200 + +mutter (3.8.4-1) experimental; urgency=low + + [ Jeremy Bicha ] + * debian/control.in: + - Use standard Breaks/Replaces instead of Conflicts against older mutter + libraries + + [ Emilio Pozuelo Monfort ] + * debian/control.in: + + Standards-Version is 3.9.4, no changes needed. + * New upstream release. + + [ Michael Biebl ] + * debian/watch: Track stable releases. + * Bump debhelper compatibility level to 9. + + -- Michael Biebl Fri, 11 Oct 2013 19:37:56 +0200 + +mutter (3.8.3-1) experimental; urgency=low + + * New upstream release. + * debian/control.in: + + Bump clutter requirement. + + -- Emilio Pozuelo Monfort Sat, 08 Jun 2013 18:09:14 +0200 + +mutter (3.8.2-1) experimental; urgency=low + + * New upstream release. + + -- Emilio Pozuelo Monfort Fri, 24 May 2013 17:26:06 +0200 + +mutter (3.8.1-1) experimental; urgency=low + + * New upstream release + * debian/patches/02-dont-select-for-XI2-events.patch: + + Dropped, fixed X server is available in sid now + + -- Sjoerd Simons Fri, 19 Apr 2013 18:57:59 +0200 + +mutter (3.8.0-1) experimental; urgency=low + + * New upstream release. + + -- Emilio Pozuelo Monfort Wed, 27 Mar 2013 00:15:13 +0100 + +mutter (3.7.92-1) experimental; urgency=low + + [ Sjoerd Simons ] + * New upstream release (3.7.90) + * Sync from Ubuntu + + d/p/04_ignore_shadow_and_padding.patch: + * Dropped, Ubuntu specific + * debian/control.in: Bump b-d on glib + * debian/control.in: Rename libmutter0a to libmutter0b for more ABI fun + * d/p/10_Always-send-_NET_WM_FRAME_DRAWN-for-newly-created-wi.patch: + + Added. Fix a race causing _NET_WM_FRAME_DRAWN to not be sent in context + menus. (From upstream git, BGO#694771) + + [ Emilio Pozuelo Monfort ] + * New upstream release. + + debian/control.in: + - Add gtk-doc-tools to build-depends. + + debian/libmutter-dev.install: + - Ship the API reference. + + d/p/10_Always-send-_NET_WM_FRAME_DRAWN-for-newly-created-wi.patch: + - Removed, included upstream. + + debian/patches/02-dont-select-for-XI2-events.patch: + - New patch, revert an upstream change to receive XI2 events + until #696272 is fixed. Thanks to Sjoerd Simons and + Frédéric Péters for the info and the patch. + + debian/copyright: + - Updated. + + -- Emilio Pozuelo Monfort Wed, 20 Mar 2013 18:12:12 +0100 + +mutter (3.7.5-0ubuntu1~raring1) raring; urgency=medium + + [ Jeremy Bicha ] + * New upstream release. + * debian/control.in: + - Bump minimum clutter & gsettings-desktop-schemas + + [ Rico Tzschichholz ] + * debian/control.in: + - Build-depend on libxi-dev + * debian/patches/01_Wcast-align.patch: Refreshed + * debian/patches/05_ignore_num_workspaces.patch: + - Dropped, applied in new version + + -- Jeremy Bicha Tue, 05 Feb 2013 20:58:05 -0500 + +mutter (3.6.2-0ubuntu1) raring; urgency=low + + * New upstream release (LP: #1078155) + + -- Jeremy Bicha Mon, 12 Nov 2012 22:09:47 -0500 + +mutter (3.6.1-1ubuntu2) raring; urgency=low + + * Added 05_ignore_num_workspaces.patch (LP: #1067933) + + -- Brandon Snider Wed, 17 Oct 2012 20:23:11 -0400 + +mutter (3.6.1-1ubuntu1) raring; urgency=low + + * Sync with Debian. Remaining change: + - 04_ignore_shadow_and_padding.patch: Silently ignore + padding and shadow tags + + -- Jeremy Bicha Thu, 08 Nov 2012 08:37:27 -0500 + +mutter (3.6.1-1) experimental; urgency=low + + * New upstream release + + -- Sjoerd Simons Wed, 17 Oct 2012 19:58:10 +0200 + +mutter (3.6.0-1) experimental; urgency=low + + * New upstream release + * Sync with Ubuntu: + - Drop unnecessary gnome-doc-utils install + * d/p/00_meta_window_move_frame-fix-crash-when-frame-is-NULL.patch: + Dropped: fixed upstream + * debian/control.in: Rename libmutter0 to libmutter0a as the libmutter ABI + broke + + -- Sjoerd Simons Sun, 14 Oct 2012 19:24:21 +0200 + +mutter (3.4.1-7) unstable; urgency=low + + * d/p/0001-meta-texture-rectangle-Use-Cogl-s-API-to-create-a-re.patch: + + Patch from upstream git, don't use GL types as cogl doesn't expose + GL headers in newer releases. This will ease the cogl transition. + + -- Emilio Pozuelo Monfort Sun, 26 May 2013 17:54:55 +0200 + +mutter (3.4.1-6) unstable; urgency=low + + * Team upload + * Add debian/patches/02_switch_to_gtk-doc_syntax.patch: + - from upstream, fixes FTBFS with new gobject-introspection. + + -- Andreas Henriksson Mon, 13 May 2013 11:03:34 +0200 + +mutter (3.4.1-5) unstable; urgency=low + + [ Rico Tzschichholz ] + * debian/patches: Add upstream patch + 00_meta_window_move_frame-fix-crash-when-frame-is-NULL.patch + + [ Michael Biebl ] + * Install missing keybindings file 50-mutter-windows.xml which is required + to configure mutter specific keyboard shortcuts in gnome-control-center. + Closes: #680004 + * Use list-missing to list files missing from the package. + + -- Michael Biebl Sat, 07 Jul 2012 20:03:06 +0200 + +mutter (3.4.1-4) unstable; urgency=low + + * Clean up /etc/sgml/mutter-common.cat and /etc/sgml/mutter-common.cat.old + on upgrades. Closes: #675309 + + -- Michael Biebl Fri, 01 Jun 2012 12:49:07 +0200 + +mutter (3.4.1-3) unstable; urgency=low + + [ Michael Biebl ] + * Upload to unstable. + + [ Rico Tzschichholz ] + * libmutter-dev: add dependency on gsettings-desktop-schemas-dev and + libx11-dev as pc-file requests + + [ Michael Biebl ] + * Bump Suggests: gnome-control-center to (>= 1:3.4.0) as we want a recent + enough version which can handle keybindings based on GSettings. + * Use strict dependency between mutter/libmutter0 and mutter-common to + ensure we have the correct version of mutter-common providing the + org.gnome.mutter gsettings schema. + * Add Depends on gnome-themes-standard to mutter. Adwaita is the preferred + window manager theme and without a theme installed mutter refuses to + start. Closes: #658823 + + -- Michael Biebl Wed, 30 May 2012 12:25:26 +0200 + +mutter (3.4.1-2) experimental; urgency=low + + * Drop debian/mutter-common.catalog and debian/mutter-common.sgmlcatalogs. + This is another leftover from the metacity package, mutter doesn't ship + any DTD. + * Replace another occurence of libgnome2-common with + gsettings-desktop-schemas. + + -- Michael Biebl Mon, 14 May 2012 19:11:48 +0200 + +mutter (3.4.1-1) experimental; urgency=low + + [ Michael Biebl ] + * New upstream release. + + [ Rico Tzschichholz ] + * debian/control.in: + - Bump minimum GTK, cogl, clutter & gsettings-desktop-schemas + - Add mutter-dbg package + * debian/mutter-common.install: + - Install gsettings schemas + * debian/rules: Enable compile warnings + + [ Jeremy Bicha ] + * debian/control.in: + - Drop gconf dependency + + [ Michael Biebl ] + * Bump Standards-Version to 3.9.3. + * Update Vcs-* URLs. + * Drop Suggests: gnome-themes. This is a remnant of the old metacity + package this work is based on. + * Refresh debian/patches/01_Wcast-align.patch. + + -- Michael Biebl Fri, 04 May 2012 21:48:47 +0200 + +mutter (3.2.2-3) unstable; urgency=low + + * Upload to unstable. + + -- Michael Biebl Wed, 02 May 2012 00:10:17 +0200 + +mutter (3.2.2-2) experimental; urgency=low + + * d/p/02_Fix-cogl-crash-from-updating-non-existent-texture.patch: + + Added. In 1.8 cogl would prevent attempts to update textures with + an invalid handle from crashing buggy programs. Cogl 1.10 no longer does + so. This patch prevents mutter from updating invalid textures + * d/p/03_fix_compilation_with_new_cogl.patch + + Added. Adapt to changes made in the experimental patch of the cogl API + + -- Sjoerd Simons Sun, 01 Apr 2012 16:32:27 +0200 + +mutter (3.2.2-1) unstable; urgency=low + + [ Michael Biebl ] + * Change section of gir1.2-mutter-3.0 to introspection. + + [ Josselin Mouette ] + * Update repository URL. + + [ Michael Biebl ] + * New upstream release. + * debian/watch: Track stable releases. + + -- Michael Biebl Tue, 24 Jan 2012 07:49:20 +0100 + +mutter (3.2.1-2) unstable; urgency=low + + [ Laurent Bigonville ] + * debian/watch: + - Fix URL regex to correctly detect latest tarballs + - Switch to .xz tarballs + + [ Michael Biebl ] + * Upload to unstable. + * Refresh debian/patches/01_Wcast-align.patch. + * debian/control.in: + - Add explicit Build-Depends on libcairo2-dev. + - Bump Build-Depends on libglib2.0-dev. + + -- Michael Biebl Sat, 19 Nov 2011 01:21:32 +0100 + +mutter (3.2.1-1) experimental; urgency=low + + [ Jean Schurger ] + * New upstream version + * debian/control.in + - Updated clutter dependency + * debian/libmutter0.symbols + - Updated + + [ Josselin Mouette ] + * Tighten shlibs to the major GNOME version, libcamel-style. + * libmutter0.symbols: dropped, upstream ABI stability guarantees are + not sufficient. + + [ Sjoerd Simons ] + * New upstream release (3.2.1) + + -- Sjoerd Simons Fri, 28 Oct 2011 20:19:30 +0200 + +mutter (3.0.2.1-4) unstable; urgency=high + + * Team upload. Urgency high as that problem already affects testing + users. + * debian/patches: + - Add 00git-dont-lose-application-redraws.patch to fix rendering + issues with parts of the screen not showing the latest content. + + -- Raphaël Hertzog Mon, 17 Oct 2011 08:37:50 +0200 + +mutter (3.0.2.1-3) unstable; urgency=low + + [ Rico Tzschichholz ] + * debian/patches: + - Add 00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch, + 00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch + to remove direct GL usages to let it build with EGL/GLES2 on arm + * debian/control: + - Bump build-dep on clutter-1.0-dev (>= 1.7.5) + * debian/libmutter0.symbols: + - updated (leave with debian revision since it is added by a patch) + + -- Michael Biebl Fri, 14 Oct 2011 19:01:24 +0200 + +mutter (3.0.2.1-2) unstable; urgency=low + + [ Laurent Bigonville ] + * Drop debian/mutter.lintian-overrides: Missing manpages are now installed + + [ Michael Biebl ] + * debian/control.in: + - Drop Build-Depends on gir1.2-gtk-3.0, gir1.2-clutter-1.0 and + gir1.2-json-glib-1.0 and let their corresponding -dev package pull it in + automatically. Bump the Build-Depends on the -dev packages accordingly. + * Bump debhelper compatibility level to 8. + - Update Build-Depends on debhelper. + - Strip debian/tmp/ from .install files. + * Let cdbs call dh_girepository. + - Bump Build-Depends on cdbs to (>= 0.4.90). + - Remove custom dh_girepository rules from debian/rules. + - Set DEB_DH_GIREPOSITORY_ARGS_ALL to /usr/lib/mutter. + + -- Michael Biebl Thu, 07 Jul 2011 22:45:20 +0200 + +mutter (3.0.2.1-1) unstable; urgency=low + + [ Rico Tzschichholz ] + * New upstream release + * debian/watch: + - Look for bzip2 tarballs + + [ Josselin Mouette ] + * Depend on libgnome2-common for the GConf schemas. This will be + necessary until mutter is ported to GSettings. + + -- Laurent Bigonville Sat, 11 Jun 2011 14:39:59 +0200 + +mutter (3.0.1-1) experimental; urgency=low + + * New upstream release (3.0.0). + * debian/control.in: + - Bump Standards-Version to 3.9.2 (no further changes) + - Drop versionized dpkg-dev build-dependency + + -- Laurent Bigonville Fri, 06 May 2011 23:47:25 +0200 + +mutter (3.0.0-2) experimental; urgency=low + + * Rename gir1.2-mutter-2.91 package to gir1.2-mutter-3.0 + + -- Laurent Bigonville Mon, 11 Apr 2011 11:19:27 +0200 + +mutter (3.0.0-1) experimental; urgency=low + + * Team upload. + + [ Frederic Peters ] + * New upstream release (2.91.93). + * debian/libmutter0.symbols: new symbol. + + [ Josselin Mouette ] + * Make the -dev package depend on the gir package. + + [ Raphaël Hertzog ] + * New upstream release (3.0.0). + + -- Raphaël Hertzog Sun, 10 Apr 2011 19:38:04 +0000 + +mutter (2.91.92-1) experimental; urgency=low + + * New upstream release + + [ Rico Tzschichholz ] + * debian/patches: + + drop 02_arm_include_clutter_x11.patch, is upstream + + drop 10_mutter-ldflags.patch, is upstream + * debian/control.in,debian/rules: + + add libmutter0 which replaces libmutter-wm0 and libmutter-private0 + + [ Frederic Peters ] + * debian/control.in: mention gnome-shell in libmutter0 package description. + + -- Frederic Peters Thu, 24 Mar 2011 19:56:48 +0100 + +mutter (2.91.91-1) experimental; urgency=low + + * New upstream release. + + [Laurent Bigonville] + * debian/control.in: Add Vcs-Svn and Vcs-Browser fields + + [Frederic Peters] + * debian/control.in, libmutter-wm0.install, libmutter-wm0.symbols: + Add a libmutter-wm0 library + * debian/patches/10_mutter-ldflags.patch: Fix linking of mutter binary + * debian/patches/20_libmutter_export_symbols.patch: Limit list of symbols + exported by libmutter-{wm,private} (but don't add it to series as it makes + gnome-shell segfault) + * debian/mutter.install, debian/mutter-common.install: move mutter-wm.desktop + from mutter-common to mutter. + * debian/control.in: add replaces/breaks in mutter, against previous + versions of mutter-common, for the move of mutter-wm.desktop. + + -- Frederic Peters Mon, 14 Mar 2011 19:09:58 +0100 + +mutter (2.91.90-1) experimental; urgency=low + + * New upstream release. + + -- Frederic Peters Wed, 23 Feb 2011 09:29:08 +0100 + +mutter (2.91.6-1) experimental; urgency=low + + [ Laurent Bigonville ] + * New upstream release. + * debian/control.in: + - Remove duplicate Section + - Drop gir1.2-mutter-2.91 Conflicts/Replaces against libmutter-private0 + package + * debian/watch: Drop call to uupdate + * debian/mutter.lintian-overrides: Add overrides for manpages shipped + in mutter-common + + [ Emilio Pozuelo Monfort ] + * debian/control.in: + + Update for the new gtk+ 3 package names. + + -- Emilio Pozuelo Monfort Sat, 19 Feb 2011 15:20:42 +0000 + +mutter (2.29.0-4) unstable; urgency=low + + * Remove gir1.0-mutter-2.29 to ease the gir1.2 transition, since + nothing uses it. + + -- Emilio Pozuelo Monfort Wed, 16 Feb 2011 20:34:44 +0000 + +mutter (2.91.5-1) experimental; urgency=low + + [ Emilio Pozuelo Monfort ] + * New upstream release. + + debian/control.in: + - Update build dependencies. + - Remove unneeded libgtk2.0-dev build dependency. + + debian/patches/02_gdk_removed_macro.patch, + debian/patches/03_handle_new_gtk_states.patch, + debian/patches/04_fix_gradient_example.patch: + - Removed, included upstream. + * debian/libmutter-private0.symbols: + + Add a symbols file. + * debian/rules: + + Make the shlibs always depend on the latest upstream version. + We have symbols file anyway, and manually bumping the shver is + error prone. + + [ Laurent Bigonville ] + * debian/control: Bump Standards-Version to 3.9.1 + + -- Emilio Pozuelo Monfort Wed, 12 Jan 2011 23:06:20 +0000 + +mutter (2.91.3-3) experimental; urgency=low + + * debian/patches/02_gdk_removed_macro.patch, + * debian/patches/03_handle_new_gtk_states.patch, + * debian/patches/04_fix_gradient_example.patch: + - Patches from upstream git, fix the build with latest GTK+ 3. + * debian/control.in: + - Bump the libgtk3.0-dev build dependency accordingly. + + -- Emilio Pozuelo Monfort Sat, 18 Dec 2010 23:39:24 +0000 + +mutter (2.91.3-2) experimental; urgency=low + + * Update to the new gir policy: + - Rename gir1.0-mutter-2.91 to gir1.2-mutter-2.91. + - Bump the gobject-introspection build dependency. + - Build depend on gir1.2 packages. + * debian/control.in: + - Fix typo, s/shlib/shlibs/. + * debian/rules: + - Remove hack to get translations in /usr/share, no longer needed. + - Pass the path to the typelibs to dh_girepository to get correct + dependencies. + * debian/rules, + debian/control.in: + - Use dh-autoreconf. + * debian/patches/90_autotools.patch, + debian/patches/99_ltmain_as-needed.patch: + - Removed, no longer needed with dh-autoreconf. + * debian/rules, + debian/copyright: + - Fix some metacity leftovers. + * debian/mutter.1, + debian/mutter-message.1, + debian/mutter-theme-viewer.1, + debian/mutter-window-demo.1, + debian/mutter-common.manpages: + - Removed, shipped upstream. + + -- Emilio Pozuelo Monfort Tue, 14 Dec 2010 00:52:38 +0100 + +mutter (2.91.3-1) experimental; urgency=low + + [ Gustavo Noronha Silva ] + * New development release + * debian/control: + - update build-dependencies on GObject-Introspection packages + - build-depend on GTK+3 + + [ Emilio Pozuelo Monfort ] + * New upstream release. + - Rename gir1.0-mutter-2.31 to gir1.0-mutter-2.91. + * debian/control.in: + - Build depend on libjson-glib-dev and gir1.0-json-glib-1.0. + * debian/rules, + debian/control.in, + debian/source/format: + - Switch to source format 3.0 (quilt). + * debian/rules: + - Bump the shlib version. + + -- Emilio Pozuelo Monfort Mon, 06 Dec 2010 00:59:42 +0100 + +mutter (2.31.5-1) experimental; urgency=low + + * New upstream release + - refreshed patches + - added a hack to rules to work-around the build trying to install + locale files to /usr/lib/locale + - bumped shlib minimum version to 2.31.5 (see #586124) + + -- Gustavo Noronha Silva Tue, 13 Jul 2010 11:36:29 -0300 + +mutter (2.31.2-3) experimental; urgency=low + + * debian/gir1.0-mutter-2.{29->31}.install: + - actually install the typelib file + + -- Gustavo Noronha Silva Mon, 31 May 2010 11:37:33 -0300 + +mutter (2.31.2-2) experimental; urgency=low + + * debian/control: + - fix GIR package name to account for GIR API name change + + -- Gustavo Noronha Silva Wed, 26 May 2010 15:15:34 -0300 + +mutter (2.31.2-1) experimental; urgency=low + + * New development release + + -- Gustavo Noronha Silva Wed, 26 May 2010 10:51:58 -0300 + +mutter (2.29.1-1) experimental; urgency=low + + * New development release. + * debian/control: + - build-dep on clutter >= 1.2 + + -- Gustavo Noronha Silva Thu, 08 Apr 2010 20:48:38 -0300 + +mutter (2.29.0-2) unstable; urgency=low + + * debian/control: + - fix gir package name, because the typelib has changed its name + + -- Gustavo Noronha Silva Mon, 15 Mar 2010 17:27:59 -0300 + +mutter (2.29.0-1) unstable; urgency=low + + * New upstream development release. + * debian/rules: + - update makeshlibs argument to require >= 2.29.0 + + -- Gustavo Noronha Silva Tue, 02 Mar 2010 19:19:44 -0300 + +mutter (2.28.1~git20100129-1) unstable; urgency=low + + * Upstream snapshot + + -- Gustavo Noronha Silva Fri, 29 Jan 2010 12:04:09 -0200 + +mutter (2.28.1~git20091208-1) unstable; urgency=low + + * New upstream snapshot + + -- Gustavo Noronha Silva Sat, 24 Oct 2009 13:16:53 -0200 + +mutter (2.28.1~git20091024-1) unstable; urgency=low + + * Upstream snapshot + * debian/control.in: + - fixed typo in description + - bump Standards-Version to 3.8.3 + + -- Gustavo Noronha Silva Sat, 24 Oct 2009 12:59:03 -0200 + +mutter (2.28.0-2) unstable; urgency=low + + * debian/control.in: + - adapt for the new GObject introspection policy + + -- Gustavo Noronha Silva Mon, 19 Oct 2009 15:59:57 -0200 + +mutter (2.28.0-1) unstable; urgency=low + + * New upstream release + + -- Gustavo Noronha Silva Fri, 09 Oct 2009 13:23:25 -0300 + +mutter (2.27.5-1) unstable; urgency=low + + * New upstream release + + -- Gustavo Noronha Silva Wed, 30 Sep 2009 21:19:05 +0100 + +mutter (2.27.3-2) unstable; urgency=low + + [ Simon Raven ] + * debian/control.in: + - adding missing build-dep to fix FTBFS (Closes: #544342) + + [ Gustavo Noronha Silva ] + * debian/control.in: + - also add gobject-introspection, gobject-introspection-glib-2.0, + gobject-introspection-freedesktop, which were also missing, to + build-depends + + -- Gustavo Noronha Silva Sun, 30 Aug 2009 19:02:46 -0300 + +mutter (2.27.3-1) unstable; urgency=low + + [ Josselin Mouette ] + * Update list of copyright holders. + + [ Gustavo Noronha Silva ] + * New upstream release + + -- Gustavo Noronha Silva Sat, 29 Aug 2009 21:53:05 -0300 + +mutter (2.27.2-1) unstable; urgency=low + + * First mutter release for Debian + - no ITP since this is in practice a branch of metacity + * debian/control.in: + - adapted descriptions + - added build-deps on gobject-introspection, and clutter >= 1.0 + - renamed packages + * debian/patches/10_ignore_callbacks.patch: + - removed; applied upstream + * debian/mutter-common.install: + - this package no longer provides themes and gnome-control-center + keybindings capplet; this will come in a separate module in the + future, it seems, and we may want to make sure it is installed + + -- Gustavo Noronha Silva Sun, 26 Jul 2009 13:33:08 +0200 + +metacity (1:2.26.0-3) unstable; urgency=high + + * 10_ignore_callbacks.patch: stolen upstream. Fix a bug leading to + some callbacks being ignored. Closes: #533917. + + -- Josselin Mouette Wed, 24 Jun 2009 12:04:26 +0200 + +metacity (1:2.26.0-2) unstable; urgency=low + + * Use patchsys-quilt; build-depend on quilt. + * 01_Wcast-align.patch: don’t use -Wcast-align, it gives incorrect + warnings (errors thanks to -Werror) when some pointers are converted + back and forth to XPointers. Closes: #532655. + * 90_autotools.patch: relibtoolize the whole package. + + -- Josselin Mouette Wed, 10 Jun 2009 21:52:35 +0200 + +metacity (1:2.26.0-1) unstable; urgency=low + + [ Josselin Mouette ] + * Fix typo in changelog entry. + + [ Loic Minier ] + * Let metacity suggest gnome-themes as it attempts to use the Clearlooks + Metacity theme by default and logs a warning when it can't be used. + * Let metacity suggest xdg-user-dirs as it fails creating the + .config/metacity sub-directory and logs a warning if .config isn't created + by xdg-user-dirs. + + [ Josselin Mouette ] + * Set the team as primary maintainer. Closes: #523545. + * Fixup in the descriptions. + * New upstream release. + * Update build-dependencies. + * Bump shlibs for libmetacity-private0. + + -- Josselin Mouette Tue, 09 Jun 2009 20:36:03 +0200 + +metacity (1:2.24.0-2) unstable; urgency=low + + * Rename libmetacity0 to libmetacity-private0 because of an + unexpected ABI change. Closes: #510096. + * Remove trailing -1's in build-depends. + * debian/copyright: write complete list of copyright holders. + * Upload to unstable. + + -- Josselin Mouette Mon, 16 Feb 2009 18:03:57 +0100 + +metacity (1:2.24.0-1) experimental; urgency=low + + * New upstream release. + + Implements one-way maximisation. Closes: #450837. + + Fixes issues when disabling the compositor. Closes: #476492. + * Bump shlibs version to 1:2.24.0. + * Standards version is 3.8.0. + * 01_doublefree_maximize.patch: dropped, merged upstream. + * Install the .desktop in the metacity package. + + -- Josselin Mouette Sat, 22 Nov 2008 15:57:58 +0100 + +metacity (1:2.22.0-2) unstable; urgency=low + + [ Sven Arvidsson ] + * Add README.Debian, describing how to enable the compositor. + (Closes: #471442) + + [ Josselin Mouette ] + * 01_doublefree_maximize.patch: stolen upstream (r3817). Fixes + vertical maximisation bug caused by an invalid free. + Closes: #452139. + * control.in: make metacity the first package so that it gets the + README.Debian. + + -- Josselin Mouette Thu, 18 Sep 2008 16:53:19 +0200 + +metacity (1:2.22.0-1) unstable; urgency=low + + [ Bradley Smith ] + * New upstream development release. + + [ Sam Morris ] + * Build-depend on libxcomposite-dev for composite manager. + + [ Sebastian Dröge ] + * New upstream stable release: + + debian/rules: + - Drop check-dist include. + - Update shlibs to >= 2.22.0 because of new API. + + -- Sebastian Dröge Fri, 14 Mar 2008 13:54:19 +0100 + +metacity (1:2.21.5-1) experimental; urgency=low + + [ Riccardo Setti ] + * New metacity package. + * build with compositor extension. + + [ Bradley Smith ] + * Update Standards Version to 3.7.3. (No changes) + * Add check-dist. + + -- Riccardo Setti Thu, 20 Dec 2007 02:29:13 +0100 + +metacity (1:2.20.1-2) UNRELEASED; urgency=low + + * Let metacity-common replace metacity instead of conflicting to ease + upgrades. + + -- Loic Minier Wed, 28 Nov 2007 19:00:45 +0100 + +metacity (1:2.20.1-1) unstable; urgency=low + + [ Josselin Mouette ] + * Recommend gnome-session | x-session-manager. Closes: #225640. + * Remove metacity.menu. Closes: #397645. + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Mon, 19 Nov 2007 13:57:21 +0100 + +metacity (1:2.20.0-1) unstable; urgency=low + + * New upstream release: + + debian/patches/01_session_tolerate_missing_file.patch, + debian/patches/02_fix_crash_on_session_saving.patch: + - Dropped, merged upstream. + + debian/rules: + - Bump shlibs to >= 2.19.5. + + debian/metacity-common.install: + - Ship keybinding stuff. + * debian/control.in: + + Drop duplicated libxinerama-dev build dependency. + + -- Sebastian Dröge Sat, 22 Sep 2007 10:46:36 +0200 + +metacity (1:2.18.5-1) unstable; urgency=low + + * New upstream stable release; no API change. + + -- Loic Minier Tue, 19 Jun 2007 12:07:17 +0200 + +metacity (1:2.18.3-2) unstable; urgency=low + + * 99_ltmain_as-needed.patch: make --as-needed work for the library + too. + + -- Josselin Mouette Wed, 06 Jun 2007 23:40:52 +0200 + +metacity (1:2.18.3-1) unstable; urgency=low + + * Drop metacity-common postinst as it was scheduled to be dropped post-etch. + * Rewrite metacity postinst and prerm to use safer individual if tests + instead of trying to list all possible args in a case; reported by + Lior Kaplan; closes: #421206. + * New upstream stable release; no API change. + + -- Loic Minier Mon, 28 May 2007 17:48:18 +0200 + +metacity (1:2.18.2-3) unstable; urgency=low + + * New patch 02_fix_crash_on_session_saving.patch, taken from Ubuntu. + Fix a crash that would occur when the current session is saved and would + corrupt ~/.gnome2/session. Gnome bug #433253 + + -- Sebastian Dröge Thu, 26 Apr 2007 15:44:10 +0200 + +metacity (1:2.18.2-2) unstable; urgency=low + + * Add -z defs to LDFLAGS; cleanups. + * Upload to unstable; drop check-dist include. + * Add a ${misc:Depends}. + * Drop useless --enable-xsync=yes from configure flags. + * Wrap build-deps and deps. + * Bump dep on libgtk2.0-dev to >= 2.10.0-1. + + -- Loic Minier Sat, 14 Apr 2007 15:12:50 +0200 + +metacity (1:2.18.2-1) experimental; urgency=low + + * New upstream stable release. + + -- Loic Minier Mon, 09 Apr 2007 08:47:47 +0200 + +metacity (1:2.18.1-1) experimental; urgency=low + + * New upstream stable release; no API change; bug fixes and translations. + * Drop obsolete README.Debian; misc cleanups. + + -- Loic Minier Sun, 08 Apr 2007 09:23:44 +0200 + +metacity (1:2.18.0-1) experimental; urgency=low + + [ Marco Cabizza ] + * New upstream release: not enabling compositor, too unstable, and libcm + seems dead upstream. + + [ Riccardo Setti ] + * Updated debhelper compatibility to 5 + + [ Loic Minier ] + * Set LDFLAGS directly instead of via DEB_CONFIGURE_SCRIPT_ENV; build-dep on + cdbs >= 0.4.41. + * Fix metacity-common.install to list the correct dirs. + + -- Loic Minier Mon, 26 Mar 2007 22:27:08 +0200 + +metacity (1:2.16.5-1) experimental; urgency=low + + [ Loic Minier ] + * Add a get-orig-source target to retrieve the upstream tarball. + * Include the new check-dist Makefile to prevent accidental uploads to + unstable; bump build-dep on gnome-pkg-tools to >= 0.10. + + [ Josselin Mouette ] + * 01_session_tolerate_missing_file.patch: register differently to the + session, in order to handle gracefully the case where a session file + is missing on the disk (closes: #315169, #391287). + * New upstream release. + + -- Josselin Mouette Sun, 4 Mar 2007 10:29:40 +0100 + +metacity (1:2.16.3-1) experimental; urgency=low + + [ Marco Cabizza ] + * New upstream release. + + [ Loic Minier ] + * Merge 1:2.14.5-2. + + [ Josselin Mouette ] + * Use ${gnome:Version} and ${gnome:NextVersion} to loosen the + dependencies. + * Build-depend on gnome-pkg-tools 0.6. + * Call gnome-version.mk. + * Replace the x-dev build-dependency by x11proto-core-dev. + + -- Josselin Mouette Tue, 21 Nov 2006 20:50:05 +0100 + +metacity (1:2.16.2-1) experimental; urgency=low + + * New upstream release, with backwards incompatible changes in internal API. + + -- Loic Minier Mon, 25 Sep 2006 17:47:56 +0200 + +metacity (1:2.16.1-1) experimental; urgency=low + + [ Loïc Minier ] + * Remove superfluous dh_installcatalogs call and bump cdbs build-dep to + >= 0.4.37, thanks Peter Eisentraut. (Closes: #361156) + [debian/control, debian/control.in, debian/rules] + * Don't mention non-existing Info documentation in the metacity and + metacity-message man pages, thanks Piotr Engelking. (Closes: #365450) + [debian/metacity.1, debian/metacity-message.1] + * Fix watch file. + + [ Marco Cabizza ] + * New upstream release, target experimental: + - Bumping up libgtk2.0-dev build-dep to 2.10 + * Setting myself as the maintainer. + + -- Marco Cabizza Wed, 13 Sep 2006 18:46:45 +0200 + +metacity (1:2.14.5-2) unstable; urgency=low + + * Remove superfluous dh_installcatalogs call and bump cdbs build-dep to + >= 0.4.37, thanks Peter Eisentraut. (Closes: #361156) + [debian/control, debian/control.in, debian/rules] + * Don't mention non-existing Info documentation in the metacity and + metacity-message man pages, thanks Piotr Engelking. (Closes: #365450) + [debian/metacity.1, debian/metacity-message.1] + * Fix watch file. + * Fix typo in debian/metacity-message.1; thanks Per Bojsen; closes: #397864. + + -- Loic Minier Fri, 10 Nov 2006 09:38:49 +0100 + +metacity (1:2.14.5-1) unstable; urgency=low + + * New upstream release. + + -- Loic Minier Tue, 30 May 2006 15:47:36 +0200 + +metacity (1:2.14.3-1) unstable; urgency=low + + [ Gustavo Noronha Silva ] + * New upstream release. + + Doesn't steal focus (closes: #361273). + + [ Josselin Mouette ] + * Make the package binNMU-safe. + + Build-depend on dpkg-dev 1.13.19. + + Use ${source:Version} and ${binary:Version}. + * Standards version is 3.7.2. + * Bump shlibs version to 2.14. + + [ Loic Minier ] + * Stop shipping /usr/lib/*.la files in libmetacity-dev. + [debian/libmetacity-dev.install] + + -- Josselin Mouette Sun, 14 May 2006 23:30:56 +0200 + +metacity (1:2.14.1-2) unstable; urgency=low + + * Simple rebuild to get rid of references to Xcursor.la / Xrender.la. + + -- Loic Minier Tue, 2 May 2006 16:45:22 +0200 + +metacity (1:2.14.1-1) unstable; urgency=low + + * New upstram version. + * Adds edge resistance. Closes: #191649. + * patches/000_raise-on-click.patch: Fixed upstream; dropped. + + -- Dafydd Harries Thu, 30 Mar 2006 19:50:23 +0100 + +metacity (1:2.12.3-3) unstable; urgency=low + + * Also explicitely remove catalogs installed by past metacity packages. + [debian/metacity-common.preinst] + * Move these clenaups to postinst. + [debian/metacity-common.preinst, debian/metacity-common.postinst] + + -- Loic Minier Sun, 12 Feb 2006 16:53:48 +0100 + +metacity (1:2.12.3-2) unstable; urgency=low + + * Clean up metacity's postinst. + [debian/metacity.postinst] + * Clean up /etc/sgml/metacity.cat and .old left over by metacity. + [debian/metacity-common.preinst] + + -- Loic Minier Sun, 12 Feb 2006 16:35:07 +0100 + +metacity (1:2.12.3-1) unstable; urgency=low + + * New upstream release. + * Update patch to support a new raise on click mode and choice of this mode + to apply without fuzz. Also note this patch has been rejected upstream. + [debian/patches/000_raise-on-click.patch] + * New metacity-common package holds arch-independent files and registers + schemas. (Closes: #218365, #234665, #240211) + [debian/metacity.dirs, debian/metacity-common.links, + debian/metacity.install, debian/control, debian/control.in, + debian/metacity-common.postinst, debian/metacity.catalog, + debian/metacity-common.manpages, debian/metacity.postrm, + debian/metacity-common.dirs, debian/metacity-common.install, + debian/metacity-common.catalog, debian/changelog, + debian/metacity-common.postrm, debian/rules, debian/metacity.links, + debian/metacity.postinst, debian/metacity.manpages] + * Actually ship license information. + [debian/copyright] + * Version the metacity and libmetacity dependency on metacity-common with + Source-Version. + [debian/control, debian/control.in] + * Install SGML catalogs with dh_installcatalogs, move them below + /usr/share/sgml/metacity-common, in the metacity-common package. + [debian/control, debian/control, debian/metacity-common.catalog, + debian/metacity-common.postinst, debian/metacity-common.postrm, + debian/metacity-common.sgmlcatalogs, debian/rules] + * Drop the /usr/share/metacity/dtd symlink. + [debian/metacity-common.links] + * Drop /usr/share/sgml/dtd creation. + [debian/metacity-common.dirs] + * Drop useless /usr/share/metacity from metacity-common. + [debian/metacity-common.install] + * Drop obsolete cleanup "rm -rf". + [debian/rules] + * Give .dtd installation to dh_install. + [debian/metacity-common.install, debian/rules] + + -- Loic Minier Sat, 11 Feb 2006 21:10:40 +0100 + +metacity (1:2.12.2-3) unstable; urgency=high + + * Add xorg build-deps (libice-dev, libsm-dev, libx11-dev, libxext-dev, + libxinerama-dev, libxrandr-dev, x-dev) thanks to "xlibs-split". + (Closes: #347000) + [debian/control, debian/control.in] + * Relibtoolizing would get Debian's AC_PATH_XTRA, but I add a libxt-dev + build-dep and pass --as-needed because the patch was like uh 1.1 MB. + [debian/control, debian/control.in, debian/rules] + + -- Loic Minier Mon, 9 Jan 2006 22:47:36 +0100 + +metacity (1:2.12.2-2) unstable; urgency=low + + * Upload to unstable. + + -- Josselin Mouette Sun, 8 Jan 2006 01:49:55 +0100 + +metacity (1:2.12.2-1) experimental; urgency=low + + * New upstream release. + + -- Jordi Mallach Sun, 25 Dec 2005 23:20:10 +0100 + +metacity (1:2.12.1-1) experimental; urgency=low + + * New upstream release. + * watch: update for 2.12. + * 000_raise-on-click.patch: update to make patch apply cleanly. + * rules: bump shlibs for new symbols. + + -- Josselin Mouette Sun, 9 Oct 2005 16:50:22 +0200 + +metacity (1:2.10.3-2) unstable; urgency=low + + * debian/control.in: + - don't Build-Depends on xlibs-pic, Build-Depend on libxinerama-dev + (Closes: #320589). + * debian/patches/000_metacity-debian-xinerama-pic.patch: + - not useful with xorg. + + -- Sebastien Bacher Tue, 2 Aug 2005 17:40:43 +0200 + +metacity (1:2.10.3-1) unstable; urgency=low + + * New upstream version. + * Bump Standards-Version to 3.6.2. + * Add CDBS' utils to rules. + + -- Loic Minier Fri, 29 Jul 2005 10:56:05 +0200 + +metacity (1:2.10.2-1) unstable; urgency=low + + * New upstream version. + + -- Sebastien Bacher Tue, 28 Jun 2005 23:09:14 +0200 + +metacity (1:2.10.1-2) unstable; urgency=low + + * Upload to unstable. + + -- Jordi Mallach Sun, 12 Jun 2005 19:03:18 +0200 + +metacity (1:2.10.1-1) experimental; urgency=low + + * New upstream version. + + -- Sebastien Bacher Wed, 13 Apr 2005 17:35:20 +0200 + +metacity (1:2.10.0-1) experimental; urgency=low + + * New upstream version. + * debian/patches/000_raise-on-click.patch: + - updated. + * debian/watch: + - updated. + + -- Sebastien Bacher Fri, 8 Apr 2005 21:33:44 +0200 + +metacity (1:2.8.8-1) unstable; urgency=low + + * GNOME team upload. + * New upstream release. + + -- Jordi Mallach Wed, 29 Dec 2004 17:18:05 +0100 + +metacity (1:2.8.6-1) unstable; urgency=low + + * New upstream release. + * Upload to unstable. + + -- Sebastien Bacher Thu, 18 Nov 2004 13:23:27 +0100 + +metacity (1:2.8.5-2) experimental; urgency=low + + * debian/metacity.postinst: + - removed the static gconf registration. + * debian/metacity-theme-viewer.1: + - manpage written by Jose M. Moya" (Closes: #252108). + * debian/metacity-window-demo.1: + - manpage written by Jose M. Moya" (Closes: #252110). + * debian/metacity.manpages: + - updated. + + -- Sebastien Bacher Fri, 17 Sep 2004 22:11:51 +0200 + +metacity (1:2.8.5-1) experimental; urgency=low + + * GNOME team upload. + * New upstream release. + * Sebastien Bacher: + - Switched to CDBS. + - debian/rules: converted to CDBS + - debian/*.files: replaced with .install files. + * J.H.M. Dassen (Ray): + - [debian/control.in] Bumped libstartup-notification0-dev as + configure requires 0.7. + * Jordi Mallach: + - debian/control.in: add cdbs to build-deps. + + -- Jordi Mallach Tue, 14 Sep 2004 20:30:36 +0200 + +metacity (1:2.8.1-4) unstable; urgency=low + + * debian/rules: + - added a dh_gconf call. + * debian/metacity.postinst: + - removed the static schemas registration, dh_gconf handles that right. + + -- Sebastien Bacher Fri, 6 Aug 2004 18:17:03 +0200 + +metacity (1:2.8.1-3) unstable; urgency=low + + * GNOME Team Upload. + * Upload in unstable. + + -- Sebastien Bacher Wed, 26 May 2004 14:28:32 +0200 + +metacity (1:2.8.1-2) experimental; urgency=low + + * debian/patches/000_raise-on-click.patch: + + patch from bugzilla to choose to raise or not the window which has + the focus in mouse and sloppy modes. (Closes: #228768). + The gconf key to use is /apps/metacity/general/raise_on_click. + * Gnome Team Upload. + + -- Sebastien Bacher Wed, 26 May 2004 14:19:51 +0200 + +metacity (1:2.8.1-1) experimental; urgency=low + + * New upstream release. + * debian/patches/000_metacity-debian-xinerama-pic.patch: + + updated + * GNOME Team Upload. + + -- Sebastien Bacher Wed, 5 May 2004 21:17:15 +0200 + +metacity (1:2.8.0-3) experimental; urgency=low + + * GNOME team upload. + * debian/rules: get the epoch included in the shlib version for + libmetacity0. + + -- Jordi Mallach Tue, 6 Apr 2004 14:04:36 +0200 + +metacity (1:2.8.0-2) experimental; urgency=low + + * Added Build-Depends on gnome-pkg-tools and libxml-parser-perl + (Closes: #240639). + + -- Sebastien Bacher Sat, 3 Apr 2004 23:46:56 +0200 + +metacity (1:2.8.0-1) experimental; urgency=low + + * New upstream release: + + converts "show desktop mode" to "all windows are minimized" when + you open a new window (Closes: #217467). + + fixes bug with panel not listed before clicking on them + (Closes: #224054). + + fixes multi-tab handling (Closes: #227708). + + includes always on top menu entry (Closes: #204212). + + includes wireframes support (Closes: #184849). + + should fix bug with applications changing workspace + (Closes: #224156, #230782). + + switches window truncates title (Closes: #186324). + * debian/control.in, debian/rules: + + adapted for the Gnome Team. + * debian/patches/000_metacity-debian-xinerama-pic.patch: + + updated. + * debian/patches/001_metacity-focus.patch: + + removed since the changes are included in the new version. + * debian/watch: + + updated to 2.8 branch. + + -- Sebastien Bacher Sun, 28 Mar 2004 12:26:22 +0200 + +metacity (1:2.6.3-2) unstable; urgency=low + + * debian/patches/001_metacity-focus.patch : + + new patch to fix focus problem with panels in mouse and sloppy modes + (Closes: #224858). + * Gnome Team Upload. + + -- Sebastien Bacher Sun, 18 Jan 2004 19:31:49 +0100 + +metacity (1:2.6.3-1) unstable; urgency=low + + * New upstream release. + * Gnome Team Upload. + + -- Sebastien Bacher Sat, 20 Dec 2003 23:17:21 +0100 + +metacity (1:2.6.2-2) unstable; urgency=low + + * debian/patches/000_metacity-debian-xinerama-pic.patch: + - updated to fix a link problem (Closes: #216693). + + -- Sebastien Bacher Tue, 21 Oct 2003 13:56:24 +0200 + +metacity (1:2.6.2-1) unstable; urgency=low + + * New upstream release. + * debian/patches/: + - 000_metacity-2.4.34-usage.patch: removed. + - 000_metacity-debian-xinerama-pic.patch: updated. + - 001_metacity-2.4.55-non-weak-symbols.patch: removed. + * Update Build-Depends. + * Gnome Team Upload. + + -- Sebastien Bacher Sat, 18 Oct 2003 19:33:23 +0200 + +metacity (1:2.4.55-3) unstable; urgency=low + + * debian/metacity.1: + - fixed the incorrect option. (closes: Bug#209159) + * debian/metacity.prerm: + - fixed removing alternatives issue. (closes: Bug#211502) + + -- Akira TAGOH Wed, 8 Oct 2003 18:44:56 +0900 + +metacity (1:2.4.55-2) unstable; urgency=low + + * debian/patches/000_metacity-debian-xinerama-pic.patch: + - update to fix the unnecessary library dependencies in .la. + (closes: Bug#195774) + + -- Akira TAGOH Thu, 12 Jun 2003 01:25:45 +0900 + +metacity (1:2.4.55-1) unstable; urgency=low + + * New upstream release. + * debian/patches/: + - 000_metacity-2.4.34-save-workspace.patch: removed. + - 001_metacity-2.4.55-non-weak-symbols.patch: updated. + + -- Akira TAGOH Mon, 2 Jun 2003 02:50:50 +0900 + +metacity (1:2.4.34-3) unstable; urgency=low + + * debian/control: + - suggests gnome-control-center instead of metacity-properties. + (closes: Bug#192752) + - bumped Standards-Version to 3.5.10.0. + * debian/patches/001_metacity-2.4.34-non-weak-symbols.patch: + - applied a backported patch to fix undefined non-weak symbols. + (closes: Bug#187347) + * debian/metacity.postinst: + - set a priority to 60 for x-window-manager according to the latest + policy. + + -- Akira TAGOH Mon, 19 May 2003 06:30:37 +0900 + +metacity (1:2.4.34-2) unstable; urgency=low + + * Revert to 2.4.34 to use stable release. + - should works now. (closes: Bug#187749, Bug#187387, Bug#187982) + * debian/README.Debian: + - described NVidia drivers issue. (closes: Bug#181056) + * debian/patches/: + - 000_metacity-2.4.34-usage.patch: applied it again. + - 000_metacity-2.4.34-save-workspace.patch: applied a backported patch + from CVS to really fix Bug#186033 in 2.4.34. + - 000_metacity-2.5.0-noframe-window.patch: removed. + + -- Akira TAGOH Mon, 14 Apr 2003 00:29:52 +0900 + +metacity (2.5.0-2) unstable; urgency=low + + * debian/patches/: + - 000_metacity-debian-xinerama-pic.patch: + use libXinerama_pic.a instead of libXinerama.a. + - 000_metacity-2.5.0-noframe-window.patch: + applied a backported patch from CVS to work no frame window. + (closes: Bug#187316) + * debian/control: + - requires xlibs-pic >= 4.2.1-6. + + -- Akira TAGOH Fri, 4 Apr 2003 04:26:49 +0900 + +metacity (2.5.0-1) unstable; urgency=low + + * New upsream release. + - Workspace names are saved now. (closes: Bug#186033) + * debian/control: + - bumped Standards-Version to 3.5.9. + - changed a section for libmetacity-dev to libdevel. + * debian/compat: + - use it instead of DH_COMPAT. + * debian/patches/ + - 000_metacity-2.4.34-usage.patch: removed. + + -- Akira TAGOH Wed, 2 Apr 2003 00:16:38 +0900 + +metacity (2.4.34-1) unstable; urgency=low + + * New upstream release. + - contains a fix of 64-bit bug. so should be fixed. (closes: Bug#179698) + - should be fixed. (closes: Bug#177814) + * debian/patches/000_metacity-2.4.34-usage.patch: + applied to fix a typo in usage. (closes: Bug#179699) + + -- Akira TAGOH Fri, 7 Feb 2003 04:38:32 +0900 + +metacity (2.4.21-2) unstable; urgency=low + + * debian/control: + - suggests metacity-properties instead of gnome-control-center. + * debian/metacity.docs: + - moved from libmetacity0. (closes: Bug#178966) + * debian/metacity.postinst: + - run gconftool-2 with HOME=/root + + -- Akira TAGOH Sun, 2 Feb 2003 16:50:02 +0900 + +metacity (2.4.21-1) unstable; urgency=low + + * New upstream release. + * debian/patches/: + - 000_metacity-2.4.13-args.patch: removed, because it was merged to the + upstream. + - 000_metacity-2.4.8-properties.patch: removed. + * debian/control: add Suggests: gnome-control-center. + * debian/rules: drop --enable-config-dialog. metacity-properties is + obsolete. use gnome-window-properties in gnome-control-center instead of. + + -- Akira TAGOH Wed, 29 Jan 2003 00:39:57 +0900 + +metacity (2.4.13-2) unstable; urgency=low + + * debian/docs: add NEWS file (closes: Bug#176317) + + -- Akira TAGOH Tue, 14 Jan 2003 23:15:48 +0900 + +metacity (2.4.13-1) unstable; urgency=low + + * New upstream release. + * debian/control: + - updated Build-Depends. + - add libgtk2.0-dev to Depends for libmetacity-dev + * debian/rules: enable startup-notification. + * debian/patches/: + - 000_metacity-2.4.8-dont-pass-NULL.patch: + removed. + - 000_metacity-2.4.13-args.patch: + applied to fix the working of configure options. + + -- Akira TAGOH Sat, 11 Jan 2003 07:06:24 +0900 + +metacity (2.4.8-4) unstable; urgency=low + + * upstream bug was closed. so it should be fixed. (closes: Bug#152075) + * debian/rules: don't use dh_installwm until it will supports the + registration of manpage as slave. + * debian/metacity.postinst: runs update-alternatives. (closes: Bug#175756) + * debian/metacity.prerm: runs update-alternatives. + + -- Akira TAGOH Thu, 9 Jan 2003 03:40:15 +0900 + +metacity (2.4.8-3) unstable; urgency=low + + * debian/metacity.postinst: + fix the wrong registration. (closes: Bug#173789, Bug#174358) + + -- Akira TAGOH Fri, 27 Dec 2002 05:01:25 +0900 + +metacity (2.4.8-2) unstable; urgency=low + + * debian/patches/000_metacity-2.4.8-dont-pass-NULL.patch: + applied to fix the segfault at startup. (closes: Bug#173594, Bug#173604) + + -- Akira TAGOH Fri, 20 Dec 2002 01:08:43 +0900 + +metacity (2.4.8-1) unstable; urgency=low + + * New upstream release. + * debian/patches/000_metacity-2.4.3-stack.patch: + removed, because this release contains it. + * debian/control: + - fix description-synopsis-ends-with-full-stop. + - add libmetacity0 and libmetacity-dev + * debian/rules: + - install metacity-theme.dtd as a sgml catalog. (closes: Bug#170041) + - build with --enable-config-dialog until we upload GNOME 2.2. + * debian/metacity.postinst: + - use gconftool-2 --get-default-source to get GCONF_CONFIG_SOURCE + - runs update-catalog. + * debian/patches/000_metacity-2.4.8-properties.patch: + applied to fix the missing file. + + -- Akira TAGOH Thu, 12 Dec 2002 09:21:35 +0900 + +metacity (2.4.3-2) unstable; urgency=low + + * debian/patches/000_metacity-2.4.3-stack.patch: backported to fix the + random crashes. (closes: Bug#168653) + + -- Akira TAGOH Wed, 13 Nov 2002 00:32:14 +0900 + +metacity (2.4.3-1) unstable; urgency=low + + * New upstream release. (closes: Bug#166919) + * debian/rules: support noopt option for DEB_BUILD_OPTIONS. + * debian/control: improve a description. Thanks stephen farrell. + + -- Akira TAGOH Thu, 7 Nov 2002 23:16:47 +0900 + +metacity (2.4.1-1) unstable; urgency=low + + * New upstream release. (closes: Bug#160535) + - Should be fixed. (closes: Bug#157995) + * Set a priority to 40 for x-window-manager according to Bug#155680. + (closes: Bug#155494) + * debian/metacity.1: updated. + * debian/metacity-message.1: added. + * debian/control: + - bumped Standards-Version to 3.5.7. + - updated Build-Depends. + + -- Akira TAGOH Sat, 14 Sep 2002 20:01:35 +0900 + +metacity (2.4.0-1) unstable; urgency=low + + * New upstream release. + - switching the workspaces should works now. (closes: Bug#151500) + * debian/control: update Build-Depends for libgtk2.0-dev. + + -- Akira TAGOH Fri, 9 Aug 2002 02:35:15 +0900 + +metacity (2.3.987-1) unstable; urgency=low + + * New upstream release. + * debian/control: add libglade2-dev to Build-Depends (closes: Bug#149489) + + -- Akira TAGOH Tue, 11 Jun 2002 14:38:06 +0900 + +metacity (2.3.610-1) unstable; urgency=low + + * New upstream release. + - Should be fixed in this release. (closes: Bug#146127) + + -- Akira TAGOH Wed, 5 Jun 2002 19:15:41 +0900 + +metacity (2.3.377-2) unstable; urgency=low + + * debian/docs: includes theme-format.txt (closes: Bug#147644) + + -- Akira TAGOH Tue, 21 May 2002 19:24:00 +0900 + +metacity (2.3.377-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Tue, 21 May 2002 11:02:28 +0900 + +metacity (2.3.233-2) unstable; urgency=low + + * debian/control: fix the misleading description. (closes: Bug#145942) + + -- Akira TAGOH Tue, 7 May 2002 14:29:36 +0900 + +metacity (2.3.233-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Sun, 5 May 2002 03:21:05 +0900 + +metacity (2.3.144-2) unstable; urgency=low + + * debian/control: Add Provides: x-window-manager. + + -- Akira TAGOH Fri, 3 May 2002 07:31:17 +0900 + +metacity (2.3.144-1) unstable; urgency=low + + * New upstream release. + - keybindings are configurable now. (closes: Bug#144657) + + -- Akira TAGOH Tue, 30 Apr 2002 03:32:36 +0900 + +metacity (2.3.89-1) unstable; urgency=low + + * New upstream release. + * debian/scripts/vars.build: fix bashism. + * debian/rules: add GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=yes to install + rule. + * debian/metacity.manpages: remove metacity-restart.1 entry. this command + no longer exists. + + -- Akira TAGOH Tue, 16 Apr 2002 21:35:19 +0900 + +metacity (2.3.55-1) unstable; urgency=low + + * I have taken over from Thom. + * New upstream release. + * Build against the latest libraries (closes: Bug#139215) + * debian/rules: + - support DEB_HOST_GNU_TYPE and DEB_BUILD_GNU_TYPE. + - support debug and nostrip options for DEB_BUILD_OPTIONS. + - copying the latest config.sub and config.guess. + + -- Akira TAGOH Tue, 26 Mar 2002 02:18:26 +0900 + +metacity (2.3.34-2) unstable; urgency=low + + * Added build-depend on docbook-to-man (Closes: #134433) + + -- Thom May Sun, 17 Feb 2002 20:14:28 +0000 + +metacity (2.3.34-1) unstable; urgency=low + + * Initial Release. (Closes: #107181) + + -- Thom May Sun, 10 Feb 2002 12:03:22 +0000 diff --git a/debian/clean b/debian/clean deleted file mode 100644 index 3d6866b..0000000 --- a/debian/clean +++ /dev/null @@ -1 +0,0 @@ -debian/home/ diff --git a/debian/control b/debian/control index 03e334b..b6bb846 100644 --- a/debian/control +++ b/debian/control @@ -1,186 +1,301 @@ -# This file is autogenerated. DO NOT EDIT! -# -# Modifications should be made to debian/control.in instead. -# This file is regenerated automatically in the clean target. -Source: gnome-shell -Section: gnome +Source: mutter +Section: x11 Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian GNOME Maintainers -Uploaders: Jeremy Bícha , Marco Trevisan (Treviño) -Build-Depends: appstream, - asciidoc-base, - bash-completion, - dbus-daemon , - debhelper-compat (= 13), +Maintainer: Debian GNOME Maintainers +Uploaders: Jeremy Bícha +Build-Depends: debhelper-compat (= 13), + dh-exec, dh-sequence-gir, dh-sequence-gnome, - gjs, - gir1.2-accountsservice-1.0 , - gir1.2-gdm-1.0 , - gir1.2-geoclue-2.0 , - gir1.2-gnomebg-4.0 , - gir1.2-gnomedesktop-4.0 , - gir1.2-gweather-4.0 (>= 4.1) , - gir1.2-nma4-1.0 [linux-any] , - gir1.2-rsvg-2.0 , - gir1.2-upowerglib-1.0 , - gnome-control-center-dev, + at-spi2-core , + adwaita-icon-theme , + dbus-daemon , + dmz-cursor-theme , + gir1.2-atk-1.0-dev, + gir1.2-cairo-1.0-dev, + gir1.2-gdesktopenums-3.0-dev, + gir1.2-gio-2.0-dev, + gir1.2-gl-1.0-dev, + gir1.2-gobject-2.0-dev, + gir1.2-graphene-1.0-dev, + gir1.2-pango-1.0-dev, + gir1.2-pangocairo-1.0-dev, + gir1.2-xfixes-4.0-dev, + gir1.2-xlib-2.0-dev, + gnome-control-center-data, gnome-pkg-tools, - gnome-settings-daemon-common (>= 40~) , - gobject-introspection, - gsettings-desktop-schemas-dev (>= 42~beta), + gnome-settings-daemon-common , + gnome-settings-daemon-dev, + gobject-introspection (>= 1.80), + gsettings-desktop-schemas-dev (>= 40~alpha), gtk-doc-tools, - libasound2-dev, - libatk-bridge2.0-dev, - libecal2.0-dev (>= 3.45), - libedataserver1.2-dev (>= 3.45), - libgcr-3-dev, - libgirepository1.0-dev, - libgjs-dev (>= 1.73.1), - libgl1-mesa-dri , - libglib2.0-dev, - libgnome-autoar-0-dev, - libgnome-bluetooth-3.0-dev (>= 3.9.0) [linux-any], - libgnome-desktop-4-dev (>= 40), - libgnome-menu-3-dev, - libgstreamer1.0-dev, - libgstreamer-plugins-base1.0-dev, + libei-dev (>= 1.0.901), + libeis-dev (>= 1.0.901), + libcairo2-dev, + libcanberra-gtk3-dev, + libcolord-dev, + libdisplay-info-dev, + libdrm-dev (>= 2.4.118), + libegl1-mesa-dev, + libfribidi-dev, + libgbm-dev (>= 21.3), + libgdk-pixbuf-2.0-dev, + libgl-dev, + libgles-dev, + libglib2.0-dev (>= 2.76), + libgnome-desktop-4-dev, + libgraphene-1.0-dev, + libgtk-3-dev , libgtk-4-dev, - libibus-1.0-dev (>= 1.5.22-2ubuntu2~), + libgudev-1.0-dev, + libice-dev, + libinput-dev (>= 1.19.0), libjson-glib-dev, - libmutter-13-dev (>= 45.0), - mutter-13-tests (>= 45.0) , - libnm-dev [linux-any], - libpipewire-0.3-dev (>= 0.3.10) [linux-any], - libpolkit-agent-1-dev, - libpulse-dev (>= 13), - libsecret-1-dev, + liblcms2-dev, + libnvidia-egl-wayland-dev, + libpam0g-dev, + libpango1.0-dev, + libpipewire-0.3-dev (>= 0.3.33), + libpixman-1-dev (>= 0.42), + libsm-dev, libstartup-notification0-dev, - libsystemd-dev [linux-any], + libsysprof-6-dev [!i386], + libsysprof-capture-4-dev (>= 3.40.1), + libsystemd-dev, + libwacom-dev, + libwayland-dev (>= 1.22), + libxau-dev, libx11-dev, + libx11-xcb-dev, + libxcb-randr0-dev, + libxcb-res0-dev, + libxcomposite-dev, + libxcursor-dev, + libxdamage-dev, + libxext-dev, libxfixes-dev, - libxml2-dev, - mesa-common-dev, - meson (>= 0.58.0), - mutter (>= 45.0) , - pkg-config, - sassc, - systemd [linux-any], + libxi-dev, + libxinerama-dev, + libxkbcommon-dev, + libxkbcommon-x11-dev, + libxkbfile-dev, + libxrandr-dev, + libxrender-dev, + libxt-dev, + meson (>= 0.60), + pkgconf, + python3-dbus , + python3-dbusmock, + sysprof [!hurd-i386 !i386], + systemd-dev, + wayland-protocols (>= 1.33), xauth , - xvfb , - xwayland + xcvt:native, + xkb-data, + xvfb, + xwayland (>= 2:23.1.0), + zenity Rules-Requires-Root: no Standards-Version: 4.6.2 -Homepage: https://wiki.gnome.org/Projects/GnomeShell -XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git -XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell -Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git -b ubuntu/master -Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell/tree/ubuntu/master +Homepage: https://mutter.gnome.org/ +Vcs-Git: https://salsa.debian.org/gnome-team/mutter.git +Vcs-Browser: https://salsa.debian.org/gnome-team/mutter -Package: gnome-shell +Package: mutter Architecture: linux-any -Depends: gir1.2-accountsservice-1.0, - gir1.2-adw-1, - gir1.2-atk-1.0, - gir1.2-atspi-2.0 (>= 2.36), - gir1.2-gcr-3, - gir1.2-gdesktopenums-3.0, - gir1.2-gdkpixbuf-2.0, - gir1.2-gdm-1.0, - gir1.2-geoclue-2.0, - gir1.2-glib-2.0, - gir1.2-gnomebg-4.0, - gir1.2-gnomebluetooth-3.0 (>= 42.3) [linux-any], - gir1.2-gnomedesktop-4.0 (>= 40), - gir1.2-graphene-1.0 (>= 1.10.2), - gir1.2-gstreamer-1.0, - gir1.2-gtk-4.0, - gir1.2-gweather-4.0 (>= 4.1), - gir1.2-freedesktop, - gir1.2-ibus-1.0 (>= 1.5.22-2ubuntu2~), - gir1.2-mutter-13 (>= 45.0), - gir1.2-nm-1.0 [linux-any], - gir1.2-nma4-1.0 [linux-any], - gir1.2-pango-1.0, - gir1.2-polkit-1.0, - gir1.2-rsvg-2.0, - gir1.2-soup-3.0, - gir1.2-upowerglib-1.0, - gir1.2-webkit-6.0, - gnome-settings-daemon (>= 40~), - gnome-shell-common (= ${source:Version}), - gsettings-desktop-schemas (>= 42~beta), - gstreamer1.0-pipewire (>= 0.3.10) [linux-any], - libglib2.0-bin, +Depends: adwaita-icon-theme, + gnome-settings-daemon-common, + gsettings-desktop-schemas (>= 40~alpha), + mutter-common (>= ${source:Version}), + zenity, + ${misc:Depends}, + ${shlibs:Depends} +Provides: x-window-manager +Suggests: gnome-control-center, + xdg-user-dirs +Description: Example window manager using GNOME's window manager library + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains the mutter executable. It can be used as a + standalone window manager, but is primarily intended for debugging. + +Package: mutter-14-tests +Architecture: linux-any +Depends: at-spi2-core, + dbus-daemon, + dmz-cursor-theme, + libmutter-14-0 (= ${binary:Version}), + libmutter-test-14 (= ${binary:Version}), + mutter (= ${binary:Version}), python3, - ubuntu-wallpapers, - ${gir:Depends}, + python3-dbus, + python3-dbusmock, + xauth, + xvfb, + xwayland (>= 2:23.1.0), ${misc:Depends}, ${shlibs:Depends} -Recommends: bolt, - evolution-data-server (>= 3.45), - gdm3, - gkbd-capplet, - gnome-control-center (>= 1:42), - gnome-remote-desktop, - gnome-menus, - gnome-user-docs, - ibus, - iio-sensor-proxy, - power-profiles-daemon, - switcheroo-control, - ubuntu-session | gnome-session, - xserver-xorg-legacy, - unzip -Suggests: gir1.2-malcontent-0 (>= 0.6.0) [linux-any], - gir1.2-telepathyglib-0.12, - gir1.2-telepathylogger-0.2, - gnome-backgrounds (>= 3.13.90), - gnome-shell-extension-prefs, - chrome-gnome-shell, -Breaks: gnome-shell-extension-appindicator (<< 50), - gnome-shell-extension-dash-to-panel (<< 55), - gnome-shell-extension-dashtodock (<< 79), - gnome-shell-extension-desktop-icons (<< 21.04), - gnome-shell-extension-desktop-icons-ng (<< 46+really47.0.2-2), - gnome-shell-extension-taskbar (<< 57.0-2.1~), - gnome-shell-extension-top-icons-plus (<< 27-3~), - gnome-shell-extension-workspaces-to-dock (<< 54~), - gnome-shell-extensions (<< 40.0~), -Provides: notification-daemon, - polkit-1-auth-agent -Description: graphical shell for the GNOME desktop - The GNOME Shell provides core interface functions like switching - windows, launching applications or see your notifications. It takes - advantage of the capabilities of modern graphics hardware and - introduces innovative user interface concepts to provide a - delightful and easy to use experience. GNOME Shell is the defining - technology of the GNOME 3 user experience. +Description: Tests for GNOME's window manager library + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains test programs, designed to be run as part of a + regression testsuite. -Package: gnome-shell-common -Architecture: all -Depends: ${misc:Depends} -Recommends: yaru-theme-gnome-shell (>= 23.10.0~) -Breaks: gnome-shell (<< 3.36.1-6~) -Replaces: gnome-shell (<< 3.36.1-6~) -Description: common files for the GNOME graphical shell - This package contains translations and data files for the GNOME shell. - -Package: gnome-shell-extension-prefs +Package: gir1.2-mutter-14 +Section: introspection Architecture: linux-any -Depends: gir1.2-adw-1, - gir1.2-gtk-4.0, - gjs (>= 1.73.1), - gnome-shell (= ${binary:Version}), - gnome-shell-common (= ${source:Version}), +Multi-Arch: same +Depends: libmutter-14-0 (= ${binary:Version}), ${gir:Depends}, ${misc:Depends}, ${shlibs:Depends} -Provides: gnome-extensions-app -Recommends: chrome-gnome-shell -Breaks: gnome-shell (<< 3.36.0-2) -Replaces: gnome-shell (<< 3.36.0-2) -Description: tool to enable / disable GNOME Shell extensions - This package contains a tool which users who use Shell extensions can use to - toggle them on and off, and access their preferences. +Provides: ${gir:Provides} +Description: GObject introspection data for Mutter + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains the GObject introspection data which may be + used to generate dynamic bindings. + +Package: libmutter-14-0 +Section: libs +Architecture: linux-any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: adwaita-icon-theme, + gsettings-desktop-schemas (>= 40~alpha), + mutter-common (>= ${source:Version}), + mutter-common-bin (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Breaks: gnome-shell (<< 46.0), + xwayland (<< 2:23.1.0), +Description: window manager library from the Mutter window manager + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains the window manager shared library, used by mutter + itself, and gnome-shell. + +Package: libmutter-14-dev +Section: libdevel +Architecture: linux-any +Multi-Arch: same +Depends: gir1.2-mutter-14 (= ${binary:Version}), + gsettings-desktop-schemas-dev (>= 40~alpha), + libatk1.0-dev, + libcairo2-dev, + libdrm-dev (>= 2.4.118), + libegl1-mesa-dev, + libgbm-dev (>= 21.3), + libgdk-pixbuf-2.0-dev, + libgles-dev, + libglib2.0-dev (>= 2.76), + libgraphene-1.0-dev, + libinput-dev (>= 1.19), + libmutter-14-0 (= ${binary:Version}), + libpango1.0-dev, + libwayland-dev (>= 1.22), + libx11-dev, + libxcomposite-dev, + libxdamage-dev, + libxext-dev, + libxfixes-dev, + libxi-dev, + libxrandr-dev, + ${gir:Depends}, + ${misc:Depends} +Provides: ${gir:Provides} +Description: Development files for the Mutter window manager + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains the development files. + +Package: libmutter-test-14 +Section: libs +Architecture: linux-any +Depends: libmutter-14-0 (= ${binary:Version}), + mutter (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: gir1.2-metatest-14 +Description: Test helper library for GNOME's window manager library + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + This package contains a private library used by the automated tests for + mutter and gnome-shell. It should not be used by non-GNOME packages. + +Package: mutter-common +Section: misc +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Breaks: magpie-common (<< 0.9.3-0ubuntu8~) +Replaces: magpie-common (<< 0.9.3-0ubuntu8~) +Description: shared files for the Mutter window manager + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains the shared files. + +Package: mutter-common-bin +Section: misc +Architecture: linux-any +Depends: ${misc:Depends}, + ${shlibs:Depends} +Breaks: mutter (<< 44~) +Replaces: mutter (<< 44~) +Description: shared programs for the Mutter window manager + Mutter is a Wayland display server and X11 window manager and + compositor library. It contains functionality related to, among other + things, window management, window compositing, focus tracking, workspace + management, keybindings and monitor configuration. + . + Internally it uses a fork of Cogl, a hardware acceleration abstraction + library used to simplify usage of OpenGL pipelines, as well as a fork + of Clutter, a scene graph and user interface toolkit. + . + This package contains the program files which are used for the libraries + and others. diff --git a/debian/control.in b/debian/control.in deleted file mode 100644 index b29e410..0000000 --- a/debian/control.in +++ /dev/null @@ -1,182 +0,0 @@ -Source: gnome-shell -Section: gnome -Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian GNOME Maintainers -Uploaders: @GNOME_TEAM@ -Build-Depends: appstream, - asciidoc-base, - bash-completion, - dbus-daemon , - debhelper-compat (= 13), - dh-sequence-gir, - dh-sequence-gnome, - gjs, - gir1.2-accountsservice-1.0 , - gir1.2-gdm-1.0 , - gir1.2-geoclue-2.0 , - gir1.2-gnomebg-4.0 , - gir1.2-gnomedesktop-4.0 , - gir1.2-gweather-4.0 (>= 4.1) , - gir1.2-nma4-1.0 [linux-any] , - gir1.2-rsvg-2.0 , - gir1.2-upowerglib-1.0 , - gnome-control-center-dev, - gnome-pkg-tools, - gnome-settings-daemon-common (>= 40~) , - gobject-introspection, - gsettings-desktop-schemas-dev (>= 42~beta), - gtk-doc-tools, - libasound2-dev, - libatk-bridge2.0-dev, - libecal2.0-dev (>= 3.45), - libedataserver1.2-dev (>= 3.45), - libgcr-3-dev, - libgirepository1.0-dev, - libgjs-dev (>= 1.73.1), - libgl1-mesa-dri , - libglib2.0-dev, - libgnome-autoar-0-dev, - libgnome-bluetooth-3.0-dev (>= 3.9.0) [linux-any], - libgnome-desktop-4-dev (>= 40), - libgnome-menu-3-dev, - libgstreamer1.0-dev, - libgstreamer-plugins-base1.0-dev, - libgtk-4-dev, - libibus-1.0-dev (>= 1.5.22-2ubuntu2~), - libjson-glib-dev, - libmutter-13-dev (>= 45.0), - mutter-13-tests (>= 45.0) , - libnm-dev [linux-any], - libpipewire-0.3-dev (>= 0.3.10) [linux-any], - libpolkit-agent-1-dev, - libpulse-dev (>= 13), - libsecret-1-dev, - libstartup-notification0-dev, - libsystemd-dev [linux-any], - libx11-dev, - libxfixes-dev, - libxml2-dev, - mesa-common-dev, - meson (>= 0.58.0), - mutter (>= 45.0) , - pkg-config, - sassc, - systemd [linux-any], - xauth , - xvfb , - xwayland -Rules-Requires-Root: no -Standards-Version: 4.6.2 -Homepage: https://wiki.gnome.org/Projects/GnomeShell -XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git -XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell -Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git -b ubuntu/master -Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell/tree/ubuntu/master - -Package: gnome-shell -Architecture: linux-any -Depends: gir1.2-accountsservice-1.0, - gir1.2-adw-1, - gir1.2-atk-1.0, - gir1.2-atspi-2.0 (>= 2.36), - gir1.2-gcr-3, - gir1.2-gdesktopenums-3.0, - gir1.2-gdkpixbuf-2.0, - gir1.2-gdm-1.0, - gir1.2-geoclue-2.0, - gir1.2-glib-2.0, - gir1.2-gnomebg-4.0, - gir1.2-gnomebluetooth-3.0 (>= 42.3) [linux-any], - gir1.2-gnomedesktop-4.0 (>= 40), - gir1.2-graphene-1.0 (>= 1.10.2), - gir1.2-gstreamer-1.0, - gir1.2-gtk-4.0, - gir1.2-gweather-4.0 (>= 4.1), - gir1.2-freedesktop, - gir1.2-ibus-1.0 (>= 1.5.22-2ubuntu2~), - gir1.2-mutter-13 (>= 45.0), - gir1.2-nm-1.0 [linux-any], - gir1.2-nma4-1.0 [linux-any], - gir1.2-pango-1.0, - gir1.2-polkit-1.0, - gir1.2-rsvg-2.0, - gir1.2-soup-3.0, - gir1.2-upowerglib-1.0, - gir1.2-webkit-6.0, - gnome-settings-daemon (>= 40~), - gnome-shell-common (= ${source:Version}), - gsettings-desktop-schemas (>= 42~beta), - gstreamer1.0-pipewire (>= 0.3.10) [linux-any], - libglib2.0-bin, - python3, - ubuntu-wallpapers, - ${gir:Depends}, - ${misc:Depends}, - ${shlibs:Depends} -Recommends: bolt, - evolution-data-server (>= 3.45), - gdm3, - gkbd-capplet, - gnome-control-center (>= 1:42), - gnome-remote-desktop, - gnome-menus, - gnome-user-docs, - ibus, - iio-sensor-proxy, - power-profiles-daemon, - switcheroo-control, - ubuntu-session | gnome-session, - xserver-xorg-legacy, - unzip -Suggests: gir1.2-malcontent-0 (>= 0.6.0) [linux-any], - gir1.2-telepathyglib-0.12, - gir1.2-telepathylogger-0.2, - gnome-backgrounds (>= 3.13.90), - gnome-shell-extension-prefs, - chrome-gnome-shell, -Breaks: gnome-shell-extension-appindicator (<< 50), - gnome-shell-extension-dash-to-panel (<< 55), - gnome-shell-extension-dashtodock (<< 79), - gnome-shell-extension-desktop-icons (<< 21.04), - gnome-shell-extension-desktop-icons-ng (<< 46+really47.0.2-2), - gnome-shell-extension-taskbar (<< 57.0-2.1~), - gnome-shell-extension-top-icons-plus (<< 27-3~), - gnome-shell-extension-workspaces-to-dock (<< 54~), - gnome-shell-extensions (<< 40.0~), -Provides: notification-daemon, - polkit-1-auth-agent -Description: graphical shell for the GNOME desktop - The GNOME Shell provides core interface functions like switching - windows, launching applications or see your notifications. It takes - advantage of the capabilities of modern graphics hardware and - introduces innovative user interface concepts to provide a - delightful and easy to use experience. GNOME Shell is the defining - technology of the GNOME 3 user experience. - -Package: gnome-shell-common -Architecture: all -Depends: ${misc:Depends} -Recommends: yaru-theme-gnome-shell (>= 23.10.0~) -Breaks: gnome-shell (<< 3.36.1-6~) -Replaces: gnome-shell (<< 3.36.1-6~) -Description: common files for the GNOME graphical shell - This package contains translations and data files for the GNOME shell. - -Package: gnome-shell-extension-prefs -Architecture: linux-any -Depends: gir1.2-adw-1, - gir1.2-gtk-4.0, - gjs (>= 1.73.1), - gnome-shell (= ${binary:Version}), - gnome-shell-common (= ${source:Version}), - ${gir:Depends}, - ${misc:Depends}, - ${shlibs:Depends} -Provides: gnome-extensions-app -Recommends: chrome-gnome-shell -Breaks: gnome-shell (<< 3.36.0-2) -Replaces: gnome-shell (<< 3.36.0-2) -Description: tool to enable / disable GNOME Shell extensions - This package contains a tool which users who use Shell extensions can use to - toggle them on and off, and access their preferences. diff --git a/debian/copyright b/debian/copyright index ffa4838..5682dac 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,52 +1,319 @@ -This package was debianized by Sebastien Bacher on -Wed, 01 Jul 2009 23:29:31 +0200. +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: https://download.gnome.org/sources/mutter/ +Upstream-Name: mutter -It was downloaded from https://download.gnome.org/sources/gnome-shell/ +Files: + * +Copyright: + 2004-2006 Adam Weinberger + 2001 Anders Carlsson + 2007-2018 Ask Hjorth Larsen + 2012 Bastian Winkler + 1999-2005 Brian Paul + 2005-2021 Canonical Ltd. + 2021 Christian Rauch + 2011-2014 Collabora Ltd + 1997-2000 Dan Pascu and Alfredo Kojima + 1987 Digital Equipment Corporation + 2018-2020 DisplayLink (UK) Ltd. + 2001 Dominik Vogt + 2000-2001 Eazel, Inc. + 2004-2006 Elijah Newren + 2013-2015 Emmanuele Bassi + 2018-2020 Endless, Inc. + 2020 Endless Foundation + 2014 Endless Mobile + 1999-2000 Erik Walthinsen + 1999-2020 Free Software Foundation, Inc. + 2008-2016 GNOME i18n Project for Vietnamese + 1995-2000 GTK+ Team + 2002 Garrett LeSage + 2002 Gaute Lindkvist + 2020 Georges Basile Stavracas Neto + 2001-2008 Havoc Pennington + 2001-2008 Havoc Pennington, Red Hat, Inc., and others + 2016 Hyungwon Hwang + 2007-2008 Iain Holmes + 2008-2010 Igalia, S.L. + 2010-2012 Inclusive Design Research Centre, OCAD University + 2007-2017 Intel Corporation + 2002 James M. Cape + 2011 Joe Hansen + 2014 Jonas Ådahl + 2020 Jonas Dreßler + 2002 Jorn Baayen + 1995-1997 Josh MacDonald + 2004 Kakilik Project + 2003-2013 Keith Packard + 2002 Keld simonsen + 2008 Kenneth Nielsen + 2002 Kjartan Maraas + 2008-2011 Kristian Høgsberg + 2006 Lasse Bang Mikkelsen + 2004-2005 Martin Willemoes Hansen + 2008 Matthew Allum + 2001 Matthias Clasen + 2010 Milan Bouchet-Valat + 2003-2006 Miloslav Trmac + 2011 NVIDIA Corporation + 2002 Ole Laursen + 2005-2007 Olivier Fourdan + 2006-2008 OpenedHand Ltd + 1995-1997 Peter Mattis + 2001-2022 Red Hat Inc + 2014 Rico Tzschichholz + 2003-2004 Rob Adams + 2011 Robert Bosch Car Multimedia GmbH + 2018-2021 Robert Mader + 2004-2008 Rodney Dawes + 2005-2011 Rosetta Contributors + 2002 Ross Burton + 2009 Sander Dijkhuis + 2004 Scott James Remnant + 2020 Sebastian Wick + 2019 Sergio Costas + 2003-2006 Sharif FarsiWeb, Inc. + 1991-2000 Silicon Graphics Inc + 2018-2020 Simon McVittie + 2002 Simos Xenitellis + 1995-1997 Spencer Kimball + 2001-2003 Sun Microsystems Inc + 2002-2006 The GNOME Foundation + 2007 The GNOME Project + 1986-1998 The Open Group + 2008-2009 Thomas Thurman + 1998 Tim Janik + 2008 Tungsten Graphics Inc + 2002 Tuomas Kuosmanen + 1995-1997 Ulrich Drepper + 2007 William Jon McCann + 1988 Wyse Technology, Inc. + 1994 X Consortium + 2001 Ximian, Inc. + 2001 fvwm2 team + 2002-2020 the mutter authors + 2003 Åsmund Skjæveland. + (unspecified) Croatiann team +License: GPL-2+ and GPL-3+ and LGPL-2+ and LGPL-2.1+ and Expat and NTP-BSD-variant and SGI-B-2.0 -Upstream Authors: +Files: + cogl/cogl/cogl-point-in-poly.c +Copyright: + 1970-2003 Wm. Randolph Franklin + 2011 Intel Corporation +License: WRF-BSD-variant - Colin Walters - Dan Winship - Marina Zhurakhinskaya - Owen Taylor - William Jon McCann +Files: + src/tests/share/icc/vx239-calibrated.icc +Copyright: none +License: free-of-known-restrictions + This profile is free of known copyright restrictions -Files: src/* - js/* -Copyright: © 2000 Helix Code, Inc. - © 2000,2001 Eazel, Inc. - © 2001 George Lebl - © 2002 Sun Microsystems Inc. - © 2004-2005 James M. Cape - © 2006-2008 Red Hat, Inc. - © 2007 Ryan Lortie - © 2008 Intel Corp. -License: GPL-2+ (/usr/share/common-licenses/GPL-2) +Files: + src/x11/mutter-Xatomtype.h +Copyright: + 1987-1998 The Open Group + 1987 Digital Equipment Corporation +License: DEC-BSD-variant and OpenGroup-BSD-variant -Files: src/gdmuser/* -Copyright: © 2007-2008 William Jon McCann - © 2004-2005 James M. Cape -License: LGPL-2+ (/usr/share/common-licenses/LGPL-2) +Files: + src/x11/xprops.c +Copyright: + 1987-1998 The Open Group + 1987 Digital Equipment Corporation + 1998 Wyse Technology Inc + 2001 Havoc Pennington + 2002 Red Hat Inc +License: DEC-BSD-variant and OpenGroup-BSD-variant and GPL-2+ -Files: src/tray/* -Copyright: © 2002 Anders Carlsson - © 2003-2006 Vincent Untz - © 2008 Red Hat, Inc. +License: GPL-2+ + This package 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 2 of the License, or + (at your option) any later version. + . + This package 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. +Comment: + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in + /usr/share/common-licenses/GPL-2. -Files: src/big/* -Copyright: © 2005-2008 Red Hat, Inc. - © 2008-2009 litl, LLC +License: GPL-3+ + 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 package 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. +Comment: + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in + /usr/share/common-licenses/GPL-3. -Files: src/st/* -Copyright: © 2008 OpenedHand - © 2009 Intel Corporation. - © 2003-2004 Dodji Seketeli -License: LGPL-2.1 (/usr/share/common-licenses/LGPL-2.1) +License: LGPL-2+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + . + This library 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 + Lesser General Public License for more details. +Comment: + On Debian systems, the complete text of the GNU Library General + Public License version 2 can be found in + /usr/share/common-licenses/LGPL-2, and the complete text of the + GNU Lesser General Public License version 2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. -The Debian packaging is: +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This library 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 + Lesser General Public License for more details. +Comment: + On Debian systems, the complete text of the + GNU Lesser General Public License version 2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. - Copyright © 2009 Sebastien Bacher - Copyright © 2009 Collabora Ltd. +License: Expat + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. -and is licensed under the GPL version 3, -see `/usr/share/common-licenses/GPL-3'. +License: NTP-BSD-variant + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that copyright + notice and this permission notice appear in supporting documentation, and + that the name of the copyright holders not be used in advertising or + publicity pertaining to distribution of the software without specific, + written prior permission. The copyright holders make no representations + about the suitability of this software for any purpose. It is provided "as + is" without express or implied warranty. + . + THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + OF THIS SOFTWARE. + +License: WRF-BSD-variant + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimers. + 2. Redistributions in binary form must reproduce the above + copyright notice in the documentation and/or other materials + provided with the distribution. + 3. The name of W. Randolph Franklin may not be used to endorse or + promote products derived from this Software without specific + prior written permission. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License: OpenGroup-BSD-variant + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + . + Except as contained in this notice, the name of The Open Group shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from The Open Group. + +License: DEC-BSD-variant + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Digital not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + . + DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. + +License: SGI-B-2.0 + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + . + The above copyright notice including the dates of first publication and + either this permission notice or a reference to + http://oss.sgi.com/projects/FreeB/ + shall be included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + . + Except as contained in this notice, the name of Silicon Graphics, Inc. + shall not be used in advertising or otherwise to promote the sale, use or + other dealings in this Software without prior written authorization from + Silicon Graphics, Inc. diff --git a/debian/gbp.conf b/debian/gbp.conf index 5f24187..7ad7f9f 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -1,7 +1,6 @@ [DEFAULT] pristine-tar = True -debian-branch = ubuntu/mantic -debian-tag=ubuntu/%(version)s +debian-branch = debian/latest upstream-branch = upstream/latest [buildpackage] diff --git a/debian/gir1.2-mutter-14.install b/debian/gir1.2-mutter-14.install new file mode 100644 index 0000000..b53b174 --- /dev/null +++ b/debian/gir1.2-mutter-14.install @@ -0,0 +1,3 @@ +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/C*.typelib +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/Meta-${env:MUTTER_API_VERSION}.typelib +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/Mtk-${env:MUTTER_API_VERSION}.typelib diff --git a/debian/gnome-shell-common.alternatives b/debian/gnome-shell-common.alternatives deleted file mode 100644 index 5e5eb54..0000000 --- a/debian/gnome-shell-common.alternatives +++ /dev/null @@ -1,4 +0,0 @@ -Name: gdm-theme.gresource -Link: /usr/share/gnome-shell/gdm-theme.gresource -Alternative: /usr/share/gnome-shell/gnome-shell-theme.gresource -Priority: 10 diff --git a/debian/gnome-shell-common.dirs b/debian/gnome-shell-common.dirs deleted file mode 100644 index 3005956..0000000 --- a/debian/gnome-shell-common.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/share/gnome-shell/modes diff --git a/debian/gnome-shell-common.install b/debian/gnome-shell-common.install deleted file mode 100644 index a9907ba..0000000 --- a/debian/gnome-shell-common.install +++ /dev/null @@ -1,9 +0,0 @@ -debian/source_gnome-shell.py /usr/share/apport/package-hooks -usr/lib/systemd/user -usr/share/dbus-1/interfaces -usr/share/glib-2.0 -usr/share/gnome-control-center -usr/share/gnome-shell -usr/share/icons/hicolor/*/apps/* -usr/share/locale -debian/ubuntu-session-mods/ubuntu.json usr/share/gnome-shell/modes/ diff --git a/debian/gnome-shell-extension-prefs.install b/debian/gnome-shell-extension-prefs.install deleted file mode 100644 index 06e52d5..0000000 --- a/debian/gnome-shell-extension-prefs.install +++ /dev/null @@ -1,4 +0,0 @@ -usr/bin/gnome-extensions-app -usr/bin/gnome-shell-extension-prefs -usr/share/applications/org.gnome.Extensions.desktop -usr/share/metainfo/org.gnome.Extensions.metainfo.xml diff --git a/debian/gnome-shell.bug-control b/debian/gnome-shell.bug-control deleted file mode 100644 index 95bc8ac..0000000 --- a/debian/gnome-shell.bug-control +++ /dev/null @@ -1,2 +0,0 @@ -report-with: gnome-session gnome-settings-daemon libgjs0g libmutter-11-0 -package-status: libegl-vendor libglx-vendor libgl1-mesa-dri diff --git a/debian/gnome-shell.docs b/debian/gnome-shell.docs deleted file mode 100644 index 8913f46..0000000 --- a/debian/gnome-shell.docs +++ /dev/null @@ -1,2 +0,0 @@ -NEWS -README.md diff --git a/debian/gnome-shell.gsettings-override b/debian/gnome-shell.gsettings-override deleted file mode 100644 index 1c01609..0000000 --- a/debian/gnome-shell.gsettings-override +++ /dev/null @@ -1,2 +0,0 @@ -[org.gnome.shell] -favorite-apps=[ 'firefox-esr.desktop', 'org.gnome.Evolution.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ] diff --git a/debian/gnome-shell.install b/debian/gnome-shell.install deleted file mode 100644 index 3584c53..0000000 --- a/debian/gnome-shell.install +++ /dev/null @@ -1,11 +0,0 @@ -usr/bin/gnome-extensions -usr/bin/gnome-shell -usr/bin/gnome-shell-extension-tool -usr/bin/gnome-shell-test-tool -usr/lib/gnome-shell -usr/libexec -usr/share/applications/org.gnome.Shell*.desktop -usr/share/bash-completion/completions/gnome-extensions -usr/share/dbus-1/services -usr/share/man -usr/share/xdg-desktop-portal diff --git a/debian/gnome-shell.lintian-overrides b/debian/gnome-shell.lintian-overrides deleted file mode 100644 index b68b8d4..0000000 --- a/debian/gnome-shell.lintian-overrides +++ /dev/null @@ -1,14 +0,0 @@ -# These RUNPATHs are needed to find mutter's private clutter fork -gnome-shell: custom-library-search-path RUNPATH /usr/lib/*/mutter-* [usr/bin/gnome-shell] -gnome-shell: custom-library-search-path RUNPATH /usr/lib/*/mutter-* [usr/lib/gnome-shell/*.so] - - -# gnome-shell ships some desktop files only to provide metadata and icons to some apps -gnome-shell: desktop-command-not-in-package false [usr/share/applications/org.gnome.Shell.Extensions.desktop] -gnome-shell: desktop-command-not-in-package gapplication [usr/share/applications/org.gnome.Shell.PortalHelper.desktop] - -# This is a NoDisplay=true desktop file, so there's no need for it -gnome-shell: desktop-entry-lacks-main-category [usr/share/applications/org.gnome.Shell.desktop] - -# Conceptually a program, only built as a shared library for technical reasons -gnome-shell: exit-in-shared-library [usr/lib/gnome-shell/libgnome-shell.so] diff --git a/debian/gnome-shell.maintscript b/debian/gnome-shell.maintscript deleted file mode 100644 index 6e69ac0..0000000 --- a/debian/gnome-shell.maintscript +++ /dev/null @@ -1 +0,0 @@ -rm_conffile /etc/xdg/autostart/gnome-shell-overrides-migration.desktop 44.3-5~ diff --git a/debian/gnome-shell.postinst b/debian/gnome-shell.postinst deleted file mode 100644 index a2c32fc..0000000 --- a/debian/gnome-shell.postinst +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -set -e - -case "$1" in - configure) - # trigger an update notification that recommends a reboot - # (used by unattended-upgrades etc.) - touch /var/run/reboot-required || true - - # same thing for the older update-notifier interface - if [ -x /usr/share/update-notifier/notify-reboot-required ]; then - /usr/share/update-notifier/notify-reboot-required || true - fi - ;; -esac - -#DEBHELPER# diff --git a/debian/libmutter-14-0.bug-control b/debian/libmutter-14-0.bug-control new file mode 100644 index 0000000..3e4f057 --- /dev/null +++ b/debian/libmutter-14-0.bug-control @@ -0,0 +1 @@ +package-status: libegl-vendor libglx-vendor libgl1-mesa-dri diff --git a/debian/libmutter-14-0.install b/debian/libmutter-14-0.install new file mode 100644 index 0000000..0c89976 --- /dev/null +++ b/debian/libmutter-14-0.install @@ -0,0 +1,2 @@ +usr/lib/${DEB_HOST_MULTIARCH}/libmutter-${env:MUTTER_API_VERSION}.so.* +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/*.so.* diff --git a/debian/libmutter-14-0.symbols b/debian/libmutter-14-0.symbols new file mode 100644 index 0000000..8b1c963 --- /dev/null +++ b/debian/libmutter-14-0.symbols @@ -0,0 +1,2710 @@ +libmutter-14.so.0 libmutter-14-0 #MINVER# +* Build-Depends-Package: libmutter-14-dev + hdr_metadata_equal@Base 44~rc + meta_accelerator_name@Base 44~beta + meta_add_clutter_debug_flags@Base 43.0 + meta_add_debug_paint_flag@Base 43.0 + meta_add_verbose_topic@Base 43.0 + meta_anonymous_file_close_fd@Base 43.0 + meta_anonymous_file_free@Base 43.0 + meta_anonymous_file_new@Base 43.0 + meta_anonymous_file_open_fd@Base 43.0 + meta_anonymous_file_size@Base 43.0 + meta_backend_add_gpu@Base 43.0 + meta_backend_capabilities_get_type@Base 43.0 + meta_backend_freeze_keyboard@Base 46~rc + meta_backend_get_capabilities@Base 43.0 + meta_backend_get_clutter_backend@Base 43.0 + meta_backend_get_color_manager@Base 43.0 + meta_backend_get_context@Base 43.0 + meta_backend_get_core_idle_monitor@Base 43.0 + meta_backend_get_current_logical_monitor@Base 43.0 + meta_backend_get_cursor_renderer@Base 44.1 + meta_backend_get_cursor_tracker@Base 43.0 + meta_backend_get_default_seat@Base 43.0 + meta_backend_get_dnd@Base 43.0 + meta_backend_get_gpus@Base 43.0 + meta_backend_get_monitor_manager@Base 43.0 + meta_backend_get_orientation_manager@Base 43.0 + meta_backend_get_remote_access_controller@Base 43.0 + meta_backend_get_renderer@Base 43.0 + meta_backend_get_settings@Base 43.0 + meta_backend_get_stage@Base 43.0 + meta_backend_get_type@Base 43.0 + meta_backend_is_headless@Base 43.0 + meta_backend_is_rendering_hardware_accelerated@Base 43.0 + meta_backend_lock_layout_group@Base 43.0 + meta_backend_native_get_device_pool@Base 43.0 + meta_backend_native_get_kms@Base 43.0 + meta_backend_native_get_type@Base 43.0 + meta_backend_native_get_udev@Base 44~rc + meta_backend_set_keymap@Base 43.0 + meta_backend_unfreeze_keyboard@Base 46~rc + meta_backend_ungrab_keyboard@Base 46~rc + meta_backend_x11_nested_get_type@Base 43.0 + meta_background_actor_get_type@Base 43.0 + meta_background_actor_new@Base 43.0 + meta_background_content_get_type@Base 43.0 + meta_background_content_new@Base 43.0 + meta_background_content_set_background@Base 43.0 + meta_background_content_set_gradient@Base 43.0 + meta_background_content_set_rounded_clip_bounds@Base 43.0 + meta_background_content_set_rounded_clip_radius@Base 43.0 + meta_background_content_set_vignette@Base 43.0 + meta_background_get_type@Base 43.0 + meta_background_group_get_type@Base 43.0 + meta_background_group_new@Base 43.0 + meta_background_image_cache_get_default@Base 43.0 + meta_background_image_cache_get_type@Base 43.0 + meta_background_image_cache_load@Base 43.0 + meta_background_image_cache_purge@Base 43.0 + meta_background_image_get_success@Base 43.0 + meta_background_image_get_texture@Base 43.0 + meta_background_image_get_type@Base 43.0 + meta_background_image_is_loaded@Base 43.0 + meta_background_new@Base 43.0 + meta_background_refresh_all@Base 43.0 + meta_background_set_blend@Base 43.0 + meta_background_set_color@Base 43.0 + meta_background_set_file@Base 43.0 + meta_background_set_gradient@Base 43.0 + meta_barrier_destroy@Base 43.0 + meta_barrier_direction_get_type@Base 43.0 + meta_barrier_event_get_type@Base 43.0 + meta_barrier_flags_get_type@Base 45~beta.1 + meta_barrier_get_type@Base 43.0 + meta_barrier_is_active@Base 43.0 + meta_barrier_new@Base 43.0 + meta_barrier_release@Base 43.0 + meta_bezier_free@Base 46~beta + meta_bezier_init@Base 46~beta + meta_bezier_lookup@Base 46~beta + meta_bezier_new@Base 46~beta + meta_bug@Base 43.0 + meta_button_function_get_type@Base 43.0 + meta_calculate_drm_mode_refresh_rate@Base 43.0 + meta_calculate_drm_mode_vblank_duration_us@Base 43.0 + meta_close_dialog_focus@Base 43.0 + meta_close_dialog_get_type@Base 43.0 + meta_close_dialog_hide@Base 43.0 + meta_close_dialog_is_visible@Base 43.0 + meta_close_dialog_response@Base 43.0 + meta_close_dialog_response_get_type@Base 43.0 + meta_close_dialog_show@Base 43.0 + meta_clutter_button_to_evdev@Base 45.1 + meta_color_device_get_assigned_profile@Base 43.0 + meta_color_device_get_device_profile@Base 43.0 + meta_color_device_get_id@Base 43.0 + meta_color_device_get_monitor@Base 43.0 + meta_color_device_is_ready@Base 43.0 + meta_color_manager_get_color_device@Base 43.0 + meta_color_manager_get_color_store@Base 43.0 + meta_color_manager_get_num_color_devices@Base 43.0 + meta_color_manager_get_type@Base 43.0 + meta_color_manager_is_ready@Base 43.0 + meta_color_profile_get_calibration@Base 43.0 + meta_color_profile_get_cd_icc@Base 43.0 + meta_color_profile_get_id@Base 43.0 + meta_color_store_get_profile@Base 43.0 + meta_color_store_has_pending_profiles@Base 43.0 + meta_comp_effect_get_type@Base 43.0 + meta_compositor_get_feedback_group@Base 44~beta + meta_compositor_get_laters@Base 43.0 + meta_compositor_get_type@Base 43.0 + meta_compositor_type_get_type@Base 43.0 + meta_context_add_option_entries@Base 43.0 + meta_context_add_option_group@Base 43.0 + meta_context_configure@Base 43.0 + meta_context_destroy@Base 43.0 + meta_context_get_backend@Base 43.0 + meta_context_get_compositor_type@Base 43.0 + meta_context_get_display@Base 43.0 + meta_context_get_service_channel@Base 44~beta + meta_context_get_type@Base 43.0 + meta_context_get_wayland_compositor@Base 43.0 + meta_context_is_replacing@Base 43.0 + meta_context_is_x11_sync@Base 43.0 + meta_context_notify_ready@Base 43.0 + meta_context_raise_rlimit_nofile@Base 43.0 + meta_context_restore_rlimit_nofile@Base 43.0 + meta_context_run_main_loop@Base 43.0 + meta_context_set_gnome_wm_keybindings@Base 43.0 + meta_context_set_plugin_gtype@Base 43.0 + meta_context_set_plugin_name@Base 43.0 + meta_context_setup@Base 43.0 + meta_context_start@Base 43.0 + meta_context_terminate@Base 43.0 + meta_context_terminate_with_error@Base 43.0 + meta_create_context@Base 43.0 + meta_create_monitors_config_key_for_current_state@Base 43.0 + meta_crtc_config_new@Base 46~beta + meta_crtc_get_backend@Base 44~beta + meta_crtc_get_config@Base 43.0 + meta_crtc_get_gpu@Base 43.0 + meta_crtc_get_id@Base 43.0 + meta_crtc_get_outputs@Base 43.0 + meta_crtc_get_type@Base 43.0 + meta_crtc_kms_get_kms_crtc@Base 43.0 + meta_crtc_kms_get_type@Base 43.0 + meta_crtc_mode_get_info@Base 43.0 + meta_crtc_mode_get_type@Base 43.0 + meta_crtc_mode_info_new@Base 43.0 + meta_crtc_mode_info_ref@Base 43.0 + meta_crtc_mode_info_unref@Base 43.0 + meta_crtc_set_config@Base 43.0 + meta_crtc_unassign_output@Base 43.0 + meta_crtc_unset_config@Base 43.0 + meta_crtc_virtual_get_type@Base 45.0 + meta_cursor_get_type@Base 43.0 + meta_cursor_renderer_get_cursor@Base 44.1 + meta_cursor_sprite_wayland_get_type@Base 44.1 + meta_cursor_tracker_get_for_display@Base 43.0 + meta_cursor_tracker_get_hot@Base 43.0 + meta_cursor_tracker_get_pointer@Base 43.0 + meta_cursor_tracker_get_pointer_visible@Base 43.0 + meta_cursor_tracker_get_scale@Base 43.0 + meta_cursor_tracker_get_sprite@Base 43.0 + meta_cursor_tracker_get_type@Base 43.0 + meta_cursor_tracker_set_pointer_visible@Base 43.0 + meta_debug_paint_flag_get_type@Base 43.0 + meta_debug_topic_get_type@Base 43.0 + meta_device_file_get_fd@Base 43.0 + meta_device_file_release@Base 43.0 + meta_device_pool_open@Base 43.0 + meta_direction_get_type@Base 43.0 + meta_disable_unredirect_for_display@Base 43.0 + meta_display_add_keybinding@Base 43.0 + meta_display_clear_mouse_mode@Base 43.0 + meta_display_close@Base 43.0 + meta_display_corner_get_type@Base 43.0 + meta_display_direction_get_type@Base 43.0 + meta_display_focus_default_window@Base 43.0 + meta_display_get_compositor@Base 43.0 + meta_display_get_compositor_modifiers@Base 43.0 + meta_display_get_context@Base 43.0 + meta_display_get_current_monitor@Base 43.0 + meta_display_get_current_time@Base 43.0 + meta_display_get_current_time_roundtrip@Base 43.0 + meta_display_get_focus_window@Base 43.0 + meta_display_get_keybinding_action@Base 43.0 + meta_display_get_last_user_time@Base 43.0 + meta_display_get_monitor_geometry@Base 43.0 + meta_display_get_monitor_in_fullscreen@Base 43.0 + meta_display_get_monitor_index_for_rect@Base 43.0 + meta_display_get_monitor_neighbor_index@Base 43.0 + meta_display_get_monitor_scale@Base 43.0 + meta_display_get_n_monitors@Base 43.0 + meta_display_get_pad_button_label@Base 45~beta.1 + meta_display_get_pad_feature_label@Base 45~beta.1 + meta_display_get_primary_monitor@Base 43.0 + meta_display_get_selection@Base 43.0 + meta_display_get_size@Base 43.0 + meta_display_get_sound_player@Base 43.0 + meta_display_get_startup_notification@Base 43.0 + meta_display_get_tab_current@Base 43.0 + meta_display_get_tab_list@Base 43.0 + meta_display_get_tab_next@Base 43.0 + meta_display_get_type@Base 43.0 + meta_display_get_workspace_manager@Base 43.0 + meta_display_get_x11_display@Base 43.0 + meta_display_grab_accelerator@Base 43.0 + meta_display_is_grabbed@Base 44~beta + meta_display_is_pointer_emulating_sequence@Base 43.0 + meta_display_list_all_windows@Base 43.0 + meta_display_list_windows@Base 43.0 + meta_display_lookup_stack_id@Base 43.0 + meta_display_remove_keybinding@Base 43.0 + meta_display_request_pad_osd@Base 43.0 + meta_display_set_cursor@Base 43.0 + meta_display_set_input_focus@Base 43.0 + meta_display_sort_windows_by_stacking@Base 43.0 + meta_display_ungrab_accelerator@Base 43.0 + meta_display_unset_input_focus@Base 43.0 + meta_display_xserver_time_is_before@Base 43.0 + meta_dnd_get_type@Base 43.0 + meta_drm_buffer_dumb_new@Base 43.0 + meta_drm_buffer_get_fb_id@Base 43.0 + meta_drm_buffer_get_type@Base 43.0 + meta_edge_type_get_type@Base 43.0 + meta_edid_info_new_parse@Base 43.0 + meta_enable_unredirect_for_display@Base 43.0 + meta_evdev_button_to_clutter@Base 45.1 + meta_exit@Base 43.0 + meta_exit_code_get_type@Base 43.0 + meta_external_binding_name_for_action@Base 43.0 + meta_fatal@Base 43.0 + meta_finish_monitors_config_migration@Base 43.0 + meta_frame_borders_clear@Base 43.0 + meta_frame_native_ensure_kms_update@Base 44~rc + meta_frame_native_from_frame@Base 44~rc + meta_frame_native_has_kms_update@Base 44~rc + meta_frame_type_get_type@Base 43.0 + meta_frame_type_to_string@Base 43.0 + meta_g_utf8_strndup@Base 43.0 + meta_gamma_lut_copy@Base 44~rc + meta_gamma_lut_equal@Base 44~rc + meta_gamma_lut_free@Base 44~rc + meta_gamma_lut_new@Base 44~rc + meta_gamma_lut_new_sized@Base 46~rc + meta_get_clutter_debug_flags@Base 43.0 + meta_get_debug_paint_flags@Base 43.0 + meta_get_locale_direction@Base 43.0 + meta_get_stage_for_display@Base 43.0 + meta_get_top_window_group_for_display@Base 43.0 + meta_get_window_actors@Base 43.0 + meta_get_window_group_for_display@Base 43.0 + meta_get_window_suspend_timeout_s@Base 45~rc + meta_gpu_get_backend@Base 43.0 + meta_gpu_get_crtcs@Base 43.0 + meta_gpu_get_modes@Base 43.0 + meta_gpu_get_outputs@Base 43.0 + meta_gpu_get_type@Base 43.0 + meta_gpu_has_hotplug_mode_update@Base 43.0 + meta_gpu_read_current@Base 43.0 + meta_gpu_take_crtcs@Base 43.0 + meta_gpu_take_modes@Base 43.0 + meta_gpu_take_outputs@Base 43.0 + meta_grab_op_get_type@Base 43.0 + meta_gravity_get_type@Base 43.0 + meta_gravity_to_string@Base 43.0 + meta_group_get_size@Base 43.0 + meta_group_get_startup_id@Base 43.0 + meta_group_list_windows@Base 43.0 + meta_group_property_notify@Base 43.0 + meta_group_update_layers@Base 43.0 + meta_idle_monitor_add_idle_watch@Base 43.0 + meta_idle_monitor_add_user_active_watch@Base 43.0 + meta_idle_monitor_get_idletime@Base 43.0 + meta_idle_monitor_get_type@Base 43.0 + meta_idle_monitor_remove_watch@Base 43.0 + meta_inhibit_shortcuts_dialog_get_type@Base 43.0 + meta_inhibit_shortcuts_dialog_hide@Base 43.0 + meta_inhibit_shortcuts_dialog_response@Base 43.0 + meta_inhibit_shortcuts_dialog_response_get_type@Base 43.0 + meta_inhibit_shortcuts_dialog_show@Base 43.0 + meta_is_restart@Base 43.0 + meta_is_topic_enabled@Base 43.0 + meta_is_verbose@Base 43.0 + meta_is_wayland_compositor@Base 43.0 + meta_key_binding_action_get_type@Base 43.0 + meta_key_binding_flags_get_type@Base 43.0 + meta_key_binding_get_mask@Base 43.0 + meta_key_binding_get_modifiers@Base 43.0 + meta_key_binding_get_name@Base 43.0 + meta_key_binding_get_type@Base 43.0 + meta_key_binding_is_builtin@Base 43.0 + meta_key_binding_is_reversed@Base 43.0 + meta_keybindings_set_custom_handler@Base 43.0 + meta_keyboard_a11y_flags_get_type@Base 43.0 + meta_kms_connector_get_current_state@Base 43.0 + meta_kms_connector_get_device@Base 43.0 + meta_kms_connector_get_preferred_mode@Base 43.0 + meta_kms_connector_get_type@Base 43.0 + meta_kms_crtc_get_current_state@Base 43.0 + meta_kms_crtc_get_device@Base 43.0 + meta_kms_crtc_get_id@Base 43.0 + meta_kms_crtc_get_type@Base 43.0 + meta_kms_crtc_is_active@Base 43.0 + meta_kms_cursor_manager_position_changed_in_input_impl@Base 45~beta.1 + meta_kms_cursor_manager_update_crtc_layout@Base 45~beta.1 + meta_kms_device_await_flush@Base 45~beta.1 + meta_kms_device_disable@Base 43.0 + meta_kms_device_get_connectors@Base 43.0 + meta_kms_device_get_crtcs@Base 43.0 + meta_kms_device_get_cursor_size@Base 45~beta.1 + meta_kms_device_get_driver_name@Base 43.0 + meta_kms_device_get_impl_device@Base 43.0 + meta_kms_device_get_kms@Base 43.0 + meta_kms_device_get_path@Base 43.0 + meta_kms_device_get_planes@Base 43.0 + meta_kms_device_get_type@Base 43.0 + meta_kms_device_post_update@Base 45~beta.1 + meta_kms_device_process_update_sync@Base 43.0 + meta_kms_device_uses_monotonic_clock@Base 43.0 + meta_kms_feedback_dispatch_result@Base 45~beta.1 + meta_kms_feedback_unref@Base 44~rc + meta_kms_get_backend@Base 43.0 + meta_kms_get_cursor_manager@Base 45~beta.1 + meta_kms_get_devices@Base 43.0 + meta_kms_impl_device_atomic_get_type@Base 43.0 + meta_kms_impl_device_schedule_process@Base 45~beta.1 + meta_kms_impl_device_simple_get_type@Base 43.0 + meta_kms_inhibit_kernel_thread@Base 45~beta.1 + meta_kms_mode_clone@Base 43.0 + meta_kms_mode_free@Base 43.0 + meta_kms_mode_get_drm_mode@Base 43.0 + meta_kms_mode_get_height@Base 43.0 + meta_kms_mode_get_name@Base 43.0 + meta_kms_mode_get_width@Base 43.0 + meta_kms_plane_assignment_set_cursor_hotspot@Base 43.0 + meta_kms_plane_get_device@Base 43.0 + meta_kms_plane_get_id@Base 45~beta.1 + meta_kms_plane_get_plane_type@Base 43.0 + meta_kms_plane_is_usable_with@Base 43.0 + meta_kms_uninhibit_kernel_thread@Base 45~beta.1 + meta_kms_update_add_page_flip_listener@Base 44~rc + meta_kms_update_add_result_listener@Base 44~rc + meta_kms_update_assign_plane@Base 43.0 + meta_kms_update_free@Base 43.0 + meta_kms_update_get_connector_updates@Base 43.0 + meta_kms_update_get_crtc_color_updates@Base 44~rc + meta_kms_update_get_crtc_updates@Base 46~rc + meta_kms_update_get_cursor_plane_assignment@Base 43.0 + meta_kms_update_get_device@Base 43.0 + meta_kms_update_get_mode_sets@Base 43.0 + meta_kms_update_get_page_flip_listeners@Base 43.0 + meta_kms_update_get_plane_assignments@Base 43.0 + meta_kms_update_get_primary_plane_assignment@Base 43.0 + meta_kms_update_merge_from@Base 44~rc + meta_kms_update_mode_set@Base 43.0 + meta_kms_update_new@Base 43.0 + meta_kms_update_set_crtc_gamma@Base 44~rc + meta_kms_update_set_max_bpc@Base 44~rc + meta_kms_update_set_privacy_screen@Base 44~rc + meta_kms_update_set_underscanning@Base 44~rc + meta_kms_update_set_vrr@Base 46~rc + meta_kms_update_states_sync@Base 43.0 + meta_kms_update_take_result_listeners@Base 45~beta.1 + meta_later_type_get_type@Base 43.0 + meta_laters_add@Base 43.0 + meta_laters_get_type@Base 44~beta + meta_laters_remove@Base 43.0 + meta_launch_context_get_type@Base 43.0 + meta_launch_context_set_timestamp@Base 43.0 + meta_launch_context_set_workspace@Base 43.0 + meta_locale_direction_get_type@Base 43.0 + meta_log@Base 44~beta + meta_logical_monitor_config_free@Base 43.0 + meta_logical_monitor_configs_have_monitor@Base 43.0 + meta_logical_monitor_get_layout@Base 43.0 + meta_logical_monitor_get_monitors@Base 43.0 + meta_logical_monitor_is_primary@Base 43.0 + meta_maximize_flags_get_type@Base 43.0 + meta_migrate_old_monitors_config@Base 43.0 + meta_migrate_old_user_monitors_config@Base 43.0 + meta_monitor_calculate_crtc_pos@Base 43.0 + meta_monitor_calculate_mode_scale@Base 43.0 + meta_monitor_calculate_supported_scales@Base 43.0 + meta_monitor_config_free@Base 43.0 + meta_monitor_config_manager_assign@Base 43.0 + meta_monitor_config_manager_clear_history@Base 43.0 + meta_monitor_config_manager_create_fallback@Base 43.0 + meta_monitor_config_manager_create_for_builtin_orientation@Base 43.0 + meta_monitor_config_manager_create_for_orientation@Base 43.0 + meta_monitor_config_manager_create_for_rotate_monitor@Base 43.0 + meta_monitor_config_manager_create_for_switch_config@Base 43.0 + meta_monitor_config_manager_create_linear@Base 43.0 + meta_monitor_config_manager_create_suggested@Base 43.0 + meta_monitor_config_manager_get_current@Base 43.0 + meta_monitor_config_manager_get_previous@Base 43.0 + meta_monitor_config_manager_get_store@Base 43.0 + meta_monitor_config_manager_get_stored@Base 43.0 + meta_monitor_config_manager_new@Base 43.0 + meta_monitor_config_manager_pop_previous@Base 43.0 + meta_monitor_config_manager_save_current@Base 43.0 + meta_monitor_config_manager_set_current@Base 43.0 + meta_monitor_config_store_add@Base 43.0 + meta_monitor_config_store_get_config_count@Base 43.0 + meta_monitor_config_store_get_monitor_manager@Base 43.0 + meta_monitor_config_store_get_policy@Base 43.0 + meta_monitor_config_store_get_stores_policy@Base 43.0 + meta_monitor_config_store_lookup@Base 43.0 + meta_monitor_config_store_new@Base 43.0 + meta_monitor_config_store_remove@Base 43.0 + meta_monitor_config_store_reset@Base 43.0 + meta_monitor_config_store_set_custom@Base 43.0 + meta_monitor_crtc_to_logical_transform@Base 43.0 + meta_monitor_derive_current_mode@Base 43.0 + meta_monitor_get_connector@Base 43.0 + meta_monitor_get_connector_type@Base 43.0 + meta_monitor_get_current_mode@Base 43.0 + meta_monitor_get_edid_checksum_md5@Base 43.0 + meta_monitor_get_edid_info@Base 43.0 + meta_monitor_get_gamma_lut_size@Base 43.0 + meta_monitor_get_logical_monitor@Base 43.0 + meta_monitor_get_main_output@Base 43.0 + meta_monitor_get_mode_from_id@Base 43.0 + meta_monitor_get_mode_from_spec@Base 43.0 + meta_monitor_get_modes@Base 43.0 + meta_monitor_get_outputs@Base 43.0 + meta_monitor_get_physical_dimensions@Base 43.0 + meta_monitor_get_preferred_mode@Base 43.0 + meta_monitor_get_product@Base 43.0 + meta_monitor_get_serial@Base 43.0 + meta_monitor_get_suggested_position@Base 43.0 + meta_monitor_get_type@Base 43.0 + meta_monitor_get_vendor@Base 43.0 + meta_monitor_is_active@Base 43.0 + meta_monitor_is_primary@Base 44~beta + meta_monitor_logical_to_crtc_transform@Base 43.0 + meta_monitor_manager_apply_monitors_config@Base 45.1 + meta_monitor_manager_can_switch_config@Base 43.0 + meta_monitor_manager_create_virtual_monitor@Base 43.0 + meta_monitor_manager_ensure_configured@Base 43.0 + meta_monitor_manager_get_backend@Base 43.0 + meta_monitor_manager_get_config_manager@Base 43.0 + meta_monitor_manager_get_display_configuration_timeout@Base 43.0 + meta_monitor_manager_get_is_builtin_display_on@Base 43.0 + meta_monitor_manager_get_laptop_panel@Base 43.0 + meta_monitor_manager_get_logical_monitors@Base 43.0 + meta_monitor_manager_get_monitor_for_connector@Base 43.0 + meta_monitor_manager_get_monitors@Base 43.0 + meta_monitor_manager_get_num_logical_monitors@Base 43.0 + meta_monitor_manager_get_panel_orientation_managed@Base 43.0 + meta_monitor_manager_get_primary_logical_monitor@Base 43.0 + meta_monitor_manager_get_switch_config@Base 43.0 + meta_monitor_manager_get_type@Base 43.0 + meta_monitor_manager_lid_is_closed_changed@Base 43.0 + meta_monitor_manager_read_current_state@Base 45.1 + meta_monitor_manager_rebuild@Base 43.0 + meta_monitor_manager_rebuild_derived@Base 43.0 + meta_monitor_manager_reconfigure@Base 43.0 + meta_monitor_manager_reload@Base 43.0 + meta_monitor_manager_switch_config@Base 43.0 + meta_monitor_manager_update_logical_state@Base 43.0 + meta_monitor_manager_update_logical_state_derived@Base 43.0 + meta_monitor_mode_foreach_crtc@Base 43.0 + meta_monitor_mode_foreach_output@Base 43.0 + meta_monitor_mode_get_flags@Base 43.0 + meta_monitor_mode_get_id@Base 43.0 + meta_monitor_mode_get_refresh_rate@Base 43.0 + meta_monitor_mode_get_refresh_rate_mode@Base 46~rc + meta_monitor_mode_get_resolution@Base 43.0 + meta_monitor_mode_get_spec@Base 43.0 + meta_monitor_mode_should_be_advertised@Base 43.0 + meta_monitor_mode_spec_has_similar_size@Base 43.0 + meta_monitor_set_current_mode@Base 43.0 + meta_monitor_spec_clone@Base 43.0 + meta_monitor_spec_compare@Base 43.0 + meta_monitor_spec_equals@Base 43.0 + meta_monitor_spec_free@Base 43.0 + meta_monitor_switch_config_type_get_type@Base 43.0 + meta_monitor_tiled_get_tile_group_id@Base 43.0 + meta_monitor_transform_from_orientation@Base 43.0 + meta_monitor_transform_invert@Base 43.0 + meta_monitor_transform_transform@Base 43.0 + meta_monitors_config_get_switch_config@Base 43.0 + meta_monitors_config_key_equal@Base 43.0 + meta_monitors_config_key_free@Base 43.0 + meta_monitors_config_key_hash@Base 43.0 + meta_monitors_config_new@Base 43.0 + meta_monitors_config_new_full@Base 43.0 + meta_monitors_config_set_parent_config@Base 43.0 + meta_monitors_config_set_switch_config@Base 43.0 + meta_motion_direction_get_type@Base 43.0 + meta_multi_texture_format_get_type@Base 45~beta.1 + meta_multi_texture_get_format@Base 45~beta.1 + meta_multi_texture_get_height@Base 45~beta.1 + meta_multi_texture_get_n_planes@Base 45~beta.1 + meta_multi_texture_get_plane@Base 45~beta.1 + meta_multi_texture_get_type@Base 45~beta.1 + meta_multi_texture_get_width@Base 45~beta.1 + meta_multi_texture_is_simple@Base 45~beta.1 + meta_multi_texture_new@Base 45~beta.1 + meta_multi_texture_new_simple@Base 45~beta.1 + meta_multi_texture_to_string@Base 45~beta.1 + meta_onscreen_native_get_crtc@Base 43.0 + meta_onscreen_native_get_type@Base 43.0 + meta_orientation_manager_get_orientation@Base 43.0 + meta_orientation_manager_get_type@Base 43.0 + meta_orientation_manager_has_accelerometer@Base 43.0 + meta_output_assign_crtc@Base 43.0 + meta_output_get_assigned_crtc@Base 43.0 + meta_output_get_gpu@Base 43.0 + meta_output_get_id@Base 43.0 + meta_output_get_info@Base 43.0 + meta_output_get_max_bpc@Base 43.0 + meta_output_get_monitor@Base 43.0 + meta_output_get_type@Base 43.0 + meta_output_info_get_type@Base 43.0 + meta_output_info_new@Base 43.0 + meta_output_info_parse_edid@Base 43.0 + meta_output_info_ref@Base 43.0 + meta_output_info_unref@Base 43.0 + meta_output_is_presentation@Base 43.0 + meta_output_is_primary@Base 43.0 + meta_output_is_underscanning@Base 43.0 + meta_output_peek_rgb_range@Base 46~beta + meta_output_unassign_crtc@Base 43.0 + meta_pad_direction_get_type@Base 45~beta.1 + meta_pad_feature_type_get_type@Base 45~beta.1 + meta_parse_monitor_mode@Base 44.1 + meta_plugin_complete_display_change@Base 43.0 + meta_plugin_destroy_completed@Base 43.0 + meta_plugin_get_display@Base 43.0 + meta_plugin_get_info@Base 43.0 + meta_plugin_get_type@Base 43.0 + meta_plugin_manager_load@Base 43.0 + meta_plugin_manager_set_plugin_type@Base 43.0 + meta_plugin_map_completed@Base 43.0 + meta_plugin_minimize_completed@Base 43.0 + meta_plugin_size_change_completed@Base 43.0 + meta_plugin_switch_workspace_completed@Base 43.0 + meta_plugin_unminimize_completed@Base 43.0 + meta_power_save_change_reason_get_type@Base 45~rc + meta_preference_get_type@Base 43.0 + meta_preference_to_string@Base 43.0 + meta_prefs_add_listener@Base 43.0 + meta_prefs_bell_is_audible@Base 43.0 + meta_prefs_change_workspace_name@Base 43.0 + meta_prefs_get_action_double_click_titlebar@Base 43.0 + meta_prefs_get_action_middle_click_titlebar@Base 43.0 + meta_prefs_get_action_right_click_titlebar@Base 43.0 + meta_prefs_get_attach_modal_dialogs@Base 43.0 + meta_prefs_get_auto_maximize@Base 43.0 + meta_prefs_get_auto_raise@Base 43.0 + meta_prefs_get_auto_raise_delay@Base 43.0 + meta_prefs_get_button_layout@Base 43.0 + meta_prefs_get_center_new_windows@Base 43.0 + meta_prefs_get_check_alive_timeout@Base 43.0 + meta_prefs_get_cursor_size@Base 43.0 + meta_prefs_get_cursor_theme@Base 43.0 + meta_prefs_get_disable_workarounds@Base 43.0 + meta_prefs_get_drag_threshold@Base 43.0 + meta_prefs_get_draggable_border_width@Base 43.0 + meta_prefs_get_dynamic_workspaces@Base 43.0 + meta_prefs_get_edge_tiling@Base 43.0 + meta_prefs_get_focus_change_on_pointer_rest@Base 43.0 + meta_prefs_get_focus_mode@Base 43.0 + meta_prefs_get_focus_new_windows@Base 43.0 + meta_prefs_get_force_fullscreen@Base 43.0 + meta_prefs_get_gnome_accessibility@Base 43.0 + meta_prefs_get_gnome_animations@Base 43.0 + meta_prefs_get_keybinding_action@Base 43.0 + meta_prefs_get_keybinding_label@Base 44~rc + meta_prefs_get_mouse_button_menu@Base 43.0 + meta_prefs_get_mouse_button_mods@Base 43.0 + meta_prefs_get_mouse_button_resize@Base 43.0 + meta_prefs_get_num_workspaces@Base 43.0 + meta_prefs_get_raise_on_click@Base 43.0 + meta_prefs_get_show_fallback_app_menu@Base 43.0 + meta_prefs_get_visual_bell@Base 43.0 + meta_prefs_get_visual_bell_type@Base 43.0 + meta_prefs_get_workspace_name@Base 43.0 + meta_prefs_get_workspaces_only_on_primary@Base 43.0 + meta_prefs_remove_listener@Base 43.0 + meta_prefs_set_force_fullscreen@Base 43.0 + meta_prefs_set_num_workspaces@Base 43.0 + meta_prefs_set_show_fallback_app_menu@Base 43.0 + meta_rectangle_clamp_to_fit_into_region@Base 43.0 + meta_rectangle_clip_to_region@Base 43.0 + meta_rectangle_contained_in_region@Base 43.0 + meta_rectangle_could_fit_in_region@Base 43.0 + meta_rectangle_edge_aligns@Base 43.0 + meta_rectangle_edge_cmp@Base 43.0 + meta_rectangle_edge_cmp_ignore_type@Base 43.0 + meta_rectangle_expand_to_avoiding_struts@Base 43.0 + meta_rectangle_find_linepoint_closest_to_point@Base 43.0 + meta_rectangle_find_nonintersected_monitor_edges@Base 43.0 + meta_rectangle_find_onscreen_edges@Base 43.0 + meta_rectangle_free_list_and_elements@Base 43.0 + meta_rectangle_get_minimal_spanning_set_for_region@Base 43.0 + meta_rectangle_overlaps_with_region@Base 43.0 + meta_rectangle_resize_with_gravity@Base 43.0 + meta_rectangle_shove_into_region@Base 43.0 + meta_rectangle_transform@Base 43.0 + meta_remote_access_controller_get_type@Base 43.0 + meta_remote_access_controller_inhibit_remote_access@Base 43.0 + meta_remote_access_controller_uninhibit_remote_access@Base 43.0 + meta_remote_access_handle_get_disable_animations@Base 43.0 + meta_remote_access_handle_get_type@Base 43.0 + meta_remote_access_handle_stop@Base 43.0 + meta_remove_clutter_debug_flags@Base 43.0 + meta_remove_debug_paint_flag@Base 43.0 + meta_remove_verbose_topic@Base 43.0 + meta_renderer_get_view_for_crtc@Base 43.0 + meta_renderer_get_views@Base 43.0 + meta_renderer_native_get_type@Base 44~rc + meta_renderer_native_has_pending_mode_sets@Base 44~rc + meta_renderer_view_get_crtc@Base 44~beta + meta_renderer_view_get_type@Base 44~beta + meta_restart@Base 43.0 + meta_seat_impl_run_input_task@Base 44~beta + meta_seat_native_get_type@Base 44~beta + meta_selection_get_mimetypes@Base 43.0 + meta_selection_get_type@Base 43.0 + meta_selection_new@Base 43.0 + meta_selection_set_owner@Base 43.0 + meta_selection_source_get_mimetypes@Base 43.0 + meta_selection_source_get_type@Base 43.0 + meta_selection_source_is_active@Base 43.0 + meta_selection_source_memory_get_type@Base 43.0 + meta_selection_source_memory_new@Base 43.0 + meta_selection_source_read_async@Base 43.0 + meta_selection_source_read_finish@Base 43.0 + meta_selection_transfer_async@Base 43.0 + meta_selection_transfer_finish@Base 43.0 + meta_selection_type_get_type@Base 43.0 + meta_selection_unset_owner@Base 43.0 + meta_service_channel_get_service_client@Base 44~beta + meta_set_color_efivar_test_path@Base 43.0 + meta_set_drm_hdr_metadata@Base 44~rc + meta_settings_enable_experimental_feature@Base 43.0 + meta_settings_get_font_dpi@Base 43.0 + meta_settings_get_ui_scaling_factor@Base 43.0 + meta_settings_is_experimental_feature_enabled@Base 43.0 + meta_settings_override_experimental_features@Base 43.0 + meta_shadow_factory_get_default@Base 43.0 + meta_shadow_factory_get_params@Base 43.0 + meta_shadow_factory_get_shadow@Base 43.0 + meta_shadow_factory_get_type@Base 43.0 + meta_shadow_factory_new@Base 43.0 + meta_shadow_factory_set_params@Base 43.0 + meta_shadow_get_bounds@Base 43.0 + meta_shadow_get_type@Base 43.0 + meta_shadow_mode_get_type@Base 43.0 + meta_shadow_paint@Base 43.0 + meta_shadow_ref@Base 43.0 + meta_shadow_unref@Base 43.0 + meta_shaped_texture_get_image@Base 43.0 + meta_shaped_texture_get_texture@Base 43.0 + meta_shaped_texture_get_type@Base 43.0 + meta_shaped_texture_set_create_mipmaps@Base 43.0 + meta_shaped_texture_set_mask_texture@Base 43.0 + meta_side_get_type@Base 43.0 + meta_size_change_get_type@Base 43.0 + meta_sound_player_get_type@Base 43.0 + meta_sound_player_play_from_file@Base 43.0 + meta_sound_player_play_from_theme@Base 43.0 + meta_stack_layer_get_type@Base 43.0 + meta_stack_tracker_get_stack@Base 43.0 + meta_stage_get_type@Base 43.0 + meta_stage_remove_watch@Base 43.0 + meta_stage_watch_view@Base 43.0 + meta_stage_x11_get_type@Base 43.0 + meta_startup_notification_create_launcher@Base 43.0 + meta_startup_notification_get_sequences@Base 43.0 + meta_startup_notification_get_type@Base 43.0 + meta_startup_sequence_complete@Base 43.0 + meta_startup_sequence_get_application_id@Base 43.0 + meta_startup_sequence_get_completed@Base 43.0 + meta_startup_sequence_get_icon_name@Base 43.0 + meta_startup_sequence_get_id@Base 43.0 + meta_startup_sequence_get_name@Base 43.0 + meta_startup_sequence_get_timestamp@Base 43.0 + meta_startup_sequence_get_type@Base 43.0 + meta_startup_sequence_get_wmclass@Base 43.0 + meta_startup_sequence_get_workspace@Base 43.0 + meta_tab_list_get_type@Base 43.0 + meta_tab_show_type_get_type@Base 43.0 + meta_thread_class_register_impl_type@Base 45~beta.1 + meta_thread_flush_callbacks@Base 45~beta.1 + meta_thread_get_backend@Base 45~beta.1 + meta_thread_get_name@Base 45~beta.1 + meta_thread_get_thread_type@Base 45~beta.1 + meta_thread_get_type@Base 45~beta.1 + meta_thread_impl_add_source@Base 45~beta.1 + meta_thread_impl_get_thread@Base 45~beta.1 + meta_thread_impl_get_type@Base 45~beta.1 + meta_thread_impl_is_realtime@Base 45~beta.1 + meta_thread_impl_register_fd@Base 45~beta.1 + meta_thread_is_in_impl_task@Base 45~beta.1 + meta_thread_post_impl_task@Base 45~beta.1 + meta_thread_queue_callback@Base 45~beta.1 + meta_thread_register_callback_context@Base 45~beta.1 + meta_thread_reset_thread_type@Base 45~beta.1 + meta_thread_run_impl_task_sync@Base 45~beta.1 + meta_thread_unregister_callback_context@Base 45~beta.1 + meta_udev_list_drm_devices@Base 44~rc + meta_unsigned_long_equal@Base 43.0 + meta_unsigned_long_hash@Base 43.0 + meta_verify_logical_monitor_config@Base 43.0 + meta_verify_monitor_config@Base 43.0 + meta_verify_monitor_mode_spec@Base 43.0 + meta_verify_monitor_spec@Base 43.0 + meta_verify_monitors_config@Base 43.0 + meta_virtual_monitor_get_crtc_mode@Base 43.0 + meta_virtual_monitor_get_output@Base 43.0 + meta_virtual_monitor_info_free@Base 43.0 + meta_virtual_monitor_info_new@Base 43.0 + meta_virtual_monitor_set_mode@Base 43.0 + meta_warning@Base 43.0 + meta_wayland_actor_surface_get_actor@Base 43.0 + meta_wayland_client_get_type@Base 43.0 + meta_wayland_client_hide_from_window_list@Base 43.0 + meta_wayland_client_make_desktop@Base 45.3 + meta_wayland_client_make_dock@Base 46~rc + meta_wayland_client_matches@Base 44~beta + meta_wayland_client_new@Base 43.0 + meta_wayland_client_new_indirect@Base 44~beta + meta_wayland_client_owns_window@Base 43.0 + meta_wayland_client_setup_fd@Base 44~beta + meta_wayland_client_show_in_window_list@Base 43.0 + meta_wayland_client_spawn@Base 43.0 + meta_wayland_client_spawnv@Base 43.0 + meta_wayland_compositor_get_context@Base 44~beta + meta_wayland_compositor_get_filter_manager@Base 44~beta + meta_wayland_compositor_get_type@Base 45~beta.1 + meta_wayland_compositor_get_wayland_display@Base 44~beta + meta_wayland_compositor_get_xwayland_manager@Base 43.0 + meta_wayland_filter_manager_add_global@Base 44~beta + meta_wayland_filter_manager_remove_global@Base 44~beta + meta_wayland_get_public_xwayland_display_name@Base 43.0 + meta_wayland_get_wayland_display_name@Base 43.0 + meta_wayland_override_display_name@Base 43.0 + meta_wayland_surface_get_actor@Base 43.0 + meta_wayland_surface_get_buffer_height@Base 44~rc + meta_wayland_surface_get_buffer_width@Base 44~rc + meta_wayland_surface_get_height@Base 43.1 + meta_wayland_surface_get_resource@Base 44~beta + meta_wayland_surface_get_type@Base 46~beta + meta_wayland_surface_get_width@Base 43.1 + meta_wayland_surface_get_window@Base 43.0 + meta_window_activate@Base 43.0 + meta_window_activate_with_workspace@Base 43.0 + meta_window_actor_effect_in_progress@Base 43.0 + meta_window_actor_freeze@Base 43.0 + meta_window_actor_from_actor@Base 43.0 + meta_window_actor_from_window@Base 43.0 + meta_window_actor_get_image@Base 43.0 + meta_window_actor_get_meta_window@Base 43.0 + meta_window_actor_get_texture@Base 43.0 + meta_window_actor_get_type@Base 43.0 + meta_window_actor_is_destroyed@Base 43.0 + meta_window_actor_paint_to_content@Base 43.0 + meta_window_actor_queue_frame_drawn@Base 43.0 + meta_window_actor_sync_visibility@Base 43.0 + meta_window_actor_thaw@Base 43.0 + meta_window_allows_move@Base 43.0 + meta_window_allows_resize@Base 43.0 + meta_window_appears_focused@Base 43.0 + meta_window_begin_grab_op@Base 43.0 + meta_window_can_close@Base 43.0 + meta_window_can_maximize@Base 43.0 + meta_window_can_minimize@Base 43.0 + meta_window_change_workspace@Base 43.0 + meta_window_change_workspace_by_index@Base 43.0 + meta_window_check_alive@Base 43.0 + meta_window_client_rect_to_frame_rect@Base 43.0 + meta_window_client_type_get_type@Base 43.0 + meta_window_delete@Base 43.0 + meta_window_find_monitor_from_frame_rect@Base 43.0 + meta_window_find_root_ancestor@Base 43.0 + meta_window_focus@Base 43.0 + meta_window_foreach_ancestor@Base 43.0 + meta_window_foreach_transient@Base 43.0 + meta_window_frame_rect_to_client_rect@Base 43.0 + meta_window_get_buffer_rect@Base 43.0 + meta_window_get_client_type@Base 43.0 + meta_window_get_compositor_private@Base 43.0 + meta_window_get_description@Base 43.0 + meta_window_get_display@Base 43.0 + meta_window_get_frame@Base 43.0 + meta_window_get_frame_bounds@Base 43.0 + meta_window_get_frame_rect@Base 43.0 + meta_window_get_frame_type@Base 43.0 + meta_window_get_gtk_app_menu_object_path@Base 43.0 + meta_window_get_gtk_application_id@Base 43.0 + meta_window_get_gtk_application_object_path@Base 43.0 + meta_window_get_gtk_menubar_object_path@Base 43.0 + meta_window_get_gtk_theme_variant@Base 43.0 + meta_window_get_gtk_unique_bus_name@Base 43.0 + meta_window_get_gtk_window_object_path@Base 43.0 + meta_window_get_icon_geometry@Base 43.0 + meta_window_get_id@Base 43.0 + meta_window_get_layer@Base 43.0 + meta_window_get_maximized@Base 43.0 + meta_window_get_monitor@Base 43.0 + meta_window_get_mutter_hints@Base 43.0 + meta_window_get_pid@Base 43.0 + meta_window_get_role@Base 43.0 + meta_window_get_sandboxed_app_id@Base 43.0 + meta_window_get_stable_sequence@Base 43.0 + meta_window_get_startup_id@Base 43.0 + meta_window_get_tile_match@Base 43.0 + meta_window_get_title@Base 43.0 + meta_window_get_transient_for@Base 43.0 + meta_window_get_type@Base 43.0 + meta_window_get_user_time@Base 43.0 + meta_window_get_wayland_surface@Base 44~beta + meta_window_get_window_type@Base 43.0 + meta_window_get_wm_class@Base 43.0 + meta_window_get_wm_class_instance@Base 43.0 + meta_window_get_work_area_all_monitors@Base 43.0 + meta_window_get_work_area_current_monitor@Base 43.0 + meta_window_get_work_area_for_monitor@Base 43.0 + meta_window_get_workspace@Base 43.0 + meta_window_group_get_type@Base 43.0 + meta_window_has_attached_dialogs@Base 43.0 + meta_window_has_focus@Base 43.0 + meta_window_has_pointer@Base 44.1 + meta_window_is_above@Base 43.0 + meta_window_is_always_on_all_workspaces@Base 43.0 + meta_window_is_ancestor_of_transient@Base 43.0 + meta_window_is_attached_dialog@Base 43.0 + meta_window_is_client_decorated@Base 43.0 + meta_window_is_fullscreen@Base 43.0 + meta_window_is_hidden@Base 43.0 + meta_window_is_monitor_sized@Base 43.0 + meta_window_is_on_all_workspaces@Base 43.0 + meta_window_is_on_primary_monitor@Base 43.0 + meta_window_is_override_redirect@Base 43.0 + meta_window_is_remote@Base 43.0 + meta_window_is_screen_sized@Base 43.0 + meta_window_is_skip_taskbar@Base 43.0 + meta_window_kill@Base 43.0 + meta_window_located_on_workspace@Base 43.0 + meta_window_lower@Base 43.0 + meta_window_lower_with_transients@Base 43.0 + meta_window_make_above@Base 43.0 + meta_window_make_fullscreen@Base 43.0 + meta_window_maximize@Base 43.0 + meta_window_menu_type_get_type@Base 43.0 + meta_window_minimize@Base 43.0 + meta_window_move_frame@Base 43.0 + meta_window_move_resize_frame@Base 43.0 + meta_window_move_to_monitor@Base 43.0 + meta_window_raise@Base 43.0 + meta_window_raise_and_make_recent_on_workspace@Base 46~beta + meta_window_set_compositor_private@Base 43.0 + meta_window_set_demands_attention@Base 43.0 + meta_window_set_icon_geometry@Base 43.0 + meta_window_shape_equal@Base 43.0 + meta_window_shape_get_borders@Base 43.0 + meta_window_shape_get_type@Base 43.0 + meta_window_shape_hash@Base 43.0 + meta_window_shape_new@Base 43.0 + meta_window_shape_ref@Base 43.0 + meta_window_shape_to_region@Base 43.0 + meta_window_shape_unref@Base 43.0 + meta_window_should_be_showing@Base 46.1 + meta_window_should_show@Base 46.1 + meta_window_shove_titlebar_onscreen@Base 43.0 + meta_window_showing_on_its_workspace@Base 43.0 + meta_window_stick@Base 43.0 + meta_window_tile@Base 43.0 + meta_window_titlebar_is_onscreen@Base 43.0 + meta_window_type_get_type@Base 43.0 + meta_window_unmake_above@Base 43.0 + meta_window_unmake_fullscreen@Base 43.0 + meta_window_unmaximize@Base 43.0 + meta_window_unminimize@Base 43.0 + meta_window_unset_demands_attention@Base 43.0 + meta_window_unstick@Base 43.0 + meta_window_untile@Base 43.0 + meta_window_wayland_get_type@Base 43.1 + meta_window_wayland_is_acked_fullscreen@Base 43.1 + meta_window_x11_get_group@Base 46~beta + meta_window_x11_get_toplevel_xwindow@Base 44~beta + meta_window_x11_get_type@Base 44~beta + meta_window_x11_get_xwindow@Base 46~beta + meta_window_x11_group_leader_changed@Base 46~beta + meta_workspace_activate@Base 43.0 + meta_workspace_activate_with_focus@Base 43.0 + meta_workspace_get_display@Base 43.0 + meta_workspace_get_neighbor@Base 43.0 + meta_workspace_get_type@Base 43.0 + meta_workspace_get_work_area_all_monitors@Base 43.0 + meta_workspace_get_work_area_for_monitor@Base 43.0 + meta_workspace_index@Base 43.0 + meta_workspace_list_windows@Base 43.0 + meta_workspace_manager_append_new_workspace@Base 43.0 + meta_workspace_manager_get_active_workspace@Base 43.0 + meta_workspace_manager_get_active_workspace_index@Base 43.0 + meta_workspace_manager_get_layout_columns@Base 46~beta + meta_workspace_manager_get_layout_rows@Base 46~beta + meta_workspace_manager_get_n_workspaces@Base 43.0 + meta_workspace_manager_get_type@Base 43.0 + meta_workspace_manager_get_workspace_by_index@Base 43.0 + meta_workspace_manager_get_workspaces@Base 43.0 + meta_workspace_manager_override_workspace_layout@Base 43.0 + meta_workspace_manager_remove_workspace@Base 43.0 + meta_workspace_manager_reorder_workspace@Base 43.0 + meta_workspace_manager_update_num_workspaces@Base 43.1 + meta_workspace_set_builtin_struts@Base 43.0 + meta_x11_display_add_alarm_filter@Base 43.2 + meta_x11_display_add_event_func@Base 44~rc + meta_x11_display_get_type@Base 43.0 + meta_x11_display_get_xdisplay@Base 43.0 + meta_x11_display_get_xroot@Base 43.0 + meta_x11_display_lookup_group@Base 43.0 + meta_x11_display_lookup_xwindow@Base 46~beta + meta_x11_display_redirect_windows@Base 45~beta.1 + meta_x11_display_remove_alarm_filter@Base 43.2 + meta_x11_display_remove_event_func@Base 44~rc + meta_x11_display_set_stage_input_region@Base 43.0 + meta_xwayland_override_display_number@Base 43.0 + meta_xwayland_signal@Base 43.0 + set_output_hdr_metadata@Base 44~rc +libmutter-clutter-14.so.0 libmutter-14-0 #MINVER# +* Build-Depends-Package: libmutter-14-dev + _clutter_context_is_initialized@Base 43.0 + _clutter_event_process_filters@Base 43.0 + _clutter_event_push@Base 43.0 + _clutter_flatten_effect_get_type@Base 46~beta + _clutter_input_pointer_a11y_add_device@Base 43.0 + _clutter_input_pointer_a11y_on_button_event@Base 43.0 + _clutter_input_pointer_a11y_on_motion_event@Base 43.0 + _clutter_input_pointer_a11y_remove_device@Base 43.0 + _clutter_is_input_pointer_a11y_enabled@Base 43.0 + _clutter_stage_get_window@Base 43.0 + _clutter_stage_maybe_setup_viewport@Base 43.0 + _clutter_stage_process_queued_events@Base 45~beta.1 + _clutter_stage_queue_event@Base 43.0 + _clutter_stage_set_window@Base 43.0 + _clutter_stage_window_can_clip_redraws@Base 43.0 + _clutter_stage_window_get_geometry@Base 43.0 + cally_accessibility_init@Base 43.0 + cally_actor_add_action@Base 43.0 + cally_actor_add_action_full@Base 43.0 + cally_actor_get_type@Base 43.0 + cally_actor_new@Base 43.0 + cally_actor_remove_action@Base 43.0 + cally_actor_remove_action_by_name@Base 43.0 + cally_clone_get_type@Base 43.0 + cally_clone_new@Base 43.0 + cally_get_cally_initialized@Base 43.0 + cally_root_get_type@Base 43.0 + cally_root_new@Base 43.0 + cally_stage_get_type@Base 43.0 + cally_stage_new@Base 43.0 + cally_text_get_type@Base 43.0 + cally_text_new@Base 43.0 + cally_util_get_type@Base 43.0 + clutter_action_get_type@Base 43.0 + clutter_actor_add_action@Base 43.0 + clutter_actor_add_action_full@Base 43.0 + clutter_actor_add_action_with_name@Base 43.0 + clutter_actor_add_child@Base 43.0 + clutter_actor_add_constraint@Base 43.0 + clutter_actor_add_constraint_with_name@Base 43.0 + clutter_actor_add_effect@Base 43.0 + clutter_actor_add_effect_with_name@Base 43.0 + clutter_actor_add_transition@Base 43.0 + clutter_actor_align_get_type@Base 43.0 + clutter_actor_allocate@Base 43.0 + clutter_actor_allocate_align_fill@Base 43.0 + clutter_actor_allocate_available_size@Base 43.0 + clutter_actor_allocate_preferred_size@Base 43.0 + clutter_actor_apply_relative_transform_to_point@Base 43.0 + clutter_actor_apply_transform_to_point@Base 43.0 + clutter_actor_bind_model@Base 43.0 + clutter_actor_bind_model_with_properties@Base 43.0 + clutter_actor_box_alloc@Base 43.0 + clutter_actor_box_clamp_to_pixel@Base 43.0 + clutter_actor_box_contains@Base 43.0 + clutter_actor_box_copy@Base 43.0 + clutter_actor_box_equal@Base 43.0 + clutter_actor_box_free@Base 43.0 + clutter_actor_box_from_vertices@Base 43.0 + clutter_actor_box_get_area@Base 43.0 + clutter_actor_box_get_height@Base 43.0 + clutter_actor_box_get_origin@Base 43.0 + clutter_actor_box_get_size@Base 43.0 + clutter_actor_box_get_type@Base 43.0 + clutter_actor_box_get_width@Base 43.0 + clutter_actor_box_get_x@Base 43.0 + clutter_actor_box_get_y@Base 43.0 + clutter_actor_box_init@Base 43.0 + clutter_actor_box_init_rect@Base 43.0 + clutter_actor_box_interpolate@Base 43.0 + clutter_actor_box_is_initialized@Base 43.0 + clutter_actor_box_new@Base 43.0 + clutter_actor_box_scale@Base 43.0 + clutter_actor_box_set_origin@Base 43.0 + clutter_actor_box_set_size@Base 43.0 + clutter_actor_box_union@Base 43.0 + clutter_actor_class_get_layout_manager_type@Base 46~beta + clutter_actor_class_set_layout_manager_type@Base 46~beta + clutter_actor_clear_actions@Base 43.0 + clutter_actor_clear_constraints@Base 43.0 + clutter_actor_clear_effects@Base 43.0 + clutter_actor_contains@Base 43.0 + clutter_actor_continue_paint@Base 43.0 + clutter_actor_continue_pick@Base 43.0 + clutter_actor_create_pango_context@Base 43.0 + clutter_actor_create_pango_layout@Base 43.0 + clutter_actor_create_texture_paint_node@Base 46~beta + clutter_actor_destroy@Base 43.0 + clutter_actor_destroy_all_children@Base 43.0 + clutter_actor_event@Base 43.0 + clutter_actor_flags_get_type@Base 43.0 + clutter_actor_get_abs_allocation_vertices@Base 43.0 + clutter_actor_get_accessible@Base 43.0 + clutter_actor_get_action@Base 43.0 + clutter_actor_get_actions@Base 43.0 + clutter_actor_get_allocation_box@Base 43.0 + clutter_actor_get_background_color@Base 43.0 + clutter_actor_get_child_at_index@Base 43.0 + clutter_actor_get_child_transform@Base 43.0 + clutter_actor_get_children@Base 43.0 + clutter_actor_get_clip@Base 43.0 + clutter_actor_get_clip_to_allocation@Base 43.0 + clutter_actor_get_color_state@Base 43.0 + clutter_actor_get_constraint@Base 43.0 + clutter_actor_get_constraints@Base 43.0 + clutter_actor_get_content@Base 43.0 + clutter_actor_get_content_box@Base 43.0 + clutter_actor_get_content_gravity@Base 43.0 + clutter_actor_get_content_repeat@Base 43.0 + clutter_actor_get_content_scaling_filters@Base 43.0 + clutter_actor_get_easing_delay@Base 43.0 + clutter_actor_get_easing_duration@Base 43.0 + clutter_actor_get_easing_mode@Base 43.0 + clutter_actor_get_effect@Base 43.0 + clutter_actor_get_effects@Base 43.0 + clutter_actor_get_first_child@Base 43.0 + clutter_actor_get_fixed_position@Base 43.0 + clutter_actor_get_fixed_position_set@Base 43.0 + clutter_actor_get_flags@Base 43.0 + clutter_actor_get_height@Base 43.0 + clutter_actor_get_last_child@Base 43.0 + clutter_actor_get_layout_manager@Base 43.0 + clutter_actor_get_margin@Base 43.0 + clutter_actor_get_margin_bottom@Base 43.0 + clutter_actor_get_margin_left@Base 43.0 + clutter_actor_get_margin_right@Base 43.0 + clutter_actor_get_margin_top@Base 43.0 + clutter_actor_get_n_children@Base 43.0 + clutter_actor_get_name@Base 43.0 + clutter_actor_get_next_sibling@Base 43.0 + clutter_actor_get_offscreen_redirect@Base 43.0 + clutter_actor_get_opacity@Base 43.0 + clutter_actor_get_opacity_override@Base 43.0 + clutter_actor_get_paint_box@Base 43.0 + clutter_actor_get_paint_opacity@Base 43.0 + clutter_actor_get_paint_visibility@Base 43.0 + clutter_actor_get_paint_volume@Base 43.0 + clutter_actor_get_pango_context@Base 43.0 + clutter_actor_get_parent@Base 43.0 + clutter_actor_get_pivot_point@Base 43.0 + clutter_actor_get_pivot_point_z@Base 43.0 + clutter_actor_get_position@Base 43.0 + clutter_actor_get_preferred_height@Base 43.0 + clutter_actor_get_preferred_size@Base 43.0 + clutter_actor_get_preferred_width@Base 43.0 + clutter_actor_get_previous_sibling@Base 43.0 + clutter_actor_get_reactive@Base 43.0 + clutter_actor_get_relative_transformation_matrix@Base 45~beta.1 + clutter_actor_get_request_mode@Base 43.0 + clutter_actor_get_resource_scale@Base 43.0 + clutter_actor_get_rotation_angle@Base 43.0 + clutter_actor_get_scale@Base 43.0 + clutter_actor_get_scale_z@Base 43.0 + clutter_actor_get_size@Base 43.0 + clutter_actor_get_stage@Base 43.0 + clutter_actor_get_text_direction@Base 43.0 + clutter_actor_get_transform@Base 43.0 + clutter_actor_get_transformed_extents@Base 43.0 + clutter_actor_get_transformed_paint_volume@Base 43.0 + clutter_actor_get_transformed_position@Base 43.0 + clutter_actor_get_transformed_size@Base 43.0 + clutter_actor_get_transition@Base 43.0 + clutter_actor_get_translation@Base 43.0 + clutter_actor_get_type@Base 43.0 + clutter_actor_get_width@Base 43.0 + clutter_actor_get_x@Base 43.0 + clutter_actor_get_x_align@Base 43.0 + clutter_actor_get_x_expand@Base 43.0 + clutter_actor_get_y@Base 43.0 + clutter_actor_get_y_align@Base 43.0 + clutter_actor_get_y_expand@Base 43.0 + clutter_actor_get_z_position@Base 43.0 + clutter_actor_grab_key_focus@Base 43.0 + clutter_actor_has_accessible@Base 43.0 + clutter_actor_has_actions@Base 43.0 + clutter_actor_has_allocation@Base 43.0 + clutter_actor_has_clip@Base 43.0 + clutter_actor_has_constraints@Base 43.0 + clutter_actor_has_damage@Base 43.0 + clutter_actor_has_effects@Base 43.0 + clutter_actor_has_key_focus@Base 43.0 + clutter_actor_has_mapped_clones@Base 43.0 + clutter_actor_has_overlaps@Base 43.0 + clutter_actor_has_pointer@Base 43.0 + clutter_actor_has_transitions@Base 43.0 + clutter_actor_hide@Base 43.0 + clutter_actor_inhibit_culling@Base 43.0 + clutter_actor_insert_child_above@Base 43.0 + clutter_actor_insert_child_at_index@Base 43.0 + clutter_actor_insert_child_below@Base 43.0 + clutter_actor_invalidate_paint_volume@Base 43.0 + clutter_actor_invalidate_transform@Base 43.0 + clutter_actor_is_effectively_on_stage_view@Base 43.0 + clutter_actor_is_in_clone_paint@Base 43.0 + clutter_actor_is_mapped@Base 43.0 + clutter_actor_is_realized@Base 43.0 + clutter_actor_is_rotated@Base 43.0 + clutter_actor_is_scaled@Base 43.0 + clutter_actor_is_visible@Base 43.0 + clutter_actor_iter_destroy@Base 43.0 + clutter_actor_iter_init@Base 43.0 + clutter_actor_iter_is_valid@Base 43.0 + clutter_actor_iter_next@Base 43.0 + clutter_actor_iter_prev@Base 43.0 + clutter_actor_iter_remove@Base 43.0 + clutter_actor_map@Base 43.0 + clutter_actor_meta_get_actor@Base 43.0 + clutter_actor_meta_get_enabled@Base 43.0 + clutter_actor_meta_get_name@Base 43.0 + clutter_actor_meta_get_type@Base 43.0 + clutter_actor_meta_set_enabled@Base 43.0 + clutter_actor_meta_set_name@Base 43.0 + clutter_actor_move_by@Base 43.0 + clutter_actor_needs_expand@Base 43.0 + clutter_actor_new@Base 43.0 + clutter_actor_node_get_type@Base 43.0 + clutter_actor_node_new@Base 43.0 + clutter_actor_notify_transform_invalid@Base 45~beta.1 + clutter_actor_paint@Base 43.0 + clutter_actor_peek_stage_views@Base 43.0 + clutter_actor_pick@Base 43.0 + clutter_actor_pick_box@Base 43.0 + clutter_actor_pick_frame_clock@Base 43.0 + clutter_actor_queue_redraw@Base 43.0 + clutter_actor_queue_redraw_with_clip@Base 43.0 + clutter_actor_queue_relayout@Base 43.0 + clutter_actor_realize@Base 43.0 + clutter_actor_remove_action@Base 43.0 + clutter_actor_remove_action_by_name@Base 43.0 + clutter_actor_remove_all_children@Base 43.0 + clutter_actor_remove_all_transitions@Base 43.0 + clutter_actor_remove_child@Base 43.0 + clutter_actor_remove_clip@Base 43.0 + clutter_actor_remove_constraint@Base 43.0 + clutter_actor_remove_constraint_by_name@Base 43.0 + clutter_actor_remove_effect@Base 43.0 + clutter_actor_remove_effect_by_name@Base 43.0 + clutter_actor_remove_transition@Base 43.0 + clutter_actor_replace_child@Base 43.0 + clutter_actor_restore_easing_state@Base 43.0 + clutter_actor_save_easing_state@Base 43.0 + clutter_actor_set_allocation@Base 43.0 + clutter_actor_set_background_color@Base 43.0 + clutter_actor_set_child_above_sibling@Base 43.0 + clutter_actor_set_child_at_index@Base 43.0 + clutter_actor_set_child_below_sibling@Base 43.0 + clutter_actor_set_child_transform@Base 43.0 + clutter_actor_set_clip@Base 43.0 + clutter_actor_set_clip_to_allocation@Base 43.0 + clutter_actor_set_color_state@Base 43.0 + clutter_actor_set_content@Base 43.0 + clutter_actor_set_content_gravity@Base 43.0 + clutter_actor_set_content_repeat@Base 43.0 + clutter_actor_set_content_scaling_filters@Base 43.0 + clutter_actor_set_easing_delay@Base 43.0 + clutter_actor_set_easing_duration@Base 43.0 + clutter_actor_set_easing_mode@Base 43.0 + clutter_actor_set_fixed_position_set@Base 43.0 + clutter_actor_set_flags@Base 43.0 + clutter_actor_set_height@Base 43.0 + clutter_actor_set_layout_manager@Base 43.0 + clutter_actor_set_margin@Base 43.0 + clutter_actor_set_margin_bottom@Base 43.0 + clutter_actor_set_margin_left@Base 43.0 + clutter_actor_set_margin_right@Base 43.0 + clutter_actor_set_margin_top@Base 43.0 + clutter_actor_set_name@Base 43.0 + clutter_actor_set_offscreen_redirect@Base 43.0 + clutter_actor_set_opacity@Base 43.0 + clutter_actor_set_opacity_override@Base 43.0 + clutter_actor_set_pivot_point@Base 43.0 + clutter_actor_set_pivot_point_z@Base 43.0 + clutter_actor_set_position@Base 43.0 + clutter_actor_set_reactive@Base 43.0 + clutter_actor_set_request_mode@Base 43.0 + clutter_actor_set_rotation_angle@Base 43.0 + clutter_actor_set_scale@Base 43.0 + clutter_actor_set_scale_z@Base 43.0 + clutter_actor_set_size@Base 43.0 + clutter_actor_set_text_direction@Base 43.0 + clutter_actor_set_transform@Base 43.0 + clutter_actor_set_translation@Base 43.0 + clutter_actor_set_width@Base 43.0 + clutter_actor_set_x@Base 43.0 + clutter_actor_set_x_align@Base 43.0 + clutter_actor_set_x_expand@Base 43.0 + clutter_actor_set_y@Base 43.0 + clutter_actor_set_y_align@Base 43.0 + clutter_actor_set_y_expand@Base 43.0 + clutter_actor_set_z_position@Base 43.0 + clutter_actor_should_pick@Base 43.0 + clutter_actor_show@Base 43.0 + clutter_actor_transform_stage_point@Base 43.0 + clutter_actor_uninhibit_culling@Base 43.0 + clutter_actor_unmap@Base 43.0 + clutter_actor_unrealize@Base 43.0 + clutter_actor_unset_flags@Base 43.0 + clutter_add_debug_flags@Base 43.0 + clutter_align_axis_get_type@Base 43.0 + clutter_align_constraint_get_align_axis@Base 43.0 + clutter_align_constraint_get_factor@Base 43.0 + clutter_align_constraint_get_pivot_point@Base 43.0 + clutter_align_constraint_get_source@Base 43.0 + clutter_align_constraint_get_type@Base 43.0 + clutter_align_constraint_new@Base 43.0 + clutter_align_constraint_set_align_axis@Base 43.0 + clutter_align_constraint_set_factor@Base 43.0 + clutter_align_constraint_set_pivot_point@Base 43.0 + clutter_align_constraint_set_source@Base 43.0 + clutter_animatable_find_property@Base 43.0 + clutter_animatable_get_actor@Base 43.0 + clutter_animatable_get_initial_state@Base 43.0 + clutter_animatable_get_type@Base 43.0 + clutter_animatable_interpolate_value@Base 43.0 + clutter_animatable_set_final_state@Base 43.0 + clutter_animation_mode_get_type@Base 43.0 + clutter_backend_destroy@Base 43.0 + clutter_backend_get_cogl_context@Base 43.0 + clutter_backend_get_default_seat@Base 43.0 + clutter_backend_get_font_options@Base 43.0 + clutter_backend_get_input_method@Base 43.0 + clutter_backend_get_resolution@Base 43.0 + clutter_backend_get_stage_window@Base 43.0 + clutter_backend_get_type@Base 43.0 + clutter_backend_set_fallback_resource_scale@Base 43.0 + clutter_backend_set_font_options@Base 43.0 + clutter_backend_set_input_method@Base 43.0 + clutter_bin_layout_get_type@Base 43.0 + clutter_bin_layout_new@Base 43.0 + clutter_bind_constraint_get_coordinate@Base 43.0 + clutter_bind_constraint_get_offset@Base 43.0 + clutter_bind_constraint_get_source@Base 43.0 + clutter_bind_constraint_get_type@Base 43.0 + clutter_bind_constraint_new@Base 43.0 + clutter_bind_constraint_set_coordinate@Base 43.0 + clutter_bind_constraint_set_offset@Base 43.0 + clutter_bind_constraint_set_source@Base 43.0 + clutter_bind_coordinate_get_type@Base 43.0 + clutter_binding_pool_activate@Base 43.0 + clutter_binding_pool_block_action@Base 43.0 + clutter_binding_pool_find@Base 43.0 + clutter_binding_pool_find_action@Base 43.0 + clutter_binding_pool_get_for_class@Base 43.0 + clutter_binding_pool_get_type@Base 43.0 + clutter_binding_pool_install_action@Base 43.0 + clutter_binding_pool_install_closure@Base 43.0 + clutter_binding_pool_new@Base 43.0 + clutter_binding_pool_override_action@Base 43.0 + clutter_binding_pool_override_closure@Base 43.0 + clutter_binding_pool_remove_action@Base 43.0 + clutter_binding_pool_unblock_action@Base 43.0 + clutter_blit_node_add_blit_rectangle@Base 43.0 + clutter_blit_node_get_type@Base 43.0 + clutter_blit_node_new@Base 43.0 + clutter_blur_effect_get_type@Base 43.0 + clutter_blur_effect_new@Base 43.0 + clutter_blur_node_get_type@Base 43.0 + clutter_blur_node_new@Base 43.0 + clutter_box_layout_get_homogeneous@Base 43.0 + clutter_box_layout_get_orientation@Base 43.0 + clutter_box_layout_get_spacing@Base 43.0 + clutter_box_layout_get_type@Base 43.0 + clutter_box_layout_new@Base 43.0 + clutter_box_layout_set_homogeneous@Base 43.0 + clutter_box_layout_set_orientation@Base 43.0 + clutter_box_layout_set_spacing@Base 43.0 + clutter_brightness_contrast_effect_get_brightness@Base 43.0 + clutter_brightness_contrast_effect_get_contrast@Base 43.0 + clutter_brightness_contrast_effect_get_type@Base 43.0 + clutter_brightness_contrast_effect_new@Base 43.0 + clutter_brightness_contrast_effect_set_brightness@Base 43.0 + clutter_brightness_contrast_effect_set_brightness_full@Base 43.0 + clutter_brightness_contrast_effect_set_contrast@Base 43.0 + clutter_brightness_contrast_effect_set_contrast_full@Base 43.0 + clutter_button_state_get_type@Base 43.0 + clutter_click_action_get_button@Base 43.0 + clutter_click_action_get_coords@Base 43.0 + clutter_click_action_get_state@Base 43.0 + clutter_click_action_get_type@Base 43.0 + clutter_click_action_new@Base 43.0 + clutter_click_action_release@Base 43.0 + clutter_clip_node_get_type@Base 43.0 + clutter_clip_node_new@Base 43.0 + clutter_clone_get_source@Base 43.0 + clutter_clone_get_type@Base 43.0 + clutter_clone_new@Base 43.0 + clutter_clone_set_source@Base 43.0 + clutter_color_alloc@Base 43.0 + clutter_color_copy@Base 43.0 + clutter_color_equal@Base 43.0 + clutter_color_free@Base 43.0 + clutter_color_from_hls@Base 43.0 + clutter_color_from_pixel@Base 43.0 + clutter_color_from_string@Base 43.0 + clutter_color_get_type@Base 43.0 + clutter_color_hash@Base 43.0 + clutter_color_init@Base 43.0 + clutter_color_interpolate@Base 43.0 + clutter_color_new@Base 43.0 + clutter_color_node_get_type@Base 43.0 + clutter_color_node_new@Base 43.0 + clutter_color_state_get_colorspace@Base 43.0 + clutter_color_state_get_type@Base 43.0 + clutter_color_state_new@Base 43.0 + clutter_color_to_hls@Base 43.0 + clutter_color_to_pixel@Base 43.0 + clutter_color_to_string@Base 43.0 + clutter_colorize_effect_get_tint@Base 43.0 + clutter_colorize_effect_get_type@Base 43.0 + clutter_colorize_effect_new@Base 43.0 + clutter_colorize_effect_set_tint@Base 43.0 + clutter_colorspace_get_type@Base 43.0 + clutter_constraint_get_type@Base 43.0 + clutter_constraint_update_preferred_size@Base 43.0 + clutter_content_get_preferred_size@Base 43.0 + clutter_content_get_type@Base 43.0 + clutter_content_gravity_get_type@Base 43.0 + clutter_content_invalidate@Base 43.0 + clutter_content_invalidate_size@Base 43.0 + clutter_content_repeat_get_type@Base 43.0 + clutter_context_destroy@Base 46~beta + clutter_context_flags_get_type@Base 46~beta + clutter_context_get_backend@Base 43.0 + clutter_context_get_type@Base 46~beta + clutter_create_context@Base 46~beta + clutter_damage_history_free@Base 43.0 + clutter_damage_history_is_age_valid@Base 43.0 + clutter_damage_history_lookup@Base 43.0 + clutter_damage_history_new@Base 43.0 + clutter_damage_history_record@Base 43.0 + clutter_damage_history_step@Base 43.0 + clutter_debug_flag_get_type@Base 43.0 + clutter_debug_set_max_render_time_constant@Base 43.0 + clutter_deform_effect_get_back_material@Base 43.0 + clutter_deform_effect_get_n_tiles@Base 43.0 + clutter_deform_effect_get_type@Base 43.0 + clutter_deform_effect_invalidate@Base 43.0 + clutter_deform_effect_set_back_material@Base 43.0 + clutter_deform_effect_set_n_tiles@Base 43.0 + clutter_desaturate_effect_get_factor@Base 43.0 + clutter_desaturate_effect_get_type@Base 43.0 + clutter_desaturate_effect_new@Base 43.0 + clutter_desaturate_effect_set_factor@Base 43.0 + clutter_disable_accessibility@Base 43.0 + clutter_draw_debug_flag_get_type@Base 43.0 + clutter_effect_get_type@Base 43.0 + clutter_effect_node_get_type@Base 43.0 + clutter_effect_node_new@Base 43.0 + clutter_effect_paint_flags_get_type@Base 43.0 + clutter_effect_queue_repaint@Base 43.0 + clutter_event_add_filter@Base 43.0 + clutter_event_button_new@Base 45~beta.1 + clutter_event_copy@Base 43.0 + clutter_event_crossing_new@Base 45~beta.1 + clutter_event_describe@Base 45~beta.1 + clutter_event_device_notify_new@Base 45~beta.1 + clutter_event_flags_get_type@Base 43.0 + clutter_event_free@Base 43.0 + clutter_event_get@Base 43.0 + clutter_event_get_angle@Base 43.0 + clutter_event_get_axes@Base 43.0 + clutter_event_get_button@Base 43.0 + clutter_event_get_coords@Base 43.0 + clutter_event_get_device@Base 43.0 + clutter_event_get_device_tool@Base 43.0 + clutter_event_get_device_type@Base 43.0 + clutter_event_get_distance@Base 43.0 + clutter_event_get_event_code@Base 43.0 + clutter_event_get_event_sequence@Base 43.0 + clutter_event_get_flags@Base 43.0 + clutter_event_get_gesture_motion_delta@Base 43.0 + clutter_event_get_gesture_motion_delta_unaccelerated@Base 43.0 + clutter_event_get_gesture_phase@Base 43.0 + clutter_event_get_gesture_pinch_angle_delta@Base 43.0 + clutter_event_get_gesture_pinch_scale@Base 43.0 + clutter_event_get_im_delete_length@Base 45~beta.1 + clutter_event_get_im_location@Base 45~beta.1 + clutter_event_get_im_preedit_reset_mode@Base 45~beta.1 + clutter_event_get_im_text@Base 45~beta.1 + clutter_event_get_key_code@Base 43.0 + clutter_event_get_key_state@Base 46~beta + clutter_event_get_key_symbol@Base 43.0 + clutter_event_get_key_unicode@Base 43.0 + clutter_event_get_mode_group@Base 43.0 + clutter_event_get_name@Base 45~beta.1 + clutter_event_get_pad_details@Base 45~beta.1 + clutter_event_get_position@Base 43.0 + clutter_event_get_related@Base 43.0 + clutter_event_get_relative_motion@Base 43.0 + clutter_event_get_scroll_delta@Base 43.0 + clutter_event_get_scroll_direction@Base 43.0 + clutter_event_get_scroll_finish_flags@Base 43.0 + clutter_event_get_scroll_source@Base 43.0 + clutter_event_get_source@Base 46.0 + clutter_event_get_source_device@Base 43.0 + clutter_event_get_state@Base 43.0 + clutter_event_get_time@Base 43.0 + clutter_event_get_time_us@Base 43.0 + clutter_event_get_touchpad_gesture_finger_count@Base 43.0 + clutter_event_get_type@Base 43.0 + clutter_event_has_control_modifier@Base 43.0 + clutter_event_has_shift_modifier@Base 43.0 + clutter_event_im_new@Base 45~beta.1 + clutter_event_is_pointer_emulated@Base 43.0 + clutter_event_key_new@Base 45~beta.1 + clutter_event_motion_new@Base 45~beta.1 + clutter_event_pad_button_new@Base 45~beta.1 + clutter_event_pad_ring_new@Base 45~beta.1 + clutter_event_pad_strip_new@Base 45~beta.1 + clutter_event_phase_get_type@Base 43.0 + clutter_event_proximity_new@Base 45~beta.1 + clutter_event_put@Base 43.0 + clutter_event_remove_filter@Base 43.0 + clutter_event_scroll_discrete_new@Base 45~beta.1 + clutter_event_scroll_smooth_new@Base 45~beta.1 + clutter_event_sequence_get_slot@Base 43.0 + clutter_event_sequence_get_type@Base 43.0 + clutter_event_touch_cancel_new@Base 45~beta.1 + clutter_event_touch_new@Base 45~beta.1 + clutter_event_touchpad_hold_new@Base 45~beta.1 + clutter_event_touchpad_pinch_new@Base 45~beta.1 + clutter_event_touchpad_swipe_new@Base 45~beta.1 + clutter_event_type@Base 43.0 + clutter_event_type_get_type@Base 43.0 + clutter_events_pending@Base 43.0 + clutter_fixed_layout_get_type@Base 43.0 + clutter_fixed_layout_new@Base 43.0 + clutter_flow_layout_get_column_spacing@Base 43.0 + clutter_flow_layout_get_column_width@Base 43.0 + clutter_flow_layout_get_homogeneous@Base 43.0 + clutter_flow_layout_get_orientation@Base 43.0 + clutter_flow_layout_get_row_height@Base 43.0 + clutter_flow_layout_get_row_spacing@Base 43.0 + clutter_flow_layout_get_snap_to_grid@Base 43.0 + clutter_flow_layout_get_type@Base 43.0 + clutter_flow_layout_new@Base 43.0 + clutter_flow_layout_set_column_spacing@Base 43.0 + clutter_flow_layout_set_column_width@Base 43.0 + clutter_flow_layout_set_homogeneous@Base 43.0 + clutter_flow_layout_set_orientation@Base 43.0 + clutter_flow_layout_set_row_height@Base 43.0 + clutter_flow_layout_set_row_spacing@Base 43.0 + clutter_flow_layout_set_snap_to_grid@Base 43.0 + clutter_frame_clock_destroy@Base 43.0 + clutter_frame_clock_get_refresh_rate@Base 43.0 + clutter_frame_clock_get_type@Base 43.0 + clutter_frame_clock_inhibit@Base 43.0 + clutter_frame_clock_mode_get_type@Base 46~rc + clutter_frame_clock_new@Base 43.0 + clutter_frame_clock_notify_presented@Base 43.0 + clutter_frame_clock_notify_ready@Base 43.0 + clutter_frame_clock_schedule_update@Base 43.0 + clutter_frame_clock_schedule_update_now@Base 43.0 + clutter_frame_clock_set_mode@Base 46~rc + clutter_frame_clock_uninhibit@Base 43.0 + clutter_frame_get_count@Base 44~beta + clutter_frame_get_frame_deadline@Base 46~beta + clutter_frame_get_hints@Base 43.0 + clutter_frame_get_result@Base 46~beta + clutter_frame_get_target_presentation_time@Base 44~beta + clutter_frame_get_type@Base 44~beta + clutter_frame_has_result@Base 43.0 + clutter_frame_hint_get_type@Base 43.0 + clutter_frame_info_flag_get_type@Base 43.0 + clutter_frame_new@Base 44~beta + clutter_frame_ref@Base 44~beta + clutter_frame_result_get_type@Base 43.0 + clutter_frame_set_hint@Base 43.0 + clutter_frame_set_result@Base 43.0 + clutter_frame_unref@Base 44~beta + clutter_gesture_action_cancel@Base 43.0 + clutter_gesture_action_get_device@Base 43.0 + clutter_gesture_action_get_last_event@Base 43.0 + clutter_gesture_action_get_motion_coords@Base 43.0 + clutter_gesture_action_get_motion_delta@Base 43.0 + clutter_gesture_action_get_n_current_points@Base 43.0 + clutter_gesture_action_get_n_touch_points@Base 43.0 + clutter_gesture_action_get_press_coords@Base 43.0 + clutter_gesture_action_get_release_coords@Base 43.0 + clutter_gesture_action_get_sequence@Base 43.0 + clutter_gesture_action_get_threshold_trigger_distance@Base 43.0 + clutter_gesture_action_get_threshold_trigger_edge@Base 43.0 + clutter_gesture_action_get_type@Base 43.0 + clutter_gesture_action_get_velocity@Base 43.0 + clutter_gesture_action_new@Base 43.0 + clutter_gesture_action_set_n_touch_points@Base 43.0 + clutter_gesture_action_set_threshold_trigger_distance@Base 43.0 + clutter_gesture_action_set_threshold_trigger_edge@Base 43.0 + clutter_gesture_can_not_cancel@Base 46.0 + clutter_gesture_cancel@Base 46.0 + clutter_gesture_get_n_points@Base 46.0 + clutter_gesture_get_point_begin_coords@Base 46.0 + clutter_gesture_get_point_begin_coords_abs@Base 46.0 + clutter_gesture_get_point_coords@Base 46.0 + clutter_gesture_get_point_coords_abs@Base 46.0 + clutter_gesture_get_point_event@Base 46.0 + clutter_gesture_get_point_previous_coords@Base 46.0 + clutter_gesture_get_point_previous_coords_abs@Base 46.0 + clutter_gesture_get_points@Base 46.0 + clutter_gesture_get_state@Base 46.0 + clutter_gesture_get_type@Base 46.0 + clutter_gesture_reset_state_machine@Base 46.0 + clutter_gesture_set_state@Base 46.0 + clutter_gesture_state_get_type@Base 46.0 + clutter_gesture_trigger_edge_get_type@Base 43.0 + clutter_get_accessibility_enabled@Base 43.0 + clutter_get_current_event@Base 43.0 + clutter_get_current_event_time@Base 43.0 + clutter_get_debug_flags@Base 43.0 + clutter_get_default_backend@Base 43.0 + clutter_get_default_text_direction@Base 43.0 + clutter_get_font_map@Base 43.0 + clutter_get_text_direction@Base 44~beta + clutter_grab_activate@Base 46.4 + clutter_grab_dismiss@Base 43.0 + clutter_grab_get_seat_state@Base 43.0 + clutter_grab_get_type@Base 43.0 + clutter_grab_is_revoked@Base 46~rc + clutter_grab_state_get_type@Base 43.0 + clutter_grid_layout_attach@Base 43.0 + clutter_grid_layout_attach_next_to@Base 43.0 + clutter_grid_layout_get_child_at@Base 43.0 + clutter_grid_layout_get_column_homogeneous@Base 43.0 + clutter_grid_layout_get_column_spacing@Base 43.0 + clutter_grid_layout_get_orientation@Base 43.0 + clutter_grid_layout_get_row_homogeneous@Base 43.0 + clutter_grid_layout_get_row_spacing@Base 43.0 + clutter_grid_layout_get_type@Base 43.0 + clutter_grid_layout_insert_column@Base 43.0 + clutter_grid_layout_insert_next_to@Base 43.0 + clutter_grid_layout_insert_row@Base 43.0 + clutter_grid_layout_new@Base 43.0 + clutter_grid_layout_set_column_homogeneous@Base 43.0 + clutter_grid_layout_set_column_spacing@Base 43.0 + clutter_grid_layout_set_orientation@Base 43.0 + clutter_grid_layout_set_row_homogeneous@Base 43.0 + clutter_grid_layout_set_row_spacing@Base 43.0 + clutter_grid_position_get_type@Base 43.0 + clutter_image_get_texture@Base 43.0 + clutter_image_get_type@Base 43.0 + clutter_image_new@Base 43.0 + clutter_image_set_area@Base 43.0 + clutter_image_set_bytes@Base 43.0 + clutter_image_set_data@Base 43.0 + clutter_input_axis_flags_get_type@Base 43.0 + clutter_input_axis_get_type@Base 43.0 + clutter_input_capabilities_get_type@Base 43.0 + clutter_input_content_hint_flags_get_type@Base 43.0 + clutter_input_content_purpose_get_type@Base 43.0 + clutter_input_device_get_capabilities@Base 43.0 + clutter_input_device_get_device_mode@Base 43.0 + clutter_input_device_get_device_name@Base 43.0 + clutter_input_device_get_device_node@Base 43.0 + clutter_input_device_get_device_type@Base 43.0 + clutter_input_device_get_dimensions@Base 44~beta + clutter_input_device_get_group_n_modes@Base 43.0 + clutter_input_device_get_has_cursor@Base 43.0 + clutter_input_device_get_mode_switch_button_group@Base 43.0 + clutter_input_device_get_n_buttons@Base 43.0 + clutter_input_device_get_n_mode_groups@Base 43.0 + clutter_input_device_get_n_rings@Base 43.0 + clutter_input_device_get_n_strips@Base 43.0 + clutter_input_device_get_pad_feature_group@Base 43.0 + clutter_input_device_get_product_id@Base 43.0 + clutter_input_device_get_seat@Base 43.0 + clutter_input_device_get_type@Base 43.0 + clutter_input_device_get_vendor_id@Base 43.0 + clutter_input_device_is_grouped@Base 43.0 + clutter_input_device_is_mode_switch_button@Base 43.0 + clutter_input_device_pad_feature_get_type@Base 43.0 + clutter_input_device_pad_source_get_type@Base 43.0 + clutter_input_device_tool_get_axes@Base 43.0 + clutter_input_device_tool_get_id@Base 43.0 + clutter_input_device_tool_get_serial@Base 43.0 + clutter_input_device_tool_get_tool_type@Base 43.0 + clutter_input_device_tool_get_type@Base 43.0 + clutter_input_device_tool_type_get_type@Base 43.0 + clutter_input_device_type_get_type@Base 43.0 + clutter_input_focus_filter_event@Base 43.0 + clutter_input_focus_get_type@Base 43.0 + clutter_input_focus_is_focused@Base 43.0 + clutter_input_focus_process_event@Base 45~beta.1 + clutter_input_focus_reset@Base 43.0 + clutter_input_focus_set_can_show_preedit@Base 43.0 + clutter_input_focus_set_content_hints@Base 43.0 + clutter_input_focus_set_content_purpose@Base 43.0 + clutter_input_focus_set_cursor_location@Base 43.0 + clutter_input_focus_set_input_panel_state@Base 43.0 + clutter_input_focus_set_surrounding@Base 43.0 + clutter_input_method_commit@Base 43.0 + clutter_input_method_delete_surrounding@Base 43.0 + clutter_input_method_focus_in@Base 43.0 + clutter_input_method_focus_out@Base 43.0 + clutter_input_method_forward_key@Base 43.0 + clutter_input_method_get_type@Base 43.0 + clutter_input_method_notify_key_event@Base 43.0 + clutter_input_method_request_surrounding@Base 43.0 + clutter_input_method_set_input_panel_state@Base 43.0 + clutter_input_method_set_preedit_text@Base 43.0 + clutter_input_mode_get_type@Base 43.0 + clutter_input_panel_state_get_type@Base 43.0 + clutter_input_pointer_a11y_update@Base 43.0 + clutter_interval_clone@Base 43.0 + clutter_interval_compute@Base 43.0 + clutter_interval_compute_value@Base 43.0 + clutter_interval_get_final_value@Base 43.0 + clutter_interval_get_initial_value@Base 43.0 + clutter_interval_get_interval@Base 43.0 + clutter_interval_get_type@Base 43.0 + clutter_interval_get_value_type@Base 43.0 + clutter_interval_is_valid@Base 43.0 + clutter_interval_new@Base 43.0 + clutter_interval_new_with_values@Base 43.0 + clutter_interval_peek_final_value@Base 43.0 + clutter_interval_peek_initial_value@Base 43.0 + clutter_interval_register_progress_func@Base 43.0 + clutter_interval_set_final@Base 43.0 + clutter_interval_set_final_value@Base 43.0 + clutter_interval_set_initial@Base 43.0 + clutter_interval_set_initial_value@Base 43.0 + clutter_interval_set_interval@Base 43.0 + clutter_interval_validate@Base 43.0 + clutter_key_state_get_type@Base 43.0 + clutter_keyframe_transition_clear@Base 43.0 + clutter_keyframe_transition_get_key_frame@Base 43.0 + clutter_keyframe_transition_get_n_key_frames@Base 43.0 + clutter_keyframe_transition_get_type@Base 43.0 + clutter_keyframe_transition_new@Base 43.0 + clutter_keyframe_transition_set@Base 43.0 + clutter_keyframe_transition_set_key_frame@Base 43.0 + clutter_keyframe_transition_set_key_frames@Base 43.0 + clutter_keyframe_transition_set_modes@Base 43.0 + clutter_keyframe_transition_set_values@Base 43.0 + clutter_keymap_get_caps_lock_state@Base 43.0 + clutter_keymap_get_num_lock_state@Base 43.0 + clutter_keymap_get_type@Base 43.0 + clutter_keymap_set_lock_modifier_state@Base 43.0 + clutter_keysym_to_unicode@Base 43.0 + clutter_keyval_convert_case@Base 44~beta + clutter_keyval_name@Base 44~beta + clutter_layer_node_get_type@Base 43.0 + clutter_layer_node_new_to_framebuffer@Base 43.0 + clutter_layout_manager_allocate@Base 43.0 + clutter_layout_manager_child_get@Base 43.0 + clutter_layout_manager_child_get_property@Base 43.0 + clutter_layout_manager_child_set@Base 43.0 + clutter_layout_manager_child_set_property@Base 43.0 + clutter_layout_manager_find_child_property@Base 43.0 + clutter_layout_manager_get_child_meta@Base 43.0 + clutter_layout_manager_get_preferred_height@Base 43.0 + clutter_layout_manager_get_preferred_width@Base 43.0 + clutter_layout_manager_get_type@Base 43.0 + clutter_layout_manager_layout_changed@Base 43.0 + clutter_layout_manager_list_child_properties@Base 43.0 + clutter_layout_manager_set_container@Base 43.0 + clutter_layout_meta_get_actor@Base 46~beta + clutter_layout_meta_get_container@Base 46~beta + clutter_layout_meta_get_manager@Base 43.0 + clutter_layout_meta_get_type@Base 43.0 + clutter_layout_meta_is_for@Base 46~beta + clutter_long_press_state_get_type@Base 43.0 + clutter_margin_copy@Base 43.0 + clutter_margin_free@Base 43.0 + clutter_margin_get_type@Base 43.0 + clutter_margin_new@Base 43.0 + clutter_modifier_type_get_type@Base 43.0 + clutter_offscreen_effect_create_texture@Base 43.0 + clutter_offscreen_effect_get_pipeline@Base 43.0 + clutter_offscreen_effect_get_target_size@Base 43.0 + clutter_offscreen_effect_get_texture@Base 43.0 + clutter_offscreen_effect_get_type@Base 43.0 + clutter_offscreen_effect_paint_target@Base 43.0 + clutter_offscreen_redirect_get_type@Base 43.0 + clutter_orientation_get_type@Base 43.0 + clutter_page_turn_effect_get_angle@Base 43.0 + clutter_page_turn_effect_get_period@Base 43.0 + clutter_page_turn_effect_get_radius@Base 43.0 + clutter_page_turn_effect_get_type@Base 43.0 + clutter_page_turn_effect_new@Base 43.0 + clutter_page_turn_effect_set_angle@Base 43.0 + clutter_page_turn_effect_set_period@Base 43.0 + clutter_page_turn_effect_set_radius@Base 43.0 + clutter_paint_context_destroy@Base 43.0 + clutter_paint_context_get_frame@Base 44.1 + clutter_paint_context_get_framebuffer@Base 43.0 + clutter_paint_context_get_paint_flags@Base 43.0 + clutter_paint_context_get_redraw_clip@Base 43.0 + clutter_paint_context_get_stage_view@Base 43.0 + clutter_paint_context_get_type@Base 43.0 + clutter_paint_context_new_for_framebuffer@Base 43.0 + clutter_paint_context_pop_framebuffer@Base 43.0 + clutter_paint_context_push_framebuffer@Base 43.0 + clutter_paint_context_ref@Base 43.0 + clutter_paint_context_unref@Base 43.0 + clutter_paint_flag_get_type@Base 43.0 + clutter_paint_node_add_child@Base 43.0 + clutter_paint_node_add_multitexture_rectangle@Base 43.0 + clutter_paint_node_add_primitive@Base 43.0 + clutter_paint_node_add_rectangle@Base 43.0 + clutter_paint_node_add_rectangles@Base 43.0 + clutter_paint_node_add_texture_rectangle@Base 43.0 + clutter_paint_node_add_texture_rectangles@Base 43.0 + clutter_paint_node_get_framebuffer@Base 43.0 + clutter_paint_node_get_type@Base 43.0 + clutter_paint_node_paint@Base 43.0 + clutter_paint_node_ref@Base 43.0 + clutter_paint_node_set_name@Base 43.0 + clutter_paint_node_set_static_name@Base 43.0 + clutter_paint_node_unref@Base 43.0 + clutter_paint_volume_copy@Base 43.0 + clutter_paint_volume_free@Base 43.0 + clutter_paint_volume_get_depth@Base 43.0 + clutter_paint_volume_get_height@Base 43.0 + clutter_paint_volume_get_origin@Base 43.0 + clutter_paint_volume_get_type@Base 43.0 + clutter_paint_volume_get_width@Base 43.0 + clutter_paint_volume_set_depth@Base 43.0 + clutter_paint_volume_set_from_allocation@Base 43.0 + clutter_paint_volume_set_height@Base 43.0 + clutter_paint_volume_set_origin@Base 43.0 + clutter_paint_volume_set_width@Base 43.0 + clutter_paint_volume_union@Base 43.0 + clutter_paint_volume_union_box@Base 43.0 + clutter_pan_action_get_acceleration_factor@Base 43.0 + clutter_pan_action_get_constrained_motion_delta@Base 43.0 + clutter_pan_action_get_deceleration@Base 43.0 + clutter_pan_action_get_interpolate@Base 43.0 + clutter_pan_action_get_interpolated_coords@Base 43.0 + clutter_pan_action_get_interpolated_delta@Base 43.0 + clutter_pan_action_get_motion_coords@Base 43.0 + clutter_pan_action_get_motion_delta@Base 43.0 + clutter_pan_action_get_pan_axis@Base 43.0 + clutter_pan_action_get_type@Base 43.0 + clutter_pan_action_new@Base 43.0 + clutter_pan_action_set_acceleration_factor@Base 43.0 + clutter_pan_action_set_deceleration@Base 43.0 + clutter_pan_action_set_interpolate@Base 43.0 + clutter_pan_action_set_pan_axis@Base 43.0 + clutter_pan_axis_get_type@Base 43.0 + clutter_param_color_get_type@Base 43.0 + clutter_param_spec_color@Base 43.0 + clutter_perspective_get_type@Base 43.0 + clutter_pick_context_destroy@Base 43.0 + clutter_pick_context_get_mode@Base 43.0 + clutter_pick_context_get_transform@Base 43.0 + clutter_pick_context_get_type@Base 43.0 + clutter_pick_context_log_overlap@Base 43.0 + clutter_pick_context_log_pick@Base 43.0 + clutter_pick_context_pop_clip@Base 43.0 + clutter_pick_context_pop_transform@Base 43.0 + clutter_pick_context_push_clip@Base 43.0 + clutter_pick_context_push_transform@Base 43.0 + clutter_pick_context_ref@Base 43.0 + clutter_pick_context_unref@Base 43.0 + clutter_pick_debug_flag_get_type@Base 43.0 + clutter_pick_mode_get_type@Base 43.0 + clutter_pipeline_node_get_type@Base 43.0 + clutter_pipeline_node_new@Base 43.0 + clutter_pointer_a11y_dwell_click_type_get_type@Base 43.0 + clutter_pointer_a11y_dwell_direction_get_type@Base 43.0 + clutter_pointer_a11y_dwell_mode_get_type@Base 43.0 + clutter_pointer_a11y_flags_get_type@Base 43.0 + clutter_pointer_a11y_timeout_type_get_type@Base 43.0 + clutter_preedit_reset_mode_get_type@Base 43.0 + clutter_property_transition_get_property_name@Base 43.0 + clutter_property_transition_get_type@Base 43.0 + clutter_property_transition_new@Base 43.0 + clutter_property_transition_new_for_actor@Base 43.0 + clutter_property_transition_set_property_name@Base 43.0 + clutter_remove_debug_flags@Base 43.0 + clutter_repaint_flags_get_type@Base 43.0 + clutter_request_mode_get_type@Base 43.0 + clutter_root_node_get_type@Base 43.0 + clutter_root_node_new@Base 43.0 + clutter_rotate_action_get_type@Base 43.0 + clutter_rotate_action_new@Base 43.0 + clutter_rotate_axis_get_type@Base 43.0 + clutter_scaling_filter_get_type@Base 43.0 + clutter_scroll_actor_get_scroll_mode@Base 43.0 + clutter_scroll_actor_get_type@Base 43.0 + clutter_scroll_actor_new@Base 43.0 + clutter_scroll_actor_scroll_to_point@Base 43.0 + clutter_scroll_actor_scroll_to_rect@Base 43.0 + clutter_scroll_actor_set_scroll_mode@Base 43.0 + clutter_scroll_direction_get_type@Base 43.0 + clutter_scroll_finish_flags_get_type@Base 43.0 + clutter_scroll_mode_get_type@Base 43.0 + clutter_scroll_source_get_type@Base 43.0 + clutter_seat_bell_notify@Base 43.0 + clutter_seat_create_virtual_device@Base 43.0 + clutter_seat_destroy@Base 43.0 + clutter_seat_ensure_a11y_state@Base 43.0 + clutter_seat_get_keyboard@Base 43.0 + clutter_seat_get_keymap@Base 43.0 + clutter_seat_get_name@Base 45~beta.1 + clutter_seat_get_pointer@Base 43.0 + clutter_seat_get_pointer_a11y_settings@Base 43.0 + clutter_seat_get_supported_virtual_device_types@Base 43.0 + clutter_seat_get_touch_mode@Base 43.0 + clutter_seat_get_type@Base 43.0 + clutter_seat_handle_event_post@Base 43.0 + clutter_seat_has_touchscreen@Base 43.0 + clutter_seat_inhibit_unfocus@Base 43.0 + clutter_seat_init_pointer_position@Base 45~beta.1 + clutter_seat_is_unfocus_inhibited@Base 43.0 + clutter_seat_list_devices@Base 43.0 + clutter_seat_query_state@Base 43.0 + clutter_seat_set_pointer_a11y_dwell_click_type@Base 43.0 + clutter_seat_set_pointer_a11y_settings@Base 43.0 + clutter_seat_uninhibit_unfocus@Base 43.0 + clutter_seat_warp_pointer@Base 43.0 + clutter_settings_get_default@Base 43.0 + clutter_settings_get_type@Base 43.0 + clutter_shader_effect_get_program@Base 43.0 + clutter_shader_effect_get_shader@Base 43.0 + clutter_shader_effect_get_type@Base 43.0 + clutter_shader_effect_new@Base 43.0 + clutter_shader_effect_set_shader_source@Base 43.0 + clutter_shader_effect_set_uniform@Base 43.0 + clutter_shader_effect_set_uniform_value@Base 43.0 + clutter_shader_float_get_type@Base 43.0 + clutter_shader_int_get_type@Base 43.0 + clutter_shader_matrix_get_type@Base 43.0 + clutter_shader_type_get_type@Base 43.0 + clutter_snap_constraint_get_edges@Base 43.0 + clutter_snap_constraint_get_offset@Base 43.0 + clutter_snap_constraint_get_source@Base 43.0 + clutter_snap_constraint_get_type@Base 43.0 + clutter_snap_constraint_new@Base 43.0 + clutter_snap_constraint_set_edges@Base 43.0 + clutter_snap_constraint_set_offset@Base 43.0 + clutter_snap_constraint_set_source@Base 43.0 + clutter_snap_edge_get_type@Base 43.0 + clutter_stage_capture_view_into@Base 43.0 + clutter_stage_clear_stage_views@Base 43.0 + clutter_stage_ensure_viewport@Base 43.0 + clutter_stage_get_actor_at_pos@Base 43.0 + clutter_stage_get_capture_final_size@Base 43.0 + clutter_stage_get_device_actor@Base 43.0 + clutter_stage_get_device_coords@Base 43.0 + clutter_stage_get_event_actor@Base 43.0 + clutter_stage_get_frame_counter@Base 43.0 + clutter_stage_get_grab_actor@Base 43.0 + clutter_stage_get_key_focus@Base 43.0 + clutter_stage_get_perspective@Base 43.0 + clutter_stage_get_title@Base 43.0 + clutter_stage_get_type@Base 43.0 + clutter_stage_get_view_at@Base 43.0 + clutter_stage_grab@Base 43.0 + clutter_stage_grab_inactive@Base 46.4 + clutter_stage_grab_input_only_inactive@Base 46.4 + clutter_stage_handle_event@Base 45~beta.1 + clutter_stage_is_redraw_queued_on_view@Base 43.0 + clutter_stage_manager_get_default@Base 43.0 + clutter_stage_manager_get_default_stage@Base 43.0 + clutter_stage_manager_get_type@Base 43.0 + clutter_stage_manager_list_stages@Base 43.0 + clutter_stage_manager_peek_stages@Base 43.0 + clutter_stage_notify_action_implicit_grab@Base 44~beta + clutter_stage_paint_to_buffer@Base 43.0 + clutter_stage_paint_to_content@Base 43.0 + clutter_stage_paint_to_framebuffer@Base 43.0 + clutter_stage_paint_view@Base 43.0 + clutter_stage_peek_stage_views@Base 43.0 + clutter_stage_pointing_input_foreach@Base 45~rc + clutter_stage_process_event@Base 45~beta.1 + clutter_stage_read_pixels@Base 43.0 + clutter_stage_schedule_update@Base 43.0 + clutter_stage_set_key_focus@Base 43.0 + clutter_stage_set_title@Base 43.0 + clutter_stage_update_device@Base 43.0 + clutter_stage_view_accumulate_redraw_clip@Base 43.0 + clutter_stage_view_add_redraw_clip@Base 43.0 + clutter_stage_view_after_paint@Base 43.0 + clutter_stage_view_assign_next_scanout@Base 43.0 + clutter_stage_view_before_swap_buffer@Base 43.0 + clutter_stage_view_destroy@Base 43.0 + clutter_stage_view_get_default_paint_flags@Base 45~beta.1 + clutter_stage_view_get_frame_clock@Base 43.0 + clutter_stage_view_get_framebuffer@Base 43.0 + clutter_stage_view_get_layout@Base 43.0 + clutter_stage_view_get_offscreen_transformation_matrix@Base 43.0 + clutter_stage_view_get_onscreen@Base 43.0 + clutter_stage_view_get_refresh_rate@Base 43.0 + clutter_stage_view_get_scale@Base 43.0 + clutter_stage_view_get_type@Base 43.0 + clutter_stage_view_has_shadowfb@Base 43.0 + clutter_stage_view_invalidate_offscreen_blit_pipeline@Base 43.0 + clutter_stage_view_notify_presented@Base 43.0 + clutter_stage_view_notify_ready@Base 43.0 + clutter_stage_view_peek_scanout@Base 43.0 + clutter_stage_view_schedule_update@Base 43.0 + clutter_stage_view_schedule_update_now@Base 44~rc + clutter_stage_view_take_accumulated_redraw_clip@Base 43.0 + clutter_stage_view_take_scanout@Base 43.0 + clutter_stage_view_transform_rect_to_onscreen@Base 43.0 + clutter_stage_window_get_type@Base 43.0 + clutter_step_mode_get_type@Base 43.0 + clutter_swipe_action_get_type@Base 43.0 + clutter_swipe_action_new@Base 43.0 + clutter_swipe_direction_get_type@Base 43.0 + clutter_tap_action_get_type@Base 43.0 + clutter_tap_action_new@Base 43.0 + clutter_text_activate@Base 43.0 + clutter_text_buffer_delete_text@Base 43.0 + clutter_text_buffer_emit_deleted_text@Base 43.0 + clutter_text_buffer_emit_inserted_text@Base 43.0 + clutter_text_buffer_get_bytes@Base 43.0 + clutter_text_buffer_get_length@Base 43.0 + clutter_text_buffer_get_max_length@Base 43.0 + clutter_text_buffer_get_text@Base 43.0 + clutter_text_buffer_get_type@Base 43.0 + clutter_text_buffer_insert_text@Base 43.0 + clutter_text_buffer_new@Base 43.0 + clutter_text_buffer_new_with_text@Base 43.0 + clutter_text_buffer_set_max_length@Base 43.0 + clutter_text_buffer_set_text@Base 43.0 + clutter_text_coords_to_position@Base 43.0 + clutter_text_delete_chars@Base 43.0 + clutter_text_delete_selection@Base 43.0 + clutter_text_delete_text@Base 43.0 + clutter_text_direction_get_type@Base 43.0 + clutter_text_get_activatable@Base 43.0 + clutter_text_get_attributes@Base 43.0 + clutter_text_get_buffer@Base 43.0 + clutter_text_get_chars@Base 43.0 + clutter_text_get_color@Base 43.0 + clutter_text_get_cursor_color@Base 43.0 + clutter_text_get_cursor_position@Base 43.0 + clutter_text_get_cursor_rect@Base 43.0 + clutter_text_get_cursor_size@Base 43.0 + clutter_text_get_cursor_visible@Base 43.0 + clutter_text_get_editable@Base 43.0 + clutter_text_get_ellipsize@Base 43.0 + clutter_text_get_font_description@Base 43.0 + clutter_text_get_font_name@Base 43.0 + clutter_text_get_input_hints@Base 43.0 + clutter_text_get_input_purpose@Base 43.0 + clutter_text_get_justify@Base 43.0 + clutter_text_get_layout@Base 43.0 + clutter_text_get_layout_offsets@Base 43.0 + clutter_text_get_line_alignment@Base 43.0 + clutter_text_get_line_wrap@Base 43.0 + clutter_text_get_line_wrap_mode@Base 43.0 + clutter_text_get_max_length@Base 43.0 + clutter_text_get_password_char@Base 43.0 + clutter_text_get_selectable@Base 43.0 + clutter_text_get_selected_text_color@Base 43.0 + clutter_text_get_selection@Base 43.0 + clutter_text_get_selection_bound@Base 43.0 + clutter_text_get_selection_color@Base 43.0 + clutter_text_get_single_line_mode@Base 43.0 + clutter_text_get_text@Base 43.0 + clutter_text_get_type@Base 43.0 + clutter_text_get_use_markup@Base 43.0 + clutter_text_has_preedit@Base 43.0 + clutter_text_insert_text@Base 43.0 + clutter_text_insert_unichar@Base 43.0 + clutter_text_new@Base 43.0 + clutter_text_new_full@Base 43.0 + clutter_text_new_with_buffer@Base 43.0 + clutter_text_new_with_text@Base 43.0 + clutter_text_node_get_type@Base 43.0 + clutter_text_node_new@Base 43.0 + clutter_text_position_to_coords@Base 43.0 + clutter_text_set_activatable@Base 43.0 + clutter_text_set_attributes@Base 43.0 + clutter_text_set_buffer@Base 43.0 + clutter_text_set_color@Base 43.0 + clutter_text_set_cursor_color@Base 43.0 + clutter_text_set_cursor_position@Base 43.0 + clutter_text_set_cursor_size@Base 43.0 + clutter_text_set_cursor_visible@Base 43.0 + clutter_text_set_editable@Base 43.0 + clutter_text_set_ellipsize@Base 43.0 + clutter_text_set_font_description@Base 43.0 + clutter_text_set_font_name@Base 43.0 + clutter_text_set_input_hints@Base 43.0 + clutter_text_set_input_purpose@Base 43.0 + clutter_text_set_justify@Base 43.0 + clutter_text_set_line_alignment@Base 43.0 + clutter_text_set_line_wrap@Base 43.0 + clutter_text_set_line_wrap_mode@Base 43.0 + clutter_text_set_markup@Base 43.0 + clutter_text_set_max_length@Base 43.0 + clutter_text_set_password_char@Base 43.0 + clutter_text_set_preedit_string@Base 43.0 + clutter_text_set_selectable@Base 43.0 + clutter_text_set_selected_text_color@Base 43.0 + clutter_text_set_selection@Base 43.0 + clutter_text_set_selection_bound@Base 43.0 + clutter_text_set_selection_color@Base 43.0 + clutter_text_set_single_line_mode@Base 43.0 + clutter_text_set_text@Base 43.0 + clutter_text_set_use_markup@Base 43.0 + clutter_texture_content_get_texture@Base 43.0 + clutter_texture_content_get_type@Base 43.0 + clutter_texture_content_new_from_texture@Base 43.0 + clutter_texture_node_get_type@Base 43.0 + clutter_texture_node_new@Base 43.0 + clutter_threads_add_idle@Base 43.0 + clutter_threads_add_idle_full@Base 43.0 + clutter_threads_add_repaint_func@Base 43.0 + clutter_threads_add_repaint_func_full@Base 43.0 + clutter_threads_add_timeout@Base 43.0 + clutter_threads_add_timeout_full@Base 43.0 + clutter_threads_remove_repaint_func@Base 43.0 + clutter_timeline_add_marker@Base 43.0 + clutter_timeline_add_marker_at_time@Base 43.0 + clutter_timeline_advance@Base 43.0 + clutter_timeline_advance_to_marker@Base 43.0 + clutter_timeline_direction_get_type@Base 43.0 + clutter_timeline_get_actor@Base 43.0 + clutter_timeline_get_auto_reverse@Base 43.0 + clutter_timeline_get_cubic_bezier_progress@Base 43.0 + clutter_timeline_get_current_repeat@Base 43.0 + clutter_timeline_get_delay@Base 43.0 + clutter_timeline_get_delta@Base 43.0 + clutter_timeline_get_direction@Base 43.0 + clutter_timeline_get_duration@Base 43.0 + clutter_timeline_get_duration_hint@Base 43.0 + clutter_timeline_get_elapsed_time@Base 43.0 + clutter_timeline_get_frame_clock@Base 43.0 + clutter_timeline_get_progress@Base 43.0 + clutter_timeline_get_progress_mode@Base 43.0 + clutter_timeline_get_repeat_count@Base 43.0 + clutter_timeline_get_step_progress@Base 43.0 + clutter_timeline_get_type@Base 43.0 + clutter_timeline_has_marker@Base 43.0 + clutter_timeline_is_playing@Base 43.0 + clutter_timeline_list_markers@Base 43.0 + clutter_timeline_new_for_actor@Base 43.0 + clutter_timeline_new_for_frame_clock@Base 43.0 + clutter_timeline_pause@Base 43.0 + clutter_timeline_remove_marker@Base 43.0 + clutter_timeline_rewind@Base 43.0 + clutter_timeline_set_actor@Base 43.0 + clutter_timeline_set_auto_reverse@Base 43.0 + clutter_timeline_set_cubic_bezier_progress@Base 43.0 + clutter_timeline_set_delay@Base 43.0 + clutter_timeline_set_direction@Base 43.0 + clutter_timeline_set_duration@Base 43.0 + clutter_timeline_set_frame_clock@Base 43.0 + clutter_timeline_set_progress_func@Base 43.0 + clutter_timeline_set_progress_mode@Base 43.0 + clutter_timeline_set_repeat_count@Base 43.0 + clutter_timeline_set_step_progress@Base 43.0 + clutter_timeline_skip@Base 43.0 + clutter_timeline_start@Base 43.0 + clutter_timeline_stop@Base 43.0 + clutter_touchpad_gesture_phase_get_type@Base 43.0 + clutter_transform_node_get_type@Base 43.0 + clutter_transform_node_new@Base 43.0 + clutter_transition_get_animatable@Base 43.0 + clutter_transition_get_interval@Base 43.0 + clutter_transition_get_remove_on_complete@Base 43.0 + clutter_transition_get_type@Base 43.0 + clutter_transition_group_add_transition@Base 43.0 + clutter_transition_group_get_type@Base 43.0 + clutter_transition_group_new@Base 43.0 + clutter_transition_group_remove_all@Base 43.0 + clutter_transition_group_remove_transition@Base 43.0 + clutter_transition_set_animatable@Base 43.0 + clutter_transition_set_from@Base 43.0 + clutter_transition_set_from_value@Base 43.0 + clutter_transition_set_interval@Base 43.0 + clutter_transition_set_remove_on_complete@Base 43.0 + clutter_transition_set_to@Base 43.0 + clutter_transition_set_to_value@Base 43.0 + clutter_unichar_direction@Base 46~beta + clutter_unicode_to_keysym@Base 43.0 + clutter_value_dup_paint_node@Base 43.0 + clutter_value_get_color@Base 43.0 + clutter_value_get_paint_node@Base 43.0 + clutter_value_get_shader_float@Base 43.0 + clutter_value_get_shader_int@Base 43.0 + clutter_value_get_shader_matrix@Base 43.0 + clutter_value_set_color@Base 43.0 + clutter_value_set_paint_node@Base 43.0 + clutter_value_set_shader_float@Base 43.0 + clutter_value_set_shader_int@Base 43.0 + clutter_value_set_shader_matrix@Base 43.0 + clutter_value_take_paint_node@Base 43.0 + clutter_virtual_device_type_get_type@Base 43.0 + clutter_virtual_input_device_get_device_type@Base 43.0 + clutter_virtual_input_device_get_seat@Base 43.0 + clutter_virtual_input_device_get_type@Base 43.0 + clutter_virtual_input_device_notify_absolute_motion@Base 43.0 + clutter_virtual_input_device_notify_button@Base 43.0 + clutter_virtual_input_device_notify_discrete_scroll@Base 43.0 + clutter_virtual_input_device_notify_key@Base 43.0 + clutter_virtual_input_device_notify_keyval@Base 43.0 + clutter_virtual_input_device_notify_relative_motion@Base 43.0 + clutter_virtual_input_device_notify_scroll_continuous@Base 43.0 + clutter_virtual_input_device_notify_touch_down@Base 43.0 + clutter_virtual_input_device_notify_touch_motion@Base 43.0 + clutter_virtual_input_device_notify_touch_up@Base 43.0 + clutter_zoom_action_get_focal_point@Base 43.0 + clutter_zoom_action_get_transformed_focal_point@Base 43.0 + clutter_zoom_action_get_type@Base 43.0 + clutter_zoom_action_new@Base 43.0 +libmutter-cogl-14.so.0 libmutter-14-0 #MINVER# +* Build-Depends-Package: libmutter-14-dev + _cogl_atlas_add_reorganize_callback@Base 43.0 + _cogl_atlas_new@Base 43.0 + _cogl_atlas_reserve_space@Base 43.0 + _cogl_atlas_texture_add_reorganize_callback@Base 43.0 + _cogl_atlas_texture_remove_reorganize_callback@Base 43.0 + _cogl_bitmask_clear_all_in_array@Base 43.0 + _cogl_bitmask_foreach@Base 43.0 + _cogl_bitmask_get_from_array@Base 43.0 + _cogl_bitmask_popcount_in_array@Base 43.0 + _cogl_bitmask_popcount_upto_in_array@Base 43.0 + _cogl_bitmask_set_bits@Base 43.0 + _cogl_bitmask_set_in_array@Base 43.0 + _cogl_bitmask_set_range_in_array@Base 43.0 + _cogl_bitmask_xor_bits@Base 43.0 + _cogl_clip_stack_push_primitive@Base 43.0 + _cogl_clip_stack_push_rectangle@Base 43.0 + _cogl_context_get_default@Base 43.0 + _cogl_debug_flags@Base 43.0 + _cogl_debug_instances@Base 43.0 + _cogl_framebuffer_flush_journal@Base 43.0 + _cogl_onscreen_notify_complete@Base 43.0 + _cogl_onscreen_notify_frame_sync@Base 43.0 + _cogl_system_error_quark@Base 43.0 + _cogl_texture_get_format@Base 43.0 + _cogl_texture_set_region@Base 43.0 + _cogl_winsys_egl_ensure_current@Base 43.0 + _cogl_winsys_egl_get_vtable@Base 43.0 + _cogl_winsys_egl_make_current@Base 43.0 + _cogl_winsys_egl_renderer_connect_common@Base 43.0 + _cogl_winsys_egl_xlib_get_vtable@Base 43.0 + _cogl_winsys_error_quark@Base 43.0 + _cogl_winsys_glx_get_vtable@Base 43.0 + cogl_atlas_get_type@Base 46~beta + cogl_atlas_texture_get_type@Base 46~beta + cogl_atlas_texture_new_from_bitmap@Base 43.0 + cogl_atlas_texture_new_from_data@Base 43.0 + cogl_atlas_texture_new_with_size@Base 43.0 + cogl_attribute_buffer_get_type@Base 46~beta + cogl_attribute_buffer_new@Base 43.0 + cogl_attribute_buffer_new_with_size@Base 43.0 + cogl_attribute_get_buffer@Base 43.0 + cogl_attribute_get_normalized@Base 43.0 + cogl_attribute_get_type@Base 46~beta + cogl_attribute_new@Base 43.0 + cogl_attribute_new_const_1f@Base 43.0 + cogl_attribute_new_const_2f@Base 43.0 + cogl_attribute_new_const_2fv@Base 43.0 + cogl_attribute_new_const_2x2fv@Base 43.0 + cogl_attribute_new_const_3f@Base 43.0 + cogl_attribute_new_const_3fv@Base 43.0 + cogl_attribute_new_const_3x3fv@Base 43.0 + cogl_attribute_new_const_4f@Base 43.0 + cogl_attribute_new_const_4fv@Base 43.0 + cogl_attribute_new_const_4x4fv@Base 43.0 + cogl_attribute_set_buffer@Base 43.0 + cogl_attribute_set_normalized@Base 43.0 + cogl_bitmap_error_quark@Base 43.0 + cogl_bitmap_get_buffer@Base 43.0 + cogl_bitmap_get_format@Base 43.0 + cogl_bitmap_get_height@Base 43.0 + cogl_bitmap_get_rowstride@Base 43.0 + cogl_bitmap_get_type@Base 46~beta + cogl_bitmap_get_width@Base 43.0 + cogl_bitmap_new_for_data@Base 43.0 + cogl_bitmap_new_from_buffer@Base 43.0 + cogl_bitmap_new_with_size@Base 43.0 + cogl_blend_string_error_quark@Base 43.0 + cogl_blit_framebuffer@Base 43.0 + cogl_buffer_access_get_type@Base 46~beta + cogl_buffer_bind_target_get_type@Base 46~beta + cogl_buffer_error_get_type@Base 46~beta + cogl_buffer_get_size@Base 43.0 + cogl_buffer_get_type@Base 46~beta + cogl_buffer_get_update_hint@Base 43.0 + cogl_buffer_map@Base 43.0 + cogl_buffer_map_hint_get_type@Base 46~beta + cogl_buffer_map_range@Base 43.0 + cogl_buffer_set_data@Base 43.0 + cogl_buffer_set_update_hint@Base 43.0 + cogl_buffer_unmap@Base 43.0 + cogl_buffer_update_hint_get_type@Base 46~beta + cogl_clutter_winsys_has_feature@Base 46~beta + cogl_color_copy@Base 43.0 + cogl_color_equal@Base 43.0 + cogl_color_free@Base 43.0 + cogl_color_get_alpha@Base 43.0 + cogl_color_get_blue@Base 43.0 + cogl_color_get_green@Base 43.0 + cogl_color_get_red@Base 43.0 + cogl_color_get_type@Base 46~beta + cogl_color_init_from_4f@Base 43.0 + cogl_color_init_from_hsl@Base 43.0 + cogl_color_premultiply@Base 43.0 + cogl_color_to_hsl@Base 43.0 + cogl_context_format_supports_upload@Base 43.0 + cogl_context_free_timestamp_query@Base 43.0 + cogl_context_get_display@Base 43.0 + cogl_context_get_gpu_time_ns@Base 43.0 + cogl_context_get_latest_sync_fd@Base 46.1 + cogl_context_get_named_pipeline@Base 43.0 + cogl_context_get_renderer@Base 43.0 + cogl_context_get_type@Base 46~beta + cogl_context_is_hardware_accelerated@Base 43.0 + cogl_context_new@Base 43.0 + cogl_context_set_named_pipeline@Base 43.0 + cogl_context_timestamp_query_get_time_ns@Base 43.0 + cogl_cpu_caps@Base 46~beta + cogl_create_program@Base 43.0 + cogl_create_shader@Base 43.0 + cogl_debug_matrix_entry_print@Base 43.0 + cogl_depth_state_get_range@Base 43.0 + cogl_depth_state_get_test_enabled@Base 43.0 + cogl_depth_state_get_test_function@Base 43.0 + cogl_depth_state_get_write_enabled@Base 43.0 + cogl_depth_state_init@Base 43.0 + cogl_depth_state_set_range@Base 43.0 + cogl_depth_state_set_test_enabled@Base 43.0 + cogl_depth_state_set_test_function@Base 43.0 + cogl_depth_state_set_write_enabled@Base 43.0 + cogl_display_egl_determine_attributes@Base 46~beta + cogl_display_get_renderer@Base 43.0 + cogl_display_get_type@Base 46~beta + cogl_display_new@Base 43.0 + cogl_display_set_onscreen_template@Base 43.0 + cogl_display_setup@Base 43.0 + cogl_dma_buf_handle_free@Base 43.0 + cogl_dma_buf_handle_get_bpp@Base 43.0 + cogl_dma_buf_handle_get_fd@Base 43.0 + cogl_dma_buf_handle_get_framebuffer@Base 43.0 + cogl_dma_buf_handle_get_height@Base 43.0 + cogl_dma_buf_handle_get_offset@Base 43.0 + cogl_dma_buf_handle_get_stride@Base 43.0 + cogl_dma_buf_handle_get_width@Base 43.0 + cogl_dma_buf_handle_mmap@Base 43.0 + cogl_dma_buf_handle_munmap@Base 43.0 + cogl_dma_buf_handle_new@Base 43.0 + cogl_dma_buf_handle_sync_read_end@Base 43.0 + cogl_dma_buf_handle_sync_read_start@Base 43.0 + cogl_egl_context_get_egl_display@Base 43.0 + cogl_egl_texture_2d_new_from_image@Base 43.0 + cogl_fence_closure_get_user_data@Base 43.0 + cogl_float_to_float16_rtz_slow@Base 46~beta + cogl_float_to_half_slow@Base 46~beta + cogl_flush@Base 43.0 + cogl_foreach_feature@Base 43.0 + cogl_frame_closure_get_type@Base 46~beta + cogl_frame_info_get_frame_counter@Base 43.0 + cogl_frame_info_get_global_frame_counter@Base 43.0 + cogl_frame_info_get_is_symbolic@Base 43.0 + cogl_frame_info_get_presentation_time_us@Base 43.0 + cogl_frame_info_get_refresh_rate@Base 43.0 + cogl_frame_info_get_rendering_duration_ns@Base 43.0 + cogl_frame_info_get_sequence@Base 43.0 + cogl_frame_info_get_time_before_buffer_swap_us@Base 43.0 + cogl_frame_info_get_type@Base 46~beta + cogl_frame_info_has_valid_gpu_rendering_duration@Base 46.0 + cogl_frame_info_is_hw_clock@Base 43.0 + cogl_frame_info_is_vsync@Base 43.0 + cogl_frame_info_is_zero_copy@Base 43.0 + cogl_frame_info_new@Base 43.0 + cogl_frame_info_set_target_presentation_time@Base 44~beta + cogl_framebuffer_add_fence_callback@Base 43.0 + cogl_framebuffer_allocate@Base 43.0 + cogl_framebuffer_cancel_fence_callback@Base 43.0 + cogl_framebuffer_clear4f@Base 43.0 + cogl_framebuffer_clear@Base 43.0 + cogl_framebuffer_create_timestamp_query@Base 43.0 + cogl_framebuffer_discard_buffers@Base 43.0 + cogl_framebuffer_draw_multitextured_rectangle@Base 43.0 + cogl_framebuffer_draw_rectangle@Base 43.0 + cogl_framebuffer_draw_rectangles@Base 43.0 + cogl_framebuffer_draw_textured_rectangle@Base 43.0 + cogl_framebuffer_draw_textured_rectangles@Base 43.0 + cogl_framebuffer_error_quark@Base 43.0 + cogl_framebuffer_finish@Base 43.0 + cogl_framebuffer_flush@Base 43.0 + cogl_framebuffer_frustum@Base 43.0 + cogl_framebuffer_get_alpha_bits@Base 43.0 + cogl_framebuffer_get_blue_bits@Base 43.0 + cogl_framebuffer_get_context@Base 43.0 + cogl_framebuffer_get_depth_bits@Base 43.0 + cogl_framebuffer_get_depth_write_enabled@Base 43.0 + cogl_framebuffer_get_dither_enabled@Base 43.0 + cogl_framebuffer_get_green_bits@Base 43.0 + cogl_framebuffer_get_height@Base 43.0 + cogl_framebuffer_get_is_stereo@Base 43.0 + cogl_framebuffer_get_modelview_matrix@Base 43.0 + cogl_framebuffer_get_projection_matrix@Base 43.0 + cogl_framebuffer_get_red_bits@Base 43.0 + cogl_framebuffer_get_samples_per_pixel@Base 43.0 + cogl_framebuffer_get_stereo_mode@Base 43.0 + cogl_framebuffer_get_type@Base 43.0 + cogl_framebuffer_get_viewport4fv@Base 43.0 + cogl_framebuffer_get_viewport_height@Base 43.0 + cogl_framebuffer_get_viewport_width@Base 43.0 + cogl_framebuffer_get_viewport_x@Base 43.0 + cogl_framebuffer_get_viewport_y@Base 43.0 + cogl_framebuffer_get_width@Base 43.0 + cogl_framebuffer_identity_matrix@Base 43.0 + cogl_framebuffer_orthographic@Base 43.0 + cogl_framebuffer_perspective@Base 43.0 + cogl_framebuffer_pop_clip@Base 43.0 + cogl_framebuffer_pop_matrix@Base 43.0 + cogl_framebuffer_push_matrix@Base 43.0 + cogl_framebuffer_push_primitive_clip@Base 43.0 + cogl_framebuffer_push_rectangle_clip@Base 43.0 + cogl_framebuffer_push_region_clip@Base 43.0 + cogl_framebuffer_read_pixels@Base 43.0 + cogl_framebuffer_read_pixels_into_bitmap@Base 43.0 + cogl_framebuffer_resolve_samples@Base 43.0 + cogl_framebuffer_resolve_samples_region@Base 43.0 + cogl_framebuffer_rotate@Base 43.0 + cogl_framebuffer_rotate_euler@Base 43.0 + cogl_framebuffer_scale@Base 43.0 + cogl_framebuffer_set_depth_write_enabled@Base 43.0 + cogl_framebuffer_set_dither_enabled@Base 43.0 + cogl_framebuffer_set_modelview_matrix@Base 43.0 + cogl_framebuffer_set_projection_matrix@Base 43.0 + cogl_framebuffer_set_samples_per_pixel@Base 43.0 + cogl_framebuffer_set_stereo_mode@Base 43.0 + cogl_framebuffer_set_viewport@Base 43.0 + cogl_framebuffer_transform@Base 43.0 + cogl_framebuffer_translate@Base 43.0 + cogl_get_graphics_reset_status@Base 43.0 + cogl_get_proc_address@Base 43.0 + cogl_get_rectangle_indices@Base 43.0 + cogl_glib_renderer_source_new@Base 43.0 + cogl_glib_source_new@Base 43.0 + cogl_graphene_matrix_project_point@Base 43.0 + cogl_graphene_matrix_project_points@Base 43.0 + cogl_graphene_matrix_transform_points@Base 43.0 + cogl_half_to_float_slow@Base 46~beta + cogl_half_to_unorm8@Base 46~beta + cogl_has_feature@Base 43.0 + cogl_has_features@Base 43.0 + cogl_index_buffer_get_type@Base 46~beta + cogl_index_buffer_new@Base 43.0 + cogl_indices_get_buffer@Base 43.0 + cogl_indices_get_indices_type@Base 46~beta + cogl_indices_get_offset@Base 43.0 + cogl_indices_get_type@Base 43.0 + cogl_indices_new@Base 43.0 + cogl_indices_new_for_buffer@Base 43.0 + cogl_indices_set_offset@Base 43.0 + cogl_is_framebuffer@Base 43.0 + cogl_matrix_entry_calculate_translation@Base 43.0 + cogl_matrix_entry_equal@Base 43.0 + cogl_matrix_entry_get@Base 43.0 + cogl_matrix_entry_get_type@Base 46~beta + cogl_matrix_entry_is_identity@Base 43.0 + cogl_matrix_entry_ref@Base 43.0 + cogl_matrix_entry_unref@Base 43.0 + cogl_matrix_stack_frustum@Base 43.0 + cogl_matrix_stack_get@Base 43.0 + cogl_matrix_stack_get_entry@Base 43.0 + cogl_matrix_stack_get_inverse@Base 43.0 + cogl_matrix_stack_get_type@Base 46~beta + cogl_matrix_stack_load_identity@Base 43.0 + cogl_matrix_stack_multiply@Base 43.0 + cogl_matrix_stack_new@Base 43.0 + cogl_matrix_stack_orthographic@Base 43.0 + cogl_matrix_stack_perspective@Base 43.0 + cogl_matrix_stack_pop@Base 43.0 + cogl_matrix_stack_push@Base 43.0 + cogl_matrix_stack_rotate@Base 43.0 + cogl_matrix_stack_rotate_euler@Base 43.0 + cogl_matrix_stack_scale@Base 43.0 + cogl_matrix_stack_set@Base 43.0 + cogl_matrix_stack_translate@Base 43.0 + cogl_meta_texture_foreach_in_region@Base 43.0 + cogl_offscreen_get_texture@Base 43.0 + cogl_offscreen_get_type@Base 43.0 + cogl_offscreen_new_with_texture@Base 43.0 + cogl_onscreen_add_dirty_callback@Base 43.0 + cogl_onscreen_add_frame_callback@Base 43.0 + cogl_onscreen_add_frame_info@Base 43.0 + cogl_onscreen_count_pending_frames@Base 43.0 + cogl_onscreen_direct_scanout@Base 43.0 + cogl_onscreen_dirty_closure_get_type@Base 46~beta + cogl_onscreen_egl_get_egl_surface@Base 43.0 + cogl_onscreen_egl_get_type@Base 43.0 + cogl_onscreen_egl_maybe_create_timestamp_query@Base 46.1 + cogl_onscreen_egl_set_egl_surface@Base 43.0 + cogl_onscreen_get_buffer_age@Base 43.0 + cogl_onscreen_get_frame_counter@Base 43.0 + cogl_onscreen_get_type@Base 43.0 + cogl_onscreen_glx_new@Base 43.0 + cogl_onscreen_peek_head_frame_info@Base 43.0 + cogl_onscreen_peek_tail_frame_info@Base 43.0 + cogl_onscreen_pop_head_frame_info@Base 43.0 + cogl_onscreen_queue_damage_region@Base 43.0 + cogl_onscreen_remove_dirty_callback@Base 43.0 + cogl_onscreen_remove_frame_callback@Base 43.0 + cogl_onscreen_swap_buffers@Base 43.0 + cogl_onscreen_swap_buffers_with_damage@Base 43.0 + cogl_onscreen_swap_region@Base 43.0 + cogl_onscreen_template_get_type@Base 46~beta + cogl_onscreen_template_new@Base 43.0 + cogl_onscreen_template_set_samples_per_pixel@Base 43.0 + cogl_onscreen_template_set_stereo_enabled@Base 43.0 + cogl_onscreen_xlib_new@Base 43.0 + cogl_output_get_height@Base 43.0 + cogl_output_get_mm_height@Base 43.0 + cogl_output_get_mm_width@Base 43.0 + cogl_output_get_refresh_rate@Base 43.0 + cogl_output_get_subpixel_order@Base 43.0 + cogl_output_get_type@Base 46~beta + cogl_output_get_width@Base 43.0 + cogl_output_get_x@Base 43.0 + cogl_output_get_y@Base 43.0 + cogl_pipeline_add_layer_snippet@Base 43.0 + cogl_pipeline_add_snippet@Base 43.0 + cogl_pipeline_cache_get_combined_hash@Base 43.0 + cogl_pipeline_cache_get_fragment_hash@Base 43.0 + cogl_pipeline_copy@Base 43.0 + cogl_pipeline_foreach_layer@Base 43.0 + cogl_pipeline_get_alpha_test_function@Base 43.0 + cogl_pipeline_get_alpha_test_reference@Base 43.0 + cogl_pipeline_get_color@Base 43.0 + cogl_pipeline_get_cull_face_mode@Base 43.0 + cogl_pipeline_get_depth_state@Base 43.0 + cogl_pipeline_get_front_face_winding@Base 43.0 + cogl_pipeline_get_layer_filters@Base 44~beta + cogl_pipeline_get_layer_point_sprite_coords_enabled@Base 43.0 + cogl_pipeline_get_layer_texture@Base 43.0 + cogl_pipeline_get_layer_wrap_mode_s@Base 43.0 + cogl_pipeline_get_layer_wrap_mode_t@Base 43.0 + cogl_pipeline_get_n_layers@Base 43.0 + cogl_pipeline_get_per_vertex_point_size@Base 43.0 + cogl_pipeline_get_point_size@Base 43.0 + cogl_pipeline_get_type@Base 46~beta + cogl_pipeline_get_uniform_location@Base 43.0 + cogl_pipeline_get_user_program@Base 43.0 + cogl_pipeline_new@Base 43.0 + cogl_pipeline_remove_layer@Base 43.0 + cogl_pipeline_set_alpha_test_function@Base 43.0 + cogl_pipeline_set_blend@Base 43.0 + cogl_pipeline_set_blend_constant@Base 43.0 + cogl_pipeline_set_color@Base 43.0 + cogl_pipeline_set_cull_face_mode@Base 43.0 + cogl_pipeline_set_depth_state@Base 43.0 + cogl_pipeline_set_front_face_winding@Base 43.0 + cogl_pipeline_set_layer_combine@Base 43.0 + cogl_pipeline_set_layer_combine_constant@Base 43.0 + cogl_pipeline_set_layer_filters@Base 43.0 + cogl_pipeline_set_layer_matrix@Base 43.0 + cogl_pipeline_set_layer_max_mipmap_level@Base 43.0 + cogl_pipeline_set_layer_null_texture@Base 43.0 + cogl_pipeline_set_layer_point_sprite_coords_enabled@Base 43.0 + cogl_pipeline_set_layer_texture@Base 43.0 + cogl_pipeline_set_layer_wrap_mode@Base 43.0 + cogl_pipeline_set_layer_wrap_mode_s@Base 43.0 + cogl_pipeline_set_layer_wrap_mode_t@Base 43.0 + cogl_pipeline_set_per_vertex_point_size@Base 43.0 + cogl_pipeline_set_point_size@Base 43.0 + cogl_pipeline_set_uniform_1f@Base 43.0 + cogl_pipeline_set_uniform_1i@Base 43.0 + cogl_pipeline_set_uniform_float@Base 43.0 + cogl_pipeline_set_uniform_int@Base 43.0 + cogl_pipeline_set_uniform_matrix@Base 43.0 + cogl_pipeline_set_user_program@Base 43.0 + cogl_pipeline_vertend_glsl_get_shader_state@Base 43.0 + cogl_pixel_buffer_get_type@Base 46~beta + cogl_pixel_buffer_new@Base 43.0 + cogl_pixel_format_get_bytes_per_pixel@Base 43.0 + cogl_pixel_format_get_n_planes@Base 43.0 + cogl_pixel_format_get_type@Base 46~beta + cogl_pixel_format_to_string@Base 43.0 + cogl_poll_renderer_dispatch@Base 43.0 + cogl_poll_renderer_get_info@Base 43.0 + cogl_primitive_copy@Base 43.0 + cogl_primitive_draw@Base 43.0 + cogl_primitive_foreach_attribute@Base 43.0 + cogl_primitive_get_first_vertex@Base 43.0 + cogl_primitive_get_indices@Base 43.0 + cogl_primitive_get_mode@Base 43.0 + cogl_primitive_get_n_vertices@Base 43.0 + cogl_primitive_get_type@Base 46~beta + cogl_primitive_new@Base 43.0 + cogl_primitive_new_p2@Base 43.0 + cogl_primitive_new_p2c4@Base 43.0 + cogl_primitive_new_p2t2@Base 43.0 + cogl_primitive_new_p2t2c4@Base 43.0 + cogl_primitive_new_p3@Base 43.0 + cogl_primitive_new_p3c4@Base 43.0 + cogl_primitive_new_p3t2@Base 43.0 + cogl_primitive_new_p3t2c4@Base 43.0 + cogl_primitive_new_with_attributes@Base 43.0 + cogl_primitive_set_first_vertex@Base 43.0 + cogl_primitive_set_indices@Base 43.0 + cogl_primitive_set_mode@Base 43.0 + cogl_primitive_set_n_vertices@Base 43.0 + cogl_primitive_texture_set_auto_mipmap@Base 43.0 + cogl_program_attach_shader@Base 43.0 + cogl_program_get_type@Base 46~beta + cogl_program_get_uniform_location@Base 43.0 + cogl_program_link@Base 43.0 + cogl_program_set_uniform_1f@Base 43.0 + cogl_program_set_uniform_1i@Base 43.0 + cogl_program_set_uniform_float@Base 43.0 + cogl_program_set_uniform_int@Base 43.0 + cogl_program_set_uniform_matrix@Base 43.0 + cogl_renderer_add_constraint@Base 43.0 + cogl_renderer_bind_api@Base 43.0 + cogl_renderer_check_onscreen_template@Base 43.0 + cogl_renderer_connect@Base 43.0 + cogl_renderer_create_dma_buf@Base 43.0 + cogl_renderer_error_quark@Base 43.0 + cogl_renderer_foreach_output@Base 43.0 + cogl_renderer_get_driver@Base 43.0 + cogl_renderer_get_type@Base 46~beta + cogl_renderer_get_winsys_id@Base 43.0 + cogl_renderer_is_dma_buf_supported@Base 43.0 + cogl_renderer_new@Base 43.0 + cogl_renderer_remove_constraint@Base 43.0 + cogl_renderer_set_custom_winsys@Base 43.0 + cogl_renderer_set_driver@Base 43.0 + cogl_renderer_set_winsys_id@Base 43.0 + cogl_scanout_blit_to_framebuffer@Base 43.0 + cogl_scanout_buffer_get_type@Base 46~beta + cogl_scanout_error_quark@Base 43.0 + cogl_scanout_get_buffer@Base 46~beta + cogl_scanout_get_dst_rect@Base 46~beta + cogl_scanout_get_src_rect@Base 46~beta + cogl_scanout_get_type@Base 43.0 + cogl_scanout_new@Base 46~beta + cogl_scanout_notify_failed@Base 44~rc + cogl_scanout_set_dst_rect@Base 46~beta + cogl_scanout_set_src_rect@Base 46~beta + cogl_set_tracing_disabled_on_thread@Base 43.0 + cogl_set_tracing_enabled_on_thread@Base 43.0 + cogl_shader_get_shader_type@Base 46~beta + cogl_shader_get_type@Base 43.0 + cogl_shader_source@Base 43.0 + cogl_snippet_get_declarations@Base 43.0 + cogl_snippet_get_hook@Base 43.0 + cogl_snippet_get_post@Base 43.0 + cogl_snippet_get_pre@Base 43.0 + cogl_snippet_get_replace@Base 43.0 + cogl_snippet_get_type@Base 46~beta + cogl_snippet_new@Base 43.0 + cogl_snippet_set_declarations@Base 43.0 + cogl_snippet_set_post@Base 43.0 + cogl_snippet_set_pre@Base 43.0 + cogl_snippet_set_replace@Base 43.0 + cogl_start_tracing_with_fd@Base 45~beta.1 + cogl_start_tracing_with_path@Base 45~beta.1 + cogl_stop_tracing@Base 45~beta.1 + cogl_sub_texture_get_parent@Base 43.0 + cogl_sub_texture_get_type@Base 46~beta + cogl_sub_texture_new@Base 43.0 + cogl_swap_chain_get_type@Base 46~beta + cogl_swap_chain_new@Base 43.0 + cogl_swap_chain_set_length@Base 43.0 + cogl_texture_2d_get_type@Base 46~beta + cogl_texture_2d_new_from_bitmap@Base 43.0 + cogl_texture_2d_new_from_data@Base 43.0 + cogl_texture_2d_new_from_egl_image_external@Base 43.0 + cogl_texture_2d_new_with_format@Base 44~beta + cogl_texture_2d_new_with_size@Base 43.0 + cogl_texture_2d_sliced_get_type@Base 46~beta + cogl_texture_2d_sliced_new_from_bitmap@Base 43.0 + cogl_texture_2d_sliced_new_from_data@Base 43.0 + cogl_texture_2d_sliced_new_with_size@Base 43.0 + cogl_texture_allocate@Base 43.0 + cogl_texture_error_quark@Base 43.0 + cogl_texture_get_components@Base 43.0 + cogl_texture_get_data@Base 43.0 + cogl_texture_get_gl_texture@Base 43.0 + cogl_texture_get_height@Base 43.0 + cogl_texture_get_max_waste@Base 43.0 + cogl_texture_get_premultiplied@Base 43.0 + cogl_texture_get_type@Base 46~beta + cogl_texture_get_width@Base 43.0 + cogl_texture_is_get_data_supported@Base 43.0 + cogl_texture_is_sliced@Base 43.0 + cogl_texture_pixmap_x11_error_quark@Base 43.0 + cogl_texture_pixmap_x11_get_type@Base 46~beta + cogl_texture_pixmap_x11_is_using_tfp_extension@Base 43.0 + cogl_texture_pixmap_x11_new@Base 43.0 + cogl_texture_pixmap_x11_new_left@Base 43.0 + cogl_texture_pixmap_x11_new_right@Base 43.0 + cogl_texture_pixmap_x11_update_area@Base 43.0 + cogl_texture_set_components@Base 43.0 + cogl_texture_set_data@Base 43.0 + cogl_texture_set_premultiplied@Base 43.0 + cogl_texture_set_region@Base 43.0 + cogl_texture_set_region_from_bitmap@Base 43.0 + (arch=!i386)cogl_trace_context@Base 43.0 + (arch=!i386)cogl_trace_describe@Base 43.0 + (arch=!i386)cogl_trace_end@Base 43.0 + (arch=!i386)cogl_trace_mark@Base 46~beta + (arch=!i386)cogl_trace_mutex@Base 43.0 + (arch=!i386)cogl_trace_thread_data@Base 43.0 + cogl_uint16_div_64k_to_half@Base 46~beta + cogl_x11_onscreen_get_type@Base 43.0 + cogl_x11_onscreen_get_x11_window@Base 43.0 + cogl_xlib_renderer_add_filter@Base 43.0 + cogl_xlib_renderer_get_display@Base 43.0 + cogl_xlib_renderer_get_foreign_display@Base 43.0 + cogl_xlib_renderer_handle_event@Base 43.0 + cogl_xlib_renderer_remove_filter@Base 43.0 + cogl_xlib_renderer_request_reset_on_video_memory_purge@Base 43.0 + cogl_xlib_renderer_set_foreign_display@Base 43.0 +libmutter-cogl-pango-14.so.0 libmutter-14-0 #MINVER# +* Build-Depends-Package: libmutter-14-dev + cogl_pango_ensure_glyph_cache_for_layout@Base 43.0 + cogl_pango_font_map_clear_glyph_cache@Base 43.0 + cogl_pango_font_map_create_context@Base 43.0 + cogl_pango_font_map_get_renderer@Base 43.0 + cogl_pango_font_map_get_use_mipmapping@Base 43.0 + cogl_pango_font_map_new@Base 43.0 + cogl_pango_font_map_set_resolution@Base 43.0 + cogl_pango_font_map_set_use_mipmapping@Base 43.0 + cogl_pango_glyph_cache_clear@Base 43.0 + cogl_pango_glyph_cache_free@Base 43.0 + cogl_pango_glyph_cache_lookup@Base 43.0 + cogl_pango_glyph_cache_new@Base 43.0 + cogl_pango_renderer_get_type@Base 43.0 + cogl_pango_show_layout@Base 43.0 + cogl_pango_show_layout_line@Base 43.0 +libmutter-mtk-14.so.0 libmutter-14-0 #MINVER# +* Build-Depends-Package: libmutter-14-dev + mtk_rectangle_area@Base 45~rc + mtk_rectangle_contains_rect@Base 45~rc + mtk_rectangle_copy@Base 45~rc + mtk_rectangle_could_fit_rect@Base 45~rc + mtk_rectangle_crop_and_scale@Base 46~beta + mtk_rectangle_equal@Base 45~rc + mtk_rectangle_free@Base 45~rc + mtk_rectangle_from_graphene_rect@Base 45~rc + mtk_rectangle_get_type@Base 45~rc + mtk_rectangle_horiz_overlap@Base 45~rc + mtk_rectangle_intersect@Base 45~rc + mtk_rectangle_is_adjacent_to@Base 46~beta + mtk_rectangle_new@Base 45~rc + mtk_rectangle_new_empty@Base 46.1 + mtk_rectangle_overlap@Base 45~rc + mtk_rectangle_scale_double@Base 46~beta + mtk_rectangle_to_graphene_rect@Base 45~rc + mtk_rectangle_union@Base 45~rc + mtk_rectangle_vert_overlap@Base 45~rc + mtk_region_apply_matrix_transform_expand@Base 46~beta + mtk_region_builder_add_rectangle@Base 46~beta + mtk_region_builder_finish@Base 46~beta + mtk_region_builder_init@Base 46~beta + mtk_region_contains_point@Base 46~beta + mtk_region_contains_rectangle@Base 46~beta + mtk_region_copy@Base 46~beta + mtk_region_create@Base 46~beta + mtk_region_create_rectangle@Base 46~beta + mtk_region_create_rectangles@Base 46~beta + mtk_region_crop_and_scale@Base 46~beta + mtk_region_equal@Base 46~beta + mtk_region_get_extents@Base 46~beta + mtk_region_get_rectangle@Base 46~beta + mtk_region_get_type@Base 46~beta + mtk_region_intersect@Base 46~beta + mtk_region_intersect_rectangle@Base 46~beta + mtk_region_is_empty@Base 46~beta + mtk_region_iterator_at_end@Base 46~beta + mtk_region_iterator_init@Base 46~beta + mtk_region_iterator_next@Base 46~beta + mtk_region_num_rectangles@Base 46~beta + mtk_region_ref@Base 46~beta + mtk_region_scale@Base 46~beta + mtk_region_subtract@Base 46~beta + mtk_region_subtract_rectangle@Base 46~beta + mtk_region_translate@Base 46~beta + mtk_region_union@Base 46~beta + mtk_region_union_rectangle@Base 46~beta + mtk_region_unref@Base 46~beta + mtk_x11_error_trap_pop@Base 45~rc + mtk_x11_error_trap_pop_with_return@Base 45~rc + mtk_x11_error_trap_push@Base 45~rc + mtk_x11_errors_deinit@Base 45~rc + mtk_x11_errors_init@Base 45~rc diff --git a/debian/libmutter-14-dev.install b/debian/libmutter-14-dev.install new file mode 100644 index 0000000..95c285f --- /dev/null +++ b/debian/libmutter-14-dev.install @@ -0,0 +1,12 @@ +usr/include/mutter-${env:MUTTER_API_VERSION}/clutter +usr/include/mutter-${env:MUTTER_API_VERSION}/cogl +usr/include/mutter-${env:MUTTER_API_VERSION}/meta +usr/include/mutter-${env:MUTTER_API_VERSION}/mtk +usr/lib/${DEB_HOST_MULTIARCH}/libmutter-${env:MUTTER_API_VERSION}.so +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/*.so +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/*.gir +usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/libmutter-${env:MUTTER_API_VERSION}.pc +usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-clutter-${env:MUTTER_API_VERSION}.pc +usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-cogl-${env:MUTTER_API_VERSION}.pc +usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-cogl-pango-${env:MUTTER_API_VERSION}.pc +usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-mtk-${env:MUTTER_API_VERSION}.pc diff --git a/debian/libmutter-test-14.install b/debian/libmutter-test-14.install new file mode 100644 index 0000000..db1679f --- /dev/null +++ b/debian/libmutter-test-14.install @@ -0,0 +1,4 @@ +usr/include/mutter-${env:MUTTER_API_VERSION}/meta-test +usr/lib/${DEB_HOST_MULTIARCH}/libmutter-test-${env:MUTTER_API_VERSION}.so +usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/libmutter-test-${env:MUTTER_API_VERSION}.pc +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/MetaTest-${env:MUTTER_API_VERSION}.typelib diff --git a/debian/libmutter-test-14.symbols b/debian/libmutter-test-14.symbols new file mode 100644 index 0000000..0fbf907 --- /dev/null +++ b/debian/libmutter-test-14.symbols @@ -0,0 +1,61 @@ +libmutter-test-14.so libmutter-test-14 #MINVER# +* Build-Depends-Package: libmutter-14-dev + meta_async_waiter_destroy@Base 41.0 + meta_async_waiter_new@Base 41.0 + meta_async_waiter_process_x11_event@Base 41.0 + meta_async_waiter_set_and_wait@Base 41.0 + meta_backend_test_add_test_device@Base 41.0 + meta_backend_test_get_gpu@Base 41.0 + meta_backend_test_get_type@Base 41.0 + meta_backend_test_remove_device@Base 41.0 + meta_backend_test_set_is_lid_closed@Base 41.0 + meta_check_monitor_configuration@Base 42~beta + meta_check_monitor_scales@Base 42~beta + meta_context_test_get_type@Base 41.0 + meta_context_test_run_tests@Base 41.0 + meta_context_test_wait_for_x11_display@Base 41.0 + meta_create_monitor_test_setup@Base 42~beta + meta_create_test_context@Base 41.0 + meta_create_test_monitor@Base 42~beta + meta_crtc_test_disable_gamma_lut@Base 43~rc + meta_crtc_test_get_type@Base 41.0 + meta_find_window_from_title@Base 42~beta + meta_flush_input@Base 44~beta + meta_init_monitor_test_setup@Base 42~beta + meta_monitor_manager_test_emulate_hotplug@Base 41.0 + meta_monitor_manager_test_get_tiled_monitor_count@Base 41.0 + meta_monitor_manager_test_get_type@Base 41.0 + meta_monitor_manager_test_read_current@Base 41.0 + meta_monitor_manager_test_set_handles_transforms@Base 41.0 + meta_monitor_manager_test_set_layout_mode@Base 44~rc + meta_orientation_to_string@Base 42~beta + meta_output_test_get_type@Base 41.0 + meta_read_file@Base 42~beta + meta_ref_test_determine_ref_test_flag@Base 42~beta + meta_ref_test_verify_view@Base 42~beta + meta_sensors_proxy_mock_get@Base 41.0 + meta_sensors_proxy_mock_set_orientation@Base 41.0 + meta_sensors_proxy_mock_set_property@Base 41.0 + meta_set_custom_monitor_config@Base 42~beta + meta_set_custom_monitor_config_full@Base 42~beta + meta_set_custom_monitor_system_config@Base 42~beta + meta_test_client_destroy@Base 41.0 + meta_test_client_do@Base 41.0 + meta_test_client_dov@Base 42~beta + meta_test_client_error_quark@Base 41.0 + meta_test_client_find_window@Base 41.0 + meta_test_client_get_id@Base 41.0 + meta_test_client_new@Base 41.0 + meta_test_client_quit@Base 41.0 + meta_test_client_run@Base 44~beta + meta_test_client_wait@Base 41.0 + meta_test_client_wait_for_window_shown@Base 41.0 + meta_test_get_gpu@Base 42~beta + meta_test_monitor_destroy@Base 44~beta + meta_test_monitor_get_type@Base 44~beta + meta_test_monitor_new@Base 44~beta + meta_test_shell_get_type@Base 44.3-4~ + meta_wait_for_monitors_changed@Base 46~beta + meta_wait_for_orientation@Base 42~beta + meta_wait_for_paint@Base 42~beta + meta_wait_for_possible_orientation_change@Base 42~beta diff --git a/debian/mutter-14-tests.install b/debian/mutter-14-tests.install new file mode 100755 index 0000000..fde9bc3 --- /dev/null +++ b/debian/mutter-14-tests.install @@ -0,0 +1,4 @@ +#!/usr/bin/dh-exec +usr/libexec/installed-tests/mutter-${MUTTER_API_VERSION} +usr/share/installed-tests/mutter-${MUTTER_API_VERSION} +usr/share/mutter-${MUTTER_API_VERSION}/tests diff --git a/debian/mutter-common-bin.install b/debian/mutter-common-bin.install new file mode 100644 index 0000000..3b3c27d --- /dev/null +++ b/debian/mutter-common-bin.install @@ -0,0 +1,2 @@ +usr/libexec/mutter-restart-helper +usr/libexec/mutter-x11-frames diff --git a/debian/mutter-common.install b/debian/mutter-common.install new file mode 100755 index 0000000..771ad2e --- /dev/null +++ b/debian/mutter-common.install @@ -0,0 +1,7 @@ +#!/usr/bin/dh-exec +${env:deb_udevdir}/rules.d/*-mutter.rules +usr/share/GConf +usr/share/glib-2.0 +usr/share/gnome-control-center +usr/share/locale +usr/share/man diff --git a/debian/mutter.docs b/debian/mutter.docs new file mode 100644 index 0000000..edc0071 --- /dev/null +++ b/debian/mutter.docs @@ -0,0 +1 @@ +NEWS diff --git a/debian/mutter.install b/debian/mutter.install new file mode 100644 index 0000000..b8790b2 --- /dev/null +++ b/debian/mutter.install @@ -0,0 +1,2 @@ +usr/bin +usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/plugins diff --git a/debian/mutter.postinst b/debian/mutter.postinst new file mode 100644 index 0000000..0dc0097 --- /dev/null +++ b/debian/mutter.postinst @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +action="$1" + +if [ "$action" = configure ]; then + # register the alternatives of x-window-manager manually + # because dh_installwm doesn't register manpage as slave yet. + update-alternatives --install /usr/bin/x-window-manager \ + x-window-manager /usr/bin/mutter 60 \ + --slave /usr/share/man/man1/x-window-manager.1.gz \ + x-window-manager.1.gz /usr/share/man/man1/mutter.1.gz +fi + +#DEBHELPER# diff --git a/debian/mutter.prerm b/debian/mutter.prerm new file mode 100644 index 0000000..8256c42 --- /dev/null +++ b/debian/mutter.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +action="$1" + +if [ "$action" = remove ]; then + update-alternatives --remove x-window-manager \ + /usr/bin/mutter +fi + +#DEBHELPER# diff --git a/debian/rules b/debian/rules index d178f2f..3880f9b 100755 --- a/debian/rules +++ b/debian/rules @@ -1,63 +1,91 @@ #!/usr/bin/make -f -DEB_BUILD_OPTIONS=nocheck +include /usr/share/dpkg/default.mk + +built_binaries := $(shell dh_listpackages) + export DEB_BUILD_MAINT_OPTIONS = hardening=+all -export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs +export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 +export DPKG_GENSYMBOLS_CHECK_LEVEL = 4 + +# Following upstream method to compute the API version +MUTTER_MAJOR_VERSION = $(shell echo $(DEB_VERSION_UPSTREAM) | sed 's/[~.].*//') +MUTTER_API_VERSION = $(shell echo $$(( $(MUTTER_MAJOR_VERSION) - 32 )) ) +MUTTER_SONAME = 0 + +export MUTTER_API_VERSION +export MUTTER_SONAME %: - dh $@ --with bash_completion + dh $@ -CONFFLAGS = +CONFFLAGS = \ + -Dauto_features=enabled \ + -Degl_device=true \ + -Dremote_desktop=true \ + -Dwayland_eglstream=true +export deb_udevdir = $(shell pkg-config --variable=udevdir udev | sed s,^/,,) -ifeq ($(DEB_HOST_ARCH_OS),linux) -CONFFLAGS += \ - -Dnetworkmanager=true \ - -Dsystemd=true +ifneq ($(filter i386,$(DEB_HOST_ARCH)),) +CONFFLAGS +=-Dprofiler=false endif -ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) -CONFFLAGS += -Dtests=true -else -CONFFLAGS += -Dtests=false +ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) +CONFFLAGS += --cross-file=$(DEB_HOST_GNU_TYPE)-gobject-introspection.ini endif +override_dh_gnome_clean: + override_dh_auto_configure: dh_auto_configure -- \ - --libdir=/usr/lib \ - -Dextensions-tool:bash_completion=enabled \ $(CONFFLAGS) +# Use meson test directly as it allows us to use the timeout multiplier +BUILDDIR=$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE) +TEST_COMMAND_BASE=env \ + GIO_USE_VFS=local \ + GIO_USE_VOLUME_MONITOR=unix \ + GVFS_DISABLE_FUSE=1 \ + dbus-run-session -- xvfb-run -s '+iglx -noreset' -a \ + dh_auto_test -- -C $(BUILDDIR) --no-rebuild --verbose --timeout-multiplier 6 \ + --no-stdsplit --print-errorlogs +TEST_COMMAND=$(TEST_COMMAND_BASE) --no-suite flaky +TEST_COMMAND_FLAKY=env DEB_ALLOW_FLAKY_TESTS=1 $(TEST_COMMAND_BASE) --suite flaky + +# Ignore test failures on official architectures +# because it is believed that significant debian-installer/tasksel issues +# occur if task-gnome-desktop is not installable. +# +# We suspect that GNOME Shell might not work on mips64el and s390x. +# See gnome-settings-daemon where a simple mutter session fails there. +# +# But GNOME Shell is apparently usable on Ubuntu's riscv64: +# https://discourse.ubuntu.com/t/33807 +# +# Please keep this list in sync with debian/tests/installed-tests +override_dh_auto_test: +ifeq (,$(filter mips64el riscv64 s390x,$(DEB_HOST_ARCH))) + $(TEST_COMMAND) + -$(TEST_COMMAND_FLAKY) --logbase flaky-tests +else + -$(TEST_COMMAND) + -$(TEST_COMMAND_FLAKY) --logbase flaky-tests +endif + +# debhelper >= 13.4 makes all of /usr/libexec executable, which is not +# quite right for installed-tests +override_dh_fixperms: + dh_fixperms -Xusr/libexec/installed-tests +ifneq ($(filter %-tests,$(built_binaries)),) + chmod --recursive --changes a+rX,u+w,og-w debian/*-tests/usr/libexec/installed-tests +endif + +override_dh_girepository: + dh_girepository /usr/lib/$(DEB_HOST_MULTIARCH)/mutter-$(MUTTER_API_VERSION) + override_dh_makeshlibs: - dh_makeshlibs -X/usr/lib/gnome-shell/ + dh_makeshlibs -V override_dh_shlibdeps: - # gnome-shell uses mutters private mutter-clutter-1.0.so etc. - dh_shlibdeps -l"usr/lib/$(DEB_HOST_MULTIARCH)/mutter" - -# Upstream test timeouts assume an otherwise unloaded system, but that -# isn't necessarily the case for a porterbox or multiple parallel builds. -# Keep the timeout reasonably short for architectures where interactive -# debugging is more likely, but extend it a lot on architectures that might -# be very slow or using qemu for buildds. -ifneq ($(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),) -test_timeout_multiplier = 3 -else -test_timeout_multiplier = 20 -endif - -meson_test_options = --timeout-multiplier $(test_timeout_multiplier) - -ifneq ($(filter mips%,$(DEB_HOST_ARCH_CPU)),) -# gnome-shell on mips(64)el works on a real GPU (in practice usually an -# AMD GPU), but crashes when using llvmpipe or softpipe, which is all that -# is available on the buildds, so we only run the unit tests at build time -# and skip the tests that would run the whole Shell. See discussion in -# https://salsa.debian.org/gnome-team/gnome-shell/-/merge_requests/71 -meson_test_options += --no-suite shell -endif - -override_dh_auto_test: -ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) - env XDG_CACHE_HOME="$(shell mktemp -d -t cache-XXXXXXXX)" \ - dbus-run-session xvfb-run -a dh_auto_test -- $(meson_test_options) -endif + dh_shlibdeps -Llibmutter-$(MUTTER_API_VERSION)-$(MUTTER_SONAME) \ + -l/usr/lib/$(DEB_HOST_MULTIARCH)/mutter-$(MUTTER_API_VERSION) diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml index b8b556c..33c3a64 100644 --- a/debian/salsa-ci.yml +++ b/debian/salsa-ci.yml @@ -2,6 +2,3 @@ include: - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml - -variables: - RELEASE: 'experimental' diff --git a/debian/shlibs.local b/debian/shlibs.local deleted file mode 100644 index 486e4fa..0000000 --- a/debian/shlibs.local +++ /dev/null @@ -1 +0,0 @@ -libgnome-bluetooth-applet 0 gnome-bluetooth (>= 3.0.0) diff --git a/debian/source/format b/debian/source/format index 89ae9db..163aaf8 100644 --- a/debian/source/format +++ b/debian/source/format @@ -1 +1 @@ -3.0 (native) +3.0 (quilt) diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides index e69de29..b4c1614 100644 --- a/debian/source/lintian-overrides +++ b/debian/source/lintian-overrides @@ -0,0 +1,2 @@ +# We export this in debian/rules +dh-exec-subst-unknown-variable MUTTER_API_VERSION [debian/mutter-14-tests.install:*] diff --git a/debian/source_gnome-shell.py b/debian/source_gnome-shell.py deleted file mode 100644 index 9e0bcf7..0000000 --- a/debian/source_gnome-shell.py +++ /dev/null @@ -1,45 +0,0 @@ -from apport.hookutils import * -import os - -def is_process_running(proc): - ''' - Determine if process has a registered process id - ''' - log = command_output(['pidof', proc]) - if not log or log[:5] == "Error" or len(log)<1: - return False - return True - -def add_info(report): - attach_related_packages(report, ['mutter-common']) - - attach_gsettings_package(report, 'gnome-shell-common') - attach_gsettings_package(report, 'gsettings-desktop-schemas') - attach_gsettings_package(report, 'mutter-common') - attach_gsettings_schema(report, 'org.gnome.settings-daemon.plugins.color') - attach_gsettings_schema(report, 'org.gnome.settings-daemon.peripherals.touchscreen') - - try: - monitors = os.path.join(os.environ['XDG_CONFIG_HOME'], 'monitors.xml') - except KeyError: - monitors = os.path.expanduser('~/.config/monitors.xml') - - attach_file_if_exists(report, monitors, 'monitors.xml') - - result = '' - - dm_list = apport.hookutils.command_output(['sh', '-c', - 'apt-cache search \"display manager\" | cut -d \' \' -f1 | grep -E \"dm$|^gdm3?\\b\"']) - - for line in dm_list.split('\n'): - if (is_process_running(line)): - result = line - break - - report['DisplayManager'] = result - - if command_available('journalctl') and os.path.exists('/run/systemd/system'): - report['ShellJournal'] = command_output(['journalctl', - '/usr/bin/gnome-shell', - '-b', '-o', 'short-monotonic', - '--lines', '3000']) diff --git a/debian/tests/build b/debian/tests/build new file mode 100644 index 0000000..ada1873 --- /dev/null +++ b/debian/tests/build @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +echo "debian/rules override_dh_auto_configure " +debian/rules override_dh_auto_configure + +echo "debian/rules override_dh_auto_build" +debian/rules override_dh_auto_build diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..10e8762 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,17 @@ +Tests: build +Depends: @builddeps@ +Restrictions: allow-stderr + +Tests: libmutter-14-dev +Depends: build-essential, + dbus-daemon, + libmutter-14-dev, + xauth, + xvfb +Restrictions: allow-stderr superficial + +Tests: installed-tests +Classes: desktop +Depends: gnome-desktop-testing, + mutter-14-tests +Restrictions: allow-stderr skippable diff --git a/debian/tests/installed-tests b/debian/tests/installed-tests new file mode 100755 index 0000000..3eeab76 --- /dev/null +++ b/debian/tests/installed-tests @@ -0,0 +1,35 @@ +#!/bin/sh + +set -eu + +namespace=mutter-14/ + +if [ -z "${HOME-}" ] || ! [ -w "${HOME}" ]; then + export HOME="${AUTOPKGTEST_TMP}" +fi + +cd "$AUTOPKGTEST_TMP" + +if [ -z "$(ginsttest-runner -l "$namespace")" ]; then + echo "Error: no installed-tests found matching $namespace" >&2 + exit 1 +fi + +e=0 +ginsttest-runner \ + --log-directory "$AUTOPKGTEST_ARTIFACTS" \ + --tap \ + "$namespace" || e="$?" + +if [ "$e" -ne 0 ]; then + arch="$(dpkg --print-architecture)" + case "$arch" in + # Please keep this list in sync with debian/rules + (mips64el|riscv64|s390x) + echo "# Ignoring test failure on $arch" + exit 77 + ;; + esac + + exit "$e" +fi diff --git a/debian/tests/libmutter-14-dev b/debian/tests/libmutter-14-dev new file mode 100755 index 0000000..0490563 --- /dev/null +++ b/debian/tests/libmutter-14-dev @@ -0,0 +1,41 @@ +#!/bin/sh +# autopkgtest check: Build and run a program against libmutter, to verify +# that the headers and pkg-config file are installed correctly +# (C) 2012 Canonical Ltd. +# (C) 2018-2019 Simon McVittie +# Authors: Martin Pitt, Simon McVittie + +set -eux + +WORKDIR=$(mktemp -d) +export HOME="$WORKDIR" +export XDG_RUNTIME_DIR="$WORKDIR" +cleanup () { + rm -fr "$WORKDIR" +} +trap cleanup 0 INT QUIT ABRT PIPE TERM +cd "$WORKDIR" + +if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then + CROSS_COMPILE="$DEB_HOST_GNU_TYPE-" +else + CROSS_COMPILE= +fi + +cat <<'EOF' > trivial.c +#include + +int main(void) +{ + g_assert_false(meta_is_wayland_compositor()); + return 0; +} +EOF + +# Deliberately word-splitting pkg-config's output: +# shellcheck disable=SC2046 +"${CROSS_COMPILE}gcc" -o trivial trivial.c $("${CROSS_COMPILE}pkg-config" --cflags --libs libmutter-14) +echo "build: OK" +[ -x trivial ] +xvfb-run -a dbus-run-session -- ./trivial +echo "run: OK" diff --git a/debian/ubuntu-session-mods/ubuntu.json b/debian/ubuntu-session-mods/ubuntu.json deleted file mode 100644 index 84cdc63..0000000 --- a/debian/ubuntu-session-mods/ubuntu.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "parentMode": "user", - "stylesheetName": "Yaru/gnome-shell.css", - "colorScheme": "prefer-light", - "themeResourceName": "theme/Yaru/gnome-shell-theme.gresource", - "iconsResourceName": "theme/Yaru/gnome-shell-icons.gresource", - "debugFlags": ["backtrace-crashes-all"], - "enabledExtensions": [ - "ubuntu-dock@ubuntu.com", - "ubuntu-appindicators@ubuntu.com", - "ding@rastersoft.com", - "tiling-assistant@ubuntu.com" - ] -} diff --git a/debian/upstream/metadata b/debian/upstream/metadata index c206ebf..981360c 100644 --- a/debian/upstream/metadata +++ b/debian/upstream/metadata @@ -1,5 +1,5 @@ -Bug-Database: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues -Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/new -Name: GNOME Shell -Repository: https://gitlab.gnome.org/gnome/gnome-shell.git -Repository-Browse: https://gitlab.gnome.org/GNOME/gnome-shell/ +--- +Bug-Database: https://gitlab.gnome.org/GNOME/mutter/-/issues +Bug-Submit: https://gitlab.gnome.org/GNOME/mutter/-/issues/new +Repository: https://gitlab.gnome.org/GNOME/mutter.git +Repository-Browse: https://gitlab.gnome.org/GNOME/mutter diff --git a/debian/watch b/debian/watch index e66e0f1..64675b4 100644 --- a/debian/watch +++ b/debian/watch @@ -1,4 +1,4 @@ version=4 opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \ https://download.gnome.org/sources/@PACKAGE@/cache.json \ - [\d.]+/@PACKAGE@-([\d.]+\.?(?:beta|rc)?[\d.]*)@ARCHIVE_EXT@ + [\d.]+/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@ diff --git a/main.sh b/main.sh index d76a78a..390b2bf 100755 --- a/main.sh +++ b/main.sh @@ -1,19 +1,25 @@ -DEBIAN_FRONTEND=noninteractive +#! /bin/bash -apt-mark hold pbuilder -apt install gnome-pkg-tools -y +set -e + +VERSION="46.4" + +source ./pika-build-config.sh + +echo "$PIKA_BUILD_ARCH" > pika-build-arch # Clone Upstream -git clone https://gitlab.gnome.org/GNOME/gnome-shell -b 45.0 gnome-shell -cp -rvf ./debian ./gnome-shell -cd ./gnome-shell -for i in $(cat ../patches/series) ; do echo "Applying Patch: $i" && patch -Np1 -i ../patches/$i || bash -c "echo "Applying Patch $i Failed!" && exit 2"; done +git clone --depth=1 https://gitlab.gnome.org/GNOME/mutter -b "$VERSION" +cp -rvf ./debian ./mutter +cd ./mutter + +for i in $(cat ../patches/series) ; do echo "Applying Patch: $i" && patch -Np1 -i ../patches/$i || echo "Applying Patch $i Failed!"; done # Get build deps apt-get build-dep ./ -y # Build package -LOGNAME=root dh_make --createorig -y -l -p gnome-shell_45.1 +LOGNAME=root dh_make --createorig -y -l -p mutter_"$VERSION" || echo "dh-make: Ignoring Last Error" dpkg-buildpackage --no-sign # Move the debs to output diff --git a/orig.source.txt b/orig.source.txt deleted file mode 100644 index 93e7c4f..0000000 --- a/orig.source.txt +++ /dev/null @@ -1 +0,0 @@ -https://gitlab.gnome.org/GNOME/gnome-shell diff --git a/patches/Revert-keyboard-Spawn-tecla-to-show-keyboard-map.patch b/patches/Revert-keyboard-Spawn-tecla-to-show-keyboard-map.patch deleted file mode 100644 index ae9cc85..0000000 --- a/patches/Revert-keyboard-Spawn-tecla-to-show-keyboard-map.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: =?utf-8?q?Jeremy_B=C3=ADcha?= -Date: Fri, 1 Sep 2023 11:29:45 -0400 -Subject: Revert "keyboard: Spawn "tecla" to show keyboard map" - -Tecla is not ready yet: -https://gitlab.gnome.org/GNOME/tecla/-/issues/7 - -This reverts commit 04aaa4b67bffbfe6d472e7f25c8e892f43151ed2. ---- - js/ui/status/keyboard.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js -index 8d98e16..106f1e8 100644 ---- a/js/ui/status/keyboard.js -+++ b/js/ui/status/keyboard.js -@@ -1103,6 +1103,6 @@ class InputSourceIndicator extends PanelMenu.Button { - if (xkbVariant.length > 0) - description = `${description}\t${xkbVariant}`; - -- Util.spawn(['tecla', description]); -+ Util.spawn(['gkbd-keyboard-display', '-l', description]); - } - }); diff --git a/patches/Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch b/patches/Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch deleted file mode 100644 index c46d831..0000000 --- a/patches/Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch +++ /dev/null @@ -1,95 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Fri, 1 Apr 2022 02:41:07 +0200 -Subject: Revert "st: Apply css foreground color to text as a PangoAttribute" - -Using the pango foreground color implies that such part will have a -color set at pango level and so that cogl will use this value as a -color override (as per cogl_pango_renderer_set_color_for_part()). - -This is fine for most labels, but in case the clutter-text has the -selected text color set, it is simply ignored, because the overridden -color is always preferred. - -Also the reason for this commit, was not to apply colors on top of -colored fonts, but this won't happen anymore now because mutter's commit -aa136f45 ensures that no color will be applied to glyphs that are -already colored. - -So to me it looks that's just safer to revert it, instead of adding -different logic to handle the selected-text-color case. - -This reverts commit 66c4b1a8b607600f193b34e6a9f8c85f76c2ac2c. - -Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2260 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1878998 ---- - src/st/st-entry.c | 2 ++ - src/st/st-private.c | 32 ++++++++++++++++++++++++++------ - 2 files changed, 28 insertions(+), 6 deletions(-) - -diff --git a/src/st/st-entry.c b/src/st/st-entry.c -index 0de195e..ba49101 100644 ---- a/src/st/st-entry.c -+++ b/src/st/st-entry.c -@@ -1101,6 +1101,8 @@ st_entry_init (StEntry *entry) - g_signal_connect (priv->entry, "notify::line-alignment", - G_CALLBACK (invalidate_shadow_pipeline), entry); - -+ g_signal_connect_swapped (priv->entry, "notify::editable", -+ G_CALLBACK (st_widget_style_changed), entry); - - priv->spacing = 6.0f; - -diff --git a/src/st/st-private.c b/src/st/st-private.c -index bb98151..1b70c5e 100644 ---- a/src/st/st-private.c -+++ b/src/st/st-private.c -@@ -115,22 +115,42 @@ _st_set_text_from_style (ClutterText *text, - StTextDecoration decoration; - PangoAttrList *attribs = NULL; - const PangoFontDescription *font; -- PangoAttribute *foreground; - StTextAlign align; - gdouble spacing; - gchar *font_features; -+ gboolean foreground_color_set; - - font = st_theme_node_get_font (theme_node); - clutter_text_set_font_description (text, (PangoFontDescription *) font); - - attribs = pango_attr_list_new (); - -+ foreground_color_set = FALSE; - st_theme_node_get_foreground_color (theme_node, &color); -- clutter_text_set_cursor_color (text, &color); -- foreground = pango_attr_foreground_new (color.red * 255, -- color.green * 255, -- color.blue * 255); -- pango_attr_list_insert (attribs, foreground); -+ -+ if (clutter_text_get_editable (text)) -+ { -+ ClutterColor selected_color; -+ -+ if (st_theme_node_lookup_color (theme_node, "selected-color", -+ TRUE, &selected_color) && -+ !clutter_color_equal (&selected_color, &color)) -+ { -+ clutter_text_set_color (text, &color); -+ clutter_text_set_cursor_color (text, &color); -+ foreground_color_set = TRUE; -+ } -+ } -+ -+ if (!foreground_color_set) -+ { -+ PangoAttribute *foreground; -+ clutter_text_set_cursor_color (text, &color); -+ foreground = pango_attr_foreground_new (color.red * 255, -+ color.green * 255, -+ color.blue * 255); -+ pango_attr_list_insert (attribs, foreground); -+ } - - if (color.alpha != 255) - { diff --git a/patches/debian/Revert-build-Port-to-gcr4.patch b/patches/debian/Revert-build-Port-to-gcr4.patch deleted file mode 100644 index d5d33cb..0000000 --- a/patches/debian/Revert-build-Port-to-gcr4.patch +++ /dev/null @@ -1,107 +0,0 @@ -From: Jeremy Bicha -Date: Sun, 21 Aug 2022 10:30:55 -0400 -Subject: Revert "build: Port to gcr4" - -This reverts commit 5c935af7d3b3a3c9feb4e0d9ea214b6d25a7a2e7. - -Forwarded: not-needed ---- - js/misc/dependencies.js | 2 +- - meson.build | 4 ++-- - src/meson.build | 2 +- - src/shell-keyring-prompt.c | 6 +++--- - src/shell-secure-text-buffer.c | 2 +- - 5 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/js/misc/dependencies.js b/js/misc/dependencies.js -index c61753e..7a827bc 100644 ---- a/js/misc/dependencies.js -+++ b/js/misc/dependencies.js -@@ -7,7 +7,7 @@ import gi from 'gi'; - import 'gi://AccountsService?version=1.0'; - import 'gi://Atk?version=1.0'; - import 'gi://Atspi?version=2.0'; --import 'gi://Gcr?version=4'; -+import 'gi://Gcr?version=3'; - import 'gi://Gdk?version=4.0'; - import 'gi://Gdm?version=1.0'; - import 'gi://Geoclue?version=2.0'; -diff --git a/meson.build b/meson.build -index 70ba711..8e1f1f4 100644 ---- a/meson.build -+++ b/meson.build -@@ -21,7 +21,7 @@ libmutter_test_pc = 'libmutter-test-' + mutter_api_version - - ecal_req = '>= 3.33.1' - eds_req = '>= 3.33.1' --gcr_req = '>= 3.90.0' -+gcr_req = '>= 3.7.5' - gio_req = '>= 2.56.0' - gi_req = '>= 1.49.1' - gjs_req = '>= 1.73.1' -@@ -74,7 +74,7 @@ endif - atk_bridge_dep = dependency('atk-bridge-2.0') - ecal_dep = dependency('libecal-2.0', version: ecal_req) - eds_dep = dependency('libedataserver-1.2', version: eds_req) --gcr_dep = dependency('gcr-4', version: gcr_req) -+gcr_dep = dependency('gcr-base-3', version: gcr_req) - gdk_x11_dep = dependency('gdk-x11-3.0') - gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0') - gi_dep = dependency('gobject-introspection-1.0', version: gi_req) -diff --git a/src/meson.build b/src/meson.build -index 070312b..6a9b266 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -217,7 +217,7 @@ libshell_dep = declare_dependency(link_with: libshell) - libshell_gir_includes = [ - 'Clutter-@0@'.format(mutter_api_version), - 'Meta-@0@'.format(mutter_api_version), -- 'Gcr-4', -+ 'Gcr-3', - 'PolkitAgent-1.0', - 'GdkPixbuf-2.0' - ] -diff --git a/src/shell-keyring-prompt.c b/src/shell-keyring-prompt.c -index bb03279..83c6746 100644 ---- a/src/shell-keyring-prompt.c -+++ b/src/shell-keyring-prompt.c -@@ -26,7 +26,7 @@ - #include "shell-secure-text-buffer.h" - - #define GCR_API_SUBJECT_TO_CHANGE --#include -+#include - - #include - -@@ -91,7 +91,7 @@ enum { - - static GParamSpec *props[N_PROPS] = { NULL, }; - --static void shell_keyring_prompt_iface (GcrPromptInterface *iface); -+static void shell_keyring_prompt_iface (GcrPromptIface *iface); - - G_DEFINE_TYPE_WITH_CODE (ShellKeyringPrompt, shell_keyring_prompt, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (GCR_TYPE_PROMPT, shell_keyring_prompt_iface); -@@ -531,7 +531,7 @@ shell_keyring_prompt_close (GcrPrompt *prompt) - } - - static void --shell_keyring_prompt_iface (GcrPromptInterface *iface) -+shell_keyring_prompt_iface (GcrPromptIface *iface) - { - iface->prompt_password_async = shell_keyring_prompt_password_async; - iface->prompt_password_finish = shell_keyring_prompt_password_finish; -diff --git a/src/shell-secure-text-buffer.c b/src/shell-secure-text-buffer.c -index 8271410..03af451 100644 ---- a/src/shell-secure-text-buffer.c -+++ b/src/shell-secure-text-buffer.c -@@ -26,7 +26,7 @@ - #include "shell-secure-text-buffer.h" - - #define GCR_API_SUBJECT_TO_CHANGE --#include -+#include - - #include - diff --git a/patches/debian/Revert-tests-Fail-on-warnings-too.patch b/patches/debian/Revert-tests-Fail-on-warnings-too.patch deleted file mode 100644 index e0fac85..0000000 --- a/patches/debian/Revert-tests-Fail-on-warnings-too.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Jeremy Bicha -Date: Fri, 17 Feb 2023 15:35:20 -0500 -Subject: Revert "tests: Fail on warnings too" - -This reverts commit 207b9bb3c0a582b830218fd1b6e8760684adbc48. ---- - tests/meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/meson.build b/tests/meson.build -index a22a0d9..59070c3 100644 ---- a/tests/meson.build -+++ b/tests/meson.build -@@ -56,7 +56,7 @@ libgvc_path = fs.parent(libgvc.get_variable('libgvc').full_path()) - background_file = files(join_paths('data', 'background.png')) - - shell_testenv = environment() --shell_testenv.set('G_DEBUG', 'fatal-warnings') -+shell_testenv.set('G_DEBUG', 'fatal-criticals') - shell_testenv.set('G_MESSAGES_DEBUG', 'GNOME Shell') - shell_testenv.set('GNOME_SHELL_DATADIR', data_builddir) - shell_testenv.set('GNOME_SHELL_BUILDDIR', src_builddir) diff --git a/patches/debian/Support-Dynamic-triple-double-buffering.patch b/patches/debian/Support-Dynamic-triple-double-buffering.patch new file mode 100644 index 0000000..1e00a64 --- /dev/null +++ b/patches/debian/Support-Dynamic-triple-double-buffering.patch @@ -0,0 +1,1912 @@ +From: Daniel van Vugt +Date: Wed, 10 Nov 2021 18:55:53 +0800 +Subject: Support Dynamic triple/double buffering + +Use triple buffering if and when the previous frame is running late. +This means the next frame will be dispatched on time instead of also starting +late. + +It also triggers a GPU clock boost if deemed necessary by the driver. +Although frequency scaling is not required to get a performance gain here +because even a fixed frequency GPU will benefit from not over-sleeping anymore. +If the previous frame is not running late then we stick to double buffering so +there's no latency penalty when the system is able to maintain full frame rate. + +Formatted for Debian (as of 46~beta) with: +git remote add vanvugt git@ssh.gitlab.gnome.org:vanvugt/mutter.git +git fetch vanvugt +git merge --squash -e vanvugt/triple-buffering-v4-46 +And then git commit but using all this as the header instead of what +git suggests. Also add Gbp-Pq: Topic debian + +Bug: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3760 +Forwarded: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441 +Applied-upstream: no, see also https://bugs.debian.org/1050020 +Last-Update: 2024-07-08 +--- + clutter/clutter/clutter-frame-clock.c | 369 +++++++++++++++++++++++------ + clutter/clutter/clutter-frame-clock.h | 11 +- + clutter/clutter/clutter-frame-private.h | 1 + + clutter/clutter/clutter-frame.c | 13 + + clutter/clutter/clutter-frame.h | 7 + + clutter/clutter/clutter-stage-view.c | 11 +- + cogl/cogl/cogl-onscreen-private.h | 5 +- + cogl/cogl/cogl-onscreen.c | 8 + + src/backends/meta-stage-impl.c | 2 + + src/backends/native/meta-kms-impl-device.c | 4 +- + src/backends/native/meta-kms.c | 9 + + src/backends/native/meta-kms.h | 2 + + src/backends/native/meta-onscreen-native.c | 368 ++++++++++++++++++++++------ + src/backends/native/meta-onscreen-native.h | 2 + + src/backends/native/meta-renderer-native.c | 34 ++- + src/tests/native-kms-render.c | 106 +++++++-- + 16 files changed, 779 insertions(+), 173 deletions(-) + +diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c +index 30a319f..75e3308 100644 +--- a/clutter/clutter/clutter-frame-clock.c ++++ b/clutter/clutter/clutter-frame-clock.c +@@ -42,6 +42,15 @@ enum + + static guint signals[N_SIGNALS]; + ++typedef enum ++{ ++ TRIPLE_BUFFERING_MODE_NEVER, ++ TRIPLE_BUFFERING_MODE_AUTO, ++ TRIPLE_BUFFERING_MODE_ALWAYS, ++} TripleBufferingMode; ++ ++static TripleBufferingMode triple_buffering_mode = TRIPLE_BUFFERING_MODE_AUTO; ++ + #define SYNC_DELAY_FALLBACK_FRACTION 0.875 + + #define MINIMUM_REFRESH_RATE 30.f +@@ -70,8 +79,10 @@ typedef enum _ClutterFrameClockState + CLUTTER_FRAME_CLOCK_STATE_IDLE, + CLUTTER_FRAME_CLOCK_STATE_SCHEDULED, + CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW, +- CLUTTER_FRAME_CLOCK_STATE_DISPATCHING, +- CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED, ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE, ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED, ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW, ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO, + } ClutterFrameClockState; + + struct _ClutterFrameClock +@@ -92,6 +103,7 @@ struct _ClutterFrameClock + ClutterFrameClockMode mode; + + int64_t last_dispatch_time_us; ++ int64_t prev_last_dispatch_time_us; + int64_t last_dispatch_lateness_us; + int64_t last_presentation_time_us; + int64_t next_update_time_us; +@@ -113,6 +125,9 @@ struct _ClutterFrameClock + int64_t vblank_duration_us; + /* Last KMS buffer submission time. */ + int64_t last_flip_time_us; ++ int64_t prev_last_flip_time_us; ++ ++ ClutterFrameHint last_flip_hints; + + /* Last time we promoted short-term maximum to long-term one */ + int64_t longterm_promotion_us; +@@ -247,10 +262,6 @@ static void + maybe_update_longterm_max_duration_us (ClutterFrameClock *frame_clock, + ClutterFrameInfo *frame_info) + { +- /* Do not update long-term max if there has been no measurement */ +- if (!frame_clock->shortterm_max_update_duration_us) +- return; +- + if ((frame_info->presentation_time - frame_clock->longterm_promotion_us) < + G_USEC_PER_SEC) + return; +@@ -277,6 +288,12 @@ void + clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, + ClutterFrameInfo *frame_info) + { ++#ifdef CLUTTER_ENABLE_DEBUG ++ const char *debug_state = ++ frame_clock->state == CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO ? ++ "Triple buffering" : "Double buffering"; ++#endif ++ + COGL_TRACE_BEGIN_SCOPED (ClutterFrameClockNotifyPresented, + "Clutter::FrameClock::presented()"); + COGL_TRACE_DESCRIBE (ClutterFrameClockNotifyPresented, +@@ -366,22 +383,52 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, + + frame_clock->got_measurements_last_frame = FALSE; + +- if (frame_info->cpu_time_before_buffer_swap_us != 0 && +- frame_info->has_valid_gpu_rendering_duration) ++ if ((frame_info->cpu_time_before_buffer_swap_us != 0 && ++ frame_info->has_valid_gpu_rendering_duration) || ++ frame_clock->ever_got_measurements) + { + int64_t dispatch_to_swap_us, swap_to_rendering_done_us, swap_to_flip_us; ++ int64_t dispatch_time_us = 0, flip_time_us = 0; + +- dispatch_to_swap_us = +- frame_info->cpu_time_before_buffer_swap_us - +- frame_clock->last_dispatch_time_us; ++ switch (frame_clock->state) ++ { ++ case CLUTTER_FRAME_CLOCK_STATE_INIT: ++ case CLUTTER_FRAME_CLOCK_STATE_IDLE: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: ++ g_warn_if_reached (); ++ G_GNUC_FALLTHROUGH; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ dispatch_time_us = frame_clock->last_dispatch_time_us; ++ flip_time_us = frame_clock->last_flip_time_us; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: ++ dispatch_time_us = frame_clock->prev_last_dispatch_time_us; ++ flip_time_us = frame_clock->prev_last_flip_time_us; ++ break; ++ } ++ ++ if (frame_info->cpu_time_before_buffer_swap_us == 0) ++ { ++ /* Cursor-only updates with no "swap" or "flip" */ ++ dispatch_to_swap_us = 0; ++ swap_to_flip_us = 0; ++ } ++ else ++ { ++ dispatch_to_swap_us = frame_info->cpu_time_before_buffer_swap_us - ++ dispatch_time_us; ++ swap_to_flip_us = flip_time_us - ++ frame_info->cpu_time_before_buffer_swap_us; ++ } + swap_to_rendering_done_us = + frame_info->gpu_rendering_duration_ns / 1000; +- swap_to_flip_us = +- frame_clock->last_flip_time_us - +- frame_info->cpu_time_before_buffer_swap_us; + + CLUTTER_NOTE (FRAME_TIMINGS, +- "update2dispatch %ld µs, dispatch2swap %ld µs, swap2render %ld µs, swap2flip %ld µs", ++ "%s: update2dispatch %ld µs, dispatch2swap %ld µs, swap2render %ld µs, swap2flip %ld µs", ++ debug_state, + frame_clock->last_dispatch_lateness_us, + dispatch_to_swap_us, + swap_to_rendering_done_us, +@@ -391,7 +438,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, + CLAMP (frame_clock->last_dispatch_lateness_us + dispatch_to_swap_us + + MAX (swap_to_rendering_done_us, swap_to_flip_us), + frame_clock->shortterm_max_update_duration_us, +- frame_clock->refresh_interval_us); ++ 2 * frame_clock->refresh_interval_us); + + maybe_update_longterm_max_duration_us (frame_clock, frame_info); + +@@ -400,7 +447,8 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, + } + else + { +- CLUTTER_NOTE (FRAME_TIMINGS, "update2dispatch %ld µs", ++ CLUTTER_NOTE (FRAME_TIMINGS, "%s: update2dispatch %ld µs", ++ debug_state, + frame_clock->last_dispatch_lateness_us); + } + +@@ -418,11 +466,22 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock, + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: + g_warn_if_reached (); + break; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; + maybe_reschedule_update (frame_clock); + break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED; ++ maybe_reschedule_update (frame_clock); ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW; ++ maybe_reschedule_update (frame_clock); ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ maybe_reschedule_update (frame_clock); ++ break; + } + } + +@@ -440,26 +499,37 @@ clutter_frame_clock_notify_ready (ClutterFrameClock *frame_clock) + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: + g_warn_if_reached (); + break; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; + maybe_reschedule_update (frame_clock); + break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED; ++ maybe_reschedule_update (frame_clock); ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW; ++ maybe_reschedule_update (frame_clock); ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ maybe_reschedule_update (frame_clock); ++ break; + } + } + +-static int64_t +-clutter_frame_clock_compute_max_render_time_us (ClutterFrameClock *frame_clock) ++static gboolean ++clutter_frame_clock_compute_max_render_time_us (ClutterFrameClock *frame_clock, ++ int64_t *max_render_time_us) + { + int64_t refresh_interval_us; +- int64_t max_render_time_us; + + refresh_interval_us = frame_clock->refresh_interval_us; + + if (!frame_clock->ever_got_measurements || + G_UNLIKELY (clutter_paint_debug_flags & + CLUTTER_DEBUG_DISABLE_DYNAMIC_MAX_RENDER_TIME)) +- return refresh_interval_us * SYNC_DELAY_FALLBACK_FRACTION; ++ return FALSE; + + /* Max render time shows how early the frame clock needs to be dispatched + * to make it to the predicted next presentation time. It is an estimate of +@@ -473,15 +543,15 @@ clutter_frame_clock_compute_max_render_time_us (ClutterFrameClock *frame_clock) + * - The duration of vertical blank. + * - A constant to account for variations in the above estimates. + */ +- max_render_time_us = ++ *max_render_time_us = + MAX (frame_clock->longterm_max_update_duration_us, + frame_clock->shortterm_max_update_duration_us) + + frame_clock->vblank_duration_us + + clutter_max_render_time_constant_us; + +- max_render_time_us = CLAMP (max_render_time_us, 0, refresh_interval_us); ++ *max_render_time_us = CLAMP (*max_render_time_us, 0, 2 * refresh_interval_us); + +- return max_render_time_us; ++ return TRUE; + } + + static void +@@ -496,7 +566,9 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, + int64_t min_render_time_allowed_us; + int64_t max_render_time_allowed_us; + int64_t next_presentation_time_us; ++ int64_t next_smooth_presentation_time_us = 0; + int64_t next_update_time_us; ++ gboolean max_render_time_is_known; + + now_us = g_get_monotonic_time (); + +@@ -516,10 +588,13 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, + } + + min_render_time_allowed_us = refresh_interval_us / 2; +- max_render_time_allowed_us = +- clutter_frame_clock_compute_max_render_time_us (frame_clock); + +- if (min_render_time_allowed_us > max_render_time_allowed_us) ++ max_render_time_is_known = ++ clutter_frame_clock_compute_max_render_time_us (frame_clock, ++ &max_render_time_allowed_us); ++ ++ if (max_render_time_is_known && ++ min_render_time_allowed_us > max_render_time_allowed_us) + min_render_time_allowed_us = max_render_time_allowed_us; + + /* +@@ -540,7 +615,28 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, + * + */ + last_presentation_time_us = frame_clock->last_presentation_time_us; +- next_presentation_time_us = last_presentation_time_us + refresh_interval_us; ++ switch (frame_clock->state) ++ { ++ case CLUTTER_FRAME_CLOCK_STATE_INIT: ++ case CLUTTER_FRAME_CLOCK_STATE_IDLE: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: ++ next_smooth_presentation_time_us = last_presentation_time_us + ++ refresh_interval_us; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ next_smooth_presentation_time_us = last_presentation_time_us + ++ 2 * refresh_interval_us; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: ++ next_smooth_presentation_time_us = last_presentation_time_us + ++ 3 * refresh_interval_us; ++ break; ++ } ++ ++ next_presentation_time_us = next_smooth_presentation_time_us; + + /* + * However, the last presentation could have happened more than a frame ago. +@@ -607,7 +703,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, + } + + if (frame_clock->last_presentation_flags & CLUTTER_FRAME_INFO_FLAG_VSYNC && +- next_presentation_time_us != last_presentation_time_us + refresh_interval_us) ++ next_presentation_time_us != next_smooth_presentation_time_us) + { + /* There was an idle period since the last presentation, so there seems + * be no constantly updating actor. In this case it's best to start +@@ -619,6 +715,24 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock, + } + else + { ++ /* If the max render time isn't known then using the current value of ++ * next_presentation_time_us is suboptimal. Targeting always one frame ++ * prior to that we'd lose the ability to scale up to triple buffering ++ * on late presentation. But targeting two frames prior we would be ++ * always triple buffering even when not required. ++ * So the algorithm for deciding when to scale up to triple buffering ++ * in the absence of render time measurements is to simply target full ++ * frame rate. If we're keeping up then we'll stay double buffering. If ++ * we're not keeping up then this will switch us to triple buffering. ++ */ ++ if (!max_render_time_is_known) ++ { ++ max_render_time_allowed_us = ++ refresh_interval_us * SYNC_DELAY_FALLBACK_FRACTION; ++ next_presentation_time_us = ++ last_presentation_time_us + refresh_interval_us; ++ } ++ + while (next_presentation_time_us - min_render_time_allowed_us < now_us) + next_presentation_time_us += refresh_interval_us; + +@@ -650,7 +764,9 @@ calculate_next_variable_update_time_us (ClutterFrameClock *frame_clock, + + refresh_interval_us = frame_clock->refresh_interval_us; + +- if (frame_clock->last_presentation_time_us == 0) ++ if (frame_clock->last_presentation_time_us == 0 || ++ !clutter_frame_clock_compute_max_render_time_us (frame_clock, ++ &max_render_time_allowed_us)) + { + *out_next_update_time_us = + frame_clock->last_dispatch_time_us ? +@@ -663,9 +779,6 @@ calculate_next_variable_update_time_us (ClutterFrameClock *frame_clock, + return; + } + +- max_render_time_allowed_us = +- clutter_frame_clock_compute_max_render_time_us (frame_clock); +- + last_presentation_time_us = frame_clock->last_presentation_time_us; + next_presentation_time_us = last_presentation_time_us + refresh_interval_us; + +@@ -739,8 +852,17 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock) + frame_clock->pending_reschedule_now = TRUE; + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; + break; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ frame_clock->pending_reschedule = TRUE; ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ frame_clock->pending_reschedule = TRUE; ++ frame_clock->pending_reschedule_now = TRUE; ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: + break; + } + +@@ -759,6 +881,25 @@ clutter_frame_clock_uninhibit (ClutterFrameClock *frame_clock) + maybe_reschedule_update (frame_clock); + } + ++static gboolean ++want_triple_buffering (ClutterFrameClock *frame_clock) ++{ ++ switch (triple_buffering_mode) ++ { ++ case TRIPLE_BUFFERING_MODE_NEVER: ++ return FALSE; ++ case TRIPLE_BUFFERING_MODE_AUTO: ++ return frame_clock->mode == CLUTTER_FRAME_CLOCK_MODE_FIXED && ++ !(frame_clock->last_flip_hints & ++ CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED); ++ case TRIPLE_BUFFERING_MODE_ALWAYS: ++ return TRUE; ++ } ++ ++ g_assert_not_reached (); ++ return FALSE; ++} ++ + void + clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock) + { +@@ -776,11 +917,24 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock) + case CLUTTER_FRAME_CLOCK_STATE_INIT: + case CLUTTER_FRAME_CLOCK_STATE_IDLE: + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW; + break; + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: + return; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ frame_clock->state = ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ if (want_triple_buffering (frame_clock)) ++ { ++ frame_clock->state = ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW; ++ break; ++ } ++ G_GNUC_FALLTHROUGH; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: + frame_clock->pending_reschedule = TRUE; + frame_clock->pending_reschedule_now = TRUE; + return; +@@ -809,13 +963,17 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock) + + frame_clock->next_update_time_us = next_update_time_us; + g_source_set_ready_time (frame_clock->source, next_update_time_us); +- frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW; + } + + void + clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock) + { + int64_t next_update_time_us = -1; ++ TripleBufferingMode current_mode = triple_buffering_mode; ++ ++ if (current_mode == TRIPLE_BUFFERING_MODE_AUTO && ++ !want_triple_buffering (frame_clock)) ++ current_mode = TRIPLE_BUFFERING_MODE_NEVER; + + if (frame_clock->inhibit_count > 0) + { +@@ -831,12 +989,33 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock) + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED; + return; + case CLUTTER_FRAME_CLOCK_STATE_IDLE: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED; + break; + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: + return; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ switch (current_mode) ++ { ++ case TRIPLE_BUFFERING_MODE_NEVER: ++ frame_clock->pending_reschedule = TRUE; ++ return; ++ case TRIPLE_BUFFERING_MODE_AUTO: ++ frame_clock->state = ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED; ++ break; ++ case TRIPLE_BUFFERING_MODE_ALWAYS: ++ next_update_time_us = g_get_monotonic_time (); ++ frame_clock->next_presentation_time_us = 0; ++ frame_clock->is_next_presentation_time_valid = FALSE; ++ frame_clock->state = ++ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED; ++ goto got_update_time; ++ } ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: + frame_clock->pending_reschedule = TRUE; + return; + } +@@ -861,11 +1040,11 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock) + break; + } + ++got_update_time: + g_warn_if_fail (next_update_time_us != -1); + + frame_clock->next_update_time_us = next_update_time_us; + g_source_set_ready_time (frame_clock->source, next_update_time_us); +- frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED; + } + + void +@@ -881,6 +1060,8 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock, + { + case CLUTTER_FRAME_CLOCK_STATE_INIT: + case CLUTTER_FRAME_CLOCK_STATE_IDLE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: + break; + case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: + frame_clock->pending_reschedule = TRUE; +@@ -891,8 +1072,14 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock, + frame_clock->pending_reschedule_now = TRUE; + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; + break; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ frame_clock->pending_reschedule = TRUE; ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ frame_clock->pending_reschedule = TRUE; ++ frame_clock->pending_reschedule_now = TRUE; ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; + break; + } + +@@ -928,7 +1115,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock, + frame_clock->refresh_interval_us; + + lateness_us = time_us - ideal_dispatch_time_us; +- if (lateness_us < 0 || lateness_us >= frame_clock->refresh_interval_us) ++ if (lateness_us < 0 || lateness_us >= frame_clock->refresh_interval_us / 4) + frame_clock->last_dispatch_lateness_us = 0; + else + frame_clock->last_dispatch_lateness_us = lateness_us; +@@ -949,10 +1136,27 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock, + } + #endif + ++ frame_clock->prev_last_dispatch_time_us = frame_clock->last_dispatch_time_us; + frame_clock->last_dispatch_time_us = time_us; + g_source_set_ready_time (frame_clock->source, -1); + +- frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHING; ++ switch (frame_clock->state) ++ { ++ case CLUTTER_FRAME_CLOCK_STATE_INIT: ++ case CLUTTER_FRAME_CLOCK_STATE_IDLE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: ++ g_warn_if_reached (); ++ return; ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO; ++ break; ++ } + + frame_count = frame_clock->frame_count++; + +@@ -983,26 +1187,36 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock, + result = iface->frame (frame_clock, frame, frame_clock->listener.user_data); + COGL_TRACE_END (ClutterFrameClockFrame); + +- switch (frame_clock->state) ++ switch (result) + { +- case CLUTTER_FRAME_CLOCK_STATE_INIT: +- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED: +- g_warn_if_reached (); ++ case CLUTTER_FRAME_RESULT_PENDING_PRESENTED: + break; +- case CLUTTER_FRAME_CLOCK_STATE_IDLE: +- case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: +- case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: +- break; +- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING: +- switch (result) ++ case CLUTTER_FRAME_RESULT_IDLE: ++ /* The frame was aborted; nothing to paint/present */ ++ switch (frame_clock->state) + { +- case CLUTTER_FRAME_RESULT_PENDING_PRESENTED: +- frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED; ++ case CLUTTER_FRAME_CLOCK_STATE_INIT: ++ case CLUTTER_FRAME_CLOCK_STATE_IDLE: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED: ++ case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW: ++ g_warn_if_reached (); + break; +- case CLUTTER_FRAME_RESULT_IDLE: ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE: + frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE; + maybe_reschedule_update (frame_clock); + break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED; ++ maybe_reschedule_update (frame_clock); ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED_NOW; ++ maybe_reschedule_update (frame_clock); ++ break; ++ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO: ++ frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE; ++ maybe_reschedule_update (frame_clock); ++ break; + } + break; + } +@@ -1035,21 +1249,31 @@ frame_clock_source_dispatch (GSource *source, + } + + void +-clutter_frame_clock_record_flip_time (ClutterFrameClock *frame_clock, +- int64_t flip_time_us) ++clutter_frame_clock_record_flip (ClutterFrameClock *frame_clock, ++ int64_t flip_time_us, ++ ClutterFrameHint hints) + { ++ frame_clock->prev_last_flip_time_us = frame_clock->last_flip_time_us; + frame_clock->last_flip_time_us = flip_time_us; ++ frame_clock->last_flip_hints = hints; + } + + GString * + clutter_frame_clock_get_max_render_time_debug_info (ClutterFrameClock *frame_clock) + { ++ int64_t max_render_time_us; + int64_t max_update_duration_us; + GString *string; + +- string = g_string_new (NULL); +- g_string_append_printf (string, "Max render time: %ld µs", +- clutter_frame_clock_compute_max_render_time_us (frame_clock)); ++ string = g_string_new ("Max render time: "); ++ if (!clutter_frame_clock_compute_max_render_time_us (frame_clock, ++ &max_render_time_us)) ++ { ++ g_string_append (string, "unknown"); ++ return string; ++ } ++ ++ g_string_append_printf (string, "%ld µs", max_render_time_us); + + if (frame_clock->got_measurements_last_frame) + g_string_append_printf (string, " ="); +@@ -1216,8 +1440,6 @@ clutter_frame_clock_dispose (GObject *object) + { + ClutterFrameClock *frame_clock = CLUTTER_FRAME_CLOCK (object); + +- g_warn_if_fail (frame_clock->state != CLUTTER_FRAME_CLOCK_STATE_DISPATCHING); +- + if (frame_clock->source) + { + g_signal_emit (frame_clock, signals[DESTROY], 0); +@@ -1241,6 +1463,15 @@ static void + clutter_frame_clock_class_init (ClutterFrameClockClass *klass) + { + GObjectClass *object_class = G_OBJECT_CLASS (klass); ++ const char *mode_str; ++ ++ mode_str = g_getenv ("MUTTER_DEBUG_TRIPLE_BUFFERING"); ++ if (!g_strcmp0 (mode_str, "never")) ++ triple_buffering_mode = TRIPLE_BUFFERING_MODE_NEVER; ++ else if (!g_strcmp0 (mode_str, "auto")) ++ triple_buffering_mode = TRIPLE_BUFFERING_MODE_AUTO; ++ else if (!g_strcmp0 (mode_str, "always")) ++ triple_buffering_mode = TRIPLE_BUFFERING_MODE_ALWAYS; + + object_class->dispose = clutter_frame_clock_dispose; + +diff --git a/clutter/clutter/clutter-frame-clock.h b/clutter/clutter/clutter-frame-clock.h +index a7be5ef..bfc89bd 100644 +--- a/clutter/clutter/clutter-frame-clock.h ++++ b/clutter/clutter/clutter-frame-clock.h +@@ -33,6 +33,12 @@ typedef enum _ClutterFrameResult + CLUTTER_FRAME_RESULT_IDLE, + } ClutterFrameResult; + ++typedef enum _ClutterFrameHint ++{ ++ CLUTTER_FRAME_HINT_NONE = 0, ++ CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED = 1 << 0, ++} ClutterFrameHint; ++ + #define CLUTTER_TYPE_FRAME_CLOCK (clutter_frame_clock_get_type ()) + CLUTTER_EXPORT + G_DECLARE_FINAL_TYPE (ClutterFrameClock, clutter_frame_clock, +@@ -102,7 +108,8 @@ void clutter_frame_clock_remove_timeline (ClutterFrameClock *frame_clock, + CLUTTER_EXPORT + float clutter_frame_clock_get_refresh_rate (ClutterFrameClock *frame_clock); + +-void clutter_frame_clock_record_flip_time (ClutterFrameClock *frame_clock, +- int64_t flip_time_us); ++void clutter_frame_clock_record_flip (ClutterFrameClock *frame_clock, ++ int64_t flip_time_us, ++ ClutterFrameHint hints); + + GString * clutter_frame_clock_get_max_render_time_debug_info (ClutterFrameClock *frame_clock); +diff --git a/clutter/clutter/clutter-frame-private.h b/clutter/clutter/clutter-frame-private.h +index ef66b87..ce14056 100644 +--- a/clutter/clutter/clutter-frame-private.h ++++ b/clutter/clutter/clutter-frame-private.h +@@ -36,6 +36,7 @@ struct _ClutterFrame + + gboolean has_result; + ClutterFrameResult result; ++ ClutterFrameHint hints; + }; + + CLUTTER_EXPORT +diff --git a/clutter/clutter/clutter-frame.c b/clutter/clutter/clutter-frame.c +index 7436f9f..53c289b 100644 +--- a/clutter/clutter/clutter-frame.c ++++ b/clutter/clutter/clutter-frame.c +@@ -115,3 +115,16 @@ clutter_frame_set_result (ClutterFrame *frame, + frame->result = result; + frame->has_result = TRUE; + } ++ ++void ++clutter_frame_set_hint (ClutterFrame *frame, ++ ClutterFrameHint hint) ++{ ++ frame->hints |= hint; ++} ++ ++ClutterFrameHint ++clutter_frame_get_hints (ClutterFrame *frame) ++{ ++ return frame->hints; ++} +diff --git a/clutter/clutter/clutter-frame.h b/clutter/clutter/clutter-frame.h +index 34f0770..c7b3d02 100644 +--- a/clutter/clutter/clutter-frame.h ++++ b/clutter/clutter/clutter-frame.h +@@ -54,4 +54,11 @@ void clutter_frame_set_result (ClutterFrame *frame, + CLUTTER_EXPORT + gboolean clutter_frame_has_result (ClutterFrame *frame); + ++CLUTTER_EXPORT ++void clutter_frame_set_hint (ClutterFrame *frame, ++ ClutterFrameHint hint); ++ ++CLUTTER_EXPORT ++ClutterFrameHint clutter_frame_get_hints (ClutterFrame *frame); ++ + G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterFrame, clutter_frame_unref) +diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c +index f5188e2..d53e377 100644 +--- a/clutter/clutter/clutter-stage-view.c ++++ b/clutter/clutter/clutter-stage-view.c +@@ -898,14 +898,21 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock, + + _clutter_stage_window_redraw_view (stage_window, view, frame); + +- clutter_frame_clock_record_flip_time (frame_clock, +- g_get_monotonic_time ()); ++ clutter_frame_clock_record_flip (frame_clock, ++ g_get_monotonic_time (), ++ clutter_frame_get_hints (frame)); + + clutter_stage_emit_after_paint (stage, view, frame); + + if (_clutter_context_get_show_fps ()) + end_frame_timing_measurement (view); + } ++ else ++ { ++ clutter_frame_clock_record_flip (frame_clock, ++ g_get_monotonic_time (), ++ clutter_frame_get_hints (frame)); ++ } + + _clutter_stage_window_finish_frame (stage_window, view, frame); + +diff --git a/cogl/cogl/cogl-onscreen-private.h b/cogl/cogl/cogl-onscreen-private.h +index 959a605..86d8ea2 100644 +--- a/cogl/cogl/cogl-onscreen-private.h ++++ b/cogl/cogl/cogl-onscreen-private.h +@@ -78,4 +78,7 @@ COGL_EXPORT CoglFrameInfo * + cogl_onscreen_peek_tail_frame_info (CoglOnscreen *onscreen); + + COGL_EXPORT CoglFrameInfo * +-cogl_onscreen_pop_head_frame_info (CoglOnscreen *onscreen); ++cogl_onscreen_pop_head_frame_info (CoglOnscreen *onscreen); ++ ++COGL_EXPORT unsigned int ++cogl_onscreen_count_pending_frames (CoglOnscreen *onscreen); +diff --git a/cogl/cogl/cogl-onscreen.c b/cogl/cogl/cogl-onscreen.c +index afb648b..086be7e 100644 +--- a/cogl/cogl/cogl-onscreen.c ++++ b/cogl/cogl/cogl-onscreen.c +@@ -515,6 +515,14 @@ cogl_onscreen_pop_head_frame_info (CoglOnscreen *onscreen) + return g_queue_pop_head (&priv->pending_frame_infos); + } + ++unsigned int ++cogl_onscreen_count_pending_frames (CoglOnscreen *onscreen) ++{ ++ CoglOnscreenPrivate *priv = cogl_onscreen_get_instance_private (onscreen); ++ ++ return g_queue_get_length (&priv->pending_frame_infos); ++} ++ + CoglFrameClosure * + cogl_onscreen_add_frame_callback (CoglOnscreen *onscreen, + CoglFrameCallback callback, +diff --git a/src/backends/meta-stage-impl.c b/src/backends/meta-stage-impl.c +index 7aa2443..727e1a5 100644 +--- a/src/backends/meta-stage-impl.c ++++ b/src/backends/meta-stage-impl.c +@@ -774,6 +774,8 @@ meta_stage_impl_redraw_view (ClutterStageWindow *stage_window, + { + g_autoptr (GError) error = NULL; + ++ clutter_frame_set_hint (frame, CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED); ++ + if (meta_stage_impl_scanout_view (stage_impl, + stage_view, + scanout, +diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c +index 6758982..315ed27 100644 +--- a/src/backends/native/meta-kms-impl-device.c ++++ b/src/backends/native/meta-kms-impl-device.c +@@ -1586,9 +1586,11 @@ meta_kms_impl_device_handle_update (MetaKmsImplDevice *impl_device, + meta_kms_update_merge_from (crtc_frame->pending_update, update); + meta_kms_update_free (update); + update = g_steal_pointer (&crtc_frame->pending_update); +- disarm_crtc_frame_deadline_timer (crtc_frame); + } + ++ if (crtc_frame->deadline.armed) ++ disarm_crtc_frame_deadline_timer (crtc_frame); ++ + meta_kms_device_handle_flush (priv->device, latch_crtc); + + feedback = do_process (impl_device, latch_crtc, update, flags); +diff --git a/src/backends/native/meta-kms.c b/src/backends/native/meta-kms.c +index d41fcef..4809ca0 100644 +--- a/src/backends/native/meta-kms.c ++++ b/src/backends/native/meta-kms.c +@@ -63,6 +63,8 @@ struct _MetaKms + int kernel_thread_inhibit_count; + + MetaKmsCursorManager *cursor_manager; ++ ++ gboolean shutting_down; + }; + + G_DEFINE_TYPE (MetaKms, meta_kms, META_TYPE_THREAD) +@@ -354,6 +356,7 @@ static void + on_prepare_shutdown (MetaBackend *backend, + MetaKms *kms) + { ++ kms->shutting_down = TRUE; + meta_kms_run_impl_task_sync (kms, prepare_shutdown_in_impl, NULL, NULL); + meta_thread_flush_callbacks (META_THREAD (kms)); + +@@ -413,6 +416,12 @@ meta_kms_new (MetaBackend *backend, + return kms; + } + ++gboolean ++meta_kms_is_shutting_down (MetaKms *kms) ++{ ++ return kms->shutting_down; ++} ++ + static void + meta_kms_finalize (GObject *object) + { +diff --git a/src/backends/native/meta-kms.h b/src/backends/native/meta-kms.h +index 7434014..f6b1952 100644 +--- a/src/backends/native/meta-kms.h ++++ b/src/backends/native/meta-kms.h +@@ -60,6 +60,8 @@ MetaKmsDevice * meta_kms_create_device (MetaKms *kms, + MetaKmsDeviceFlag flags, + GError **error); + ++gboolean meta_kms_is_shutting_down (MetaKms *kms); ++ + MetaKms * meta_kms_new (MetaBackend *backend, + MetaKmsFlags flags, + GError **error); +diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c +index 1a31f04..9836663 100644 +--- a/src/backends/native/meta-onscreen-native.c ++++ b/src/backends/native/meta-onscreen-native.c +@@ -76,7 +76,7 @@ typedef struct _MetaOnscreenNativeSecondaryGpuState + + struct { + MetaDrmBufferDumb *current_dumb_fb; +- MetaDrmBufferDumb *dumb_fbs[2]; ++ MetaDrmBufferDumb *dumb_fbs[3]; + } cpu; + + gboolean noted_primary_gpu_copy_ok; +@@ -98,9 +98,13 @@ struct _MetaOnscreenNative + struct { + struct gbm_surface *surface; + MetaDrmBuffer *current_fb; ++ MetaDrmBuffer *posted_fb; + MetaDrmBuffer *next_fb; ++ MetaDrmBuffer *stalled_fb; + CoglScanout *current_scanout; ++ CoglScanout *posted_scanout; + CoglScanout *next_scanout; ++ CoglScanout *stalled_scanout; + } gbm; + + #ifdef HAVE_EGL_DEVICE +@@ -125,6 +129,16 @@ struct _MetaOnscreenNative + gulong privacy_screen_changed_handler_id; + gulong color_space_changed_handler_id; + gulong hdr_metadata_changed_handler_id; ++ ++ gboolean needs_flush; ++ ++ unsigned int swaps_pending; ++ ++ struct { ++ int *rectangles; /* 4 x n_rectangles */ ++ int n_rectangles; ++ ClutterFrame *frame; ++ } next_post; + }; + + G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native, +@@ -132,44 +146,42 @@ G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native, + + static GQuark blit_source_quark = 0; + ++static void ++try_post_latest_swap (CoglOnscreen *onscreen); ++ ++static void ++post_finish_frame (MetaOnscreenNative *onscreen_native, ++ MetaKmsUpdate *kms_update); ++ + static gboolean + init_secondary_gpu_state (MetaRendererNative *renderer_native, + CoglOnscreen *onscreen, + GError **error); + +-static void +-free_current_bo (CoglOnscreen *onscreen) +-{ +- MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); +- +- g_clear_object (&onscreen_native->gbm.current_fb); +- g_clear_object (&onscreen_native->gbm.current_scanout); +-} +- + static void + meta_onscreen_native_swap_drm_fb (CoglOnscreen *onscreen) + { + MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); + +- if (!onscreen_native->gbm.next_fb) ++ if (!onscreen_native->gbm.posted_fb) + return; + +- free_current_bo (onscreen); ++ g_set_object (&onscreen_native->gbm.current_fb, ++ onscreen_native->gbm.posted_fb); ++ g_clear_object (&onscreen_native->gbm.posted_fb); + +- g_set_object (&onscreen_native->gbm.current_fb, onscreen_native->gbm.next_fb); +- g_clear_object (&onscreen_native->gbm.next_fb); + g_set_object (&onscreen_native->gbm.current_scanout, +- onscreen_native->gbm.next_scanout); +- g_clear_object (&onscreen_native->gbm.next_scanout); ++ onscreen_native->gbm.posted_scanout); ++ g_clear_object (&onscreen_native->gbm.posted_scanout); + } + + static void +-meta_onscreen_native_clear_next_fb (CoglOnscreen *onscreen) ++meta_onscreen_native_clear_posted_fb (CoglOnscreen *onscreen) + { + MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); + +- g_clear_object (&onscreen_native->gbm.next_fb); +- g_clear_object (&onscreen_native->gbm.next_scanout); ++ g_clear_object (&onscreen_native->gbm.posted_fb); ++ g_clear_object (&onscreen_native->gbm.posted_scanout); + } + + static void +@@ -207,7 +219,7 @@ meta_onscreen_native_notify_frame_complete (CoglOnscreen *onscreen) + + info = cogl_onscreen_pop_head_frame_info (onscreen); + +- g_assert (!cogl_onscreen_peek_head_frame_info (onscreen)); ++ g_return_if_fail (info); + + _cogl_onscreen_notify_frame_sync (onscreen, info); + _cogl_onscreen_notify_complete (onscreen, info); +@@ -243,6 +255,7 @@ notify_view_crtc_presented (MetaRendererView *view, + + meta_onscreen_native_notify_frame_complete (onscreen); + meta_onscreen_native_swap_drm_fb (onscreen); ++ try_post_latest_swap (onscreen); + } + + static void +@@ -292,15 +305,13 @@ page_flip_feedback_ready (MetaKmsCrtc *kms_crtc, + CoglFramebuffer *framebuffer = + clutter_stage_view_get_onscreen (CLUTTER_STAGE_VIEW (view)); + CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer); +- MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); + CoglFrameInfo *frame_info; + + frame_info = cogl_onscreen_peek_head_frame_info (onscreen); + frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC; + +- g_warn_if_fail (!onscreen_native->gbm.next_fb); +- + meta_onscreen_native_notify_frame_complete (onscreen); ++ try_post_latest_swap (onscreen); + } + + static void +@@ -350,7 +361,8 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc, + frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC; + + meta_onscreen_native_notify_frame_complete (onscreen); +- meta_onscreen_native_clear_next_fb (onscreen); ++ meta_onscreen_native_clear_posted_fb (onscreen); ++ try_post_latest_swap (onscreen); + } + + static const MetaKmsPageFlipListenerVtable page_flip_listener_vtable = { +@@ -411,18 +423,41 @@ custom_egl_stream_page_flip (gpointer custom_page_flip_data, + } + #endif /* HAVE_EGL_DEVICE */ + +-void +-meta_onscreen_native_dummy_power_save_page_flip (CoglOnscreen *onscreen) ++static void ++drop_stalled_swap (CoglOnscreen *onscreen) + { + CoglFrameInfo *frame_info; ++ MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); + +- meta_onscreen_native_swap_drm_fb (onscreen); ++ /* Remember we can't compare stalled_fb because it's not used by ++ * META_RENDERER_NATIVE_MODE_EGL_DEVICE. So we judge stalled to be whenever ++ * swaps_pending > 1. ++ */ ++ if (onscreen_native->swaps_pending <= 1) ++ return; ++ ++ onscreen_native->swaps_pending--; ++ ++ g_clear_object (&onscreen_native->gbm.stalled_fb); ++ g_clear_object (&onscreen_native->gbm.stalled_scanout); + + frame_info = cogl_onscreen_peek_tail_frame_info (onscreen); + frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC; + meta_onscreen_native_notify_frame_complete (onscreen); + } + ++void ++meta_onscreen_native_dummy_power_save_page_flip (CoglOnscreen *onscreen) ++{ ++ drop_stalled_swap (onscreen); ++ ++ /* If the monitor just woke up and the shell is fully idle (has nothing ++ * more to swap) then we just woke to an indefinitely black screen. Let's ++ * fix that using the last swap (which is never classified as "stalled"). ++ */ ++ try_post_latest_swap (onscreen); ++} ++ + static void + apply_transform (MetaCrtcKms *crtc_kms, + MetaKmsPlaneAssignment *kms_plane_assignment, +@@ -521,13 +556,21 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen, + switch (renderer_gpu_data->mode) + { + case META_RENDERER_NATIVE_MODE_GBM: +- buffer = onscreen_native->gbm.next_fb; ++ g_set_object (&onscreen_native->gbm.posted_fb, ++ onscreen_native->gbm.next_fb); ++ g_clear_object (&onscreen_native->gbm.next_fb); ++ ++ buffer = onscreen_native->gbm.posted_fb; + +- if (onscreen_native->gbm.next_scanout) ++ g_set_object (&onscreen_native->gbm.posted_scanout, ++ onscreen_native->gbm.next_scanout); ++ g_clear_object (&onscreen_native->gbm.next_scanout); ++ ++ if (onscreen_native->gbm.posted_scanout) + { +- cogl_scanout_get_src_rect (onscreen_native->gbm.next_scanout, ++ cogl_scanout_get_src_rect (onscreen_native->gbm.posted_scanout, + &src_rect); +- cogl_scanout_get_dst_rect (onscreen_native->gbm.next_scanout, ++ cogl_scanout_get_dst_rect (onscreen_native->gbm.posted_scanout, + &dst_rect); + } + else +@@ -918,12 +961,17 @@ static MetaDrmBufferDumb * + secondary_gpu_get_next_dumb_buffer (MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state) + { + MetaDrmBufferDumb *current_dumb_fb; ++ const int n_dumb_fbs = G_N_ELEMENTS (secondary_gpu_state->cpu.dumb_fbs); ++ int i; + + current_dumb_fb = secondary_gpu_state->cpu.current_dumb_fb; +- if (current_dumb_fb == secondary_gpu_state->cpu.dumb_fbs[0]) +- return secondary_gpu_state->cpu.dumb_fbs[1]; +- else +- return secondary_gpu_state->cpu.dumb_fbs[0]; ++ for (i = 0; i < n_dumb_fbs; i++) ++ { ++ if (current_dumb_fb == secondary_gpu_state->cpu.dumb_fbs[i]) ++ return secondary_gpu_state->cpu.dumb_fbs[(i + 1) % n_dumb_fbs]; ++ } ++ ++ return secondary_gpu_state->cpu.dumb_fbs[0]; + } + + static MetaDrmBuffer * +@@ -1255,10 +1303,17 @@ swap_buffer_result_feedback (const MetaKmsFeedback *kms_feedback, + g_warning ("Page flip failed: %s", error->message); + + frame_info = cogl_onscreen_peek_head_frame_info (onscreen); +- frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC; + +- meta_onscreen_native_notify_frame_complete (onscreen); +- meta_onscreen_native_clear_next_fb (onscreen); ++ /* After resuming from suspend, drop_stalled_swap might have done this ++ * already and emptied the frame_info queue. ++ */ ++ if (frame_info) ++ { ++ frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC; ++ meta_onscreen_native_notify_frame_complete (onscreen); ++ } ++ ++ meta_onscreen_native_clear_posted_fb (onscreen); + } + + static const MetaKmsResultListenerVtable swap_buffer_result_listener_vtable = { +@@ -1279,32 +1334,37 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys; + MetaRendererNativeGpuData *renderer_gpu_data = cogl_renderer_egl->platform; + MetaRendererNative *renderer_native = renderer_gpu_data->renderer_native; +- MetaRenderer *renderer = META_RENDERER (renderer_native); +- MetaBackend *backend = meta_renderer_get_backend (renderer); +- MetaMonitorManager *monitor_manager = +- meta_backend_get_monitor_manager (backend); + MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); + MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state; + MetaGpuKms *render_gpu = onscreen_native->render_gpu; + MetaDeviceFile *render_device_file; + ClutterFrame *frame = user_data; +- MetaFrameNative *frame_native = meta_frame_native_from_frame (frame); +- MetaKmsUpdate *kms_update; + CoglOnscreenClass *parent_class; + gboolean create_timestamp_query = TRUE; + gboolean egl_context_changed = FALSE; +- MetaPowerSave power_save_mode; + g_autoptr (GError) error = NULL; + MetaDrmBufferFlags buffer_flags; + MetaDrmBufferGbm *buffer_gbm; + g_autoptr (MetaDrmBuffer) primary_gpu_fb = NULL; + g_autoptr (MetaDrmBuffer) secondary_gpu_fb = NULL; +- MetaKmsCrtc *kms_crtc; +- MetaKmsDevice *kms_device; ++ size_t rectangles_size; + + COGL_TRACE_BEGIN_SCOPED (MetaRendererNativeSwapBuffers, + "Meta::OnscreenNative::swap_buffers_with_damage()"); + ++ if (meta_is_topic_enabled (META_DEBUG_KMS)) ++ { ++ unsigned int frames_pending = ++ cogl_onscreen_count_pending_frames (onscreen); ++ ++ meta_topic (META_DEBUG_KMS, ++ "Swap buffers: %u frames pending (%s-buffering)", ++ frames_pending, ++ frames_pending == 1 ? "double" : ++ frames_pending == 2 ? "triple" : ++ "?"); ++ } ++ + secondary_gpu_fb = + update_secondary_gpu_state_pre_swap_buffers (onscreen, + rectangles, +@@ -1379,7 +1439,17 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + switch (renderer_gpu_data->mode) + { + case META_RENDERER_NATIVE_MODE_GBM: +- g_warn_if_fail (onscreen_native->gbm.next_fb == NULL); ++ if (onscreen_native->gbm.next_fb != NULL) ++ { ++ g_warn_if_fail (onscreen_native->gbm.stalled_fb == NULL); ++ drop_stalled_swap (onscreen); ++ g_assert (onscreen_native->gbm.stalled_fb == NULL); ++ onscreen_native->gbm.stalled_fb = ++ g_steal_pointer (&onscreen_native->gbm.next_fb); ++ onscreen_native->gbm.stalled_scanout = ++ g_steal_pointer (&onscreen_native->gbm.next_scanout); ++ } ++ + if (onscreen_native->secondary_gpu_state) + g_set_object (&onscreen_native->gbm.next_fb, secondary_gpu_fb); + else +@@ -1404,6 +1474,9 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + #endif + } + ++ clutter_frame_set_result (frame, ++ CLUTTER_FRAME_RESULT_PENDING_PRESENTED); ++ + /* + * If we changed EGL context, cogl will have the wrong idea about what is + * current, making it fail to set it when it needs to. Avoid that by making +@@ -1413,12 +1486,78 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + if (egl_context_changed) + _cogl_winsys_egl_ensure_current (cogl_display); + +- kms_crtc = meta_crtc_kms_get_kms_crtc (META_CRTC_KMS (onscreen_native->crtc)); +- kms_device = meta_kms_crtc_get_device (kms_crtc); ++ rectangles_size = n_rectangles * 4 * sizeof (int); ++ onscreen_native->next_post.rectangles = ++ g_realloc (onscreen_native->next_post.rectangles, rectangles_size); ++ memcpy (onscreen_native->next_post.rectangles, rectangles, rectangles_size); ++ onscreen_native->next_post.n_rectangles = n_rectangles; ++ ++ g_clear_pointer (&onscreen_native->next_post.frame, clutter_frame_unref); ++ onscreen_native->next_post.frame = clutter_frame_ref (frame); ++ ++ onscreen_native->swaps_pending++; ++ try_post_latest_swap (onscreen); ++} ++ ++static void ++try_post_latest_swap (CoglOnscreen *onscreen) ++{ ++ CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen); ++ CoglContext *cogl_context = cogl_framebuffer_get_context (framebuffer); ++ CoglRenderer *cogl_renderer = cogl_context->display->renderer; ++ CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys; ++ MetaRendererNativeGpuData *renderer_gpu_data = cogl_renderer_egl->platform; ++ MetaRendererNative *renderer_native = renderer_gpu_data->renderer_native; ++ MetaRenderer *renderer = META_RENDERER (renderer_native); ++ MetaBackend *backend = meta_renderer_get_backend (renderer); ++ MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend); ++ MetaKms *kms = meta_backend_native_get_kms (backend_native); ++ MetaMonitorManager *monitor_manager = ++ meta_backend_get_monitor_manager (backend); ++ MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); ++ MetaPowerSave power_save_mode; ++ MetaCrtcKms *crtc_kms = META_CRTC_KMS (onscreen_native->crtc); ++ MetaKmsCrtc *kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms); ++ MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc); ++ MetaKmsUpdate *kms_update; ++ g_autoptr (MetaKmsFeedback) kms_feedback = NULL; ++ g_autoptr (ClutterFrame) frame = NULL; ++ MetaFrameNative *frame_native; ++ ++ if (onscreen_native->next_post.frame == NULL || ++ onscreen_native->view == NULL || ++ meta_kms_is_shutting_down (kms)) ++ return; + + power_save_mode = meta_monitor_manager_get_power_save_mode (monitor_manager); + if (power_save_mode == META_POWER_SAVE_ON) + { ++ unsigned int frames_pending = ++ cogl_onscreen_count_pending_frames (onscreen); ++ unsigned int posts_pending; ++ ++ g_assert (frames_pending >= onscreen_native->swaps_pending); ++ posts_pending = frames_pending - onscreen_native->swaps_pending; ++ if (posts_pending > 0) ++ return; /* wait for the next frame notification and then try again */ ++ ++ frame = g_steal_pointer (&onscreen_native->next_post.frame); ++ frame_native = meta_frame_native_from_frame (frame); ++ ++ if (onscreen_native->swaps_pending == 0) ++ { ++ if (frame_native) ++ { ++ kms_update = meta_frame_native_steal_kms_update (frame_native); ++ if (kms_update) ++ post_finish_frame (onscreen_native, kms_update); ++ } ++ return; ++ } ++ ++ drop_stalled_swap (onscreen); ++ onscreen_native->swaps_pending--; ++ + kms_update = meta_frame_native_ensure_kms_update (frame_native, + kms_device); + meta_kms_update_add_result_listener (kms_update, +@@ -1433,15 +1572,13 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + onscreen_native->crtc, + kms_update, + META_KMS_ASSIGN_PLANE_FLAG_NONE, +- rectangles, +- n_rectangles); ++ onscreen_native->next_post.rectangles, ++ onscreen_native->next_post.n_rectangles); + } + else + { + meta_renderer_native_queue_power_save_page_flip (renderer_native, + onscreen); +- clutter_frame_set_result (frame, +- CLUTTER_FRAME_RESULT_PENDING_PRESENTED); + return; + } + +@@ -1461,8 +1598,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + kms_update = meta_frame_native_steal_kms_update (frame_native); + meta_renderer_native_queue_mode_set_update (renderer_native, + kms_update); +- clutter_frame_set_result (frame, +- CLUTTER_FRAME_RESULT_PENDING_PRESENTED); + return; + } + else if (meta_renderer_native_has_pending_mode_set (renderer_native)) +@@ -1476,8 +1611,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + + meta_frame_native_steal_kms_update (frame_native); + meta_renderer_native_post_mode_set_updates (renderer_native); +- clutter_frame_set_result (frame, +- CLUTTER_FRAME_RESULT_PENDING_PRESENTED); + return; + } + break; +@@ -1493,8 +1626,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + kms_update); + + meta_renderer_native_post_mode_set_updates (renderer_native); +- clutter_frame_set_result (frame, +- CLUTTER_FRAME_RESULT_PENDING_PRESENTED); + return; + } + break; +@@ -1509,7 +1640,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, + kms_update = meta_frame_native_steal_kms_update (frame_native); + meta_kms_device_post_update (kms_device, kms_update, + META_KMS_UPDATE_FLAG_NONE); +- clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED); + } + + gboolean +@@ -1580,7 +1710,7 @@ scanout_result_feedback (const MetaKmsFeedback *kms_feedback, + + g_warning ("Direct scanout page flip failed: %s", error->message); + +- cogl_scanout_notify_failed (onscreen_native->gbm.next_scanout, ++ cogl_scanout_notify_failed (onscreen_native->gbm.posted_scanout, + onscreen); + clutter_stage_view_add_redraw_clip (view, NULL); + clutter_stage_view_schedule_update_now (view); +@@ -1590,7 +1720,7 @@ scanout_result_feedback (const MetaKmsFeedback *kms_feedback, + frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC; + + meta_onscreen_native_notify_frame_complete (onscreen); +- meta_onscreen_native_clear_next_fb (onscreen); ++ meta_onscreen_native_clear_posted_fb (onscreen); + } + + static const MetaKmsResultListenerVtable scanout_result_listener_vtable = { +@@ -1642,6 +1772,18 @@ meta_onscreen_native_direct_scanout (CoglOnscreen *onscreen, + return FALSE; + } + ++ /* Our direct scanout frame counts as 1, so more than that means we would ++ * be jumping the queue (and post would fail). ++ */ ++ if (cogl_onscreen_count_pending_frames (onscreen) > 1) ++ { ++ g_set_error_literal (error, ++ COGL_SCANOUT_ERROR, ++ COGL_SCANOUT_ERROR_INHIBITED, ++ "Direct scanout is inhibited during triple buffering"); ++ return FALSE; ++ } ++ + renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native, + render_gpu); + +@@ -1757,11 +1899,7 @@ meta_onscreen_native_before_redraw (CoglOnscreen *onscreen, + ClutterFrame *frame) + { + MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); +- MetaCrtcKms *crtc_kms = META_CRTC_KMS (onscreen_native->crtc); +- MetaKmsCrtc *kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms); + +- meta_kms_device_await_flush (meta_kms_crtc_get_device (kms_crtc), +- kms_crtc); + maybe_update_frame_sync (onscreen_native, frame); + } + +@@ -1877,22 +2015,79 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen, + MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc); + MetaFrameNative *frame_native = meta_frame_native_from_frame (frame); + MetaKmsUpdate *kms_update; ++ unsigned int frames_pending = cogl_onscreen_count_pending_frames (onscreen); ++ unsigned int swaps_pending = onscreen_native->swaps_pending; ++ unsigned int posts_pending = frames_pending - swaps_pending; + +- kms_update = meta_frame_native_steal_kms_update (frame_native); +- if (!kms_update) ++ onscreen_native->needs_flush |= meta_kms_device_handle_flush (kms_device, ++ kms_crtc); ++ ++ if (!meta_frame_native_has_kms_update (frame_native)) + { +- if (meta_kms_device_handle_flush (kms_device, kms_crtc)) +- { +- kms_update = meta_kms_update_new (kms_device); +- meta_kms_update_set_flushing (kms_update, kms_crtc); +- } +- else ++ if (!onscreen_native->needs_flush || posts_pending) + { + clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_IDLE); + return; + } + } + ++ if (posts_pending && !swaps_pending) ++ { ++ g_return_if_fail (meta_frame_native_has_kms_update (frame_native)); ++ g_warn_if_fail (onscreen_native->next_post.frame == NULL); ++ ++ g_clear_pointer (&onscreen_native->next_post.frame, clutter_frame_unref); ++ onscreen_native->next_post.frame = clutter_frame_ref (frame); ++ clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED); ++ return; ++ } ++ ++ kms_update = meta_frame_native_steal_kms_update (frame_native); ++ ++ if (posts_pending && swaps_pending) ++ { ++ MetaFrameNative *older_frame_native; ++ MetaKmsUpdate *older_kms_update; ++ ++ g_return_if_fail (kms_update); ++ g_return_if_fail (onscreen_native->next_post.frame != NULL); ++ ++ older_frame_native = ++ meta_frame_native_from_frame (onscreen_native->next_post.frame); ++ older_kms_update = ++ meta_frame_native_ensure_kms_update (older_frame_native, kms_device); ++ meta_kms_update_merge_from (older_kms_update, kms_update); ++ meta_kms_update_free (kms_update); ++ clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_IDLE); ++ return; ++ } ++ ++ if (!kms_update) ++ { ++ kms_update = meta_kms_update_new (kms_device); ++ g_warn_if_fail (onscreen_native->needs_flush); ++ } ++ ++ if (onscreen_native->needs_flush) ++ { ++ meta_kms_update_set_flushing (kms_update, kms_crtc); ++ onscreen_native->needs_flush = FALSE; ++ } ++ ++ post_finish_frame (onscreen_native, kms_update); ++ ++ clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED); ++} ++ ++static void ++post_finish_frame (MetaOnscreenNative *onscreen_native, ++ MetaKmsUpdate *kms_update) ++{ ++ MetaCrtc *crtc = onscreen_native->crtc; ++ MetaKmsCrtc *kms_crtc = meta_crtc_kms_get_kms_crtc (META_CRTC_KMS (crtc)); ++ MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc); ++ g_autoptr (MetaKmsFeedback) kms_feedback = NULL; ++ + meta_kms_update_add_result_listener (kms_update, + &finish_frame_result_listener_vtable, + NULL, +@@ -1915,7 +2110,19 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen, + meta_kms_update_set_flushing (kms_update, kms_crtc); + meta_kms_device_post_update (kms_device, kms_update, + META_KMS_UPDATE_FLAG_NONE); +- clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED); ++} ++ ++void ++meta_onscreen_native_discard_pending_swaps (CoglOnscreen *onscreen) ++{ ++ MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); ++ ++ onscreen_native->swaps_pending = 0; ++ ++ g_clear_object (&onscreen_native->gbm.stalled_fb); ++ g_clear_object (&onscreen_native->gbm.stalled_scanout); ++ g_clear_object (&onscreen_native->gbm.next_fb); ++ g_clear_object (&onscreen_native->gbm.next_scanout); + } + + static gboolean +@@ -2830,8 +3037,11 @@ meta_onscreen_native_dispose (GObject *object) + { + case META_RENDERER_NATIVE_MODE_GBM: + g_clear_object (&onscreen_native->gbm.next_fb); ++ g_clear_object (&onscreen_native->gbm.posted_fb); ++ g_clear_object (&onscreen_native->gbm.current_fb); + g_clear_object (&onscreen_native->gbm.next_scanout); +- free_current_bo (onscreen); ++ g_clear_object (&onscreen_native->gbm.posted_scanout); ++ g_clear_object (&onscreen_native->gbm.current_scanout); + break; + case META_RENDERER_NATIVE_MODE_SURFACELESS: + g_assert_not_reached (); +@@ -2865,6 +3075,10 @@ meta_onscreen_native_dispose (GObject *object) + + g_clear_object (&onscreen_native->output); + g_clear_object (&onscreen_native->crtc); ++ ++ g_clear_pointer (&onscreen_native->next_post.rectangles, g_free); ++ g_clear_pointer (&onscreen_native->next_post.frame, clutter_frame_unref); ++ onscreen_native->next_post.n_rectangles = 0; + } + + static void +diff --git a/src/backends/native/meta-onscreen-native.h b/src/backends/native/meta-onscreen-native.h +index 0e11933..e30357d 100644 +--- a/src/backends/native/meta-onscreen-native.h ++++ b/src/backends/native/meta-onscreen-native.h +@@ -48,6 +48,8 @@ void meta_onscreen_native_dummy_power_save_page_flip (CoglOnscreen *onscreen); + gboolean meta_onscreen_native_is_buffer_scanout_compatible (CoglOnscreen *onscreen, + CoglScanout *scanout); + ++void meta_onscreen_native_discard_pending_swaps (CoglOnscreen *onscreen); ++ + void meta_onscreen_native_set_view (CoglOnscreen *onscreen, + MetaRendererView *view); + +diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c +index aa76d01..3c22b4e 100644 +--- a/src/backends/native/meta-renderer-native.c ++++ b/src/backends/native/meta-renderer-native.c +@@ -731,12 +731,18 @@ static gboolean + dummy_power_save_page_flip_cb (gpointer user_data) + { + MetaRendererNative *renderer_native = user_data; ++ GList *old_list = ++ g_steal_pointer (&renderer_native->power_save_page_flip_onscreens); + +- g_list_foreach (renderer_native->power_save_page_flip_onscreens, ++ g_list_foreach (old_list, + (GFunc) meta_onscreen_native_dummy_power_save_page_flip, + NULL); +- g_clear_list (&renderer_native->power_save_page_flip_onscreens, ++ g_clear_list (&old_list, + g_object_unref); ++ ++ if (renderer_native->power_save_page_flip_onscreens != NULL) ++ return G_SOURCE_CONTINUE; ++ + renderer_native->power_save_page_flip_source_id = 0; + + return G_SOURCE_REMOVE; +@@ -748,6 +754,9 @@ meta_renderer_native_queue_power_save_page_flip (MetaRendererNative *renderer_na + { + const unsigned int timeout_ms = 100; + ++ if (g_list_find (renderer_native->power_save_page_flip_onscreens, onscreen)) ++ return; ++ + if (!renderer_native->power_save_page_flip_source_id) + { + renderer_native->power_save_page_flip_source_id = +@@ -1529,6 +1538,26 @@ detach_onscreens (MetaRenderer *renderer) + } + } + ++static void ++discard_pending_swaps (MetaRenderer *renderer) ++{ ++ GList *views = meta_renderer_get_views (renderer);; ++ GList *l; ++ ++ for (l = views; l; l = l->next) ++ { ++ ClutterStageView *stage_view = l->data; ++ CoglFramebuffer *fb = clutter_stage_view_get_onscreen (stage_view); ++ CoglOnscreen *onscreen; ++ ++ if (!COGL_IS_ONSCREEN (fb)) ++ continue; ++ ++ onscreen = COGL_ONSCREEN (fb); ++ meta_onscreen_native_discard_pending_swaps (onscreen); ++ } ++} ++ + static void + meta_renderer_native_rebuild_views (MetaRenderer *renderer) + { +@@ -1539,6 +1568,7 @@ meta_renderer_native_rebuild_views (MetaRenderer *renderer) + MetaRendererClass *parent_renderer_class = + META_RENDERER_CLASS (meta_renderer_native_parent_class); + ++ discard_pending_swaps (renderer); + meta_kms_discard_pending_page_flips (kms); + g_hash_table_remove_all (renderer_native->mode_set_updates); + +diff --git a/src/tests/native-kms-render.c b/src/tests/native-kms-render.c +index f5ebc23..2f870fd 100644 +--- a/src/tests/native-kms-render.c ++++ b/src/tests/native-kms-render.c +@@ -39,6 +39,8 @@ + #include "tests/meta-wayland-test-driver.h" + #include "tests/meta-wayland-test-utils.h" + ++#define N_FRAMES_PER_TEST 30 ++ + typedef struct + { + int number_of_frames_left; +@@ -46,12 +48,15 @@ typedef struct + + struct { + int n_paints; +- uint32_t fb_id; ++ int n_presentations; ++ int n_direct_scanouts; ++ GList *fb_ids; + } scanout; + + gboolean wait_for_scanout; + + struct { ++ int scanouts_attempted; + gboolean scanout_sabotaged; + gboolean fallback_painted; + guint repaint_guard_id; +@@ -101,7 +106,7 @@ meta_test_kms_render_basic (void) + gulong handler_id; + + test = (KmsRenderingTest) { +- .number_of_frames_left = 10, ++ .number_of_frames_left = N_FRAMES_PER_TEST, + .loop = g_main_loop_new (NULL, FALSE), + }; + handler_id = g_signal_connect (stage, "after-update", +@@ -123,7 +128,6 @@ on_scanout_before_update (ClutterStage *stage, + KmsRenderingTest *test) + { + test->scanout.n_paints = 0; +- test->scanout.fb_id = 0; + } + + static void +@@ -135,6 +139,7 @@ on_scanout_before_paint (ClutterStage *stage, + CoglScanout *scanout; + CoglScanoutBuffer *scanout_buffer; + MetaDrmBuffer *buffer; ++ uint32_t fb_id; + + scanout = clutter_stage_view_peek_scanout (stage_view); + if (!scanout) +@@ -143,8 +148,13 @@ on_scanout_before_paint (ClutterStage *stage, + scanout_buffer = cogl_scanout_get_buffer (scanout); + g_assert_true (META_IS_DRM_BUFFER (scanout_buffer)); + buffer = META_DRM_BUFFER (scanout_buffer); +- test->scanout.fb_id = meta_drm_buffer_get_fb_id (buffer); +- g_assert_cmpuint (test->scanout.fb_id, >, 0); ++ fb_id = meta_drm_buffer_get_fb_id (buffer); ++ g_assert_cmpuint (fb_id, >, 0); ++ test->scanout.fb_ids = g_list_append (test->scanout.fb_ids, ++ GUINT_TO_POINTER (fb_id)); ++ ++ /* Triple buffering, but no higher */ ++ g_assert_cmpuint (g_list_length (test->scanout.fb_ids), <=, 2); + } + + static void +@@ -173,12 +183,12 @@ on_scanout_presented (ClutterStage *stage, + MetaDeviceFile *device_file; + GError *error = NULL; + drmModeCrtc *drm_crtc; ++ uint32_t first_fb_id_expected; + +- if (test->wait_for_scanout && test->scanout.n_paints > 0) ++ if (test->wait_for_scanout && test->scanout.fb_ids == NULL) + return; + +- if (test->wait_for_scanout && test->scanout.fb_id == 0) +- return; ++ test->scanout.n_presentations++; + + device_pool = meta_backend_native_get_device_pool (backend_native); + +@@ -197,15 +207,41 @@ on_scanout_presented (ClutterStage *stage, + drm_crtc = drmModeGetCrtc (meta_device_file_get_fd (device_file), + meta_kms_crtc_get_id (kms_crtc)); + g_assert_nonnull (drm_crtc); +- if (test->scanout.fb_id == 0) +- g_assert_cmpuint (drm_crtc->buffer_id, !=, test->scanout.fb_id); ++ ++ if (test->scanout.fb_ids) ++ { ++ test->scanout.n_direct_scanouts++; ++ first_fb_id_expected = GPOINTER_TO_UINT (test->scanout.fb_ids->data); ++ test->scanout.fb_ids = g_list_delete_link (test->scanout.fb_ids, ++ test->scanout.fb_ids); ++ } + else +- g_assert_cmpuint (drm_crtc->buffer_id, ==, test->scanout.fb_id); ++ { ++ first_fb_id_expected = 0; ++ } ++ ++ /* The buffer ID won't match on the first frame because switching from ++ * triple buffered compositing to double buffered direct scanout takes ++ * an extra frame to drain the queue. Thereafter we are in direct scanout ++ * mode and expect the buffer IDs to match. ++ */ ++ if (test->scanout.n_presentations > 1) ++ { ++ if (first_fb_id_expected == 0) ++ g_assert_cmpuint (drm_crtc->buffer_id, !=, first_fb_id_expected); ++ else ++ g_assert_cmpuint (drm_crtc->buffer_id, ==, first_fb_id_expected); ++ } ++ + drmModeFreeCrtc (drm_crtc); + + meta_device_file_release (device_file); + +- g_main_loop_quit (test->loop); ++ test->number_of_frames_left--; ++ if (test->number_of_frames_left <= 0) ++ g_main_loop_quit (test->loop); ++ else ++ clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); + } + + typedef enum +@@ -244,7 +280,9 @@ meta_test_kms_render_client_scanout (void) + g_assert_nonnull (wayland_test_client); + + test = (KmsRenderingTest) { ++ .number_of_frames_left = N_FRAMES_PER_TEST, + .loop = g_main_loop_new (NULL, FALSE), ++ .scanout = {0}, + .wait_for_scanout = TRUE, + }; + +@@ -270,7 +308,8 @@ meta_test_kms_render_client_scanout (void) + clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); + g_main_loop_run (test.loop); + +- g_assert_cmpuint (test.scanout.fb_id, >, 0); ++ g_assert_cmpint (test.scanout.n_presentations, ==, N_FRAMES_PER_TEST); ++ g_assert_cmpint (test.scanout.n_direct_scanouts, ==, N_FRAMES_PER_TEST); + + g_debug ("Unmake fullscreen"); + window = meta_find_window_from_title (test_context, "dma-buf-scanout-test"); +@@ -292,10 +331,15 @@ meta_test_kms_render_client_scanout (void) + g_assert_cmpint (buffer_rect.y, ==, 10); + + test.wait_for_scanout = FALSE; ++ test.number_of_frames_left = N_FRAMES_PER_TEST; ++ test.scanout.n_presentations = 0; ++ test.scanout.n_direct_scanouts = 0; ++ + clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); + g_main_loop_run (test.loop); + +- g_assert_cmpuint (test.scanout.fb_id, ==, 0); ++ g_assert_cmpint (test.scanout.n_presentations, ==, N_FRAMES_PER_TEST); ++ g_assert_cmpint (test.scanout.n_direct_scanouts, ==, 0); + + g_debug ("Moving back to 0, 0"); + meta_window_move_frame (window, TRUE, 0, 0); +@@ -307,10 +351,15 @@ meta_test_kms_render_client_scanout (void) + g_assert_cmpint (buffer_rect.y, ==, 0); + + test.wait_for_scanout = TRUE; ++ test.number_of_frames_left = N_FRAMES_PER_TEST; ++ test.scanout.n_presentations = 0; ++ test.scanout.n_direct_scanouts = 0; ++ + clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); + g_main_loop_run (test.loop); + +- g_assert_cmpuint (test.scanout.fb_id, >, 0); ++ g_assert_cmpint (test.scanout.n_presentations, ==, N_FRAMES_PER_TEST); ++ g_assert_cmpint (test.scanout.n_direct_scanouts, ==, N_FRAMES_PER_TEST); + + g_signal_handler_disconnect (stage, before_update_handler_id); + g_signal_handler_disconnect (stage, before_paint_handler_id); +@@ -364,6 +413,15 @@ on_scanout_fallback_before_paint (ClutterStage *stage, + if (!scanout) + return; + ++ test->scanout_fallback.scanouts_attempted++; ++ ++ /* The first scanout candidate frame will get composited due to triple ++ * buffering draining the queue to drop to double buffering. So don't ++ * sabotage that first frame. ++ */ ++ if (test->scanout_fallback.scanouts_attempted < 2) ++ return; ++ + g_assert_false (test->scanout_fallback.scanout_sabotaged); + + if (is_atomic_mode_setting (kms_device)) +@@ -401,6 +459,15 @@ on_scanout_fallback_paint_view (ClutterStage *stage, + g_clear_handle_id (&test->scanout_fallback.repaint_guard_id, + g_source_remove); + test->scanout_fallback.fallback_painted = TRUE; ++ test->scanout_fallback.scanout_sabotaged = FALSE; ++ } ++ else if (test->scanout_fallback.scanouts_attempted == 1) ++ { ++ /* Now that we've seen the first scanout attempt that was inhibited by ++ * triple buffering, try a second frame. The second one should scanout ++ * and will be sabotaged. ++ */ ++ clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); + } + } + +@@ -410,11 +477,11 @@ on_scanout_fallback_presented (ClutterStage *stage, + ClutterFrameInfo *frame_info, + KmsRenderingTest *test) + { +- if (!test->scanout_fallback.scanout_sabotaged) +- return; ++ if (test->scanout_fallback.fallback_painted) ++ g_main_loop_quit (test->loop); + +- g_assert_true (test->scanout_fallback.fallback_painted); +- g_main_loop_quit (test->loop); ++ test->number_of_frames_left--; ++ g_assert_cmpint (test->number_of_frames_left, >, 0); + } + + static void +@@ -443,6 +510,7 @@ meta_test_kms_render_client_scanout_fallback (void) + g_assert_nonnull (wayland_test_client); + + test = (KmsRenderingTest) { ++ .number_of_frames_left = N_FRAMES_PER_TEST, + .loop = g_main_loop_new (NULL, FALSE), + }; + diff --git a/patches/debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch b/patches/debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch deleted file mode 100644 index 9759e4b..0000000 --- a/patches/debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Simon McVittie -Date: Sun, 12 Sep 2021 10:41:54 +0100 -Subject: gnome-shell-extension-prefs: Give Debian-specific advice - -We package gnome-extensions-app in the same binary package as -gnome-shell-extension-prefs, so there's never a need to download it from -Flathub. - -Forwarded: not-needed, Debian-specific -Signed-off-by: Simon McVittie ---- - src/gnome-shell-extension-prefs | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/gnome-shell-extension-prefs b/src/gnome-shell-extension-prefs -index 303b196..a59ffed 100755 ---- a/src/gnome-shell-extension-prefs -+++ b/src/gnome-shell-extension-prefs -@@ -13,10 +13,10 @@ openPrefs() { - } - - cat >&2 < +Date: Fri, 18 Feb 2022 01:16:20 +0100 +Subject: meson: Do not mark CI test tools as required + +This way we can mark them as nocheck without build issues. +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index e29c500..c72be33 100644 +--- a/meson.build ++++ b/meson.build +@@ -422,7 +422,7 @@ if have_tests + + add_test_setup('plain') + +- xvfb = find_program('xvfb-run') ++ xvfb = find_program('xvfb-run', required: false) + xvfb_args = [ + '-a', + '-s', diff --git a/patches/debian/tests-Do-not-run-screencast-tests.patch b/patches/debian/tests-Do-not-run-screencast-tests.patch new file mode 100644 index 0000000..b274c02 --- /dev/null +++ b/patches/debian/tests-Do-not-run-screencast-tests.patch @@ -0,0 +1,26 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Thu, 20 May 2021 02:42:12 +0200 +Subject: tests: Do not run screencast tests + +They require to have a full running pipewire (that requires a system +dbus daemon) so, we can't easily get one up and running while building. + +So let's disable this for now +--- + src/tests/native-headless.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/tests/native-headless.c b/src/tests/native-headless.c +index 39393fc..b54469b 100644 +--- a/src/tests/native-headless.c ++++ b/src/tests/native-headless.c +@@ -27,7 +27,8 @@ static void + init_tests (MetaContext *context) + { + init_virtual_monitor_tests (context); +- init_screen_cast_tests (); ++ // init_screen_cast_tests (); ++ (void) init_screen_cast_tests; + init_bezier_tests (); + } + diff --git a/patches/gdm-util-Only-start-fingerprint-service-synchronously-whe.patch b/patches/gdm-util-Only-start-fingerprint-service-synchronously-whe.patch deleted file mode 100644 index 7099e4f..0000000 --- a/patches/gdm-util-Only-start-fingerprint-service-synchronously-whe.patch +++ /dev/null @@ -1,249 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Tue, 1 Mar 2022 11:57:20 +0100 -Subject: gdm/util: Only start fingerprint service synchronously when it's - default - -On ShellUserVerifier construction we used to start fprintd in a sync -fashion all the times, however in case the daemon had startup failures -or was hanging for whatever reason (like due to devices probing, given -that fprintd synchronously wait for them all to be initialized) we used -to just fail, leaving gdm or the lockscreen inusable. - -While this could be prevented with a try/catch statement, there's no -much point to wait for fprintd if that's not the default authentication -service, and so: - - If we use gdm-fingerprint as default auth method, use a sync call to - initialize it and in case of failures, just continue with fallback - authentication mechanism (password) - - - Otherwise, asynchronously initialize fprintd and continue with the - ShellUserVerifier without fingerprint support until we got a reply. - In case the service fails to deliver us a result, we don't give up - but we will try doing that at each authentication via - _checkForFingerprintReader(). - In case all works properly, as per the previous commit, once the - initialization is done, we'll start the fingerprint PAM gdm service. - -Fixes #5168 - -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1962566 -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5168 -Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2267 ---- - js/gdm/util.js | 129 +++++++++++++++++++++++++++++++++++++++++++++------------ - 1 file changed, 102 insertions(+), 27 deletions(-) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 89ad544..3697ecd 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -43,6 +43,7 @@ export const DISABLE_USER_LIST_KEY = 'disable-user-list'; - - // Give user 48ms to read each character of a PAM message - const USER_READ_TIME = 48; -+const FINGERPRINT_SERVICE_PROXY_TIMEOUT = 5000; - const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15; - - /** -@@ -108,16 +109,50 @@ export class ShellUserVerifier extends Signals.EventEmitter { - this._preemptingService = null; - - this._settings = new Gio.Settings({schema_id: LOGIN_SCREEN_SCHEMA}); -- this._settings.connect('changed', -- this._updateDefaultService.bind(this)); -- this._updateDefaultService(); - -- this._fprintManager = new FprintManagerProxy(Gio.DBus.system, -- 'net.reactivated.Fprint', -- '/net/reactivated/Fprint/Manager', -- null, -- null, -- Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES); -+ this._settings.connect('changed', () => this._updateDefaultServiceWithFallback()); -+ -+ this._fingerprintReaderType = FingerprintReaderType.NONE; -+ if (this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) { -+ const fprintManager = new FprintManagerProxy(Gio.DBus.system, -+ 'net.reactivated.Fprint', -+ '/net/reactivated/Fprint/Manager', -+ null, -+ null, -+ Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES | -+ Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION | -+ Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS); -+ -+ // Do not wait too much for fprintd to reply, as in case it hangs -+ // we should fail early without having the shell to misbehave because -+ fprintManager.set_default_timeout(FINGERPRINT_SERVICE_PROXY_TIMEOUT); -+ -+ this._updateDefaultService(); -+ -+ if (!this._defaultService) { -+ // Fingerprint is the default one, we must wait for it! -+ try { -+ const [devicePath] = fprintManager.GetDefaultDeviceSync(); -+ this._fprintManager = fprintManager; -+ -+ const fprintDeviceProxy = new FprintDeviceProxy(Gio.DBus.system, -+ 'net.reactivated.Fprint', devicePath, null, null, -+ Gio.DBusProxyFlags.NOT_CONNECT_SIGNALS); -+ this._setFingerprintReaderType(fprintDeviceProxy['scan-type']); -+ } catch (e) { -+ logError(e, 'Failed to initialize fprintd service'); -+ } finally { -+ this._updateDefaultServiceWithFallback(); -+ } -+ } else { -+ // Ensure fingerprint service starts, but do not wait for it -+ this._updateFingerprintReaderType(fprintManager, null).then( -+ () => (this._fprintManager = fprintManager)).catch( -+ e => logError(e, 'Failed to initialize fprintd service')); -+ } -+ } else { -+ this._updateDefaultServiceWithFallback(); -+ } - this._smartcardManager = SmartcardManager.getSmartcardManager(); - - // We check for smartcards right away, since an inserted smartcard -@@ -136,6 +171,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { - this.reauthenticating = false; - - this._failCounter = 0; -+ this._startedServices = new Set(); - this._unavailableServices = new Set(); - - this._credentialManagers = {}; -@@ -225,6 +261,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { - - this._clearUserVerifier(); - this._clearMessageQueue(); -+ this._startedServices.clear(); - } - - destroy() { -@@ -345,27 +382,52 @@ export class ShellUserVerifier extends Signals.EventEmitter { - } - - async _checkForFingerprintReader() { -- this._fingerprintReaderType = FingerprintReaderType.NONE; -- -- if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY) || -- this._fprintManager == null) { -- this._updateDefaultService(); -+ if (!this._fprintManager) { -+ this._updateDefaultServiceWithFallback(); - return; - } - -+ if (this._fingerprintReaderType !== FingerprintReaderType.NONE) -+ return; -+ -+ await this._updateFingerprintReaderType(this._fprintManager, this._cancellable); -+ } -+ -+ async _updateFingerprintReaderType(fprintManager, cancellable) { - try { -- const [device] = await this._fprintManager.GetDefaultDeviceAsync( -- Gio.DBusCallFlags.NONE, this._cancellable); -- const fprintDeviceProxy = new FprintDeviceProxy(Gio.DBus.system, -- 'net.reactivated.Fprint', -- device); -- const fprintDeviceType = fprintDeviceProxy['scan-type']; -+ // Wrappers don't support null cancellable, so let's cheat about it -+ const [devicePath] = await fprintManager.GetDefaultDeviceAsync( -+ cancellable ? cancellable : Gio.DBusCallFlags.NONE); -+ const fprintDeviceProxy = await new Promise((resolve, reject) => { -+ const proxy = new FprintDeviceProxy(Gio.DBus.system, -+ 'net.reactivated.Fprint', devicePath, (_, error) => { -+ if (error) -+ reject(error); -+ else -+ resolve(proxy); -+ }, cancellable, Gio.DBusProxyFlags.NOT_CONNECT_SIGNALS); -+ }); -+ this._setFingerprintReaderType(fprintDeviceProxy['scan-type']); -+ this._updateDefaultServiceWithFallback(); -+ -+ if (this._userVerifier && -+ !this._startedServices.has(FINGERPRINT_SERVICE_NAME)) { -+ if (!this._hold?.isAcquired()) -+ this._hold = new Batch.Hold(); -+ await this._maybeStartFingerprintVerification(); -+ } -+ } catch (e) { -+ if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) -+ logError(e); -+ } -+ } - -- this._fingerprintReaderType = fprintDeviceType === 'swipe' -- ? FingerprintReaderType.SWIPE -- : FingerprintReaderType.PRESS; -- this._updateDefaultService(); -- } catch (e) {} -+ _setFingerprintReaderType(fprintDeviceType) { -+ this._fingerprintReaderType = -+ FingerprintReaderType[fprintDeviceType.toUpperCase()]; -+ -+ if (this._fingerprintReaderType === undefined) -+ throw new Error(`Unexpected fingerprint device type '${fprintDeviceType}'`); - } - - _onCredentialManagerAuthenticated(credentialManager, _token) { -@@ -466,6 +528,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { - 'problem', this._onProblem.bind(this), - 'info-query', this._onInfoQuery.bind(this), - 'secret-info-query', this._onSecretInfoQuery.bind(this), -+ 'conversation-started', this._onConversationStarted.bind(this), - 'conversation-stopped', this._onConversationStopped.bind(this), - 'service-unavailable', this._onServiceUnavailable.bind(this), - 'reset', this._onReset.bind(this), -@@ -519,6 +582,10 @@ export class ShellUserVerifier extends Signals.EventEmitter { - this._defaultService = SMARTCARD_SERVICE_NAME; - else if (this._fingerprintReaderType !== FingerprintReaderType.NONE) - this._defaultService = FINGERPRINT_SERVICE_NAME; -+ } -+ -+ _updateDefaultServiceWithFallback() { -+ this._updateDefaultService(); - - if (!this._defaultService) { - log('no authentication service is enabled, using password authentication'); -@@ -557,11 +624,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { - - _beginVerification() { - this._startService(this._getForegroundService()); -+ this._maybeStartFingerprintVerification(); -+ } - -+ async _maybeStartFingerprintVerification() { - if (this._userName && - this._fingerprintReaderType !== FingerprintReaderType.NONE && - !this.serviceIsForeground(FINGERPRINT_SERVICE_NAME)) -- this._startService(FINGERPRINT_SERVICE_NAME); -+ await this._startService(FINGERPRINT_SERVICE_NAME); - } - - _onChoiceListQuery(client, serviceName, promptMessage, list) { -@@ -654,8 +724,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { - _onReset() { - // Clear previous attempts to authenticate - this._failCounter = 0; -+ this._startedServices.clear(); - this._unavailableServices.clear(); -- this._updateDefaultService(); -+ this._updateDefaultServiceWithFallback(); - - this.emit('reset'); - } -@@ -736,6 +807,10 @@ export class ShellUserVerifier extends Signals.EventEmitter { - this._queueMessage(serviceName, errorMessage, MessageType.ERROR); - } - -+ _onConversationStarted(client, serviceName) { -+ this._startedServices.add(serviceName); -+ } -+ - _onConversationStopped(client, serviceName) { - // If the login failed with the preauthenticated oVirt credentials - // then discard the credentials and revert to default authentication diff --git a/patches/global-make-possible-to-set-debug-flags-dynamically.patch b/patches/global-make-possible-to-set-debug-flags-dynamically.patch deleted file mode 100644 index ec780b9..0000000 --- a/patches/global-make-possible-to-set-debug-flags-dynamically.patch +++ /dev/null @@ -1,249 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Tue, 24 Oct 2017 02:15:13 +0200 -Subject: global: make possible to set debug-flags dynamically - -Adding {set,get}_debug_flags functions to the shell global object to -make possible to set this easily from looking class, making it easier -for developers and users to debug without having to restart the shell -with environment variables. - -Debug flags in main are updated when the "debug-flags" property is -changed. I'm keeping this as a string-list so that it's easier to update. - -https://bugzilla.gnome.org/show_bug.cgi?id=789377 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6 ---- - src/main.c | 61 +++++++++++++++++++++++++++++++++++++++++------------- - src/shell-global.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++ - src/shell-global.h | 4 ++++ - 3 files changed, 103 insertions(+), 14 deletions(-) - -diff --git a/src/main.c b/src/main.c -index dca5f64..aa2f4dc 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -374,14 +374,14 @@ shell_a11y_init (void) - } - - static void --shell_init_debug (const char *debug_env) -+shell_update_debug (const char *debug_string) - { - static const GDebugKey keys[] = { - { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS }, - { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS }, - }; - -- _shell_debug = g_parse_debug_string (debug_env, keys, -+ _shell_debug = g_parse_debug_string (debug_string, keys, - G_N_ELEMENTS (keys)); - } - -@@ -483,6 +483,42 @@ dump_gjs_stack_on_signal (int signo) - _tracked_signals[signo] = TRUE; - } - -+static void -+reset_signal_handler_to_default (int signo) -+{ -+ signal (signo, SIG_DFL); -+ _tracked_signals[signo] = FALSE; -+} -+ -+static void -+setup_debug_signal_listners (void) -+{ -+ dump_gjs_stack_on_signal (SIGABRT); -+ dump_gjs_stack_on_signal (SIGFPE); -+ dump_gjs_stack_on_signal (SIGIOT); -+ dump_gjs_stack_on_signal (SIGTRAP); -+ -+ if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS)) -+ { -+ dump_gjs_stack_on_signal (SIGBUS); -+ dump_gjs_stack_on_signal (SIGSEGV); -+ } -+ else -+ { -+ reset_signal_handler_to_default (SIGBUS); -+ reset_signal_handler_to_default (SIGSEGV); -+ } -+} -+ -+static void -+global_notify_debug_flags (GObject *gobject, -+ GParamSpec *pspec, -+ gpointer data) -+{ -+ shell_update_debug (shell_global_get_debug_flags (shell_global_get ())); -+ setup_debug_signal_listners (); -+} -+ - static gboolean - list_modes (const char *option_name, - const char *value, -@@ -614,6 +650,7 @@ main (int argc, char **argv) - g_autoptr (GFile) automation_script = NULL; - g_autofree char *cwd = NULL; - GError *error = NULL; -+ const char *debug_flags; - int ecode = EXIT_SUCCESS; - - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); -@@ -649,17 +686,6 @@ main (int argc, char **argv) - g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE); - g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE); - -- dump_gjs_stack_on_signal (SIGABRT); -- dump_gjs_stack_on_signal (SIGFPE); -- dump_gjs_stack_on_signal (SIGIOT); -- dump_gjs_stack_on_signal (SIGTRAP); -- -- if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS)) -- { -- dump_gjs_stack_on_signal (SIGBUS); -- dump_gjs_stack_on_signal (SIGSEGV); -- } -- - if (script_path) - automation_script = g_file_new_for_commandline_arg_and_cwd (script_path, cwd); - -@@ -668,10 +694,16 @@ main (int argc, char **argv) - * resolve internal modules. - */ - _shell_global_init ("session-mode", session_mode, -+ "debug-flags", debug_flags, - "force-animations", force_animations, - "automation-script", automation_script, - NULL); - -+ g_signal_connect (shell_global_get (), "notify::debug-flags", -+ G_CALLBACK (global_notify_debug_flags), NULL); -+ -+ setup_debug_signal_listners (); -+ - /* Setup Meta _after_ the Shell global to avoid GjsContext - * iterating on the main loop once Meta starts adding events - */ -@@ -681,7 +713,8 @@ main (int argc, char **argv) - return EXIT_FAILURE; - } - -- shell_init_debug (g_getenv ("SHELL_DEBUG")); -+ debug_flags = g_getenv ("SHELL_DEBUG"); -+ shell_update_debug (debug_flags); - - shell_dbus_init (meta_context_is_replacing (context)); - shell_a11y_init (); -diff --git a/src/shell-global.c b/src/shell-global.c -index 66b2f57..2a6e7fd 100644 ---- a/src/shell-global.c -+++ b/src/shell-global.c -@@ -62,6 +62,7 @@ struct _ShellGlobal { - Display *xdisplay; - - char *session_mode; -+ char *debug_flags; - - XserverRegion input_region; - -@@ -123,6 +124,7 @@ enum { - PROP_SWITCHEROO_CONTROL, - PROP_FORCE_ANIMATIONS, - PROP_AUTOMATION_SCRIPT, -+ PROP_DEBUG_FLAGS, - - N_PROPS - }; -@@ -255,6 +257,9 @@ shell_global_set_property(GObject *object, - case PROP_AUTOMATION_SCRIPT: - g_set_object (&global->automation_script, g_value_get_object (value)); - break; -+ case PROP_DEBUG_FLAGS: -+ shell_global_set_debug_flags (global, g_value_get_string (value)); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -347,6 +352,9 @@ shell_global_get_property(GObject *object, - case PROP_AUTOMATION_SCRIPT: - g_value_set_object (value, global->automation_script); - break; -+ case PROP_DEBUG_FLAGS: -+ g_value_set_string (value, global->debug_flags); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -704,6 +712,13 @@ shell_global_class_init (ShellGlobalClass *klass) - G_TYPE_FILE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); - -+ props[PROP_DEBUG_FLAGS] = -+ g_param_spec_string ("debug-flags", -+ "Debug Flags", -+ "The debugging flags", -+ NULL, -+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); -+ - g_object_class_install_properties (gobject_class, N_PROPS, props); - } - -@@ -2004,3 +2019,40 @@ shell_global_get_app_usage (ShellGlobal *global) - global->app_usage = g_object_new (SHELL_TYPE_APP_USAGE, NULL); - return global->app_usage; - } -+ -+/** -+ * shell_global_get_debug_flags: -+ * @global: a #ShellGlobal -+ * -+ * Returns: (transfer none): The current debug flags -+ */ -+const gchar * -+shell_global_get_debug_flags (ShellGlobal *global) -+{ -+ g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL); -+ -+ return global->debug_flags; -+} -+ -+/** -+ * shell_global_set_debug_flags: -+ * @global: a #ShellGlobal -+ * @debug_flags: (nullable): A string for debugging flags -+ * -+ * Updates the debugging flags at runtime as the one set using the SHELL_DEBUG -+ * environment variables. Currently we support 'backtrace-warnings' and -+ * 'backtrace-segfaults' keys. -+ */ -+void -+shell_global_set_debug_flags (ShellGlobal *global, -+ const char *debug_flags) -+{ -+ g_return_if_fail (SHELL_IS_GLOBAL (global)); -+ -+ if (g_strcmp0 (global->debug_flags, debug_flags) != 0) -+ { -+ g_free (global->debug_flags); -+ global->debug_flags = g_strdup (debug_flags); -+ g_object_notify (G_OBJECT (global), "debug-flags"); -+ } -+} -diff --git a/src/shell-global.h b/src/shell-global.h -index 8399330..683f75a 100644 ---- a/src/shell-global.h -+++ b/src/shell-global.h -@@ -99,6 +99,10 @@ ShellAppSystem * shell_global_get_app_system (ShellGlobal *global); - - ShellAppUsage * shell_global_get_app_usage (ShellGlobal *global); - -+const char * shell_global_get_debug_flags (ShellGlobal *global); -+void shell_global_set_debug_flags (ShellGlobal *global, -+ const char *debug_flags); -+ - G_END_DECLS - - #endif /* __SHELL_GLOBAL_H__ */ diff --git a/patches/layout-Destroy-panel-barrier-on-shutdown.patch b/patches/layout-Destroy-panel-barrier-on-shutdown.patch deleted file mode 100644 index 30daa56..0000000 --- a/patches/layout-Destroy-panel-barrier-on-shutdown.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Daniel van Vugt -Date: Tue, 3 Oct 2023 15:00:45 +0800 -Subject: layout: Destroy panel barrier on shutdown - -It was being leaked, which is detected on mutter shutdown. - -Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3011 -Part-of: -(cherry picked from commit 4e2dddd18ef27da768f8b0fc2c8e243a3b207f21) - -Origin: upstream, after 45.0 ---- - js/ui/layout.js | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/js/ui/layout.js b/js/ui/layout.js -index 06ed440..95e34f2 100644 ---- a/js/ui/layout.js -+++ b/js/ui/layout.js -@@ -243,6 +243,7 @@ export const LayoutManager = GObject.registerClass({ - } - - this._destroyHotCorners(); -+ this._destroyPanelBarrier(); - this.uiGroup.destroy(); - }); - -@@ -575,11 +576,15 @@ export const LayoutManager = GObject.registerClass({ - }); - } - -- _updatePanelBarrier() { -+ _destroyPanelBarrier() { - if (this._rightPanelBarrier) { - this._rightPanelBarrier.destroy(); - this._rightPanelBarrier = null; - } -+ } -+ -+ _updatePanelBarrier() { -+ this._destroyPanelBarrier(); - - if (!this.primaryMonitor) - return; diff --git a/patches/magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch b/patches/magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch deleted file mode 100644 index 78e4b3e..0000000 --- a/patches/magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch +++ /dev/null @@ -1,172 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Wed, 27 Mar 2019 16:14:39 +0100 -Subject: magnifier: Scale the sprite to match the current monitor scaling - -Compute the sprite texture scale (unfortunately using a workaround, based on -mutter cursor size preferences, tying to figure out the closest texture integer -scaling), and use this value to compute the scaling that should be applied to -the sprite in order to match the current monitor scaling. - -Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/475 -Applied-Upstream: no -Forwarded: yes ---- - js/ui/layout.js | 24 ++++++++++++++++++++---- - js/ui/magnifier.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 73 insertions(+), 6 deletions(-) - -diff --git a/js/ui/layout.js b/js/ui/layout.js -index 3ba9b96..4d5cd5a 100644 ---- a/js/ui/layout.js -+++ b/js/ui/layout.js -@@ -981,22 +981,38 @@ export const LayoutManager = GObject.registerClass({ - return ws.get_work_area_for_monitor(monitorIndex); - } - -+ _findIndexForRect(x, y, width, height) { -+ const rect = new Mtk.Rectangle({ -+ x: Math.floor(x), -+ y: Math.floor(y), -+ width: Math.ceil(x + width) - Math.floor(x), -+ height: Math.ceil(y + height) - Math.floor(y), -+ }); -+ return global.display.get_monitor_index_for_rect(rect); -+ } -+ - // This call guarantees that we return some monitor to simplify usage of it - // In practice all tracked actors should be visible on some monitor anyway - findIndexForActor(actor) { - let [x, y] = actor.get_transformed_position(); - let [w, h] = actor.get_transformed_size(); -- const rect = new Mtk.Rectangle({x, y, width: w, height: h}); -- return global.display.get_monitor_index_for_rect(rect); -+ return this._findIndexForRect(x, y, w, h); - } - -- findMonitorForActor(actor) { -- let index = this.findIndexForActor(actor); -+ _findMonitorForIndex(index) { - if (index >= 0 && index < this.monitors.length) - return this.monitors[index]; - return null; - } - -+ findMonitorForActor(actor) { -+ return this._findMonitorForIndex(this.findIndexForActor(actor)); -+ } -+ -+ findMonitorForPoint(x, y) { -+ return this._findMonitorForIndex(this._findIndexForRect(x, y, 1, 1)); -+ } -+ - _queueUpdateRegions() { - if (!this._updateRegionIdle) { - const laters = global.compositor.get_laters(); -diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js -index ab8150b..13da38f 100644 ---- a/js/ui/magnifier.js -+++ b/js/ui/magnifier.js -@@ -51,6 +51,8 @@ const MouseSpriteContent = GObject.registerClass({ - }, class MouseSpriteContent extends GObject.Object { - _init() { - super._init(); -+ this._scale = 1.0; -+ this._monitorScale = 1.0; - this._texture = null; - } - -@@ -58,7 +60,10 @@ const MouseSpriteContent = GObject.registerClass({ - if (!this._texture) - return [false, 0, 0]; - -- return [true, this._texture.get_width(), this._texture.get_height()]; -+ let width = this._texture.get_width() / this._scale; -+ let height = this._texture.get_height() / this._scale; -+ -+ return [true, width, height]; - } - - vfunc_paint_content(actor, node, _paintContext) { -@@ -75,6 +80,29 @@ const MouseSpriteContent = GObject.registerClass({ - textureNode.add_rectangle(actor.get_content_box()); - } - -+ _textureScale() { -+ if (!this._texture) -+ return 1; -+ -+ /* This is a workaround to guess the sprite scale; while it works file -+ * in normal scenarios, it's not guaranteed to work in all the cases, -+ * and so we should actually add an API to mutter that will allow us -+ * to know the real spirte texture scaling in order to adapt it to the -+ * wanted one. */ -+ let avgSize = (this._texture.get_width() + this._texture.get_height()) / 2; -+ return Math.max(1, Math.floor(avgSize / Meta.prefs_get_cursor_size() + .1)); -+ } -+ -+ _recomputeScale() { -+ let scale = this._textureScale() / this._monitorScale; -+ -+ if (this._scale !== scale) { -+ this._scale = scale; -+ return true; -+ } -+ return false; -+ } -+ - get texture() { - return this._texture; - } -@@ -89,7 +117,19 @@ const MouseSpriteContent = GObject.registerClass({ - - if (!oldTexture || !coglTexture || - oldTexture.get_width() !== coglTexture.get_width() || -- oldTexture.get_height() !== coglTexture.get_height()) -+ oldTexture.get_height() !== coglTexture.get_height()) { -+ this._recomputeScale(); -+ this.invalidate_size(); -+ } -+ } -+ -+ get scale() { -+ return this._scale; -+ } -+ -+ set monitorScale(monitorScale) { -+ this._monitorScale = monitorScale; -+ if (this._recomputeScale()) - this.invalidate_size(); - } - }); -@@ -121,6 +161,8 @@ export class Magnifier extends Signals.EventEmitter { - this._settingsInit(aZoomRegion); - aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse); - -+ this._updateContentScale(); -+ - St.Settings.get().connect('notify::magnifier-active', () => { - this.setActive(St.Settings.get().magnifier_active); - }); -@@ -128,6 +170,13 @@ export class Magnifier extends Signals.EventEmitter { - this.setActive(St.Settings.get().magnifier_active); - } - -+ _updateContentScale() { -+ let monitor = Main.layoutManager.findMonitorForPoint(this.xMouse, -+ this.yMouse); -+ this._mouseSprite.content.monitorScale = monitor -+ ? monitor.geometry_scale : 1; -+ } -+ - /** - * showSystemCursor: - * Show the system mouse pointer. -@@ -269,6 +318,8 @@ export class Magnifier extends Signals.EventEmitter { - this.xMouse = xMouse; - this.yMouse = yMouse; - -+ this._updateContentScale(); -+ - let sysMouseOverAny = false; - this._zoomRegions.forEach(zoomRegion => { - if (zoomRegion.scrollToMousePos()) diff --git a/patches/main-add-backtrace-crashes-all-and-backtrace-all.patch b/patches/main-add-backtrace-crashes-all-and-backtrace-all.patch deleted file mode 100644 index ac395de..0000000 --- a/patches/main-add-backtrace-crashes-all-and-backtrace-all.patch +++ /dev/null @@ -1,47 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Thu, 2 Aug 2018 16:17:39 +0200 -Subject: main: add `backtrace-crashes-all` and `backtrace-all` - -These are just convenient aliases to not to have to list all the types, -as having more granularity is cool, but it might also cause some annoyance. - -https://bugzilla.gnome.org/show_bug.cgi?id=789377 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6 ---- - src/main.c | 7 +++++++ - src/shell-global.c | 2 ++ - 2 files changed, 9 insertions(+) - -diff --git a/src/main.c b/src/main.c -index 619136a..0aa224b 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -59,6 +59,13 @@ static const GDebugKey SHELL_DEBUG_KEYS[] = { - { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS }, - { "backtrace-aborts", SHELL_DEBUG_BACKTRACE_ABORTS }, - { "backtrace-math-errors", SHELL_DEBUG_BACKTRACE_FPE }, -+ { "backtrace-crashes-all", SHELL_DEBUG_BACKTRACE_SEGFAULTS | -+ SHELL_DEBUG_BACKTRACE_ABORTS | -+ SHELL_DEBUG_BACKTRACE_FPE }, -+ { "backtrace-all", SHELL_DEBUG_BACKTRACE_WARNINGS | -+ SHELL_DEBUG_BACKTRACE_SEGFAULTS | -+ SHELL_DEBUG_BACKTRACE_ABORTS | -+ SHELL_DEBUG_BACKTRACE_FPE }, - }; - static int _default_debug_flags = SHELL_DEBUG_BACKTRACE_ABORTS | - SHELL_DEBUG_BACKTRACE_FPE; -diff --git a/src/shell-global.c b/src/shell-global.c -index 08952b8..e60b574 100644 ---- a/src/shell-global.c -+++ b/src/shell-global.c -@@ -2045,6 +2045,8 @@ shell_global_get_debug_flags (ShellGlobal *global) - * - 'backtrace-segfaults' - * - 'backtrace-aborts' - * - 'backtrace-math-errors' -+ * - 'backtrace-crashes-all' -+ * - 'backtrace-all' - * - 'all' - */ - void diff --git a/patches/main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch b/patches/main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch deleted file mode 100644 index 661326e..0000000 --- a/patches/main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch +++ /dev/null @@ -1,169 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Tue, 24 Oct 2017 03:20:34 +0200 -Subject: main: increase the granularity of backtraces in SHELL_DEBUG - -Add support for multiple debug-keys for getting the backtraces, -allowing more control using both SHELL_DEBUG and/or set_debug_flags - -https://bugzilla.gnome.org/show_bug.cgi?id=789377 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6 ---- - src/main.c | 76 +++++++++++++++++++++++++++++++++++++++++------------- - src/shell-global.c | 10 ++++--- - 2 files changed, 65 insertions(+), 21 deletions(-) - -diff --git a/src/main.c b/src/main.c -index aa2f4dc..619136a 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -43,16 +43,26 @@ static char *session_mode = NULL; - static int caught_signal = 0; - static gboolean force_animations = FALSE; - static char *script_path = NULL; -+static gboolean _tracked_signals[NSIG] = { 0 }; - - #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1 - #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4 - - enum { -- SHELL_DEBUG_BACKTRACE_WARNINGS = 1, -- SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2, -+ SHELL_DEBUG_BACKTRACE_WARNINGS = (1 << 0), -+ SHELL_DEBUG_BACKTRACE_SEGFAULTS = (1 << 1), -+ SHELL_DEBUG_BACKTRACE_ABORTS = (1 << 2), -+ SHELL_DEBUG_BACKTRACE_FPE = (1 << 3), - }; --static int _shell_debug; --static gboolean _tracked_signals[NSIG] = { 0 }; -+static const GDebugKey SHELL_DEBUG_KEYS[] = { -+ { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS }, -+ { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS }, -+ { "backtrace-aborts", SHELL_DEBUG_BACKTRACE_ABORTS }, -+ { "backtrace-math-errors", SHELL_DEBUG_BACKTRACE_FPE }, -+}; -+static int _default_debug_flags = SHELL_DEBUG_BACKTRACE_ABORTS | -+ SHELL_DEBUG_BACKTRACE_FPE; -+static int _shell_debug = 0; - - static void - shell_dbus_acquire_name (GDBusProxy *bus, -@@ -376,13 +386,23 @@ shell_a11y_init (void) - static void - shell_update_debug (const char *debug_string) - { -- static const GDebugKey keys[] = { -- { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS }, -- { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS }, -- }; -+ _shell_debug = g_parse_debug_string (debug_string, SHELL_DEBUG_KEYS, -+ G_N_ELEMENTS (SHELL_DEBUG_KEYS)); -+} -+ -+static char * -+debug_flags_to_string (void) -+{ -+ gsize i, j; -+ const char *enabled_flags[G_N_ELEMENTS (SHELL_DEBUG_KEYS) + 1] = { 0 }; -+ -+ for (i = 0, j = 0; i < G_N_ELEMENTS (SHELL_DEBUG_KEYS); ++i) -+ { -+ if ((_shell_debug & SHELL_DEBUG_KEYS[i].value)) -+ enabled_flags[j++] = SHELL_DEBUG_KEYS[i].key; -+ } - -- _shell_debug = g_parse_debug_string (debug_string, keys, -- G_N_ELEMENTS (keys)); -+ return g_strjoinv (":", (char**) enabled_flags); - } - - static GLogWriterOutput -@@ -493,10 +513,23 @@ reset_signal_handler_to_default (int signo) - static void - setup_debug_signal_listners (void) - { -- dump_gjs_stack_on_signal (SIGABRT); -- dump_gjs_stack_on_signal (SIGFPE); -- dump_gjs_stack_on_signal (SIGIOT); -- dump_gjs_stack_on_signal (SIGTRAP); -+ if ((_shell_debug & SHELL_DEBUG_BACKTRACE_ABORTS)) -+ { -+ dump_gjs_stack_on_signal (SIGABRT); -+ dump_gjs_stack_on_signal (SIGIOT); -+ dump_gjs_stack_on_signal (SIGTRAP); -+ } -+ else -+ { -+ reset_signal_handler_to_default (SIGABRT); -+ reset_signal_handler_to_default (SIGIOT); -+ reset_signal_handler_to_default (SIGTRAP); -+ } -+ -+ if ((_shell_debug & SHELL_DEBUG_BACKTRACE_FPE)) -+ dump_gjs_stack_on_signal (SIGFPE); -+ else -+ reset_signal_handler_to_default (SIGFPE); - - if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS)) - { -@@ -649,8 +682,9 @@ main (int argc, char **argv) - g_autoptr (MetaContext) context = NULL; - g_autoptr (GFile) automation_script = NULL; - g_autofree char *cwd = NULL; -+ g_autofree char *debug_flags_string = NULL; - GError *error = NULL; -- const char *debug_flags; -+ const char *shell_debug; - int ecode = EXIT_SUCCESS; - - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); -@@ -694,7 +728,7 @@ main (int argc, char **argv) - * resolve internal modules. - */ - _shell_global_init ("session-mode", session_mode, -- "debug-flags", debug_flags, -+ "debug-flags", debug_flags_string, - "force-animations", force_animations, - "automation-script", automation_script, - NULL); -@@ -713,8 +747,14 @@ main (int argc, char **argv) - return EXIT_FAILURE; - } - -- debug_flags = g_getenv ("SHELL_DEBUG"); -- shell_update_debug (debug_flags); -+ shell_debug = g_getenv ("SHELL_DEBUG"); -+ -+ if (shell_debug) -+ shell_update_debug (shell_debug); -+ else -+ _shell_debug = _default_debug_flags; -+ -+ debug_flags_string = debug_flags_to_string (); - - shell_dbus_init (meta_context_is_replacing (context)); - shell_a11y_init (); -diff --git a/src/shell-global.c b/src/shell-global.c -index 2a6e7fd..08952b8 100644 ---- a/src/shell-global.c -+++ b/src/shell-global.c -@@ -2037,11 +2037,15 @@ shell_global_get_debug_flags (ShellGlobal *global) - /** - * shell_global_set_debug_flags: - * @global: a #ShellGlobal -- * @debug_flags: (nullable): A string for debugging flags -+ * @debug_flags: (nullable): A comma-separated string of debugging flags - * - * Updates the debugging flags at runtime as the one set using the SHELL_DEBUG -- * environment variables. Currently we support 'backtrace-warnings' and -- * 'backtrace-segfaults' keys. -+ * environment variables. Currently we support these keys: -+ * - 'backtrace-warnings' -+ * - 'backtrace-segfaults' -+ * - 'backtrace-aborts' -+ * - 'backtrace-math-errors' -+ * - 'all' - */ - void - shell_global_set_debug_flags (ShellGlobal *global, diff --git a/patches/main-show-an-error-message-on-gnome-shell-crash.patch b/patches/main-show-an-error-message-on-gnome-shell-crash.patch deleted file mode 100644 index 951e6da..0000000 --- a/patches/main-show-an-error-message-on-gnome-shell-crash.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Thu, 2 Aug 2018 15:59:20 +0200 -Subject: main: show an error message on gnome-shell crash - -When we call the crash signal handler, write on log the reason of the -crash, also to make easier to parse the logs later on, and being able -to understand if a stacktrace is coming from a crash or a different -gjs error. - -https://bugzilla.gnome.org/show_bug.cgi?id=789377 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6 ---- - src/main.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/main.c b/src/main.c -index dec0efa..dca5f64 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -444,6 +444,8 @@ dump_gjs_stack_on_signal_handler (int signo) - struct sigaction sa = { .sa_handler = dump_gjs_stack_alarm_sigaction }; - gsize i; - -+ g_printerr ("GNOME Shell crashed with signal %d\n", signo); -+ - /* Ignore all the signals starting this point, a part the one we'll raise - * (which is implicitly ignored here through SA_RESETHAND), this is needed - * not to get this handler being called by other signals that we were diff --git a/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch b/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch deleted file mode 100644 index 8be5d17..0000000 --- a/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: "robert.mader@collabora.com" -Date: Wed, 27 Sep 2023 01:10:45 +0200 -Subject: overview: Handle unredirection in OverviewShown state machine - -Under certain unknown circumstances currently not every -`disable_unredirect_for_display()` gets matched with an -`enable_unredirect_for_display()` when closing the overview. - -As we only want to not disable unredirection when hidden and we nowadays -have a state machine that ensures we transition to and from one state to -another only once, handle unredirection en-/disablement as part of the -state transition. - -Part-of: -(cherry picked from commit a94fcee9616ef52d0f1d6453515a104d69c6cb92) - -Origin: upstream, after 45.0 ---- - js/ui/overview.js | 14 +++++--------- - 1 file changed, 5 insertions(+), 9 deletions(-) - -diff --git a/js/ui/overview.js b/js/ui/overview.js -index 66a83cf..2b173a5 100644 ---- a/js/ui/overview.js -+++ b/js/ui/overview.js -@@ -305,6 +305,11 @@ export class Overview extends Signals.EventEmitter { - `${this._shownState} to ${state}`); - } - -+ if (this._shownState === OverviewShownState.HIDDEN) -+ Meta.disable_unredirect_for_display(global.display); -+ else if (state === OverviewShownState.HIDDEN) -+ Meta.enable_unredirect_for_display(global.display); -+ - this._shownState = state; - this.emit(OVERVIEW_SHOWN_TRANSITIONS[state].signal); - } -@@ -411,8 +416,6 @@ export class Overview extends Signals.EventEmitter { - - _gestureUpdate(tracker, progress) { - if (!this._shown) { -- Meta.disable_unredirect_for_display(global.display); -- - this._shown = true; - this._visible = true; - this._visibleTarget = true; -@@ -567,8 +570,6 @@ export class Overview extends Signals.EventEmitter { - this._visibleTarget = true; - this._activationTime = GLib.get_monotonic_time() / GLib.USEC_PER_SEC; - -- Meta.disable_unredirect_for_display(global.display); -- - Main.layoutManager.overviewGroup.set_child_above_sibling( - this._coverPane, null); - this._coverPane.show(); -@@ -636,9 +637,6 @@ export class Overview extends Signals.EventEmitter { - } - - _hideDone() { -- // Re-enable unredirection -- Meta.enable_unredirect_for_display(global.display); -- - this._coverPane.hide(); - - this._visible = false; -@@ -688,8 +686,6 @@ export class Overview extends Signals.EventEmitter { - // the animation because of a race in the xserver where the grab - // fails when requested very early during startup. - -- Meta.disable_unredirect_for_display(global.display); -- - this._changeShownState(OverviewShownState.SHOWING); - - this._overview.runStartupAnimation(() => { diff --git a/patches/pika/xwayland-scaling-support.patch b/patches/pika/xwayland-scaling-support.patch new file mode 100755 index 0000000..9f077fa --- /dev/null +++ b/patches/pika/xwayland-scaling-support.patch @@ -0,0 +1,2125 @@ +From 39c3bed5b3b755192f935b88ed0759d91231d13e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Tue, 12 Dec 2023 22:41:20 +0100 +Subject: [PATCH 1/6] x11-display: Expose UI scaling factor via D-Bus + +This replaces the `legacy-ui-scaling-factor` entry in +`org.gnome.Mutter.DisplayConfig`, with the motivation being to no longer +expose X11 specific state via the monitor configuration API. +--- + .../org.gnome.Mutter.DisplayConfig.xml | 4 -- + data/dbus-interfaces/org.gnome.Mutter.X11.xml | 8 +++ + src/backends/meta-monitor-manager.c | 7 -- + src/meson.build | 5 ++ + src/x11/meta-x11-display.c | 64 ++++++++++++++++++- + 5 files changed, 76 insertions(+), 12 deletions(-) + create mode 100644 data/dbus-interfaces/org.gnome.Mutter.X11.xml + +diff --git a/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml b/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml +index b05337d74..7294c57a8 100644 +--- a/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml ++++ b/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml +@@ -426,10 +426,6 @@ + always use the same scale. Absence of + this means logical monitor scales can + differ. +- * "legacy-ui-scaling-factor" (i): The legacy scaling factor traditionally +- used to scale X11 clients (commonly +- communicated via the +- Gdk/WindowScalingFactor XSetting entry). + --> + + +diff --git a/data/dbus-interfaces/org.gnome.Mutter.X11.xml b/data/dbus-interfaces/org.gnome.Mutter.X11.xml +new file mode 100644 +index 000000000..3d3c8a42f +--- /dev/null ++++ b/data/dbus-interfaces/org.gnome.Mutter.X11.xml +@@ -0,0 +1,8 @@ ++ ++ ++ ++ ++ ++ +diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c +index 77743bc72..7f98c2d98 100644 +--- a/src/backends/meta-monitor-manager.c ++++ b/src/backends/meta-monitor-manager.c +@@ -2051,14 +2051,12 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton, + GDBusMethodInvocation *invocation, + MetaMonitorManager *manager) + { +- MetaSettings *settings = meta_backend_get_settings (manager->backend); + GVariantBuilder monitors_builder; + GVariantBuilder logical_monitors_builder; + GVariantBuilder properties_builder; + GList *l; + int i; + MetaMonitorManagerCapability capabilities; +- int ui_scaling_factor; + int max_screen_width, max_screen_height; + + g_variant_builder_init (&monitors_builder, +@@ -2261,11 +2259,6 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton, + g_variant_new_boolean (TRUE)); + } + +- ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings); +- g_variant_builder_add (&properties_builder, "{sv}", +- "legacy-ui-scaling-factor", +- g_variant_new_int32 (ui_scaling_factor)); +- + if (meta_monitor_manager_get_max_screen_size (manager, + &max_screen_width, + &max_screen_height)) +diff --git a/src/meson.build b/src/meson.build +index 05df3bfd2..e658f98ca 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -949,6 +949,11 @@ dbus_interfaces = [ + 'interface': 'org.gnome.Mutter.DebugControl.xml', + 'prefix': 'org.gnome.Mutter', + }, ++ { ++ 'name': 'meta-dbus-x11', ++ 'interface': 'org.gnome.Mutter.X11.xml', ++ 'prefix': 'org.gnome.Mutter', ++ }, + ] + + if have_profiler +diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c +index 3cbf82844..fe152d20b 100644 +--- a/src/x11/meta-x11-display.c ++++ b/src/x11/meta-x11-display.c +@@ -70,7 +70,7 @@ + #include "wayland/meta-xwayland-private.h" + #endif + +-G_DEFINE_TYPE (MetaX11Display, meta_x11_display, G_TYPE_OBJECT) ++#include "meta-dbus-x11.h" + + static GQuark quark_x11_display_logical_monitor_data = 0; + +@@ -89,6 +89,14 @@ typedef struct _MetaX11DisplayLogicalMonitorData + int xinerama_index; + } MetaX11DisplayLogicalMonitorData; + ++typedef struct _MetaX11DisplayPrivate ++{ ++ MetaDBusX11 *dbus_api; ++ guint dbus_name_id; ++} MetaX11DisplayPrivate; ++ ++G_DEFINE_TYPE_WITH_PRIVATE (MetaX11Display, meta_x11_display, G_TYPE_OBJECT) ++ + static char *get_screen_name (Display *xdisplay, + int number); + +@@ -151,13 +159,46 @@ meta_x11_event_filter_free (MetaX11EventFilter *filter) + g_free (filter); + } + ++static void ++on_bus_acquired (GDBusConnection *connection, ++ const char *name, ++ gpointer user_data) ++{ ++ MetaX11Display *x11_display = user_data; ++ MetaX11DisplayPrivate *priv = ++ meta_x11_display_get_instance_private (x11_display); ++ ++ g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->dbus_api), ++ connection, ++ "/org/gnome/Mutter/X11", ++ NULL); ++} ++ ++static void ++update_ui_scaling_factor (MetaX11Display *x11_display) ++{ ++ MetaX11DisplayPrivate *priv = ++ meta_x11_display_get_instance_private (x11_display); ++ MetaBackend *backend = backend_from_x11_display (x11_display); ++ MetaSettings *settings = meta_backend_get_settings (backend); ++ int ui_scaling_factor; ++ ++ ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings); ++ meta_dbus_x11_set_ui_scaling_factor (priv->dbus_api, ui_scaling_factor); ++} ++ + static void + meta_x11_display_dispose (GObject *object) + { + MetaX11Display *x11_display = META_X11_DISPLAY (object); ++ MetaX11DisplayPrivate *priv = ++ meta_x11_display_get_instance_private (x11_display); + + x11_display->closing = TRUE; + ++ g_clear_handle_id (&priv->dbus_name_id, g_bus_unown_name); ++ g_clear_object (&priv->dbus_api); ++ + g_clear_pointer (&x11_display->alarm_filters, g_ptr_array_unref); + + g_clear_list (&x11_display->event_funcs, +@@ -1196,6 +1237,23 @@ meta_x11_display_init_frames_client (MetaX11Display *x11_display) + on_frames_client_died, x11_display); + } + ++static void ++initialize_dbus_interface (MetaX11Display *x11_display) ++{ ++ MetaX11DisplayPrivate *priv = ++ meta_x11_display_get_instance_private (x11_display); ++ ++ priv->dbus_api = meta_dbus_x11_skeleton_new (); ++ priv->dbus_name_id = ++ g_bus_own_name (G_BUS_TYPE_SESSION, ++ "org.gnome.Mutter.X11", ++ G_BUS_NAME_OWNER_FLAGS_NONE, ++ on_bus_acquired, ++ NULL, NULL, ++ x11_display, NULL); ++ update_ui_scaling_factor (x11_display); ++} ++ + /** + * meta_x11_display_new: + * +@@ -1290,6 +1348,8 @@ meta_x11_display_new (MetaDisplay *display, + x11_display = g_object_new (META_TYPE_X11_DISPLAY, NULL); + x11_display->display = display; + ++ initialize_dbus_interface (x11_display); ++ + /* here we use XDisplayName which is what the user + * probably put in, vs. DisplayString(display) which is + * canonicalized by XOpenDisplay() +@@ -1951,6 +2011,8 @@ on_monitors_changed_internal (MetaMonitorManager *monitor_manager, + } + + x11_display->has_xinerama_indices = FALSE; ++ ++ update_ui_scaling_factor (x11_display); + } + + static Bool +-- +2.45.2 + + +From 56b2d879990f6660c75b3c8a65ab65c4920f36b1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= +Date: Tue, 20 Feb 2024 23:51:48 +0100 +Subject: [PATCH 2/6] Add an experimental feature for letting Xwayland clients + scale natively + +With the next commits we'll introduce a new mode for scaling of Xwayland apps, +we'll want to put this mode behind an experimental setting though, so add +that setting. +--- + data/org.gnome.mutter.gschema.xml.in | 7 +++++++ + src/backends/meta-settings-private.h | 1 + + src/backends/meta-settings.c | 2 ++ + 3 files changed, 10 insertions(+) + +diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in +index 92c97b12e..18abd8d51 100644 +--- a/data/org.gnome.mutter.gschema.xml.in ++++ b/data/org.gnome.mutter.gschema.xml.in +@@ -5,6 +5,7 @@ + + + ++ + + + + + +diff --git a/src/backends/meta-settings-private.h b/src/backends/meta-settings-private.h +index afbba054a..2081a81b1 100644 +--- a/src/backends/meta-settings-private.h ++++ b/src/backends/meta-settings-private.h +@@ -32,6 +32,7 @@ typedef enum _MetaExperimentalFeature + META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS = (1 << 1), + META_EXPERIMENTAL_FEATURE_AUTOCLOSE_XWAYLAND = (1 << 2), + META_EXPERIMENTAL_FEATURE_VARIABLE_REFRESH_RATE = (1 << 3), ++ META_EXPERIMENTAL_FEATURE_XWAYLAND_NATIVE_SCALING = (1 << 4), + } MetaExperimentalFeature; + + typedef enum _MetaXwaylandExtension +diff --git a/src/backends/meta-settings.c b/src/backends/meta-settings.c +index 3703b23b0..1ae59d636 100644 +--- a/src/backends/meta-settings.c ++++ b/src/backends/meta-settings.c +@@ -296,6 +296,8 @@ experimental_features_handler (GVariant *features_variant, + feature = META_EXPERIMENTAL_FEATURE_AUTOCLOSE_XWAYLAND; + else if (g_str_equal (feature_str, "variable-refresh-rate")) + feature = META_EXPERIMENTAL_FEATURE_VARIABLE_REFRESH_RATE; ++ else if (g_str_equal (feature_str, "xwayland-native-scaling")) ++ feature = META_EXPERIMENTAL_FEATURE_XWAYLAND_NATIVE_SCALING; + + if (feature) + g_message ("Enabling experimental feature '%s'", feature_str); +-- +2.45.2 + + +From 19f23f78db32963f6b00697b0e55a155d7572459 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Tue, 12 Dec 2023 22:42:46 +0100 +Subject: [PATCH 3/6] context: Put Wayland compositor getter in the context + header + +--- + src/meta/meta-context.h | 5 +++++ + src/meta/meta-wayland-compositor.h | 3 --- + src/meta/types.h | 4 ++++ + 3 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/meta/meta-context.h b/src/meta/meta-context.h +index ef36bd2c3..2adb9b07e 100644 +--- a/src/meta/meta-context.h ++++ b/src/meta/meta-context.h +@@ -101,3 +101,8 @@ gboolean meta_context_raise_rlimit_nofile (MetaContext *context, + META_EXPORT + gboolean meta_context_restore_rlimit_nofile (MetaContext *context, + GError **error); ++ ++#ifdef HAVE_WAYLAND ++META_EXPORT ++MetaWaylandCompositor * meta_context_get_wayland_compositor (MetaContext *context); ++#endif +diff --git a/src/meta/meta-wayland-compositor.h b/src/meta/meta-wayland-compositor.h +index 7f4a50705..3df92fda5 100644 +--- a/src/meta/meta-wayland-compositor.h ++++ b/src/meta/meta-wayland-compositor.h +@@ -31,9 +31,6 @@ G_DECLARE_FINAL_TYPE (MetaWaylandCompositor, + META, WAYLAND_COMPOSITOR, + GObject) + +-META_EXPORT +-MetaWaylandCompositor *meta_context_get_wayland_compositor (MetaContext *context); +- + META_EXPORT + struct wl_display *meta_wayland_compositor_get_wayland_display (MetaWaylandCompositor *compositor); + +diff --git a/src/meta/types.h b/src/meta/types.h +index cbe2a9a3d..8fba4a839 100644 +--- a/src/meta/types.h ++++ b/src/meta/types.h +@@ -38,3 +38,7 @@ typedef struct _MetaSettings MetaSettings; + + typedef struct _MetaWorkspaceManager MetaWorkspaceManager; + typedef struct _MetaSelection MetaSelection; ++ ++#ifdef HAVE_WAYLAND ++typedef struct _MetaWaylandCompositor MetaWaylandCompositor; ++#endif +-- +2.45.2 + + +From 4b665dee351d554e5e9aabb3048b768832421311 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Tue, 12 Dec 2023 22:52:44 +0100 +Subject: [PATCH 4/6] Add experimental mode to use native scaling of Xwayland + clients + +Allow scale-aware Xwayland clients to scale by an integer scale +themselves, instead of letting them render them at 1x scale and then +scaling up the texture, making it look blurry. + +When monitor framebuffers are scaled, this special cases Xwayland and +sends output regions in a way that Xwayland think everything is N times +as large as the logical region, where N is the ceil of the max monitor +scale. + +This is done by introducing a "stage" vs "protocol" coordinate space for +X11, where the "protocol" coordinate space is "stage" multiplied by a +scaling factor. + +We're guarding this behind a new experimental feature +"xwayland-native-scaling", which can only come into effect when enabled +together with "scale-monitor-framebuffer". +--- + src/backends/meta-monitor-manager-private.h | 2 + + src/backends/meta-monitor-manager.c | 6 + + src/compositor/meta-window-actor-x11.c | 22 +- + src/core/frame.c | 93 ++++-- + src/wayland/meta-wayland-cursor-surface.c | 52 ++-- + src/wayland/meta-wayland-outputs.c | 42 ++- + src/wayland/meta-wayland-pointer.c | 14 + + src/wayland/meta-wayland-private.h | 2 + + src/wayland/meta-wayland-surface.c | 30 +- + src/wayland/meta-window-xwayland.c | 71 ++++- + src/wayland/meta-xwayland-private.h | 1 + + src/wayland/meta-xwayland-surface.c | 10 +- + src/wayland/meta-xwayland.c | 56 ++++ + src/wayland/meta-xwayland.h | 2 + + src/x11/meta-x11-display.c | 196 +++++++++++-- + src/x11/window-props.c | 108 ++++++- + src/x11/window-x11.c | 305 ++++++++++++++++---- + src/x11/window-x11.h | 38 +++ + 18 files changed, 886 insertions(+), 164 deletions(-) + +diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h +index 0760a341a..6ed3fc2c3 100644 +--- a/src/backends/meta-monitor-manager-private.h ++++ b/src/backends/meta-monitor-manager-private.h +@@ -436,3 +436,5 @@ gboolean meta_monitor_manager_apply_monitors_config (MetaMonitorManager * + MetaMonitorsConfig *config, + MetaMonitorsConfigMethod method, + GError **error); ++ ++MetaLogicalMonitorLayoutMode meta_monitor_manager_get_layout_mode (MetaMonitorManager *manager); +diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c +index 7f98c2d98..45033d966 100644 +--- a/src/backends/meta-monitor-manager.c ++++ b/src/backends/meta-monitor-manager.c +@@ -4116,3 +4116,9 @@ meta_monitor_manager_get_virtual_monitors (MetaMonitorManager *manager) + + return priv->virtual_monitors; + } ++ ++MetaLogicalMonitorLayoutMode ++meta_monitor_manager_get_layout_mode (MetaMonitorManager *manager) ++{ ++ return manager->layout_mode; ++} +diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c +index 19827af33..7df10e6c1 100644 +--- a/src/compositor/meta-window-actor-x11.c ++++ b/src/compositor/meta-window-actor-x11.c +@@ -688,11 +688,23 @@ meta_window_actor_x11_process_damage (MetaWindowActorX11 *actor_x11, + + surface = meta_window_actor_get_surface (META_WINDOW_ACTOR (actor_x11)); + if (surface) +- meta_surface_actor_process_damage (surface, +- event->area.x, +- event->area.y, +- event->area.width, +- event->area.height); ++ { ++ MetaWindow *window = ++ meta_window_actor_get_meta_window (META_WINDOW_ACTOR (actor_x11)); ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); ++ MtkRectangle damage; ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->area.x, event->area.y, ++ event->area.width, event->area.height, ++ &damage.x, &damage.y, ++ &damage.width, &damage.height); ++ meta_surface_actor_process_damage (surface, ++ damage.x, ++ damage.y, ++ damage.width, ++ damage.height); ++ } + + meta_window_actor_notify_damaged (META_WINDOW_ACTOR (actor_x11)); + } +diff --git a/src/core/frame.c b/src/core/frame.c +index 7a09f89f1..5e8c10e76 100644 +--- a/src/core/frame.c ++++ b/src/core/frame.c +@@ -33,6 +33,7 @@ + #include "x11/meta-x11-display-private.h" + #include "x11/window-x11-private.h" + #include "x11/window-props.h" ++#include "x11/window-x11.h" + + #include + #include +@@ -235,6 +236,8 @@ meta_window_destroy_frame (MetaWindow *window) + + if (!x11_display->closing) + { ++ int child_x, child_y; ++ + if (!window->unmanaging) + { + meta_stack_tracker_record_add (window->display->stack_tracker, +@@ -242,6 +245,14 @@ meta_window_destroy_frame (MetaWindow *window) + XNextRequest (x11_display->xdisplay)); + } + ++ meta_window_x11_stage_to_protocol (META_WINDOW_X11 (window), ++ frame->rect.x + borders.invisible.left, ++ frame->rect.y + borders.invisible.top, ++ 0, 0, ++ &child_x, ++ &child_y, ++ NULL, NULL); ++ + XReparentWindow (x11_display->xdisplay, + meta_window_x11_get_xwindow (window), + x11_display->xroot, +@@ -249,8 +260,7 @@ meta_window_destroy_frame (MetaWindow *window) + * coordinates here means we'll need to ensure a configure + * notify event is sent; see bug 399552. + */ +- frame->rect.x + borders.invisible.left, +- frame->rect.y + borders.invisible.top); ++ child_x, child_y); + window->reparents_pending += 1; + } + +@@ -297,6 +307,7 @@ meta_frame_query_borders (MetaFrame *frame, + MetaFrameBorders *borders) + { + MetaWindow *window = frame->window; ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); + MetaX11Display *x11_display = window->display->x11_display; + int format, res; + Atom type; +@@ -320,12 +331,22 @@ meta_frame_query_borders (MetaFrame *frame, + if (mtk_x11_error_trap_pop_with_return (x11_display->xdisplay) == Success && + res == Success && nitems == 4) + { +- borders->invisible = (MetaFrameBorder) { +- ((long *) data)[0], +- ((long *) data)[1], +- ((long *) data)[2], +- ((long *) data)[3], +- }; ++ int left, right, top, bottom; ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ ((long *) data)[0], ++ ((long *) data)[1], ++ ((long *) data)[2], ++ ((long *) data)[3], ++ &left, ++ &right, ++ &top, ++ &bottom); ++ ++ borders->invisible.left = left; ++ borders->invisible.right = right; ++ borders->invisible.top = top; ++ borders->invisible.bottom = bottom; + } + else + { +@@ -348,12 +369,21 @@ meta_frame_query_borders (MetaFrame *frame, + if (mtk_x11_error_trap_pop_with_return (x11_display->xdisplay) == Success && + res == Success && nitems == 4) + { +- borders->visible = (MetaFrameBorder) { +- ((long *) data)[0], +- ((long *) data)[1], +- ((long *) data)[2], +- ((long *) data)[3], +- }; ++ int left, right, top, bottom; ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ ((long *) data)[0], ++ ((long *) data)[1], ++ ((long *) data)[2], ++ ((long *) data)[3], ++ &left, ++ &right, ++ &top, ++ &bottom); ++ borders->visible.left = left; ++ borders->visible.right = right; ++ borders->visible.top = top; ++ borders->visible.bottom = bottom; + } + else + { +@@ -401,7 +431,9 @@ meta_frame_sync_to_window (MetaFrame *frame, + gboolean need_resize) + { + MetaWindow *window = frame->window; ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); + MetaX11Display *x11_display = window->display->x11_display; ++ MtkRectangle rect; + + meta_topic (META_DEBUG_GEOMETRY, + "Syncing frame geometry %d,%d %dx%d (SE: %d,%d)", +@@ -412,12 +444,22 @@ meta_frame_sync_to_window (MetaFrame *frame, + + mtk_x11_error_trap_push (x11_display->xdisplay); + ++ meta_window_x11_stage_to_protocol (window_x11, ++ frame->rect.x, ++ frame->rect.y, ++ frame->rect.width, ++ frame->rect.height, ++ &rect.x, ++ &rect.y, ++ &rect.width, ++ &rect.height); ++ + XMoveResizeWindow (x11_display->xdisplay, + frame->xwindow, +- frame->rect.x, +- frame->rect.y, +- frame->rect.width, +- frame->rect.height); ++ rect.x, ++ rect.y, ++ rect.width, ++ rect.height); + + mtk_x11_error_trap_pop (x11_display->xdisplay); + +@@ -454,6 +496,7 @@ static void + send_configure_notify (MetaFrame *frame) + { + MetaX11Display *x11_display = frame->window->display->x11_display; ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (frame->window); + XEvent event = { 0 }; + + /* We never get told by the frames client, just reassert the +@@ -463,10 +506,16 @@ send_configure_notify (MetaFrame *frame) + event.xconfigure.display = x11_display->xdisplay; + event.xconfigure.event = frame->xwindow; + event.xconfigure.window = frame->xwindow; +- event.xconfigure.x = frame->rect.x; +- event.xconfigure.y = frame->rect.y; +- event.xconfigure.width = frame->rect.width; +- event.xconfigure.height = frame->rect.height; ++ ++ meta_window_x11_stage_to_protocol (window_x11, ++ frame->rect.x, ++ frame->rect.y, ++ frame->rect.width, ++ frame->rect.height, ++ &event.xconfigure.x, ++ &event.xconfigure.y, ++ &event.xconfigure.width, ++ &event.xconfigure.height); + event.xconfigure.border_width = 0; + event.xconfigure.above = None; + event.xconfigure.override_redirect = False; +diff --git a/src/wayland/meta-wayland-cursor-surface.c b/src/wayland/meta-wayland-cursor-surface.c +index 87a8895c8..5a16ce7d8 100644 +--- a/src/wayland/meta-wayland-cursor-surface.c ++++ b/src/wayland/meta-wayland-cursor-surface.c +@@ -92,37 +92,29 @@ cursor_sprite_prepare_at (MetaCursorSprite *cursor_sprite, + { + MetaWaylandSurfaceRole *role = META_WAYLAND_SURFACE_ROLE (cursor_surface); + MetaWaylandSurface *surface = meta_wayland_surface_role_get_surface (role); +- +- if (!meta_wayland_surface_is_xwayland (surface)) ++ MetaContext *context = ++ meta_wayland_compositor_get_context (surface->compositor); ++ MetaBackend *backend = meta_context_get_backend (context); ++ MetaMonitorManager *monitor_manager = ++ meta_backend_get_monitor_manager (backend); ++ MetaLogicalMonitor *logical_monitor; ++ ++ logical_monitor = ++ meta_monitor_manager_get_logical_monitor_at (monitor_manager, x, y); ++ if (logical_monitor) + { +- MetaWaylandSurfaceRole *surface_role = +- META_WAYLAND_SURFACE_ROLE (cursor_surface); +- MetaWaylandSurface *surface = +- meta_wayland_surface_role_get_surface (surface_role); +- MetaContext *context = +- meta_wayland_compositor_get_context (surface->compositor); +- MetaBackend *backend = meta_context_get_backend (context); +- MetaMonitorManager *monitor_manager = +- meta_backend_get_monitor_manager (backend); +- MetaLogicalMonitor *logical_monitor; +- +- logical_monitor = +- meta_monitor_manager_get_logical_monitor_at (monitor_manager, x, y); +- if (logical_monitor) +- { +- int surface_scale = surface->applied_state.scale; +- float texture_scale; +- +- if (meta_backend_is_stage_views_scaled (backend)) +- texture_scale = 1.0 / surface_scale; +- else +- texture_scale = (meta_logical_monitor_get_scale (logical_monitor) / +- surface_scale); +- +- meta_cursor_sprite_set_texture_scale (cursor_sprite, texture_scale); +- meta_cursor_sprite_set_texture_transform (cursor_sprite, +- surface->buffer_transform); +- } ++ int surface_scale = surface->applied_state.scale; ++ float texture_scale; ++ ++ if (meta_backend_is_stage_views_scaled (backend)) ++ texture_scale = 1.0 / surface_scale; ++ else ++ texture_scale = (meta_logical_monitor_get_scale (logical_monitor) / ++ surface_scale); ++ ++ meta_cursor_sprite_set_texture_scale (cursor_sprite, texture_scale); ++ meta_cursor_sprite_set_texture_transform (cursor_sprite, ++ surface->buffer_transform); + } + + meta_wayland_surface_update_outputs (surface); +diff --git a/src/wayland/meta-wayland-outputs.c b/src/wayland/meta-wayland-outputs.c +index 89ae86445..f957bc339 100644 +--- a/src/wayland/meta-wayland-outputs.c ++++ b/src/wayland/meta-wayland-outputs.c +@@ -31,6 +31,10 @@ + #include "backends/meta-monitor-manager-private.h" + #include "wayland/meta-wayland-private.h" + ++#ifdef HAVE_XWAYLAND ++#include "wayland/meta-xwayland.h" ++#endif ++ + #include "xdg-output-unstable-v1-server-protocol.h" + + /* Wayland protocol headers list new additions, not deprecations */ +@@ -50,6 +54,8 @@ struct _MetaWaylandOutput + { + GObject parent; + ++ MetaWaylandCompositor *compositor; ++ + struct wl_global *global; + GList *resources; + GList *xdg_output_resources; +@@ -422,6 +428,7 @@ meta_wayland_output_new (MetaWaylandCompositor *compositor, + MetaWaylandOutput *wayland_output; + + wayland_output = g_object_new (META_TYPE_WAYLAND_OUTPUT, NULL); ++ wayland_output->compositor = compositor; + wayland_output->global = wl_global_create (compositor->wayland_display, + &wl_output_interface, + META_WL_OUTPUT_VERSION, +@@ -596,6 +603,37 @@ static const struct zxdg_output_v1_interface + meta_xdg_output_destroy, + }; + ++#ifdef HAVE_XWAYLAND ++static gboolean ++is_xwayland_resource (MetaWaylandOutput *wayland_output, ++ struct wl_resource *resource) ++{ ++ MetaXWaylandManager *manager = &wayland_output->compositor->xwayland_manager; ++ ++ return resource && wl_resource_get_client (resource) == manager->client; ++} ++#endif ++ ++static void ++maybe_scale_for_xwayland (MetaWaylandOutput *wayland_output, ++ struct wl_resource *resource, ++ int *x, ++ int *y) ++{ ++#ifdef HAVE_XWAYLAND ++ if (is_xwayland_resource (wayland_output, resource)) ++ { ++ MetaXWaylandManager *xwayland_manager = ++ &wayland_output->compositor->xwayland_manager; ++ int xwayland_scale; ++ ++ xwayland_scale = meta_xwayland_get_effective_scale (xwayland_manager); ++ *x *= xwayland_scale; ++ *y *= xwayland_scale; ++ } ++#endif ++} ++ + static void + send_xdg_output_events (struct wl_resource *resource, + MetaWaylandOutput *wayland_output, +@@ -616,6 +654,7 @@ send_xdg_output_events (struct wl_resource *resource, + if (need_all_events || + old_layout.x != layout.x || old_layout.y != layout.y) + { ++ maybe_scale_for_xwayland (wayland_output, resource, &layout.x, &layout.y); + zxdg_output_v1_send_logical_position (resource, layout.x, layout.y); + need_done = TRUE; + } +@@ -623,6 +662,7 @@ send_xdg_output_events (struct wl_resource *resource, + if (need_all_events || + old_layout.width != layout.width || old_layout.height != layout.height) + { ++ maybe_scale_for_xwayland (wayland_output, resource, &layout.width, &layout.height); + zxdg_output_v1_send_logical_size (resource, layout.width, layout.height); + need_done = TRUE; + } +@@ -745,7 +785,7 @@ meta_wayland_outputs_init (MetaWaylandCompositor *compositor) + MetaMonitorManager *monitor_manager = + meta_backend_get_monitor_manager (backend); + +- g_signal_connect (monitor_manager, "monitors-changed-internal", ++ g_signal_connect (monitor_manager, "monitors-changed", + G_CALLBACK (on_monitors_changed), compositor); + + compositor->outputs = +diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c +index cf6008064..b8c49849a 100644 +--- a/src/wayland/meta-wayland-pointer.c ++++ b/src/wayland/meta-wayland-pointer.c +@@ -1247,6 +1247,20 @@ pointer_set_cursor (struct wl_client *client, + cursor_surface = META_WAYLAND_CURSOR_SURFACE (surface->role); + meta_wayland_cursor_surface_set_renderer (cursor_surface, + cursor_renderer); ++ ++#ifdef HAVE_XWAYLAND ++ if (meta_wayland_surface_is_xwayland (surface)) ++ { ++ MetaXWaylandManager *xwayland_manager = ++ &surface->compositor->xwayland_manager; ++ int scale; ++ ++ scale = meta_xwayland_get_effective_scale (xwayland_manager); ++ hot_x = round (hot_x / (double) scale); ++ hot_y = round (hot_y / (double) scale); ++ } ++#endif ++ + meta_wayland_cursor_surface_set_hotspot (cursor_surface, + hot_x, hot_y); + +diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h +index e8d442c03..834753ffd 100644 +--- a/src/wayland/meta-wayland-private.h ++++ b/src/wayland/meta-wayland-private.h +@@ -77,6 +77,8 @@ struct _MetaXWaylandManager + int rr_error_base; + + gboolean should_enable_ei_portal; ++ ++ double highest_monitor_scale; + }; + + struct _MetaWaylandCompositor +diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c +index d8b36ff92..4ad95cd9d 100644 +--- a/src/wayland/meta-wayland-surface.c ++++ b/src/wayland/meta-wayland-surface.c +@@ -782,8 +782,19 @@ meta_wayland_surface_apply_state (MetaWaylandSurface *surface, + state->buffer->type != META_WAYLAND_BUFFER_TYPE_SINGLE_PIXEL)); + } + +- if (state->scale > 0) +- surface->applied_state.scale = state->scale; ++ if (meta_wayland_surface_is_xwayland (surface)) ++ { ++#ifdef HAVE_XWAYLAND ++ MetaXWaylandManager *xwayland_manager = ++ &surface->compositor->xwayland_manager; ++ ++ surface->applied_state.scale = meta_xwayland_get_effective_scale (xwayland_manager); ++#endif ++ } ++ else if (state->scale > 0) ++ { ++ surface->applied_state.scale = state->scale; ++ } + + if (state->has_new_buffer_transform) + surface->buffer_transform = state->buffer_transform; +@@ -978,8 +989,9 @@ meta_wayland_surface_commit (MetaWaylandSurface *surface) + MetaMultiTexture *committed_texture = surface->committed_state.texture; + int committed_scale = surface->committed_state.scale; + +- if ((meta_multi_texture_get_width (committed_texture) % committed_scale != 0) || +- (meta_multi_texture_get_height (committed_texture) % committed_scale != 0)) ++ if (((meta_multi_texture_get_width (committed_texture) % committed_scale != 0) || ++ (meta_multi_texture_get_height (committed_texture) % committed_scale != 0)) && ++ !meta_wayland_surface_is_xwayland (surface)) + { + if (surface->role && !META_IS_WAYLAND_CURSOR_SURFACE (surface->role)) + { +@@ -1507,6 +1519,16 @@ meta_wayland_surface_update_outputs (MetaWaylandSurface *surface) + g_hash_table_foreach (surface->compositor->outputs, + update_surface_output_state, + surface); ++ ++ if (meta_wayland_surface_is_xwayland (surface)) ++ { ++#ifdef HAVE_XWAYLAND ++ MetaXWaylandManager *xwayland_manager = ++ &surface->compositor->xwayland_manager; ++ ++ surface->applied_state.scale = meta_xwayland_get_effective_scale (xwayland_manager); ++#endif ++ } + } + + void +diff --git a/src/wayland/meta-window-xwayland.c b/src/wayland/meta-window-xwayland.c +index 1299a351c..5fb006962 100644 +--- a/src/wayland/meta-window-xwayland.c ++++ b/src/wayland/meta-window-xwayland.c +@@ -27,8 +27,9 @@ + #include "x11/window-x11-private.h" + #include "x11/xprops.h" + #include "wayland/meta-window-xwayland.h" +-#include "wayland/meta-wayland.h" ++#include "wayland/meta-wayland-private.h" + #include "wayland/meta-wayland-surface-private.h" ++#include "wayland/meta-xwayland.h" + + enum + { +@@ -315,6 +316,72 @@ meta_window_xwayland_process_property_notify (MetaWindow *window, + meta_window_queue (window, META_QUEUE_MOVE_RESIZE); + } + ++static void ++meta_window_xwayland_stage_to_protocol (MetaWindowX11 *window_x11, ++ int stage_x, ++ int stage_y, ++ int stage_width, ++ int stage_height, ++ int *protocol_x, ++ int *protocol_y, ++ int *protocol_width, ++ int *protocol_height) ++{ ++ MetaDisplay *display = meta_window_get_display (META_WINDOW (window_x11)); ++ MetaContext *context = meta_display_get_context (display); ++ MetaWaylandCompositor *wayland_compositor = ++ meta_context_get_wayland_compositor (context); ++ MetaXWaylandManager *xwayland_manager = &wayland_compositor->xwayland_manager; ++ int scale; ++ ++ scale = meta_xwayland_get_effective_scale (xwayland_manager); ++ if (protocol_x) ++ *protocol_x = stage_x * scale; ++ if (protocol_y) ++ *protocol_y = stage_y * scale; ++ if (protocol_width) ++ *protocol_width = stage_width * scale; ++ if (protocol_height) ++ *protocol_height = stage_height * scale; ++} ++ ++static void ++meta_window_xwayland_protocol_to_stage (MetaWindowX11 *window_x11, ++ int protocol_x, ++ int protocol_y, ++ int protocol_width, ++ int protocol_height, ++ int *stage_x, ++ int *stage_y, ++ int *stage_width, ++ int *stage_height) ++{ ++ MetaDisplay *display = meta_window_get_display (META_WINDOW (window_x11)); ++ MetaContext *context = meta_display_get_context (display); ++ MetaWaylandCompositor *wayland_compositor = ++ meta_context_get_wayland_compositor (context); ++ MetaXWaylandManager *xwayland_manager = &wayland_compositor->xwayland_manager; ++ MtkRectangle rect; ++ int scale; ++ ++ rect.x = protocol_x; ++ rect.y = protocol_y; ++ rect.width = protocol_width; ++ rect.height = protocol_height; ++ ++ scale = meta_xwayland_get_effective_scale (xwayland_manager); ++ mtk_rectangle_scale_double (&rect, 1.0 / scale, MTK_ROUNDING_STRATEGY_GROW, &rect); ++ ++ if (stage_x) ++ *stage_x = rect.x; ++ if (stage_y) ++ *stage_y = rect.y; ++ if (stage_width) ++ *stage_width = rect.width; ++ if (stage_height) ++ *stage_height = rect.height; ++} ++ + static void + meta_window_xwayland_class_init (MetaWindowXwaylandClass *klass) + { +@@ -331,6 +398,8 @@ meta_window_xwayland_class_init (MetaWindowXwaylandClass *klass) + window_x11_class->thaw_commits = meta_window_xwayland_thaw_commits; + window_x11_class->always_update_shape = meta_window_xwayland_always_update_shape; + window_x11_class->process_property_notify = meta_window_xwayland_process_property_notify; ++ window_x11_class->stage_to_protocol = meta_window_xwayland_stage_to_protocol; ++ window_x11_class->protocol_to_stage = meta_window_xwayland_protocol_to_stage; + + gobject_class->get_property = meta_window_xwayland_get_property; + gobject_class->set_property = meta_window_xwayland_set_property; +diff --git a/src/wayland/meta-xwayland-private.h b/src/wayland/meta-xwayland-private.h +index 7a9cb73fd..9e06f0315 100644 +--- a/src/wayland/meta-xwayland-private.h ++++ b/src/wayland/meta-xwayland-private.h +@@ -20,6 +20,7 @@ + #include + + #include "wayland/meta-wayland-private.h" ++#include "wayland/meta-xwayland.h" + + gboolean + meta_xwayland_init (MetaXWaylandManager *manager, +diff --git a/src/wayland/meta-xwayland-surface.c b/src/wayland/meta-xwayland-surface.c +index 8fa1c72a9..c6daf9b26 100644 +--- a/src/wayland/meta-xwayland-surface.c ++++ b/src/wayland/meta-xwayland-surface.c +@@ -163,13 +163,19 @@ meta_xwayland_surface_get_relative_coordinates (MetaWaylandSurfaceRole *surface_ + float *out_sy) + { + MetaXwaylandSurface *xwayland_surface = META_XWAYLAND_SURFACE (surface_role); ++ MetaWaylandSurface *surface = ++ meta_wayland_surface_role_get_surface (surface_role); ++ MetaWaylandCompositor *compositor = ++ meta_wayland_surface_get_compositor (surface); + MtkRectangle window_rect = { 0 }; ++ int xwayland_scale; + + if (xwayland_surface->window) + meta_window_get_buffer_rect (xwayland_surface->window, &window_rect); + +- *out_sx = abs_x - window_rect.x; +- *out_sy = abs_y - window_rect.y; ++ xwayland_scale = meta_xwayland_get_effective_scale (&compositor->xwayland_manager); ++ *out_sx = (abs_x - window_rect.x) * xwayland_scale; ++ *out_sy = (abs_y - window_rect.y) * xwayland_scale; + } + + static MetaWaylandSurface * +diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c +index ea9c27d74..828e6f64e 100644 +--- a/src/wayland/meta-xwayland.c ++++ b/src/wayland/meta-xwayland.c +@@ -1051,6 +1051,29 @@ meta_xwayland_shutdown (MetaWaylandCompositor *compositor) + } + } + ++static void ++update_highest_monitor_scale (MetaXWaylandManager *manager) ++{ ++ MetaWaylandCompositor *compositor = manager->compositor; ++ MetaContext *context = meta_wayland_compositor_get_context (compositor); ++ MetaBackend *backend = meta_context_get_backend (context); ++ MetaMonitorManager *monitor_manager = ++ meta_backend_get_monitor_manager (backend); ++ GList *logical_monitors; ++ GList *l; ++ double scale = 1.0; ++ ++ logical_monitors = meta_monitor_manager_get_logical_monitors (monitor_manager); ++ for (l = logical_monitors; l; l = l->next) ++ { ++ MetaLogicalMonitor *logical_monitor = l->data; ++ ++ scale = MAX (scale, meta_logical_monitor_get_scale (logical_monitor)); ++ } ++ ++ manager->highest_monitor_scale = scale; ++} ++ + gboolean + meta_xwayland_init (MetaXWaylandManager *manager, + MetaWaylandCompositor *compositor, +@@ -1058,6 +1081,9 @@ meta_xwayland_init (MetaXWaylandManager *manager, + GError **error) + { + MetaContext *context = compositor->context; ++ MetaBackend *backend = meta_context_get_backend (context); ++ MetaMonitorManager *monitor_manager = ++ meta_backend_get_monitor_manager (backend); + MetaX11DisplayPolicy policy; + int display = 0; + +@@ -1121,6 +1147,10 @@ meta_xwayland_init (MetaXWaylandManager *manager, + /* Xwayland specific protocol, needs to be filtered out for all other clients */ + meta_xwayland_grab_keyboard_init (compositor); + ++ g_signal_connect_swapped (monitor_manager, "monitors-changed-internal", ++ G_CALLBACK (update_highest_monitor_scale), manager); ++ update_highest_monitor_scale (manager); ++ + return TRUE; + } + +@@ -1312,3 +1342,29 @@ meta_xwayland_set_should_enable_ei_portal (MetaXWaylandManager *manager, + { + manager->should_enable_ei_portal = should_enable_ei_portal; + } ++ ++int ++meta_xwayland_get_effective_scale (MetaXWaylandManager *manager) ++{ ++ MetaWaylandCompositor *compositor = manager->compositor; ++ MetaContext *context = meta_wayland_compositor_get_context (compositor); ++ MetaBackend *backend = meta_context_get_backend (context); ++ MetaMonitorManager *monitor_manager = ++ meta_backend_get_monitor_manager (backend); ++ MetaSettings *settings = meta_backend_get_settings (backend); ++ ++ switch (meta_monitor_manager_get_layout_mode (monitor_manager)) ++ { ++ case META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL: ++ break; ++ ++ case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL: ++ if (meta_settings_is_experimental_feature_enabled (settings, ++ META_EXPERIMENTAL_FEATURE_XWAYLAND_NATIVE_SCALING) && ++ meta_settings_is_experimental_feature_enabled (settings, ++ META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER)) ++ return ceil (manager->highest_monitor_scale); ++ } ++ ++ return 1; ++} +diff --git a/src/wayland/meta-xwayland.h b/src/wayland/meta-xwayland.h +index daf9d1abb..ae7a06977 100644 +--- a/src/wayland/meta-xwayland.h ++++ b/src/wayland/meta-xwayland.h +@@ -48,3 +48,5 @@ META_EXPORT_TEST + gboolean meta_xwayland_signal (MetaXWaylandManager *manager, + int signum, + GError **error); ++ ++int meta_xwayland_get_effective_scale (MetaXWaylandManager *manager); +diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c +index fe152d20b..602879aac 100644 +--- a/src/x11/meta-x11-display.c ++++ b/src/x11/meta-x11-display.c +@@ -130,6 +130,42 @@ backend_from_x11_display (MetaX11Display *x11_display) + return meta_context_get_backend (context); + } + ++static void ++stage_to_protocol (MetaX11Display *x11_display, ++ int stage_x, ++ int stage_y, ++ int *protocol_x, ++ int *protocol_y) ++{ ++ MetaDisplay *display = meta_x11_display_get_display (x11_display); ++ MetaContext *context = meta_display_get_context (display); ++ int scale = 1; ++ ++ switch (meta_context_get_compositor_type (context)) ++ { ++ case META_COMPOSITOR_TYPE_WAYLAND: ++ { ++#ifdef HAVE_XWAYLAND ++ MetaWaylandCompositor *wayland_compositor = ++ meta_context_get_wayland_compositor (context); ++ MetaXWaylandManager *xwayland_manager = ++ &wayland_compositor->xwayland_manager; ++ ++ scale = meta_xwayland_get_effective_scale (xwayland_manager); ++#endif ++ break; ++ } ++ ++ case META_COMPOSITOR_TYPE_X11: ++ break; ++ } ++ ++ if (protocol_x) ++ *protocol_x = stage_x * scale; ++ if (protocol_y) ++ *protocol_y = stage_y * scale; ++} ++ + static void + meta_x11_display_unmanage_windows (MetaX11Display *x11_display) + { +@@ -180,10 +216,32 @@ update_ui_scaling_factor (MetaX11Display *x11_display) + MetaX11DisplayPrivate *priv = + meta_x11_display_get_instance_private (x11_display); + MetaBackend *backend = backend_from_x11_display (x11_display); +- MetaSettings *settings = meta_backend_get_settings (backend); +- int ui_scaling_factor; ++ MetaContext *context = meta_backend_get_context (backend); ++ int ui_scaling_factor = 1; ++ ++ switch (meta_context_get_compositor_type (context)) ++ { ++ case META_COMPOSITOR_TYPE_WAYLAND: ++ { ++#ifdef HAVE_XWAYLAND ++ MetaWaylandCompositor *wayland_compositor = ++ meta_context_get_wayland_compositor (context); ++ MetaXWaylandManager *xwayland_manager = ++ &wayland_compositor->xwayland_manager; ++ ++ ui_scaling_factor = meta_xwayland_get_effective_scale (xwayland_manager); ++#endif ++ break; ++ } ++ case META_COMPOSITOR_TYPE_X11: ++ { ++ MetaSettings *settings = meta_backend_get_settings (backend); ++ ++ ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings); ++ break; ++ } ++ } + +- ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings); + meta_dbus_x11_set_ui_scaling_factor (priv->dbus_api, ui_scaling_factor); + } + +@@ -613,6 +671,9 @@ set_desktop_geometry_hint (MetaX11Display *x11_display) + return; + + meta_display_get_size (x11_display->display, &monitor_width, &monitor_height); ++ stage_to_protocol (x11_display, ++ monitor_width, monitor_height, ++ &monitor_width, &monitor_height); + + data[0] = monitor_width; + data[1] = monitor_height; +@@ -1022,14 +1083,22 @@ set_workspace_work_area_hint (MetaWorkspace *workspace, + + for (l = logical_monitors; l; l = l->next) + { +- MtkRectangle area; ++ MtkRectangle stage_area; ++ MtkRectangle protocol_area; + +- meta_workspace_get_work_area_for_logical_monitor (workspace, l->data, &area); ++ meta_workspace_get_work_area_for_logical_monitor (workspace, l->data, ++ &stage_area); + +- tmp[0] = area.x; +- tmp[1] = area.y; +- tmp[2] = area.width; +- tmp[3] = area.height; ++ stage_to_protocol (x11_display, ++ stage_area.x, stage_area.y, ++ &protocol_area.x, &protocol_area.y); ++ stage_to_protocol (x11_display, ++ stage_area.width, stage_area.height, ++ &protocol_area.width, &protocol_area.height); ++ tmp[0] = protocol_area.x; ++ tmp[1] = protocol_area.y; ++ tmp[2] = protocol_area.width; ++ tmp[3] = protocol_area.height; + + tmp += 4; + } +@@ -1058,7 +1127,6 @@ set_work_area_hint (MetaDisplay *display, + int num_workspaces; + GList *l; + unsigned long *data, *tmp; +- MtkRectangle area; + + num_workspaces = meta_workspace_manager_get_n_workspaces (workspace_manager); + data = g_new (unsigned long, num_workspaces * 4); +@@ -1067,14 +1135,22 @@ set_work_area_hint (MetaDisplay *display, + for (l = workspace_manager->workspaces; l; l = l->next) + { + MetaWorkspace *workspace = l->data; ++ MtkRectangle stage_area; ++ MtkRectangle protocol_area; + +- meta_workspace_get_work_area_all_monitors (workspace, &area); ++ meta_workspace_get_work_area_all_monitors (workspace, &stage_area); + set_workspace_work_area_hint (workspace, x11_display); + +- tmp[0] = area.x; +- tmp[1] = area.y; +- tmp[2] = area.width; +- tmp[3] = area.height; ++ stage_to_protocol (x11_display, ++ stage_area.x, stage_area.y, ++ &protocol_area.x, &protocol_area.y); ++ stage_to_protocol (x11_display, ++ stage_area.width, stage_area.height, ++ &protocol_area.width, &protocol_area.height); ++ tmp[0] = protocol_area.x; ++ tmp[1] = protocol_area.y; ++ tmp[2] = protocol_area.width; ++ tmp[3] = protocol_area.height; + + tmp += 4; + } +@@ -1254,6 +1330,41 @@ initialize_dbus_interface (MetaX11Display *x11_display) + update_ui_scaling_factor (x11_display); + } + ++static void ++experimental_features_changed (MetaSettings *settings, ++ MetaExperimentalFeature old_experimental_features, ++ MetaX11Display *x11_display) ++{ ++ gboolean was_xwayland_native_scaling; ++ gboolean was_stage_views_scaled; ++ gboolean is_xwayland_native_scaling; ++ gboolean is_stage_views_scaled; ++ ++ was_xwayland_native_scaling = ++ !!(old_experimental_features & ++ META_EXPERIMENTAL_FEATURE_XWAYLAND_NATIVE_SCALING); ++ was_stage_views_scaled = ++ !!(old_experimental_features & ++ META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER); ++ ++ is_xwayland_native_scaling = ++ meta_settings_is_experimental_feature_enabled ( ++ settings, ++ META_EXPERIMENTAL_FEATURE_XWAYLAND_NATIVE_SCALING); ++ is_stage_views_scaled = ++ meta_settings_is_experimental_feature_enabled ( ++ settings, ++ META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER); ++ ++ if (is_xwayland_native_scaling != was_xwayland_native_scaling || ++ is_stage_views_scaled != was_stage_views_scaled) ++ { ++ update_ui_scaling_factor (x11_display); ++ set_desktop_geometry_hint (x11_display); ++ set_work_area_hint (x11_display->display, x11_display); ++ } ++} ++ + /** + * meta_x11_display_new: + * +@@ -1272,6 +1383,7 @@ meta_x11_display_new (MetaDisplay *display, + MetaBackend *backend = meta_context_get_backend (context); + MetaMonitorManager *monitor_manager = + meta_backend_get_monitor_manager (backend); ++ MetaSettings *settings = meta_backend_get_settings (backend); + g_autoptr (MetaX11Display) x11_display = NULL; + Display *xdisplay; + Screen *xscreen; +@@ -1442,7 +1554,7 @@ meta_x11_display_new (MetaDisplay *display, + "monitors-changed-internal", + G_CALLBACK (on_monitors_changed_internal), + x11_display, +- 0); ++ G_CONNECT_AFTER); + + init_leader_window (x11_display, ×tamp); + x11_display->timestamp = timestamp; +@@ -1535,6 +1647,11 @@ meta_x11_display_new (MetaDisplay *display, + + meta_prefs_add_listener (prefs_changed_callback, x11_display); + ++ g_signal_connect_object (settings, ++ "experimental-features-changed", ++ G_CALLBACK (experimental_features_changed), ++ x11_display, 0); ++ + set_work_area_hint (display, x11_display); + + g_signal_connect_object (display, "workareas-changed", +@@ -1748,16 +1865,12 @@ meta_x11_display_reload_cursor (MetaX11Display *x11_display) + } + + static void +-set_cursor_theme (Display *xdisplay, +- MetaBackend *backend) ++set_cursor_theme (Display *xdisplay, ++ const char *theme, ++ int size) + { +- MetaSettings *settings = meta_backend_get_settings (backend); +- int scale; +- +- scale = meta_settings_get_ui_scaling_factor (settings); +- XcursorSetTheme (xdisplay, meta_prefs_get_cursor_theme ()); +- XcursorSetDefaultSize (xdisplay, +- meta_prefs_get_cursor_size () * scale); ++ XcursorSetTheme (xdisplay, theme); ++ XcursorSetDefaultSize (xdisplay, size); + } + + static void +@@ -1809,8 +1922,37 @@ static void + update_cursor_theme (MetaX11Display *x11_display) + { + MetaBackend *backend = backend_from_x11_display (x11_display); ++ MetaContext *context = meta_backend_get_context (backend); ++ MetaSettings *settings = meta_backend_get_settings (backend); ++ int scale = 1; ++ int size; ++ const char *theme; ++ ++ switch (meta_context_get_compositor_type (context)) ++ { ++ case META_COMPOSITOR_TYPE_WAYLAND: ++ { ++#ifdef HAVE_XWAYLAND ++ MetaWaylandCompositor *wayland_compositor = ++ meta_context_get_wayland_compositor (context); ++ MetaXWaylandManager *xwayland_manager = ++ &wayland_compositor->xwayland_manager; ++ ++ scale = meta_xwayland_get_effective_scale (xwayland_manager); ++#endif ++ break; ++ } ++ ++ case META_COMPOSITOR_TYPE_X11: ++ scale = meta_settings_get_ui_scaling_factor (settings); ++ break; ++ } ++ ++ size = meta_prefs_get_cursor_size () * scale; ++ ++ theme = meta_prefs_get_cursor_theme (); + +- set_cursor_theme (x11_display->xdisplay, backend); ++ set_cursor_theme (x11_display->xdisplay, theme, size); + schedule_reload_x11_cursor (x11_display); + + if (META_IS_BACKEND_X11 (backend)) +@@ -1818,7 +1960,7 @@ update_cursor_theme (MetaX11Display *x11_display) + MetaBackendX11 *backend_x11 = META_BACKEND_X11 (backend); + Display *xdisplay = meta_backend_x11_get_xdisplay (backend_x11); + +- set_cursor_theme (xdisplay, backend); ++ set_cursor_theme (xdisplay, theme, size); + meta_backend_x11_reload_cursor (backend_x11); + } + } +diff --git a/src/x11/window-props.c b/src/x11/window-props.c +index c18b3eab5..494fbe843 100644 +--- a/src/x11/window-props.c ++++ b/src/x11/window-props.c +@@ -305,10 +305,15 @@ reload_icon_geometry (MetaWindow *window, + { + MtkRectangle geometry; + +- geometry.x = (int)value->v.cardinal_list.cardinals[0]; +- geometry.y = (int)value->v.cardinal_list.cardinals[1]; +- geometry.width = (int)value->v.cardinal_list.cardinals[2]; +- geometry.height = (int)value->v.cardinal_list.cardinals[3]; ++ meta_window_x11_protocol_to_stage (META_WINDOW_X11 (window), ++ value->v.cardinal_list.cardinals[0], ++ value->v.cardinal_list.cardinals[1], ++ value->v.cardinal_list.cardinals[2], ++ value->v.cardinal_list.cardinals[3], ++ &geometry.x, ++ &geometry.y, ++ &geometry.width, ++ &geometry.height); + + meta_window_set_icon_geometry (window, &geometry); + } +@@ -370,11 +375,24 @@ reload_gtk_frame_extents (MetaWindow *window, + } + else + { ++ int left, right, top, bottom; + MetaFrameBorder extents; +- extents.left = (int)value->v.cardinal_list.cardinals[0]; +- extents.right = (int)value->v.cardinal_list.cardinals[1]; +- extents.top = (int)value->v.cardinal_list.cardinals[2]; +- extents.bottom = (int)value->v.cardinal_list.cardinals[3]; ++ ++ meta_window_x11_protocol_to_stage (META_WINDOW_X11 (window), ++ value->v.cardinal_list.cardinals[0], ++ value->v.cardinal_list.cardinals[1], ++ value->v.cardinal_list.cardinals[2], ++ value->v.cardinal_list.cardinals[3], ++ &left, ++ &right, ++ &top, ++ &bottom); ++ ++ extents.left = left; ++ extents.right = right; ++ extents.top = top; ++ extents.bottom = bottom; ++ + meta_window_set_custom_frame_extents (window, &extents, initial); + } + } +@@ -678,10 +696,16 @@ reload_opaque_region (MetaWindow *window, + { + MtkRectangle *rect = &rects[rect_index]; + +- rect->x = region[i++]; +- rect->y = region[i++]; +- rect->width = region[i++]; +- rect->height = region[i++]; ++ meta_window_x11_protocol_to_stage (META_WINDOW_X11 (window), ++ region[i + 0], ++ region[i + 1], ++ region[i + 2], ++ region[i + 3], ++ &rect->x, ++ &rect->y, ++ &rect->width, ++ &rect->height); ++ i += 4; + + rect_index++; + } +@@ -1245,9 +1269,65 @@ meta_set_normal_hints (MetaWindow *window, + * as if flags were zero + */ + if (hints) +- window->size_hints = *(MetaSizeHints*)(hints); ++ { ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); ++ ++ window->size_hints = *(MetaSizeHints *) hints; ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->x, hints->y, ++ hints->width, hints->height, ++ &window->size_hints.x, ++ &window->size_hints.y, ++ &window->size_hints.width, ++ &window->size_hints.height); ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->min_width, hints->min_height, ++ 0, 0, ++ &window->size_hints.min_width, ++ &window->size_hints.min_height, ++ NULL, NULL); ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->max_width, hints->max_height, ++ 0, 0, ++ &window->size_hints.max_width, ++ &window->size_hints.max_height, ++ NULL, NULL); ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->width_inc, hints->height_inc, ++ 0, 0, ++ &window->size_hints.width_inc, ++ &window->size_hints.height_inc, ++ NULL, NULL); ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->min_aspect.x, hints->min_aspect.y, ++ 0, 0, ++ &window->size_hints.min_aspect.x, ++ &window->size_hints.min_aspect.y, ++ NULL, NULL); ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->max_aspect.x, hints->max_aspect.y, ++ 0, 0, ++ &window->size_hints.max_aspect.x, ++ &window->size_hints.max_aspect.y, ++ NULL, NULL); ++ ++ meta_window_x11_protocol_to_stage (window_x11, ++ hints->base_width, hints->base_height, ++ 0, 0, ++ &window->size_hints.base_width, ++ &window->size_hints.base_height, ++ NULL, NULL); ++ } + else +- window->size_hints.flags = 0; ++ { ++ window->size_hints.flags = 0; ++ } + + /* Put back saved ConfigureRequest. */ + window->size_hints.x = x; +diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c +index 443f40f28..b72d5b6d5 100644 +--- a/src/x11/window-x11.c ++++ b/src/x11/window-x11.c +@@ -110,6 +110,113 @@ meta_window_x11_get_private (MetaWindowX11 *window_x11) + return meta_window_x11_get_instance_private (window_x11); + } + ++static void ++meta_window_x11_real_stage_to_protocol (MetaWindowX11 *window_x11, ++ int stage_x, ++ int stage_y, ++ int stage_width, ++ int stage_height, ++ int *protocol_x, ++ int *protocol_y, ++ int *protocol_width, ++ int *protocol_height) ++{ ++ if (protocol_x) ++ *protocol_x = stage_x; ++ if (protocol_y) ++ *protocol_y = stage_y; ++ if (protocol_width) ++ *protocol_width = stage_width; ++ if (protocol_height) ++ *protocol_height = stage_height; ++} ++ ++static void ++meta_window_x11_real_protocol_to_stage (MetaWindowX11 *window_x11, ++ int protocol_x, ++ int protocol_y, ++ int protocol_width, ++ int protocol_height, ++ int *stage_x, ++ int *stage_y, ++ int *stage_width, ++ int *stage_height) ++{ ++ if (stage_x) ++ *stage_x = protocol_x; ++ if (stage_y) ++ *stage_y = protocol_y; ++ if (stage_width) ++ *stage_width = protocol_width; ++ if (stage_height) ++ *stage_height = protocol_height; ++} ++ ++void ++meta_window_x11_stage_to_protocol (MetaWindowX11 *window_x11, ++ int stage_x, ++ int stage_y, ++ int stage_width, ++ int stage_height, ++ int *protocol_x, ++ int *protocol_y, ++ int *protocol_width, ++ int *protocol_height) ++{ ++ MetaWindowX11Class *klass = META_WINDOW_X11_GET_CLASS (window_x11); ++ ++ klass->stage_to_protocol (window_x11, ++ stage_x, stage_y, ++ stage_width, stage_height, ++ protocol_x, protocol_y, ++ protocol_width, protocol_height); ++} ++ ++void ++meta_window_x11_protocol_to_stage (MetaWindowX11 *window_x11, ++ int protocol_x, ++ int protocol_y, ++ int protocol_width, ++ int protocol_height, ++ int *stage_x, ++ int *stage_y, ++ int *stage_width, ++ int *stage_height) ++{ ++ MetaWindowX11Class *klass = META_WINDOW_X11_GET_CLASS (window_x11); ++ ++ klass->protocol_to_stage (window_x11, ++ protocol_x, protocol_y, ++ protocol_width, protocol_height, ++ stage_x, stage_y, ++ stage_width, stage_height); ++} ++ ++static MtkRegion * ++region_protocol_to_stage (MtkRegion *region, ++ MetaWindowX11 *window_x11) ++{ ++ int n_rects, i; ++ MtkRectangle *rects; ++ MtkRegion *scaled_region; ++ ++ n_rects = mtk_region_num_rectangles (region); ++ MTK_RECTANGLE_CREATE_ARRAY_SCOPED (n_rects, rects); ++ for (i = 0; i < n_rects; i++) ++ { ++ rects[i] = mtk_region_get_rectangle (region, i); ++ meta_window_x11_protocol_to_stage (window_x11, ++ rects[i].x, rects[i].y, ++ rects[i].width, rects[i].height, ++ &rects[i].x, &rects[i].y, ++ &rects[i].width, &rects[i].height); ++ } ++ ++ scaled_region = mtk_region_create_rectangles (rects, n_rects); ++ ++ return scaled_region; ++} ++ + static void + send_icccm_message (MetaWindow *window, + Atom atom, +@@ -254,8 +361,13 @@ send_configure_notify (MetaWindow *window) + event.xconfigure.display = x11_display->xdisplay; + event.xconfigure.event = priv->xwindow; + event.xconfigure.window = priv->xwindow; +- event.xconfigure.x = priv->client_rect.x - priv->border_width; +- event.xconfigure.y = priv->client_rect.y - priv->border_width; ++ meta_window_x11_stage_to_protocol (window_x11, ++ priv->client_rect.x - priv->border_width, ++ priv->client_rect.y - priv->border_width, ++ 0, 0, ++ &event.xconfigure.x, ++ &event.xconfigure.y, ++ NULL, NULL); + if (window->frame) + { + if (window->withdrawn) +@@ -267,19 +379,42 @@ send_configure_notify (MetaWindow *window) + + meta_frame_calc_borders (window->frame, &borders); + +- event.xconfigure.x = window->frame->rect.x + borders.invisible.left; +- event.xconfigure.y = window->frame->rect.y + borders.invisible.top; ++ meta_window_x11_stage_to_protocol (window_x11, ++ window->frame->rect.x + borders.invisible.left, ++ window->frame->rect.y + borders.invisible.top, ++ 0, 0, ++ &event.xconfigure.x, ++ &event.xconfigure.y, ++ NULL, NULL); + } + else + { ++ int dx, dy; ++ + /* Need to be in root window coordinates */ +- event.xconfigure.x += window->frame->rect.x; +- event.xconfigure.y += window->frame->rect.y; ++ meta_window_x11_stage_to_protocol (window_x11, ++ window->frame->rect.x, ++ window->frame->rect.y, ++ 0, 0, ++ &dx, ++ &dy, ++ NULL, NULL); ++ event.xconfigure.x += dx; ++ event.xconfigure.y += dy; + } + } +- event.xconfigure.width = priv->client_rect.width; +- event.xconfigure.height = priv->client_rect.height; +- event.xconfigure.border_width = priv->border_width; /* requested not actual */ ++ meta_window_x11_stage_to_protocol (window_x11, ++ priv->client_rect.width, ++ priv->client_rect.height, ++ 0, 0, ++ &event.xconfigure.width, ++ &event.xconfigure.height, ++ NULL, NULL); ++ meta_window_x11_stage_to_protocol (window_x11, ++ priv->border_width, ++ 0, 0, 0, ++ &event.xconfigure.border_width, ++ NULL, NULL, NULL); + event.xconfigure.above = None; /* FIXME */ + event.xconfigure.override_redirect = False; + +@@ -1137,20 +1272,26 @@ static void + update_net_frame_extents (MetaWindow *window) + { + MetaX11Display *x11_display = window->display->x11_display; +- ++ int left, right, top, bottom; + unsigned long data[4]; + MetaFrameBorders borders; + Window xwindow = meta_window_x11_get_xwindow (window); + + meta_frame_calc_borders (window->frame, &borders); +- /* Left */ +- data[0] = borders.visible.left; +- /* Right */ +- data[1] = borders.visible.right; +- /* Top */ +- data[2] = borders.visible.top; +- /* Bottom */ +- data[3] = borders.visible.bottom; ++ meta_window_x11_stage_to_protocol (META_WINDOW_X11 (window), ++ borders.visible.left, ++ borders.visible.right, ++ borders.visible.top, ++ borders.visible.bottom, ++ &left, ++ &right, ++ &top, ++ &bottom); ++ ++ data[0] = left; ++ data[1] = right; ++ data[2] = top; ++ data[3] = bottom; + + meta_topic (META_DEBUG_GEOMETRY, + "Setting _NET_FRAME_EXTENTS on managed window 0x%lx " +@@ -1482,10 +1623,11 @@ meta_window_x11_move_resize_internal (MetaWindow *window, + configure_frame_first = size_dx + size_dy >= 0; + + values.border_width = 0; +- values.x = client_rect.x; +- values.y = client_rect.y; +- values.width = client_rect.width; +- values.height = client_rect.height; ++ meta_window_x11_stage_to_protocol (window_x11, ++ client_rect.x, client_rect.y, ++ client_rect.width, client_rect.height, ++ &values.x, &values.y, ++ &values.width, &values.height); + + mask = 0; + if (is_configure_request && priv->border_width != 0) +@@ -1591,6 +1733,10 @@ meta_window_x11_update_struts (MetaWindow *window) + strut_begin = struts[4+(i*2)]; + strut_end = struts[4+(i*2)+1]; + ++ meta_window_x11_protocol_to_stage (META_WINDOW_X11 (window), ++ strut_begin, strut_end, thickness, 0, ++ &strut_begin, &strut_end, &thickness, NULL); ++ + temp = g_new0 (MetaStrut, 1); + temp->side = 1 << i; /* See MetaSide def. Matches nicely, eh? */ + meta_display_get_size (window->display, +@@ -1655,6 +1801,10 @@ meta_window_x11_update_struts (MetaWindow *window) + if (thickness == 0) + continue; + ++ meta_window_x11_protocol_to_stage (META_WINDOW_X11 (window), ++ thickness, 0, 0, 0, ++ &thickness, NULL, NULL, NULL); ++ + temp = g_new0 (MetaStrut, 1); + temp->side = 1 << i; + meta_display_get_size (window->display, +@@ -2040,9 +2190,10 @@ static void + meta_window_x11_constructed (GObject *object) + { + MetaWindow *window = META_WINDOW (object); +- MetaWindowX11 *x11_window = META_WINDOW_X11 (object); +- MetaWindowX11Private *priv = meta_window_x11_get_instance_private (x11_window); ++ MetaWindowX11 *window_x11 = META_WINDOW_X11 (object); ++ MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); + XWindowAttributes attrs = priv->attributes; ++ MtkRectangle rect; + + meta_verbose ("attrs->map_state = %d (%s)", + attrs.map_state, +@@ -2057,16 +2208,17 @@ meta_window_x11_constructed (GObject *object) + window->client_type = META_WINDOW_CLIENT_TYPE_X11; + window->override_redirect = attrs.override_redirect; + +- window->rect.x = attrs.x; +- window->rect.y = attrs.y; +- window->rect.width = attrs.width; +- window->rect.height = attrs.height; ++ meta_window_x11_protocol_to_stage (window_x11, ++ attrs.x, attrs.y, attrs.width, attrs.height, ++ &rect.x, &rect.y, &rect.width, &rect.height); ++ ++ window->rect = rect; + + /* size_hints are the "request" */ +- window->size_hints.x = attrs.x; +- window->size_hints.y = attrs.y; +- window->size_hints.width = attrs.width; +- window->size_hints.height = attrs.height; ++ window->size_hints.x = rect.x; ++ window->size_hints.y = rect.y; ++ window->size_hints.width = rect.width; ++ window->size_hints.height = rect.height; + + window->depth = attrs.depth; + priv->xvisual = attrs.visual; +@@ -2076,11 +2228,11 @@ meta_window_x11_constructed (GObject *object) + + window->decorated = TRUE; + window->hidden = FALSE; +- priv->border_width = attrs.border_width; + priv->xclient_leader = None; + +- priv->keys_grabbed = FALSE; +- priv->grab_on_frame = FALSE; ++ meta_window_x11_protocol_to_stage (window_x11, ++ attrs.border_width, 0, 0, 0, ++ &priv->border_width, NULL, NULL, NULL); + + g_signal_connect (window, "notify::decorated", + G_CALLBACK (meta_window_x11_update_input_region), +@@ -2192,6 +2344,8 @@ meta_window_x11_class_init (MetaWindowX11Class *klass) + klass->thaw_commits = meta_window_x11_impl_thaw_commits; + klass->always_update_shape = meta_window_x11_impl_always_update_shape; + klass->process_property_notify = meta_window_x11_impl_process_property_notify; ++ klass->stage_to_protocol = meta_window_x11_real_stage_to_protocol; ++ klass->protocol_to_stage = meta_window_x11_real_protocol_to_stage; + + obj_props[PROP_ATTRIBUTES] = + g_param_spec_pointer ("attributes", NULL, NULL, +@@ -2473,7 +2627,10 @@ meta_window_x11_update_input_region (MetaWindow *window) + else + { + /* Window has a custom shape. */ +- region = region_create_from_x_rectangles (rects, n_rects); ++ g_autoptr (MtkRegion) protocol_region = NULL; ++ ++ protocol_region = region_create_from_x_rectangles (rects, n_rects); ++ region = region_protocol_to_stage (protocol_region, window_x11); + } + + meta_XFree (rects); +@@ -2549,7 +2706,10 @@ meta_window_x11_update_shape_region (MetaWindow *window) + + if (rects) + { +- region = region_create_from_x_rectangles (rects, n_rects); ++ g_autoptr (MtkRegion) protocol_region = NULL; ++ ++ protocol_region = region_create_from_x_rectangles (rects, n_rects); ++ region = region_protocol_to_stage (protocol_region, window_x11); + XFree (rects); + } + } +@@ -2818,6 +2978,7 @@ meta_window_x11_configure_request (MetaWindow *window, + { + MetaWindowX11 *window_x11 = META_WINDOW_X11 (window); + MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11); ++ int new_x, new_y, new_width, new_height; + + /* Note that x, y is the corner of the window border, + * and width, height is the size of the window inside +@@ -2826,15 +2987,25 @@ meta_window_x11_configure_request (MetaWindow *window, + * requested border here. + */ + if (event->xconfigurerequest.value_mask & CWBorderWidth) +- priv->border_width = event->xconfigurerequest.border_width; ++ { ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->xconfigurerequest.border_width, 0, 0, 0, ++ &priv->border_width, NULL, NULL, NULL); ++ } + +- meta_window_move_resize_request(window, +- event->xconfigurerequest.value_mask, +- window->size_hints.win_gravity, +- event->xconfigurerequest.x, +- event->xconfigurerequest.y, +- event->xconfigurerequest.width, +- event->xconfigurerequest.height); ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->xconfigurerequest.x, event->xconfigurerequest.y, ++ event->xconfigurerequest.width, event->xconfigurerequest.height, ++ &new_x, &new_y, ++ &new_width, &new_height); ++ ++ meta_window_move_resize_request (window, ++ event->xconfigurerequest.value_mask, ++ window->size_hints.win_gravity, ++ new_x, ++ new_y, ++ new_width, ++ new_height); + + /* Handle stacking. We only handle raises/lowers, mostly because + * stack.c really can't deal with anything else. I guess we'll fix +@@ -3330,8 +3501,13 @@ meta_window_x11_client_message (MetaWindow *window, + guint32 timestamp; + MetaWindowDrag *window_drag; + +- x_root = event->xclient.data.l[0]; +- y_root = event->xclient.data.l[1]; ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->xclient.data.l[0], ++ event->xclient.data.l[1], ++ 0, 0, ++ &x_root, ++ &y_root, ++ NULL, NULL); + action = event->xclient.data.l[2]; + button = event->xclient.data.l[3]; + +@@ -3495,6 +3671,7 @@ meta_window_x11_client_message (MetaWindow *window, + { + MetaGravity gravity; + guint value_mask; ++ int x, y, width, height; + + gravity = (MetaGravity) (event->xclient.data.l[0] & 0xff); + value_mask = (event->xclient.data.l[0] & 0xf00) >> 8; +@@ -3503,13 +3680,20 @@ meta_window_x11_client_message (MetaWindow *window, + if (gravity == 0) + gravity = window->size_hints.win_gravity; + ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->xclient.data.l[1], ++ event->xclient.data.l[2], ++ event->xclient.data.l[3], ++ event->xclient.data.l[4], ++ &x, &y, &width, &height); ++ + meta_window_move_resize_request(window, + value_mask, + gravity, +- event->xclient.data.l[1], /* x */ +- event->xclient.data.l[2], /* y */ +- event->xclient.data.l[3], /* width */ +- event->xclient.data.l[4]); /* height */ ++ x, ++ y, ++ width, ++ height); + } + else if (event->xclient.message_type == + x11_display->atom__NET_ACTIVE_WINDOW && +@@ -3566,11 +3750,15 @@ meta_window_x11_client_message (MetaWindow *window, + else if (event->xclient.message_type == + x11_display->atom__GTK_SHOW_WINDOW_MENU) + { +- gulong x, y; ++ int x, y; + + /* l[0] is device_id, which we don't use */ +- x = event->xclient.data.l[1]; +- y = event->xclient.data.l[2]; ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->xclient.data.l[1], ++ event->xclient.data.l[2], ++ 0, 0, ++ &x, &y, ++ NULL, NULL); + + meta_window_show_menu (window, META_WINDOW_MENU_WM, x, y); + } +@@ -4092,10 +4280,11 @@ meta_window_x11_configure_notify (MetaWindow *window, + g_assert (window->override_redirect); + g_assert (window->frame == NULL); + +- window->rect.x = event->x; +- window->rect.y = event->y; +- window->rect.width = event->width; +- window->rect.height = event->height; ++ meta_window_x11_protocol_to_stage (window_x11, ++ event->x, event->y, ++ event->width, event->height, ++ &window->rect.x, &window->rect.y, ++ &window->rect.width, &window->rect.height); + + priv->client_rect = window->rect; + window->buffer_rect = window->rect; +diff --git a/src/x11/window-x11.h b/src/x11/window-x11.h +index 205eaaa63..fa3fbea6a 100644 +--- a/src/x11/window-x11.h ++++ b/src/x11/window-x11.h +@@ -45,6 +45,24 @@ struct _MetaWindowX11Class + gboolean (*always_update_shape) (MetaWindow *window); + void (*process_property_notify) (MetaWindow *window, + XPropertyEvent *event); ++ void (*stage_to_protocol) (MetaWindowX11 *window_x11, ++ int stage_x, ++ int stage_y, ++ int stage_width, ++ int stage_height, ++ int *protocol_x, ++ int *protocol_y, ++ int *protocol_width, ++ int *protocol_height); ++ void (*protocol_to_stage) (MetaWindowX11 *window_x11, ++ int protocol_x, ++ int protocol_y, ++ int protocol_width, ++ int protocol_height, ++ int *stage_x, ++ int *stage_y, ++ int *stage_width, ++ int *stage_height); + }; + + MetaWindow * meta_window_x11_new (MetaDisplay *display, +@@ -112,3 +130,23 @@ gboolean meta_window_x11_has_alpha_channel (MetaWindow *window); + + META_EXPORT + Window meta_window_x11_get_xwindow (MetaWindow *window); ++ ++void meta_window_x11_stage_to_protocol (MetaWindowX11 *window_x11, ++ int stage_x, ++ int stage_y, ++ int stage_width, ++ int stage_heigth, ++ int *protocol_x, ++ int *protocol_y, ++ int *protocol_width, ++ int *protocol_height); ++ ++void meta_window_x11_protocol_to_stage (MetaWindowX11 *window_x11, ++ int protocol_x, ++ int protocol_y, ++ int protocol_width, ++ int protocol_height, ++ int *stage_x, ++ int *stage_y, ++ int *stage_width, ++ int *stage_heigth); +-- +2.45.2 + + +From 86256022a13ace5fa149553acb790a2665878098 Mon Sep 17 00:00:00 2001 +From: HydroH +Date: Tue, 21 May 2024 19:14:55 +0800 +Subject: [PATCH 5/6] Fix incorrect value for xwayland-native-scaling in + org.gnome.mutter.gchema.xml.in + +--- + data/org.gnome.mutter.gschema.xml.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in +index 18abd8d51..6751a8d7a 100644 +--- a/data/org.gnome.mutter.gschema.xml.in ++++ b/data/org.gnome.mutter.gschema.xml.in +@@ -5,7 +5,7 @@ + + + +- ++ + + + +Date: Tue, 21 May 2024 19:15:36 +0800 +Subject: [PATCH 6/6] Correctly set bounding region for undecorated windows + +--- + src/x11/window-x11.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c +index b72d5b6d5..c48b91e93 100644 +--- a/src/x11/window-x11.c ++++ b/src/x11/window-x11.c +@@ -2572,8 +2572,13 @@ meta_window_x11_update_input_region (MetaWindow *window) + else + { + xwindow = priv->xwindow; +- bounding_rect.width = priv->client_rect.width; +- bounding_rect.height = priv->client_rect.height; ++ meta_window_x11_stage_to_protocol(window_x11, ++ 0, 0, ++ priv->client_rect.width, ++ priv->client_rect.height, ++ NULL, NULL, ++ &bounding_rect.width, ++ &bounding_rect.height); + } + + if (META_X11_DISPLAY_HAS_SHAPE (x11_display)) +-- +2.45.2 + diff --git a/patches/remove-dbus-restrictions-with-pika-gnome-session.patch b/patches/remove-dbus-restrictions-with-pika-gnome-session.patch deleted file mode 100644 index edede0a..0000000 --- a/patches/remove-dbus-restrictions-with-pika-gnome-session.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- gnome-shell-45.0.orig/js/ui/panel.js -+++ gnome-shell-45.0/js/ui/panel.js -@@ -551,7 +551,6 @@ class QuickSettings extends PanelMenu.Bu - this._powerProfiles = new PowerProfileStatus.Indicator(); - this._rfkill = new RFKillStatus.Indicator(); - this._autoRotate = new AutoRotateStatus.Indicator(); -- this._unsafeMode = new UnsafeModeIndicator(); - this._backgroundApps = new BackgroundAppsStatus.Indicator(); - - // add privacy-related indicators before any external indicators -@@ -575,7 +574,6 @@ class QuickSettings extends PanelMenu.Bu - this._indicators.add_child(this._rfkill); - this._indicators.add_child(this._autoRotate); - this._indicators.add_child(this._volumeOutput); -- this._indicators.add_child(this._unsafeMode); - this._indicators.add_child(this._system); - - // add our quick settings items before any external ones -@@ -603,7 +601,6 @@ class QuickSettings extends PanelMenu.Bu - this._addItemsBefore(this._backlight.quickSettingsItems, sibling); - this._addItemsBefore(this._rfkill.quickSettingsItems, sibling); - this._addItemsBefore(this._autoRotate.quickSettingsItems, sibling); -- this._addItemsBefore(this._unsafeMode.quickSettingsItems, sibling); - - // append background apps - this._backgroundApps.quickSettingsItems.forEach( diff --git a/patches/series b/patches/series index 234c57a..9189ae4 100644 --- a/patches/series +++ b/patches/series @@ -1,30 +1,11 @@ -debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch -debian/Revert-build-Port-to-gcr4.patch -debian/Revert-tests-Fail-on-warnings-too.patch -Revert-keyboard-Spawn-tecla-to-show-keyboard-map.patch -gdm-util-Only-start-fingerprint-service-synchronously-whe.patch -ubuntu/desktop_detect.patch -ubuntu/lightdm-user-switching.patch -ubuntu/lock_on_suspend.patch -ubuntu/background_login.patch -ubuntu/gdm_alternatives.patch -main-show-an-error-message-on-gnome-shell-crash.patch -global-make-possible-to-set-debug-flags-dynamically.patch -main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch -main-add-backtrace-crashes-all-and-backtrace-all.patch -sessionMode-add-support-for-debugFlags-parameter.patch -magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch -ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch -ubuntu/resolve_alternate_theme_path.patch -ubuntu/secure_mode_extension.patch -ubuntu/keep-ubuntu-logo-bright-lp1867133-v1.patch -ubuntu/configure_login_screen.patch -ubuntu/layout-Try-to-allocate-before-getting-size-of-tracke.patch -Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch -ubuntu/sessionMode-Add-support-for-configuring-an-icons-resource.patch -ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch -ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch -ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch -overview-Handle-unredirection-in-OverviewShown-state-mach.patch -layout-Destroy-panel-barrier-on-shutdown.patch -remove-dbus-restrictions-with-pika-gnome-session.patch +workarounds/tests-Mark-view-verification-tests-as-incomplete-in-big-e.patch +debian/meson-Do-not-mark-CI-test-tools-as-required.patch +debian/tests-Do-not-run-screencast-tests.patch +debian/Support-Dynamic-triple-double-buffering.patch +workarounds/tests-skip-monitor-width-size-check-as-it-may-lead-to-une.patch +workarounds/tests-Skip-thread-priority-test.patch +workarounds/Mark-several-additional-tests-as-flaky.patch +workarounds/kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch +workarounds/place-Always-center-initial-setup.patch +workarounds/cogl-tests-Avoid-converting-16bpc-float-16bpc.patch +pika/xwayland-scaling-support.patch diff --git a/patches/sessionMode-add-support-for-debugFlags-parameter.patch b/patches/sessionMode-add-support-for-debugFlags-parameter.patch deleted file mode 100644 index 92e5c15..0000000 --- a/patches/sessionMode-add-support-for-debugFlags-parameter.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Thu, 2 Aug 2018 16:05:13 +0200 -Subject: sessionMode: add support for `debugFlags` parameter - -A session can now define `debugFlags` from a json file, still leaving priority -to the environment variable. - -https://bugzilla.gnome.org/show_bug.cgi?id=789377 - -Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377 -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6 ---- - js/ui/main.js | 7 +++++++ - js/ui/sessionMode.js | 1 + - 2 files changed, 8 insertions(+) - -diff --git a/js/ui/main.js b/js/ui/main.js -index 6240b12..b3fff22 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -136,6 +136,13 @@ function _sessionUpdated() { - _remoteAccessInhibited = true; - } - } -+ -+ if (!GLib.getenv('SHELL_DEBUG')) { -+ if (typeof sessionMode.debugFlags === 'string') -+ global.set_debug_flags(sessionMode.debugFlags); -+ else if (Array.isArray(sessionMode.debugFlags)) -+ global.set_debug_flags(sessionMode.debugFlags.join(':')) -+ } - } - - /** @returns {void} */ -diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js -index e27f4fa..45320ea 100644 ---- a/js/ui/sessionMode.js -+++ b/js/ui/sessionMode.js -@@ -32,6 +32,7 @@ const _modes = { - showWelcomeDialog: false, - allowSettings: false, - allowScreencast: false, -+ debugFlags: [], - enabledExtensions: [], - hasRunDialog: false, - hasWorkspaces: false, diff --git a/patches/ubuntu/background_login.patch b/patches/ubuntu/background_login.patch deleted file mode 100644 index 10bc2eb..0000000 --- a/patches/ubuntu/background_login.patch +++ /dev/null @@ -1,50 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Tue, 10 Sep 2019 13:13:14 +0100 -Subject: js/ui/background.js: Match theme login screen color - -This way the login animation will appear to expand over the login -screen (system background) instead of suddenly replacing it. - -Original author: Didier Roche -Original author: Daniel van Vugt -Author: Marco Trevisan - -Last-Update: 2022-08-30 -Forwarded: not-needed ---- - js/ui/background.js | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/js/ui/background.js b/js/ui/background.js -index 8301330..cef7c87 100644 ---- a/js/ui/background.js -+++ b/js/ui/background.js -@@ -101,8 +101,10 @@ import GObject from 'gi://GObject'; - import GnomeBG from 'gi://GnomeBG'; - import GnomeDesktop from 'gi://GnomeDesktop'; - import Meta from 'gi://Meta'; -+import St from 'gi://St'; - import * as Signals from '../misc/signals.js'; - -+import * as Desktop from '../misc/desktop.js'; - import * as LoginManager from '../misc/loginManager.js'; - import * as Main from './main.js'; - import * as Params from '../misc/params.js'; -@@ -538,7 +540,16 @@ export const SystemBackground = GObject.registerClass({ - _init() { - if (_systemBackground == null) { - _systemBackground = new Meta.Background({meta_display: global.display}); -- _systemBackground.set_color(DEFAULT_BACKGROUND_COLOR); -+ -+ let backgroundColor = DEFAULT_BACKGROUND_COLOR; -+ if (Desktop.is('ubuntu')) { -+ const dummyBgActor = new St.Widget({name: 'lockDialogGroup'}); -+ Main.uiGroup.add_actor(dummyBgActor); -+ backgroundColor = dummyBgActor.get_theme_node().get_background_color(); -+ dummyBgActor.destroy(); -+ } -+ -+ _systemBackground.set_color(backgroundColor); - } - - super._init({ diff --git a/patches/ubuntu/configure_login_screen.patch b/patches/ubuntu/configure_login_screen.patch deleted file mode 100644 index a4d93e8..0000000 --- a/patches/ubuntu/configure_login_screen.patch +++ /dev/null @@ -1,211 +0,0 @@ -From: Ubuntu Developers -Date: Thu, 11 Mar 2021 10:12:06 +0200 -Subject: Allow configuring login screen background - -Configuring login screen backgound and properties is a recurring request -especially on corporate environment. -Allows to override the default embedded style in the theme with specific -gsettings keys. -Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/680 -Bug: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1918613 -Origin: ubuntu ---- - data/com.ubuntu.login-screen.gschema.xml.in | 70 +++++++++++++++++++++++++++++ - data/meson.build | 8 +++- - js/ui/background.js | 4 ++ - js/ui/screenShield.js | 42 +++++++++++++++++ - 4 files changed, 123 insertions(+), 1 deletion(-) - create mode 100644 data/com.ubuntu.login-screen.gschema.xml.in - -diff --git a/data/com.ubuntu.login-screen.gschema.xml.in b/data/com.ubuntu.login-screen.gschema.xml.in -new file mode 100644 -index 0000000..ee8b3a2 ---- /dev/null -+++ b/data/com.ubuntu.login-screen.gschema.xml.in -@@ -0,0 +1,70 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ '' -+ -+ Sets the background image for the login screen. -+ -+ -+ URI to use for the background image. Note that the backend only -+ supports local (file://) URIs. -+ It overrides the value defined in the default style sheet. -+ -+ -+ -+ '' -+ -+ The background-color property sets the background color. -+ -+ -+ The background-color property sets the background color to use when -+ the background picture URI is missing or when it doesn't cover the whole background. -+ It overrides the value defined in the default style sheet. -+ -+ -+ -+ 'default' -+ -+ The background-repeat property sets if/how the background image will be repeated. -+ -+ -+ The background-repeat property sets if/how a background image will be repeated. -+ By default, a background-image is repeated both vertically and horizontally. -+ -+ It overrides the value defined in the default style sheet. -+ -+ -+ -+ 'default' -+ -+ The background-size property specifies the size of the background image. -+ -+ -+ The background-size property specifies the size of the background images. -+ -+ There are three keywords you can use with this property: -+ auto: The background image is displayed in its original size; -+ cover: Resize the background image to cover the entire container, even if it has to stretch the image or cut a little bit off one of the edges; -+ contain: Resize the background image to make sure the image is fully visible. -+ -+ It overrides the value defined in the default style sheet. -+ -+ -+ -+ -diff --git a/data/meson.build b/data/meson.build -index a31efcc..07d6d4a 100644 ---- a/data/meson.build -+++ b/data/meson.build -@@ -97,6 +97,12 @@ schema = configure_file( - configuration: schemaconf, - install_dir: schemadir - ) -+schema_ubuntu_login = configure_file( -+ input: 'com.ubuntu.login-screen.gschema.xml.in', -+ output: 'com.ubuntu.login-screen.gschema.xml', -+ configuration: schemaconf, -+ install_dir: schemadir -+) - install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir) - - if have_systemd -@@ -125,7 +131,7 @@ endif - - # for unit tests - gnome.compile_schemas() only looks in srcdir - custom_target('compile-schemas', -- input: schema, -+ input: [schema, schema_ubuntu_login], - output: 'gschemas.compiled', - command: [find_program('glib-compile-schemas'), data_builddir], - build_by_default: true) -diff --git a/js/ui/background.js b/js/ui/background.js -index cef7c87..0da99da 100644 ---- a/js/ui/background.js -+++ b/js/ui/background.js -@@ -543,7 +543,11 @@ export const SystemBackground = GObject.registerClass({ - - let backgroundColor = DEFAULT_BACKGROUND_COLOR; - if (Desktop.is('ubuntu')) { -+ const loginSettings = new Gio.Settings({schema_id: 'com.ubuntu.login-screen'}); -+ const bgColor = loginSettings.get_string('background-color'); - const dummyBgActor = new St.Widget({name: 'lockDialogGroup'}); -+ if (bgColor) -+ dummyBgActor.set_style(`background-color: ${bgColor};`); - Main.uiGroup.add_actor(dummyBgActor); - backgroundColor = dummyBgActor.get_theme_node().get_background_color(); - dummyBgActor.destroy(); -diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index 993e436..c27f44b 100644 ---- a/js/ui/screenShield.js -+++ b/js/ui/screenShield.js -@@ -33,6 +33,12 @@ const DISABLE_LOCK_KEY = 'disable-lock-screen'; - - const LOCKED_STATE_STR = 'screenShield.locked'; - -+const LOGIN_SCREEN_SCHEMA = 'com.ubuntu.login-screen'; -+const LOGIN_SCREEN_BACKGROUND_COLOR_KEY = 'background-color'; -+const LOGIN_SCREEN_BACKGROUND_PICTURE_URI_KEY = 'background-picture-uri'; -+const LOGIN_SCREEN_BACKGROUND_REPEAT_KEY = 'background-repeat'; -+const LOGIN_SCREEN_BACKGROUND_SIZE_KEY = 'background-size'; -+ - // ScreenShield animation time - // - STANDARD_FADE_TIME is used when the session goes idle - // - MANUAL_FADE_TIME is used for lowering the shield when asked by the user, -@@ -116,6 +122,16 @@ export class ScreenShield extends Signals.EventEmitter { - this._lockSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA}); - this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this)); - -+ this._loginScreenSettings = new Gio.Settings({schema_id: LOGIN_SCREEN_SCHEMA}); -+ [ -+ LOGIN_SCREEN_BACKGROUND_COLOR_KEY, -+ LOGIN_SCREEN_BACKGROUND_PICTURE_URI_KEY, -+ LOGIN_SCREEN_BACKGROUND_REPEAT_KEY, -+ LOGIN_SCREEN_BACKGROUND_SIZE_KEY, -+ ].forEach(schema => this._loginScreenSettings.connect(`changed::${schema}`, -+ () => this._refreshBackground())); -+ this._refreshBackground(); -+ - this._isModal = false; - this._isGreeter = false; - this._isActive = false; -@@ -216,6 +232,31 @@ export class ScreenShield extends Signals.EventEmitter { - return this._isModal; - } - -+ _refreshBackground() { -+ const inlineStyle = []; -+ -+ const getSetting = s => this._loginScreenSettings.get_string(s); -+ const backgroundColor = getSetting(LOGIN_SCREEN_BACKGROUND_COLOR_KEY); -+ const backgroundPictureUri = getSetting(LOGIN_SCREEN_BACKGROUND_PICTURE_URI_KEY); -+ const backgroundRepeat = getSetting(LOGIN_SCREEN_BACKGROUND_REPEAT_KEY); -+ const backgroundSize = getSetting(LOGIN_SCREEN_BACKGROUND_SIZE_KEY); -+ -+ if (backgroundColor && !backgroundColor.includes('rgba')) -+ inlineStyle.push(`background-color: ${backgroundColor}`); -+ if (backgroundPictureUri) -+ inlineStyle.push(`background-image: url("${backgroundPictureUri}")`); -+ if (backgroundRepeat !== 'default') -+ inlineStyle.push(`background-repeat: ${backgroundRepeat}`); -+ if (backgroundSize !== 'default') -+ inlineStyle.push(`background-size: ${backgroundSize}`); -+ -+ const lockDialogGroupStyle = inlineStyle.join('; ') || null; -+ this._lockDialogGroup.set_style(lockDialogGroupStyle); -+ this._dialog?.set_style(lockDialogGroupStyle ? ` -+ background-image: none; -+ background-color: transparent;` : null); -+ } -+ - async _syncInhibitor() { - const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY) || - this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY); -@@ -433,6 +474,7 @@ export class ScreenShield extends Signals.EventEmitter { - } - - this._dialog = new constructor(this._lockDialogGroup); -+ this._refreshBackground(); - - let time = global.get_current_time(); - if (!this._dialog.open(time)) { diff --git a/patches/ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch b/patches/ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch deleted file mode 100644 index 25fc00d..0000000 --- a/patches/ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch +++ /dev/null @@ -1,81 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Wed, 24 Aug 2022 19:15:36 +0200 -Subject: darkMode: Add support to Yaru theme color variants - -Support switching to dark mode when using the Yaru theme color accents. ---- - js/ui/status/darkMode.js | 42 +++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 41 insertions(+), 1 deletion(-) - -diff --git a/js/ui/status/darkMode.js b/js/ui/status/darkMode.js -index 4e68a74..321a88b 100644 ---- a/js/ui/status/darkMode.js -+++ b/js/ui/status/darkMode.js -@@ -1,5 +1,6 @@ - import Gio from 'gi://Gio'; - import GObject from 'gi://GObject'; -+import St from 'gi://St'; - - import * as Main from '../main.js'; - -@@ -19,6 +20,9 @@ class DarkModeToggle extends QuickToggle { - this._changedId = this._settings.connect('changed::color-scheme', - () => this._sync()); - -+ St.Settings.get().connect('notify::gtk-theme', () => this._sync()); -+ St.Settings.get().connect('notify::gtk-theme-variant', () => this._sync()); -+ - this.connectObject( - 'destroy', () => this._settings.run_dispose(), - 'clicked', () => this._toggleMode(), -@@ -28,13 +32,49 @@ class DarkModeToggle extends QuickToggle { - - _toggleMode() { - Main.layoutManager.screenTransition.run(); -+ const preferDark = !this.checked; -+ const {gtkTheme, gtkThemeVariant} = St.Settings.get(); -+ const themeVariant = gtkThemeVariant?.toLowerCase(); - this._settings.set_string('color-scheme', - this.checked ? 'default' : 'prefer-dark'); -+ -+ if (gtkTheme === 'Yaru') -+ this._setYaruSettings(themeVariant, preferDark); -+ } -+ -+ _setYaruSettings(themeVariant, preferDark) { -+ const currentlyDark = themeVariant === 'dark' || themeVariant?.endsWith('-dark'); -+ if (currentlyDark) -+ themeVariant = themeVariant.slice(0, -'-dark'.length); -+ -+ if (currentlyDark !== preferDark) { -+ const newTheme = `Yaru${ -+ themeVariant ? `-${themeVariant}` : ''}${ -+ preferDark ? '-dark' : ''}`; -+ -+ this._settings.set_string('gtk-theme', newTheme); -+ this._settings.set_string('icon-theme', newTheme); -+ } -+ -+ const schemaSource = Gio.SettingsSchemaSource.get_default(); -+ const geditSchema = schemaSource.lookup('org.gnome.gedit.preferences.editor', true); -+ -+ if (geditSchema) { -+ const geditSettings = Gio.Settings.new_full(geditSchema, null, null); -+ const geditScheme = geditSettings.get_user_value('scheme')?.unpack(); -+ -+ if (geditScheme?.startsWith('Yaru') && -+ geditScheme.endsWith('-dark') !== preferDark) -+ geditSettings.set_string('scheme', `Yaru${preferDark ? '-dark' : ''}`); -+ } - } - - _sync() { - const colorScheme = this._settings.get_string('color-scheme'); -- const checked = colorScheme === 'prefer-dark'; -+ const {gtkTheme, gtkThemeVariant} = St.Settings.get(); -+ let checked = colorScheme === 'prefer-dark'; -+ if (gtkTheme === 'Yaru' && !gtkThemeVariant?.endsWith('dark')) -+ checked = false; - if (this.checked !== checked) - this.set({checked}); - } diff --git a/patches/ubuntu/desktop_detect.patch b/patches/ubuntu/desktop_detect.patch deleted file mode 100644 index b6477a2..0000000 --- a/patches/ubuntu/desktop_detect.patch +++ /dev/null @@ -1,65 +0,0 @@ -From: Ubuntu Developers -Date: Wed, 20 Jun 2018 19:22:06 +0200 -Subject: Add an helper to detect current desktop - -We will differentiate some behavior depending on current desktop. Add an -helper to centralize the current desktop detection. -Forwarded: not-needed -Origin: ubuntu ---- - js/js-resources.gresource.xml | 1 + - js/misc/desktop.js | 33 +++++++++++++++++++++++++++++++++ - 2 files changed, 34 insertions(+) - create mode 100644 js/misc/desktop.js - -diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml -index ee4b763..a69c004 100644 ---- a/js/js-resources.gresource.xml -+++ b/js/js-resources.gresource.xml -@@ -17,6 +17,7 @@ - misc/animationUtils.js - misc/config.js - misc/extensionUtils.js -+ misc/desktop.js - misc/fileUtils.js - misc/dateUtils.js - misc/dbusUtils.js -diff --git a/js/misc/desktop.js b/js/misc/desktop.js -new file mode 100644 -index 0000000..05044c1 ---- /dev/null -+++ b/js/misc/desktop.js -@@ -0,0 +1,33 @@ -+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- -+ -+import GLib from 'gi://GLib'; -+ -+// current desktop doesn't change unless we restart the shell or control -+// the env variable. It's safe to cache matching result -+const _currentDesktopsMatches = new Map(); -+ -+// is: -+// @name: desktop string you want to assert if it matches the current desktop env -+// -+// The function examples XDG_CURRENT_DESKTOP and return if the current desktop -+// is part of that desktop string. -+// -+// Return value: if the environment isn't set or doesn't match, return False -+// otherwise, return True. -+export function is(name) { -+ if (!_currentDesktopsMatches.size) { -+ const desktopsEnv = GLib.getenv('XDG_CURRENT_DESKTOP'); -+ if (!desktopsEnv) { -+ _currentDesktopsMatches.set(name, false); -+ return false; -+ } -+ -+ const desktops = desktopsEnv.split(':'); -+ desktops.forEach(d => _currentDesktopsMatches.set(d, true)); -+ -+ if (!_currentDesktopsMatches.size) -+ _currentDesktopsMatches.set(name, _currentDesktopsMatches.has(name)); -+ } -+ -+ return !!_currentDesktopsMatches.get(name); -+} diff --git a/patches/ubuntu/gdm_alternatives.patch b/patches/ubuntu/gdm_alternatives.patch deleted file mode 100644 index bb7bb9b..0000000 --- a/patches/ubuntu/gdm_alternatives.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: Jeremy Soller -Date: Wed, 20 Jun 2018 19:22:06 +0200 -Subject: Add support for GDM theme alternatives - -GNOME vanilla and systemd76 derivative ships their own GDM theme. - -This allows to provide alternative gresource file for gdm3 that must contain -a `gdm3.css` stylesheet that will be applied. - -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=787454 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1715722 -Last-Update: 2017-09-08 ---- - data/gnome-shell-theme.gresource.xml | 1 + - js/ui/sessionMode.js | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml -index 8a4948e..5fbb672 100644 ---- a/data/gnome-shell-theme.gresource.xml -+++ b/data/gnome-shell-theme.gresource.xml -@@ -9,6 +9,7 @@ - checkbox-off-focused.svg - checkbox-off-light.svg - checkbox-off.svg -+ gnome-shell-dark.css - gnome-shell-dark.css - gnome-shell-light.css - gnome-shell-high-contrast.css -diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js -index 8e30a66..e27f4fa 100644 ---- a/js/ui/sessionMode.js -+++ b/js/ui/sessionMode.js -@@ -53,6 +53,8 @@ const _modes = { - - 'gdm': { - hasNotifications: true, -+ stylesheetName: 'gdm.css', -+ themeResourceName: 'gdm-theme.gresource', - isGreeter: true, - isPrimary: true, - unlockDialog: LoginDialog, diff --git a/patches/ubuntu/keep-ubuntu-logo-bright-lp1867133-v1.patch b/patches/ubuntu/keep-ubuntu-logo-bright-lp1867133-v1.patch deleted file mode 100644 index a182de5..0000000 --- a/patches/ubuntu/keep-ubuntu-logo-bright-lp1867133-v1.patch +++ /dev/null @@ -1,36 +0,0 @@ -From: Daniel van Vugt -Date: Thu, 2 Apr 2020 17:16:27 +0800 -Subject: Keep the Ubuntu logo at full brightness during startup animation - -Bug-Ubuntu: https://bugs.launchpad.net/bugs/1867133 -Forwarded: not-needed -Last-Update: 2020-03-18 ---- - js/gdm/loginDialog.js | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index a3e4372..104fb93 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -1272,7 +1272,11 @@ export const LoginDialog = GObject.registerClass({ - {sortGroup: CtrlAltTab.SortGroup.MIDDLE}); - this.activate(); - -- this.opacity = 0; -+ // Clutter doesn't yet fully support invisible parents with forced -+ // visible children and will make everything invisible (flicker) on -+ // the first frame if we start at 0. So we start at 1 instead... -+ this.opacity = 1; -+ this._logoBin.set_opacity_override(255); - - this._grab = Main.pushModal(global.stage, {actionMode: Shell.ActionMode.LOGIN_SCREEN}); - -@@ -1280,6 +1284,7 @@ export const LoginDialog = GObject.registerClass({ - opacity: 255, - duration: 1000, - mode: Clutter.AnimationMode.EASE_IN_QUAD, -+ onComplete: () => { this._logoBin.set_opacity_override(-1); }, - }); - - return true; diff --git a/patches/ubuntu/layout-Try-to-allocate-before-getting-size-of-tracke.patch b/patches/ubuntu/layout-Try-to-allocate-before-getting-size-of-tracke.patch deleted file mode 100644 index 27f7ec7..0000000 --- a/patches/ubuntu/layout-Try-to-allocate-before-getting-size-of-tracke.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Daniel van Vugt -Date: Wed, 31 Mar 2021 17:59:09 +0800 -Subject: layout: Try to allocate before getting size of tracked actors - -Because we're about to `get_transformed_{position,size}` of each, -which will return NaNs if not yet allocated. Those NaNs were finding -their way into the workspace strut definitions on startup and not -getting corrected until after the startup animation completed. This -meant any extensions depending on the `workareas-changed` signal were -getting an incorrect workarea (the whole workspace) and so were -rendered out of place during the login animation. Now they're not. - -Author: Daniel van Vugt -Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1785 -Bug-Ubuntu: https://launchpad.net/bugs/1917939, https://launchpad.net/bugs/1919979 -Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/-/issues/1627 -Forwarded: yes -Last-Update: 2021-04-07 ---- - js/ui/layout.js | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/js/ui/layout.js b/js/ui/layout.js -index 4d5cd5a..06ed440 100644 ---- a/js/ui/layout.js -+++ b/js/ui/layout.js -@@ -1058,6 +1058,7 @@ export const LayoutManager = GObject.registerClass({ - if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts) - continue; - -+ actorData.actor.get_allocation_box(); - let [x, y] = actorData.actor.get_transformed_position(); - let [w, h] = actorData.actor.get_transformed_size(); - x = Math.round(x); diff --git a/patches/ubuntu/lightdm-user-switching.patch b/patches/ubuntu/lightdm-user-switching.patch deleted file mode 100644 index 6fc4078..0000000 --- a/patches/ubuntu/lightdm-user-switching.patch +++ /dev/null @@ -1,93 +0,0 @@ -From: Tim Lunn -Date: Tue, 9 Oct 2012 11:18:28 +0200 -Subject: [PATCH] userMenu: allow user switching when using lightdm - -When running lightdm and gnome-shell, its currently not possible to -switch users via the usermenu. This commit adds a dbus call to -switch to the lightdm greeter. - -https://bugzilla.gnome.org/show_bug.cgi?id=685794 ---- - js/misc/systemActions.js | 47 ++++++++++++++++++++++++++++++++++++++++------- - 1 file changed, 40 insertions(+), 7 deletions(-) - -diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js -index efb875b..75a7016 100644 ---- a/js/misc/systemActions.js -+++ b/js/misc/systemActions.js -@@ -231,6 +231,34 @@ const SystemActions = GObject.registerClass({ - return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName; - } - -+ _lightdmLoginSession() { -+ try { -+ let seat = GLib.getenv("XDG_SEAT_PATH"); -+ let result = Gio.DBus.system.call_sync('org.freedesktop.DisplayManager', -+ seat, -+ 'org.freedesktop.DisplayManager.Seat', -+ 'SwitchToGreeter', null, null, -+ Gio.DBusCallFlags.NONE, -+ -1, null); -+ return result; -+ } catch(e) { -+ return false; -+ } -+ } -+ -+ _sensorProxyAppeared() { -+ this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH, -+ (proxy, error) => { -+ if (error) { -+ log(error.message); -+ return; -+ } -+ this._sensorProxy.connect('g-properties-changed', -+ () => { this._updateOrientationLock(); }); -+ this._updateOrientationLock(); -+ }); -+ } -+ - _updateOrientationLock() { - const available = this._monitorManager.get_panel_orientation_managed(); - -@@ -332,7 +360,7 @@ const SystemActions = GObject.registerClass({ - _updateLockScreen() { - let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; - let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY); -- this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen && LoginManager.canLock(); -+ this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen; - this.notify('can-lock-screen'); - } - -@@ -420,20 +448,25 @@ const SystemActions = GObject.registerClass({ - if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available) - throw new Error('The lock-screen action is not available!'); - -- Main.screenShield.lock(true); -+ if (Main.screenShield) -+ Main.screenShield.lock(true); -+ else -+ this._lightdmLoginSession(); - } - - activateSwitchUser() { - if (!this._actions.get(SWITCH_USER_ACTION_ID).available) - throw new Error('The switch-user action is not available!'); - -- if (Main.screenShield) -+ if (Main.screenShield) { - Main.screenShield.lock(false); - -- Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, () => { -- Gdm.goto_login_session_sync(null); -- return false; -- }); -+ Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, () => { -+ Gdm.goto_login_session_sync(null); -+ return false; -+ }); -+ } else -+ this._lightdmLoginSession(); - } - - activateLogout() { diff --git a/patches/ubuntu/lock_on_suspend.patch b/patches/ubuntu/lock_on_suspend.patch deleted file mode 100644 index e494912..0000000 --- a/patches/ubuntu/lock_on_suspend.patch +++ /dev/null @@ -1,48 +0,0 @@ -From: Tim Lunn -Date: Wed, 20 Jun 2018 19:22:06 +0200 -Subject: add support for the ubuntu lock on suspend option - -Bug-Ubuntu: https://bugs.launchpad.net/bugs/1063110 ---- - js/ui/screenShield.js | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index f8c59fa..993e436 100644 ---- a/js/ui/screenShield.js -+++ b/js/ui/screenShield.js -@@ -26,6 +26,7 @@ import {adjustAnimationTime} from '../misc/animationUtils.js'; - const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; - const LOCK_ENABLED_KEY = 'lock-enabled'; - const LOCK_DELAY_KEY = 'lock-delay'; -+const SUSPEND_LOCK_ENABLED_KEY = 'ubuntu-lock-on-suspend'; - - const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; - const DISABLE_LOCK_KEY = 'disable-lock-screen'; -@@ -110,6 +111,7 @@ export class ScreenShield extends Signals.EventEmitter { - - this._settings = new Gio.Settings({schema_id: SCREENSAVER_SCHEMA}); - this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this)); -+ this._settings.connect(`changed::${SUSPEND_LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this)); - - this._lockSettings = new Gio.Settings({schema_id: LOCKDOWN_SCHEMA}); - this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this)); -@@ -215,7 +217,8 @@ export class ScreenShield extends Signals.EventEmitter { - } - - async _syncInhibitor() { -- const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY); -+ const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY) || -+ this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY); - const lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY); - const inhibit = !!this._loginSession && this._loginSession.Active && - !this._isActive && lockEnabled && !lockLocked && -@@ -246,7 +249,7 @@ export class ScreenShield extends Signals.EventEmitter { - - _prepareForSleep(loginManager, aboutToSuspend) { - if (aboutToSuspend) { -- if (this._settings.get_boolean(LOCK_ENABLED_KEY)) -+ if (this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY)) - this.lock(true); - } else { - this._wakeUpScreen(); diff --git a/patches/ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch b/patches/ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch deleted file mode 100644 index 5f9e703..0000000 --- a/patches/ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch +++ /dev/null @@ -1,345 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Fri, 25 Feb 2022 01:07:12 +0100 -Subject: main: Support loading multiple Yaru theme variants - -Yaru can provide multiple variants, we can support using more theme -variants in GNOME shell as it happens on Gtk apps. - -So, make StSettings to compute the main theme and the chosen variant, -and we use those to pick the correct .css file. - -We don't make difference between dark/light themes here, as we assume -that the shell theme will always be dark or light. - -Forwarded: not-needed ---- - data/meson.build | 8 +- - data/org.gnome.shell.ubuntu.gschema.xml.in | 17 ++++ - js/ui/main.js | 42 ++++++++++ - src/st/st-settings.c | 120 +++++++++++++++++++++++++++++ - 4 files changed, 186 insertions(+), 1 deletion(-) - create mode 100644 data/org.gnome.shell.ubuntu.gschema.xml.in - -diff --git a/data/meson.build b/data/meson.build -index 07d6d4a..3274af2 100644 ---- a/data/meson.build -+++ b/data/meson.build -@@ -97,6 +97,12 @@ schema = configure_file( - configuration: schemaconf, - install_dir: schemadir - ) -+schema_ubuntu = configure_file( -+ input: 'org.gnome.shell.ubuntu.gschema.xml.in', -+ output: 'org.gnome.shell.ubuntu.gschema.xml', -+ configuration: schemaconf, -+ install_dir: schemadir -+) - schema_ubuntu_login = configure_file( - input: 'com.ubuntu.login-screen.gschema.xml.in', - output: 'com.ubuntu.login-screen.gschema.xml', -@@ -131,7 +137,7 @@ endif - - # for unit tests - gnome.compile_schemas() only looks in srcdir - custom_target('compile-schemas', -- input: [schema, schema_ubuntu_login], -+ input: [schema, schema_ubuntu, schema_ubuntu_login], - output: 'gschemas.compiled', - command: [find_program('glib-compile-schemas'), data_builddir], - build_by_default: true) -diff --git a/data/org.gnome.shell.ubuntu.gschema.xml.in b/data/org.gnome.shell.ubuntu.gschema.xml.in -new file mode 100644 -index 0000000..6f9cc62 ---- /dev/null -+++ b/data/org.gnome.shell.ubuntu.gschema.xml.in -@@ -0,0 +1,17 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ 'default' -+ Color scheme -+ -+ The preferred color scheme for the shell user interface. Valid values are “default”, “prefer-dark”, “prefer-light”. -+ -+ -+ -+ -diff --git a/js/ui/main.js b/js/ui/main.js -index e5921eb..2c6c580 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -163,6 +163,9 @@ export async function start() { - - St.Settings.get().connect('notify::high-contrast', _loadDefaultStylesheet); - St.Settings.get().connect('notify::color-scheme', _loadDefaultStylesheet); -+ St.Settings.get().connect('notify::gtk-theme', _loadDefaultStylesheet); -+ St.Settings.get().connect('notify::gtk-theme-variant', _loadDefaultStylesheet); -+ St.Settings.get().connect('notify::shell-color-scheme', _loadDefaultStylesheet); - - // Initialize ParentalControlsManager before the UI - ParentalControlsManager.getDefault(); -@@ -434,6 +437,38 @@ export function getStyleVariant() { - } - } - -+function _getYaruStyleSheet(themeVariant) { -+ const styleVariant = getStyleVariant() || 'light'; -+ const baseThemeName = sessionMode.stylesheetName.split(".css").at(0); -+ const isDark = themeVariant === 'dark' || themeVariant?.endsWith('-dark'); -+ let colorSchemeVariant; -+ -+ if (isDark && styleVariant === 'light') { -+ colorSchemeVariant = themeVariant.split('-').slice(0, -1).join('-'); -+ } else if (!isDark && styleVariant == 'dark' ) { -+ colorSchemeVariant = themeVariant ? `${themeVariant}-dark` : 'dark'; -+ } -+ -+ if (colorSchemeVariant !== undefined) { -+ if (colorSchemeVariant.length) -+ colorSchemeVariant = `-${colorSchemeVariant}`; -+ const stylesheet = _getStylesheet(`${baseThemeName}${colorSchemeVariant}.css`); -+ if (stylesheet) -+ return stylesheet; -+ } -+ -+ if (!themeVariant) -+ return null; -+ -+ const stylesheet = _getStylesheet(`${baseThemeName}-${themeVariant}.css`); -+ -+ // Try to use the dark theme if a dark variant is selected -+ if (!stylesheet && isDark) -+ return _getStylesheet(`${baseThemeName}-dark.css`); -+ -+ return stylesheet; -+} -+ - function _getDefaultStylesheet() { - let stylesheet = null; - let name = sessionMode.stylesheetName; -@@ -442,6 +477,13 @@ function _getDefaultStylesheet() { - if (St.Settings.get().high_contrast) - stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css')); - -+ if (stylesheet == null) { -+ const settings = St.Settings.get(); -+ -+ if (settings.gtkTheme === 'Yaru') -+ stylesheet = _getYaruStyleSheet(settings.gtkThemeVariant?.toLowerCase()); -+ } -+ - if (stylesheet === null) - stylesheet = _getStylesheet(name.replace('.css', `-${getStyleVariant()}.css`)); - -diff --git a/src/st/st-settings.c b/src/st/st-settings.c -index 790ec64..de6db1b 100644 ---- a/src/st/st-settings.c -+++ b/src/st/st-settings.c -@@ -35,6 +35,8 @@ - #define KEY_COLOR_SCHEME "color-scheme" - #define KEY_HIGH_CONTRAST "high-contrast" - #define KEY_GTK_ICON_THEME "icon-theme" -+#define KEY_GTK_THEME "gtk-theme" -+#define KEY_COLOR_SCHEME "color-scheme" - #define KEY_MAGNIFIER_ACTIVE "screen-magnifier-enabled" - #define KEY_DISABLE_SHOW_PASSWORD "disable-show-password" - -@@ -46,7 +48,10 @@ enum { - PROP_FONT_NAME, - PROP_COLOR_SCHEME, - PROP_HIGH_CONTRAST, -+ PROP_GTK_THEME, -+ PROP_GTK_THEME_VARIANT, - PROP_GTK_ICON_THEME, -+ PROP_SHELL_COLOR_SCHEME, - PROP_MAGNIFIER_ACTIVE, - PROP_SLOW_DOWN_FACTOR, - PROP_DISABLE_SHOW_PASSWORD, -@@ -63,10 +68,13 @@ struct _StSettings - GSettings *a11y_applications_settings; - GSettings *a11y_interface_settings; - GSettings *lockdown_settings; -+ GSettings *ubuntu_settings; - - gchar *font_name; - gboolean high_contrast; - gchar *gtk_icon_theme; -+ gchar *gtk_theme; -+ gchar *gtk_theme_variant; - int inhibit_animations_count; - gboolean enable_animations; - gboolean primary_paste; -@@ -137,7 +145,10 @@ st_settings_finalize (GObject *object) - g_object_unref (settings->a11y_applications_settings); - g_object_unref (settings->a11y_interface_settings); - g_object_unref (settings->lockdown_settings); -+ g_object_unref (settings->ubuntu_settings); - g_free (settings->font_name); -+ g_free (settings->gtk_theme); -+ g_free (settings->gtk_theme_variant); - g_free (settings->gtk_icon_theme); - - G_OBJECT_CLASS (st_settings_parent_class)->finalize (object); -@@ -189,6 +200,16 @@ st_settings_get_property (GObject *object, - case PROP_GTK_ICON_THEME: - g_value_set_string (value, settings->gtk_icon_theme); - break; -+ case PROP_GTK_THEME: -+ g_value_set_string (value, settings->gtk_theme); -+ break; -+ case PROP_GTK_THEME_VARIANT: -+ g_value_set_string (value, settings->gtk_theme_variant); -+ break; -+ case PROP_SHELL_COLOR_SCHEME: -+ g_value_take_string (value, -+ g_settings_get_string (settings->ubuntu_settings, KEY_COLOR_SCHEME)); -+ break; - case PROP_COLOR_SCHEME: - g_value_set_enum (value, settings->color_scheme); - break; -@@ -294,6 +315,39 @@ st_settings_class_init (StSettingsClass *klass) - ST_SYSTEM_COLOR_SCHEME_DEFAULT, - ST_PARAM_READABLE); - -+ /** -+ * StSettings:gtk-theme: -+ * -+ * The current GTK theme -+ */ -+ props[PROP_GTK_THEME] = g_param_spec_string ("gtk-theme", -+ "GTK Theme", -+ "GTK Theme", -+ "", -+ ST_PARAM_READABLE); -+ -+ /** -+ * StSettings:gtk-theme-variant: -+ * -+ * The current GTK theme -+ */ -+ props[PROP_GTK_THEME_VARIANT] = g_param_spec_string ("gtk-theme-variant", -+ "GTK Theme Variant", -+ "GTK Theme Variant", -+ "", -+ ST_PARAM_READABLE); -+ -+ /** -+ * StSettings:shell-color-scheme: -+ * -+ * The current GTK theme -+ */ -+ props[PROP_SHELL_COLOR_SCHEME] = g_param_spec_string ("shell-color-scheme", -+ "Shell Color Scheme", -+ "Shell Color Scheme", -+ "default", -+ ST_PARAM_READABLE); -+ - /** - * StSettings:magnifier-active: - * -@@ -330,6 +384,45 @@ st_settings_class_init (StSettingsClass *klass) - g_object_class_install_properties (object_class, N_PROPS, props); - } - -+static void -+update_theme_settings (StSettings *settings) -+{ -+ g_auto(GStrv) parts = NULL; -+ g_autofree char *theme = NULL; -+ g_autofree char *variant = NULL; -+ -+ theme = g_settings_get_string (settings->interface_settings, KEY_GTK_THEME); -+ parts = g_strsplit (theme, "-", 2); -+ -+ switch (g_strv_length (parts)) -+ { -+ case 2: -+ variant = g_strdup (parts[1]); -+ /* fallthrough */ -+ case 1: -+ theme = g_strdup (parts[0]); -+ break; -+ } -+ -+ if (g_strcmp0 (settings->gtk_theme, theme) != 0) -+ { -+ g_free (settings->gtk_theme); -+ settings->gtk_theme = g_steal_pointer (&theme); -+ -+ g_object_notify_by_pspec (G_OBJECT (settings), -+ props[PROP_GTK_THEME]); -+ } -+ -+ if (g_strcmp0 (settings->gtk_theme_variant, variant) != 0) -+ { -+ g_free (settings->gtk_theme_variant); -+ settings->gtk_theme_variant = g_steal_pointer (&variant); -+ -+ g_object_notify_by_pspec (G_OBJECT (settings), -+ props[PROP_GTK_THEME_VARIANT]); -+ } -+} -+ - static void - on_interface_settings_changed (GSettings *g_settings, - const gchar *key, -@@ -351,6 +444,10 @@ on_interface_settings_changed (GSettings *g_settings, - settings->font_name = g_settings_get_string (g_settings, key); - g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_FONT_NAME]); - } -+ else if (g_str_equal (key, KEY_GTK_THEME)) -+ { -+ update_theme_settings (settings); -+ } - else if (g_str_equal (key, KEY_GTK_ICON_THEME)) - { - g_free (settings->gtk_icon_theme); -@@ -364,6 +461,23 @@ on_interface_settings_changed (GSettings *g_settings, - g_object_notify_by_pspec (G_OBJECT (settings), - props[PROP_COLOR_SCHEME]); - } -+ else if (g_str_equal (key, KEY_COLOR_SCHEME)) -+ { -+ g_object_notify_by_pspec (G_OBJECT (settings), -+ props[PROP_SHELL_COLOR_SCHEME]); -+ } -+} -+ -+static void -+on_ubuntu_settings_changed (GSettings *g_settings, -+ const gchar *key, -+ StSettings *settings) -+{ -+ if (g_str_equal (key, KEY_COLOR_SCHEME)) -+ { -+ g_object_notify_by_pspec (G_OBJECT (settings), -+ props[PROP_SHELL_COLOR_SCHEME]); -+ } - } - - static void -@@ -423,6 +537,10 @@ st_settings_init (StSettings *settings) - g_signal_connect (settings->interface_settings, "changed", - G_CALLBACK (on_interface_settings_changed), settings); - -+ settings->ubuntu_settings = g_settings_new ("org.gnome.shell.ubuntu"); -+ g_signal_connect (settings->ubuntu_settings, "changed", -+ G_CALLBACK (on_ubuntu_settings_changed), settings); -+ - settings->mouse_settings = g_settings_new ("org.gnome.desktop.peripherals.mouse"); - g_signal_connect (settings->mouse_settings, "changed", - G_CALLBACK (on_mouse_settings_changed), settings); -@@ -439,6 +557,8 @@ st_settings_init (StSettings *settings) - g_signal_connect (settings->lockdown_settings, "changed", - G_CALLBACK (on_lockdown_settings_changed), settings); - -+ update_theme_settings (settings); -+ - settings->enable_animations = g_settings_get_boolean (settings->interface_settings, - KEY_ENABLE_ANIMATIONS); - settings->primary_paste = g_settings_get_boolean (settings->interface_settings, diff --git a/patches/ubuntu/resolve_alternate_theme_path.patch b/patches/ubuntu/resolve_alternate_theme_path.patch deleted file mode 100644 index aa33406..0000000 --- a/patches/ubuntu/resolve_alternate_theme_path.patch +++ /dev/null @@ -1,50 +0,0 @@ -From: Didier Roche -Date: Tue, 22 Oct 2019 11:22:06 +0200 -Subject: Resolve real path name for theme file - - We are using alternative theme paths. Some of them are symlinks like - gdm3.css. It points to a different directory and we need to ensure - assets are loaded from the real theme path then (assets path are - relative to it). - Resolve them symlinks to ensure we use the original file itself when - loading the stylesheet. -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1798747 -Forwarded: Not-needed (upstream doesn't support officially theming) ---- - js/ui/main.js | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/js/ui/main.js b/js/ui/main.js -index b3fff22..8c0664a 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -385,6 +385,14 @@ async function _handleLockScreenWarning() { - } - } - -+function _realpath(path) { -+ try { -+ while (GLib.file_test(path, GLib.FileTest.IS_SYMLINK)) -+ path = GLib.file_read_link(path); -+ } catch (e) { } -+ return path; -+} -+ - function _getStylesheet(name) { - let stylesheet; - -@@ -395,12 +403,12 @@ function _getStylesheet(name) { - let dataDirs = GLib.get_system_data_dirs(); - for (let i = 0; i < dataDirs.length; i++) { - let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'theme', name]); -- stylesheet = Gio.file_new_for_path(path); -+ stylesheet = Gio.file_new_for_path(_realpath(path)); - if (stylesheet.query_exists(null)) - return stylesheet; - } - -- stylesheet = Gio.File.new_for_path(`${global.datadir}/theme/${name}`); -+ stylesheet = Gio.File.new_for_path(_realpath(`${global.datadir}/theme/${name}`)); - if (stylesheet.query_exists(null)) - return stylesheet; - diff --git a/patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch b/patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch deleted file mode 100644 index 62a41d7..0000000 --- a/patches/ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch +++ /dev/null @@ -1,163 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Thu, 23 Aug 2018 20:00:57 +0200 -Subject: search: call XUbuntuCancel method on providers when no data is - needed - -Add XUbuntuCancel method to search providers and call it when a search provider -is still doing operations. -Ignore the result when the method does not exist or is cancelled. - -This will allow to stop operations on providers. - -Fixes LP: #1756826 - -Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/183 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1756826 -Forwarded: not-needed ---- - .../org.gnome.ShellSearchProvider.xml | 6 ++++ - .../org.gnome.ShellSearchProvider2.xml | 6 ++++ - js/ui/remoteSearch.js | 12 ++++++++ - js/ui/search.js | 33 ++++++++++++++++++++++ - 4 files changed, 57 insertions(+) - -diff --git a/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml b/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml -index 78ad305..393cb01 100644 ---- a/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml -+++ b/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml -@@ -69,5 +69,11 @@ - - - -+ -+ -+ - - -diff --git a/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml b/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml -index 9502340..8141bc0 100644 ---- a/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml -+++ b/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml -@@ -83,5 +83,11 @@ - - - -+ -+ -+ - - -diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js -index 6bd282b..4804bdd 100644 ---- a/js/ui/remoteSearch.js -+++ b/js/ui/remoteSearch.js -@@ -29,6 +29,7 @@ const SearchProviderIface = ` - - - -+ - - `; - -@@ -57,6 +58,7 @@ const SearchProvider2Iface = ` - - - -+ - - `; - -@@ -307,6 +309,16 @@ class RemoteSearchProvider { - return resultMetas; - } - -+ async XUbuntuCancel(cancellable) { -+ try { -+ await this.proxy.XUbuntuCancelAsync(cancellable); -+ } catch (error) { -+ if (!error.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD) && -+ !error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) -+ log(`Received error from D-Bus search provider ${this.id} during XUbuntuCancel: ${error}`); -+ } -+ } -+ - activateResult(id) { - this.proxy.ActivateResultAsync(id).catch(logError); - } -diff --git a/js/ui/search.js b/js/ui/search.js -index b938b03..4e68bd7 100644 ---- a/js/ui/search.js -+++ b/js/ui/search.js -@@ -224,7 +224,9 @@ const SearchResultsBase = GObject.registerClass({ - this._cancellable.cancel(); - this._cancellable.reset(); - -+ this.provider.resultsMetasInProgress = true; - const metas = await this.provider.getResultMetas(metasNeeded, this._cancellable); -+ this.provider.resultsMetasInProgress = this._cancellable.is_cancelled(); - - if (this._cancellable.is_cancelled()) { - if (metas.length > 0) -@@ -602,6 +604,10 @@ export const SearchResultsView = GObject.registerClass({ - - this._searchTimeoutId = 0; - this._cancellable = new Gio.Cancellable(); -+ this._searchCancelCancellable = new Gio.Cancellable(); -+ const cancellableCancelledId = this._cancellable.connect(() => -+ this._cancelSearchProviderRequest()); -+ this.connect('destroy', () => this._cancellable.disconnect(cancellableCancelledId)); - - this._registerProvider(new AppDisplay.AppSearchProvider()); - -@@ -650,11 +656,31 @@ export const SearchResultsView = GObject.registerClass({ - } - } - -+ _cancelSearchProviderRequest() { -+ if (this._terms.length !== 0 || this._searchCancelTimeoutId) -+ return; -+ -+ this._searchCancelTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => { -+ Promise.all(this._providers.map(async provider => { -+ if (provider.isRemoteProvider && -+ (provider.searchInProgress || provider.resultsMetasInProgress)) { -+ await provider.XUbuntuCancel(this._searchCancelCancellable); -+ provider.searchInProgress = false; -+ provider.resultsMetasInProgress = false; -+ } -+ })).catch(logError); -+ -+ delete this._searchCancelTimeoutId; -+ return GLib.SOURCE_REMOVE; -+ }); -+ } -+ - _reset() { - this._terms = []; - this._results = {}; - this._clearDisplay(); - this._clearSearchTimeout(); -+ this._cancelSearchProviderRequest(); - this._defaultResult = null; - this._startingSearch = false; - -@@ -726,6 +752,13 @@ export const SearchResultsView = GObject.registerClass({ - if (this._terms.length > 0) - isSubSearch = searchString.indexOf(previousSearchString) === 0; - -+ this._searchCancelCancellable.cancel(); -+ this._searchCancelCancellable.reset(); -+ if (this._searchCancelTimeoutId) { -+ GLib.source_remove(this._searchCancelTimeoutId); -+ delete this._searchCancelTimeoutId; -+ } -+ - this._terms = terms; - this._isSubSearch = isSubSearch; - this._updateSearchProgress(); diff --git a/patches/ubuntu/secure_mode_extension.patch b/patches/ubuntu/secure_mode_extension.patch deleted file mode 100644 index 403bf7a..0000000 --- a/patches/ubuntu/secure_mode_extension.patch +++ /dev/null @@ -1,89 +0,0 @@ -From: Ubuntu Developers -Date: Wed, 20 Jun 2018 19:22:06 +0200 -Subject: Don't allow ubuntu mode extension to update - -Ensure that no update is proposed or loaded if sideloaded (always -prefer system version) on the ubuntu session. -We want to ensure that the default code running is going through -our QA and security team process than being loaded from a 3rd -party website. -Also, that will enable us to upload newer versions on GNOME -extension website while still letting older ubuntu release versions -running expected extension version. -Origin: ubuntu -Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=789852 ---- - js/ui/extensionDownloader.js | 11 +++++++++++ - js/ui/extensionSystem.js | 9 +++++++++ - 2 files changed, 20 insertions(+) - -diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js -index eb17579..eb2d12d 100644 ---- a/js/ui/extensionDownloader.js -+++ b/js/ui/extensionDownloader.js -@@ -7,6 +7,7 @@ import GObject from 'gi://GObject'; - import Soup from 'gi://Soup'; - - import * as Config from '../misc/config.js'; -+import * as Desktop from '../misc/desktop.js'; - import * as Dialog from './dialog.js'; - import * as ExtensionUtils from '../misc/extensionUtils.js'; - import * as FileUtils from '../misc/fileUtils.js'; -@@ -35,6 +36,13 @@ export async function installExtension(uuid, invocation) { - shell_version: Config.PACKAGE_VERSION, - }; - -+ if (Desktop.is('ubuntu') && Main.extensionManager.isModeExtension(uuid)) { -+ const msg = _("This is an extension enabled by your current mode, you can’t install manually any update in that session."); -+ Main.notifyError(_("Can't install “%s”:").format(uuid), msg); -+ invocation.return_dbus_error('org.gnome.Shell.ExtensionError', msg); -+ return; -+ } -+ - const message = Soup.Message.new_from_encoded_form('GET', - REPOSITORY_URL_INFO, - Soup.form_encode_hash(params)); -@@ -194,6 +202,9 @@ export async function checkForUpdates() { - return; - if (extension.hasUpdate) - return; -+ // don't updates out of repository mode extension -+ if (Desktop.is('ubuntu') && Main.extensionManager.isModeExtension(uuid)) -+ return; - metadatas[uuid] = { - version: extension.metadata.version, - }; -diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js -index 21b3b19..25260ec 100644 ---- a/js/ui/extensionSystem.js -+++ b/js/ui/extensionSystem.js -@@ -8,6 +8,7 @@ import Shell from 'gi://Shell'; - import * as Signals from '../misc/signals.js'; - - import * as Config from '../misc/config.js'; -+import * as Desktop from '../misc/desktop.js'; - import * as ExtensionDownloader from './extensionDownloader.js'; - import {ExtensionState, ExtensionType} from '../misc/extensionUtils.js'; - import * as FileUtils from '../misc/fileUtils.js'; -@@ -502,6 +503,10 @@ export class ExtensionManager extends Signals.EventEmitter { - await this.loadExtension(newExtension); - } - -+ isModeExtension(uuid) { -+ return this._getModeExtensions().indexOf(uuid) !== -1; -+ } -+ - async _callExtensionInit(uuid) { - if (!this._extensionSupportsSessionMode(uuid)) - return false; -@@ -709,6 +714,10 @@ export class ExtensionManager extends Signals.EventEmitter { - let type = dir.has_prefix(perUserDir) - ? ExtensionType.PER_USER - : ExtensionType.SYSTEM; -+ if (Desktop.is('ubuntu') && this.isModeExtension(uuid) && type === ExtensionType.PER_USER) { -+ log(`Found user extension ${uuid}, but not loading from ${dir.get_path()} directory as part of session mode.`); -+ return; -+ } - try { - extension = this.createExtensionObject(uuid, dir, type); - } catch (error) { diff --git a/patches/ubuntu/sessionMode-Add-support-for-configuring-an-icons-resource.patch b/patches/ubuntu/sessionMode-Add-support-for-configuring-an-icons-resource.patch deleted file mode 100644 index 8f3cac6..0000000 --- a/patches/ubuntu/sessionMode-Add-support-for-configuring-an-icons-resource.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Thu, 24 Feb 2022 04:22:32 +0100 -Subject: sessionMode: Add support for configuring an icons resource name - -Similar to what we did (and upstreamed) for the theme, in this case -however there's very likely no interest from upstream for this. - -Forwarded: not-needed ---- - js/ui/main.js | 2 +- - js/ui/sessionMode.js | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/js/ui/main.js b/js/ui/main.js -index 8c0664a..e5921eb 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -547,7 +547,7 @@ export function reloadThemeResource() { - - /** @private */ - function _loadIcons() { -- _iconResource = Gio.Resource.load(`${global.datadir}/gnome-shell-icons.gresource`); -+ _iconResource = Gio.Resource.load(`${global.datadir}/${sessionMode.iconsResourceName}`); - _iconResource._register(); - } - -diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js -index 45320ea..a34cf90 100644 ---- a/js/ui/sessionMode.js -+++ b/js/ui/sessionMode.js -@@ -27,6 +27,7 @@ const _modes = { - stylesheetName: 'gnome-shell.css', - colorScheme: 'prefer-dark', - themeResourceName: 'gnome-shell-theme.gresource', -+ iconsResourceName: 'gnome-shell-icons.gresource', - hasOverview: false, - showCalendarEvents: false, - showWelcomeDialog: false, diff --git a/patches/ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch b/patches/ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch deleted file mode 100644 index bb667ad..0000000 --- a/patches/ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch +++ /dev/null @@ -1,75 +0,0 @@ -From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= -Date: Mon, 27 Mar 2023 21:02:02 +0200 -Subject: shell-global, util: Do not move snap apps to gnome-apps scope - -Snap applications already have their own scope so we must not move them. - -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/2011806 ---- - js/misc/util.js | 20 ++++++++++++++++++-- - src/shell-global.c | 7 +++++++ - 2 files changed, 25 insertions(+), 2 deletions(-) - -diff --git a/js/misc/util.js b/js/misc/util.js -index 0201fd1..22d9a5a 100644 ---- a/js/misc/util.js -+++ b/js/misc/util.js -@@ -119,6 +119,20 @@ export function spawnApp(argv) { - */ - export function trySpawn(argv) { - let success_, pid; -+ let path = argv[0]; -+ -+ if (!path?.includes('/')) { -+ path = GLib.find_program_in_path(argv[0]); -+ if (!path) { -+ throw new GLib.SpawnError({ -+ code: GLib.SpawnError.NOENT, -+ message: _('Command not found'), -+ }); -+ } -+ -+ argv = [path, ...argv.slice(1)]; -+ } -+ - try { - [success_, pid] = GLib.spawn_async( - null, argv, null, -@@ -150,8 +164,10 @@ export function trySpawn(argv) { - } - } - -- // Async call, we don't need the reply though -- GnomeDesktop.start_systemd_scope(argv[0], pid, null, null, null, () => {}); -+ if (!path?.includes('/snap/bin') && !argv?.join(' ').includes('snap run')) { -+ // Async call, we don't need the reply though -+ GnomeDesktop.start_systemd_scope(argv[0], pid, null, null, null, () => {}); -+ } - - // Dummy child watch; we don't want to double-fork internally - // because then we lose the parent-child relationship, which -diff --git a/src/shell-global.c b/src/shell-global.c -index e60b574..a0c3d5c 100644 ---- a/src/shell-global.c -+++ b/src/shell-global.c -@@ -1501,6 +1501,7 @@ shell_global_app_launched_cb (GAppLaunchContext *context, - { - gint32 pid; - const gchar *app_name; -+ const gchar *command_line; - - if (!g_variant_lookup (platform_data, "pid", "i", &pid)) - return; -@@ -1514,6 +1515,12 @@ shell_global_app_launched_cb (GAppLaunchContext *context, - if (app_name == NULL) - app_name = g_app_info_get_executable (info); - -+ command_line = g_app_info_get_commandline (info); -+ if (command_line && -+ (strstr (command_line, "/snap/bin") || -+ strstr (command_line, "snap run"))) -+ return; -+ - /* Start async request; we don't care about the result */ - gnome_start_systemd_scope (app_name, - pid, diff --git a/patches/workarounds/Mark-several-additional-tests-as-flaky.patch b/patches/workarounds/Mark-several-additional-tests-as-flaky.patch new file mode 100644 index 0000000..49cda05 --- /dev/null +++ b/patches/workarounds/Mark-several-additional-tests-as-flaky.patch @@ -0,0 +1,155 @@ +From: Simon McVittie +Date: Wed, 13 Dec 2023 10:34:02 +0000 +Subject: Mark several additional tests as flaky + +Most of these have never been reliable on Debian buildds, especially +on ARM, so having them fail is not a regression. They usually succeed +after a few retries, but that's time-consuming and unsuitable to be a +QA gate. + +Signed-off-by: Simon McVittie +Forwarded: no +--- + src/tests/clutter/conform/gesture.c | 24 ++++++++++++++++++++++++ + src/tests/clutter/conform/grab.c | 6 ++++++ + src/tests/meson.build | 31 ++++++++++++++++++++++++++++--- + 3 files changed, 58 insertions(+), 3 deletions(-) + +diff --git a/src/tests/clutter/conform/gesture.c b/src/tests/clutter/conform/gesture.c +index 7d259f6..e732c1d 100644 +--- a/src/tests/clutter/conform/gesture.c ++++ b/src/tests/clutter/conform/gesture.c +@@ -135,6 +135,12 @@ gesture_state_machine_move_to_waiting (void) + ClutterGesture *gesture = CLUTTER_GESTURE (g_object_new (TEST_TYPE_GESTURE, NULL)); + gboolean was_updated; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521"); ++ return; ++ } ++ + virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE); + now_us = g_get_monotonic_time (); + +@@ -196,6 +202,12 @@ gesture_state_machine_move_to_cancelled_while_possible (void) + gboolean was_updated; + ClutterGestureState gesture_state_change; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521"); ++ return; ++ } ++ + virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE); + now_us = g_get_monotonic_time (); + +@@ -244,6 +256,12 @@ gesture_state_machine_move_to_cancelled_on_sequence_cancel (void) + gboolean was_updated; + ClutterGestureState gesture_state_change; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521"); ++ return; ++ } ++ + virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE); + now_us = g_get_monotonic_time (); + +@@ -302,6 +320,12 @@ gesture_multiple_mouse_buttons (void) + ClutterGesture *gesture = CLUTTER_GESTURE (g_object_new (TEST_TYPE_GESTURE, NULL)); + gboolean was_updated; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521"); ++ return; ++ } ++ + virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE); + now_us = g_get_monotonic_time (); + +diff --git a/src/tests/clutter/conform/grab.c b/src/tests/clutter/conform/grab.c +index c62eea6..4ba11f4 100644 +--- a/src/tests/clutter/conform/grab.c ++++ b/src/tests/clutter/conform/grab.c +@@ -620,6 +620,12 @@ grab_input_only (void) + ClutterSeat *seat; + g_autoptr (ClutterVirtualInputDevice) pointer = NULL; + ++ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL) ++ { ++ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3205"); ++ return; ++ } ++ + seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); + pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE); + +diff --git a/src/tests/meson.build b/src/tests/meson.build +index b98cfd4..a972096 100644 +--- a/src/tests/meson.build ++++ b/src/tests/meson.build +@@ -389,6 +389,7 @@ if have_native_tests + 'name': 'input-capture', + 'suite': 'backends/native', + 'sources': [ 'input-capture-tests.c' ], ++ 'flaky': true, + }, + { + 'name': 'thread', +@@ -680,8 +681,14 @@ if have_native_tests + + test_depends = [ default_plugin ] + test_case.get('depends', []) + ++ extra_suites = [] ++ ++ if test_case.get('flaky', false) ++ extra_suites += 'flaky' ++ endif ++ + test(test_case['name'], test_executable, +- suite: ['core', 'mutter/' + test_case['suite']], ++ suite: ['core', 'mutter/' + test_case['suite']] + extra_suites, + env: test_env, + depends: test_depends, + is_parallel: false, +@@ -735,8 +742,26 @@ stacking_tests = [ + ] + + foreach stacking_test: stacking_tests ++ extra_suites = [] ++ flaky = false ++ ++ if { ++ 'closed-transient-only-take-focus-parents': true, ++ # https://gitlab.gnome.org/GNOME/mutter/-/issues/3050 ++ 'fullscreen-maximize': true, ++ 'minimized': true, ++ # https://gitlab.gnome.org/GNOME/mutter/-/issues/2509, https://bugs.debian.org/1050022 ++ 'restore-size': true, ++ # https://gitlab.gnome.org/GNOME/mutter/-/issues/3051 ++ 'unfullscreen-strut-change': true, ++ 'unmaximize-new-size': true, ++ }.get(stacking_test, false) ++ extra_suites += 'flaky' ++ flaky = true ++ endif ++ + test(stacking_test, test_runner, +- suite: ['core', 'mutter/stacking'], ++ suite: ['core', 'mutter/stacking'] + extra_suites, + env: test_env, + args: [ + files('stacking' / stacking_test + '.metatest'), +@@ -745,7 +770,7 @@ foreach stacking_test: stacking_tests + timeout: 60, + ) + +- if have_installed_tests ++ if have_installed_tests and not flaky + installed_tests_cdata = configuration_data() + installed_tests_cdata.set('apiversion', libmutter_api_version) + installed_tests_cdata.set('libexecdir', libexecdir) diff --git a/patches/workarounds/cogl-tests-Avoid-converting-16bpc-float-16bpc.patch b/patches/workarounds/cogl-tests-Avoid-converting-16bpc-float-16bpc.patch new file mode 100644 index 0000000..47da80e --- /dev/null +++ b/patches/workarounds/cogl-tests-Avoid-converting-16bpc-float-16bpc.patch @@ -0,0 +1,73 @@ +From: Daniel van Vugt +Date: Thu, 25 Jul 2024 18:17:13 +0800 +Subject: cogl/tests: Avoid converting 16bpc -> float -> 16bpc + +Instead just assign 16bpc -> 16bpc + +This avoids variations in CPU and GL driver behaviour when using +floats as intermediate values. + +Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3582 +Part-of: +(cherry picked from commit 5360c58fe50080f4532efee46149c016acf558b2) +--- + .../cogl/conform/test-offscreen-texture-formats.c | 33 +++++++++++----------- + 1 file changed, 17 insertions(+), 16 deletions(-) + +diff --git a/src/tests/cogl/conform/test-offscreen-texture-formats.c b/src/tests/cogl/conform/test-offscreen-texture-formats.c +index 8706ec3..170f447 100644 +--- a/src/tests/cogl/conform/test-offscreen-texture-formats.c ++++ b/src/tests/cogl/conform/test-offscreen-texture-formats.c +@@ -61,35 +61,36 @@ test_offscreen_texture_formats_store_rgba16161616 (void) + const uint16_t rgba16_green = 61133; + const uint16_t rgba16_blue = 2; + const uint16_t rgba16_alpha = 1111; +- float red; +- float green; +- float blue; +- float alpha; + int i; +- +- red = (rgba16_red / (float) ((1 << 16) - 1)); +- green = (rgba16_green / (float) ((1 << 16) - 1)); +- blue = (rgba16_blue / (float) ((1 << 16) - 1)); +- alpha = (rgba16_alpha / (float) ((1 << 16) - 1)); ++ uint16_t tex_data[16]; + + g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_red)), !=, rgba16_red); + g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_green)), !=, rgba16_green); + g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_blue)), !=, rgba16_blue); + g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_alpha)), !=, rgba16_alpha); + ++ for (i = 0; i < 4; i++) ++ { ++ uint16_t *pixel_data = (uint16_t *) &tex_data [i * 4]; ++ ++ pixel_data[0] = rgba16_red; ++ pixel_data[1] = rgba16_green; ++ pixel_data[2] = rgba16_blue; ++ pixel_data[3] = rgba16_alpha; ++ } ++ + /* Allocate 2x2 to ensure we avoid any fast paths. */ +- tex = cogl_texture_2d_new_with_format (test_ctx, +- 2, 2, +- COGL_PIXEL_FORMAT_RGBA_16161616_PRE); ++ tex = cogl_texture_2d_new_from_data (test_ctx, ++ 2, 2, ++ COGL_PIXEL_FORMAT_RGBA_16161616_PRE, ++ 16, ++ (const uint8_t *) tex_data, ++ NULL); + + offscreen = cogl_offscreen_new_with_texture (tex); + cogl_framebuffer_allocate (COGL_FRAMEBUFFER (offscreen), &error); + g_assert_no_error (error); + +- cogl_framebuffer_clear4f (COGL_FRAMEBUFFER (offscreen), +- COGL_BUFFER_BIT_COLOR, +- red, green, blue, alpha); +- + cogl_framebuffer_read_pixels (COGL_FRAMEBUFFER (offscreen), 0, 0, 2, 2, + COGL_PIXEL_FORMAT_RG_1616, + (uint8_t *) &readback); diff --git a/patches/workarounds/kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch b/patches/workarounds/kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch new file mode 100644 index 0000000..1c38b17 --- /dev/null +++ b/patches/workarounds/kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch @@ -0,0 +1,29 @@ +From: Daniel van Vugt +Date: Tue, 7 Nov 2023 16:30:01 +0200 +Subject: kms/crtc: Increase default deadline evasion to 1000 microseconds + +This seems to be enough to fix cursor stutter on X1 Carbon 10 (OLED) +where the display is 90Hz and the touchpad ~145Hz. + +Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3373 +Bug: https://gitlab.gnome.org/GNOME/mutter/-/issues/3146 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/2040977 +Forwarded: yes +Last-Update: 2024-03-10 +--- + src/backends/native/meta-kms-crtc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c +index a087208..8fcb2d9 100644 +--- a/src/backends/native/meta-kms-crtc.c ++++ b/src/backends/native/meta-kms-crtc.c +@@ -28,7 +28,7 @@ + #include "backends/native/meta-kms-update-private.h" + #include "backends/native/meta-kms-utils.h" + +-#define DEADLINE_EVASION_US 800 ++#define DEADLINE_EVASION_US 1000 + #define DEADLINE_EVASION_WITH_KMS_TOPIC_US 1000 + + #define MINIMUM_REFRESH_RATE 30.f diff --git a/patches/workarounds/place-Always-center-initial-setup.patch b/patches/workarounds/place-Always-center-initial-setup.patch new file mode 100644 index 0000000..22cd931 --- /dev/null +++ b/patches/workarounds/place-Always-center-initial-setup.patch @@ -0,0 +1,26 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= +Date: Fri, 2 Dec 2022 22:49:41 +0100 +Subject: place: Always center initial-setup + +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell-extension-tiling-assistant/+bug/2011611 +Origin: https://src.fedoraproject.org/rpms/mutter/blob/main/f/0001-place-Always-center-initial-setup-fedora-welcome.patch +Forwarded: not-needed +--- + src/core/place.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/core/place.c b/src/core/place.c +index 23eb68e..ffe93b6 100644 +--- a/src/core/place.c ++++ b/src/core/place.c +@@ -381,6 +381,10 @@ window_place_centered (MetaWindow *window) + + type = window->type; + ++ if (G_UNLIKELY (g_strcmp0 (meta_window_get_wm_class (window), ++ "org.gnome.InitialSetup") == 0)) ++ return TRUE; ++ + return (type == META_WINDOW_DIALOG || + type == META_WINDOW_MODAL_DIALOG || + type == META_WINDOW_SPLASHSCREEN || diff --git a/patches/workarounds/tests-Mark-view-verification-tests-as-incomplete-in-big-e.patch b/patches/workarounds/tests-Mark-view-verification-tests-as-incomplete-in-big-e.patch new file mode 100644 index 0000000..5c412f9 --- /dev/null +++ b/patches/workarounds/tests-Mark-view-verification-tests-as-incomplete-in-big-e.patch @@ -0,0 +1,48 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Tue, 15 Jun 2021 20:38:01 +0200 +Subject: tests: Mark view-verification tests as incomplete in big-endian + archs + +Saved pixmaps are invalid in big-endian architectures, so let's disable +the tests for now, checking only the basic metadata but not comparing +the contents. + +Bug: https://gitlab.gnome.org/GNOME/mutter/-/issues/1850 +Applied-upstream: no, this is a workaround +--- + src/tests/meta-ref-test.c | 5 +++++ + src/tests/ref-test-sanity.c | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/src/tests/meta-ref-test.c b/src/tests/meta-ref-test.c +index a074a46..e385594 100644 +--- a/src/tests/meta-ref-test.c ++++ b/src/tests/meta-ref-test.c +@@ -522,6 +522,11 @@ meta_ref_test_verify_view (ClutterStageView *view, + g_assert_cmpint (ref_status, ==, CAIRO_STATUS_SUCCESS); + ensure_expected_format (&ref_image); + ++#if G_BYTE_ORDER == G_BIG_ENDIAN ++ g_test_incomplete ("View comparison is not supported by this architecture"); ++ return; ++#endif ++ + if (!compare_images (ref_image, view_image, &gl_fuzz, + &diff_stat)) + { +diff --git a/src/tests/ref-test-sanity.c b/src/tests/ref-test-sanity.c +index 12a07bb..eb69967 100644 +--- a/src/tests/ref-test-sanity.c ++++ b/src/tests/ref-test-sanity.c +@@ -108,6 +108,11 @@ meta_test_ref_test_sanity (void) + clutter_actor_set_background_color (actor2, &CLUTTER_COLOR_INIT (52, 101, 164, 255)); + clutter_actor_add_child (stage, actor2); + ++#if G_BYTE_ORDER == G_BIG_ENDIAN ++ g_test_incomplete ("View comparison is not supported by this architecture"); ++ return; ++#endif ++ + g_test_expect_message ("libmutter-test", + G_LOG_LEVEL_CRITICAL, + "Pixel difference exceeds limits*"); diff --git a/patches/workarounds/tests-Skip-thread-priority-test.patch b/patches/workarounds/tests-Skip-thread-priority-test.patch new file mode 100644 index 0000000..39a4cf1 --- /dev/null +++ b/patches/workarounds/tests-Skip-thread-priority-test.patch @@ -0,0 +1,35 @@ +From: =?utf-8?q?Jeremy_B=C3=ADcha?= +Date: Mon, 21 Aug 2023 11:45:48 -0400 +Subject: tests: Skip thread priority test + +This test added to 45 fails on Ubuntu's armhf builders + +https://launchpad.net/ubuntu/+source/mutter/45~beta.1-0ubuntu1/+latestbuild/armhf + +and on Debian's i386 + +https://buildd.debian.org/status/logs.php?pkg=mutter&arch=i386 + +Architecture defines are at +https://wiki.debian.org/ArchitectureSpecificsMemo +--- + src/tests/native-thread.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/tests/native-thread.c b/src/tests/native-thread.c +index abe944b..178379f 100644 +--- a/src/tests/native-thread.c ++++ b/src/tests/native-thread.c +@@ -1156,6 +1156,12 @@ assert_realtime (MetaThreadImpl *thread_impl, + g_variant_new ("(t)", gettid ())); + + g_variant_get (ret, "(u)", &priority); ++ ++#if defined __arm__ || defined __i386__ ++ g_test_incomplete ("Modifying thread priority is not supported by this architecture"); ++ return NULL; ++#endif ++ + g_assert_cmpint (priority, ==, 20); + + return NULL; diff --git a/patches/workarounds/tests-skip-monitor-width-size-check-as-it-may-lead-to-une.patch b/patches/workarounds/tests-skip-monitor-width-size-check-as-it-may-lead-to-une.patch new file mode 100644 index 0000000..5886fec --- /dev/null +++ b/patches/workarounds/tests-skip-monitor-width-size-check-as-it-may-lead-to-une.patch @@ -0,0 +1,29 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Mon, 14 Mar 2022 02:14:06 +0100 +Subject: tests: skip monitor width size check as it may lead to unexpected + failure + +This seems to be broken only on autopkg-tests. + +Forwarded: not-needed +Applied-upstream: no, see also https://bugs.debian.org/1050023 +--- + src/tests/stacking/unmaximize-new-size.metatest | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/tests/stacking/unmaximize-new-size.metatest b/src/tests/stacking/unmaximize-new-size.metatest +index b25922a..07ea1d6 100644 +--- a/src/tests/stacking/unmaximize-new-size.metatest ++++ b/src/tests/stacking/unmaximize-new-size.metatest +@@ -11,11 +11,9 @@ assert_size w/1 500 400 + + maximize w/1 + wait_reconfigure +-assert_size w/1 MONITOR_WIDTH MONITOR_HEIGHT + + resize w/1 300 500 + wait_reconfigure +-assert_size w/1 MONITOR_WIDTH MONITOR_HEIGHT + + unmaximize w/1 + wait_reconfigure diff --git a/release.sh b/release.sh index 21ee3e7..660f48f 100755 --- a/release.sh +++ b/release.sh @@ -1,8 +1,2 @@ # send debs to server -rsync -azP --include './' --include '*.deb' --exclude '*' ./output/ ferreo@direct.pika-os.com:/srv/www/incoming/ - -# add debs to repo -ssh ferreo@direct.pika-os.com 'aptly repo add -force-replace -remove-files pikauwu-main /srv/www/incoming/' - -# publish the repo -ssh ferreo@direct.pika-os.com 'aptly publish update -batch -skip-contents -force-overwrite pikauwu filesystem:pikarepo:' +rsync -azP --include './' --include '*.deb' --exclude '*' ./output/ ferreo@direct.pika-os.com:/srv/www/cockatiel-incoming/