Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mutter for openSUSE:Factory checked 
in at 2026-02-12 17:25:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mutter (Old)
 and      /work/SRC/openSUSE:Factory/.mutter.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mutter"

Thu Feb 12 17:25:14 2026 rev:262 rq:1332481 version:49.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/mutter/mutter.changes    2026-01-26 
11:00:33.313502266 +0100
+++ /work/SRC/openSUSE:Factory/.mutter.new.1977/mutter.changes  2026-02-12 
17:25:27.946451143 +0100
@@ -1,0 +2,12 @@
+Tue Feb 10 22:57:18 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 49.4:
+  + Fix applying initial display scaling on xorg
+  + Disable tone mapping with HDR
+  + Allow creating uninhibitable idle watches
+  + Fix screen sharing of monitors with no framerate
+  + Fixed crashes
+  + Misc. bug fixes and cleanups
+  + Updated translations.
+
+-------------------------------------------------------------------

Old:
----
  mutter-49.3.obscpio

New:
----
  mutter-49.4.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mutter.spec ++++++
--- /var/tmp/diff_new_pack.dWhMd0/_old  2026-02-12 17:25:29.090499677 +0100
+++ /var/tmp/diff_new_pack.dWhMd0/_new  2026-02-12 17:25:29.090499677 +0100
@@ -23,7 +23,7 @@
 %define libmutter libmutter-%{api_major}-%{api_minor}
 
 Name:           mutter
-Version:        49.3
+Version:        49.4
 Release:        0
 Summary:        Window and compositing manager based on Clutter
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.dWhMd0/_old  2026-02-12 17:25:29.130501374 +0100
+++ /var/tmp/diff_new_pack.dWhMd0/_new  2026-02-12 17:25:29.130501374 +0100
@@ -3,7 +3,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
-    <param name="revision">49.3</param>
+    <param name="revision">49.4</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">(.*)\+0</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ mutter-49.3.obscpio -> mutter-49.4.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/NEWS new/mutter-49.4/NEWS
--- old/mutter-49.3/NEWS        2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/NEWS        2026-02-10 14:40:27.000000000 +0100
@@ -1,3 +1,19 @@
+49.4
+====
+* Fix applying initial display scaling on xorg [mohansur; !4834, !4876]
+* Disable tone mapping with HDR [Michel; !4902]
+* Allow creating uninhibitable idle watches [Sebastian; !4422]
+* Fix screen sharing of monitors with no framerate [Jonas; !4881]
+* Fixed crashes [Jonas, Carlos; !4843, !4886]
+* Misc. bug fixes and cleanups [Robert; !4878]
+
+Contributors:
+  Michel Dänzer, Carlos Garnacho, Sebastian Keller, Robert Mader, mohansur,
+  Jonas Ådahl
+
+Translators:
+  Antonio Marin [ro], Andika Triwidada [id], Daniel Rusek [cs]
+
 49.3
 ====
 * Fix direct scanout on drivers without explicit modifiers [Mario; !4776]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mutter-49.3/clutter/clutter/clutter-color-state-params.c 
new/mutter-49.4/clutter/clutter/clutter-color-state-params.c
--- old/mutter-49.3/clutter/clutter/clutter-color-state-params.c        
2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/clutter/clutter/clutter-color-state-params.c        
2026-02-10 14:40:27.000000000 +0100
@@ -563,6 +563,10 @@
       target_lum->ref <= target_lum->max)
     return FALSE;
 
+  /* No tone mapping with HDR enabled for now */
+  if (target_lum->max > target_lum->ref)
+    return FALSE;
+
   ratio = (float) lum->max / lum->ref;
   target_ratio = (float) target_lum->max / target_lum->ref;
 
@@ -715,6 +719,7 @@
   "// Returns: tristimulus values ([0,1])\n"
   "vec3 bt1886_eotf (vec3 color)\n"
   "{\n"
+  "  color = clamp (color, vec3 (0.0), vec3 (1.0));\n"
   "  return pow (color, vec3 (2.4));\n"
   "}\n"
   "\n"
@@ -729,6 +734,7 @@
   "// Returns: Normalized ([0,1]) electrical signal value\n"
   "vec3 bt1886_inv_eotf (vec3 color)\n"
   "{\n"
+  "  color = clamp (color, vec3 (0.0), vec3 (1.0));\n"
   "  return pow (color, vec3 (1.0 / 2.4));\n"
   "}\n"
   "\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/meson.build new/mutter-49.4/meson.build
--- old/mutter-49.3/meson.build 2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/meson.build 2026-02-10 14:40:27.000000000 +0100
@@ -1,5 +1,5 @@
 project('mutter', 'c',
-  version: '49.3',
+  version: '49.4',
   meson_version: '>= 1.5.0',
   license: 'GPL-2.0-or-later',
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/po/cs.po new/mutter-49.4/po/cs.po
--- old/mutter-49.3/po/cs.po    2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/po/cs.po    2026-02-10 14:40:27.000000000 +0100
@@ -12,8 +12,8 @@
 msgstr ""
 "Project-Id-Version: mutter\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues/\n";
-"POT-Creation-Date: 2025-08-21 19:45+0000\n"
-"PO-Revision-Date: 2025-08-22 11:56+0200\n"
+"POT-Creation-Date: 2026-01-14 16:17+0000\n"
+"PO-Revision-Date: 2026-02-05 00:18+0100\n"
 "Last-Translator: Daniel Rusek <[email protected]>\n"
 "Language-Team: čeština <[email protected]>\n"
 "Language: cs\n"
@@ -21,7 +21,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Poedit 3.6\n"
+"X-Generator: Poedit 3.8\n"
 "X-Project-Style: gnome\n"
 
 #: data/50-mutter-navigation.xml:6
@@ -415,7 +415,7 @@
 "restart. • „kms-modifiers“ – přiměje mutter, aby umožnil alokování "
 "výstupních vyrovnávacích pamětí s výslovně určenými modifikátory, pokud to "
 "podporuje ovladač. Vyžaduje restart. • „autoclose-xwayland“ – automaticky "
-"ukončí Xwayland, když se ukončí všichny související klienti X11. Vyžaduje "
+"ukončí Xwayland, když se ukončí všichni související klienti X11. Vyžaduje "
 "restart. • „variable-refresh-rate“ – přiměje mutter, aby v případě potřeby "
 "umožnil dynamicky upravovat obnovovací frekvenci monitoru, pokud je to "
 "podporováno monitorem, GPU a ovladačem DRM. Konfigurovatelné v Nastavení. "
@@ -713,7 +713,7 @@
 msgid "About Mutter Development Kit"
 msgstr "O aplikaci Vývojové prostředí Mutteru"
 
-#: mdk/mdk-monitor.c:672
+#: mdk/mdk-monitor.c:674
 msgid "Failed to create monitor"
 msgstr "Selhalo vytvoření monitoru"
 
@@ -748,11 +748,11 @@
 msgid "Bell event"
 msgstr "Událost zvonku"
 
-#: src/core/display.c:741
+#: src/core/display.c:742
 msgid "Privacy Screen Enabled"
 msgstr "Soukromí obrazovky zapnuto"
 
-#: src/core/display.c:742
+#: src/core/display.c:743
 msgid "Privacy Screen Disabled"
 msgstr "Soukromí obrazovky vypnuto"
 
@@ -852,7 +852,7 @@
 msgid "Mutter plugin to use"
 msgstr "Zásuvný modul Mutter, který se má použít"
 
-#: src/core/prefs.c:1869
+#: src/core/prefs.c:1874
 #, c-format
 msgid "Workspace %d"
 msgstr "Plocha %d"
@@ -870,7 +870,7 @@
 msgid "Mode Switch: Mode %d"
 msgstr "Přepínač režimu: režim %d"
 
-#: src/x11/meta-x11-display.c:855
+#: src/x11/meta-x11-display.c:844
 #, c-format
 msgid ""
 "Display “%s” already has a window manager; try using the --replace option to "
@@ -879,19 +879,19 @@
 "Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce "
 "oken pomocí přepínače --replace."
 
-#: src/x11/meta-x11-display.c:1240
+#: src/x11/meta-x11-display.c:1229
 #, c-format
 msgid "Failed to open X Window System display “%s”"
 msgstr "Selhalo otevření systémového displeje X Window „%s“"
 
-#: src/x11/meta-x11-display.c:1473
+#: src/x11/meta-x11-display.c:1460
 #, c-format
 msgid "Screen %d on display “%s” is invalid"
 msgstr "Obrazovka %d na displeji „%s“ je neplatná"
 
 #. This probably means that a non-WM compositor like xcompmgr is running;
 #. * we have no way to get it to exit
-#: src/x11/meta-x11-display.c:2801
+#: src/x11/meta-x11-display.c:2788
 #, c-format
 msgid ""
 "Another compositing manager is already running on screen %i on display “%s”."
@@ -902,7 +902,7 @@
 msgid "Format %s not supported"
 msgstr "Formát %s není podporován"
 
-#: src/x11/window-props.c:564
+#: src/x11/window-props.c:562
 #, c-format
 msgid "%s (on %s)"
 msgstr "%s (na %s)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/po/id.po new/mutter-49.4/po/id.po
--- old/mutter-49.3/po/id.po    2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/po/id.po    2026-02-10 14:40:27.000000000 +0100
@@ -9,10 +9,10 @@
 # Kukuh Syafaat <[email protected]>, 2017-2024.
 msgid ""
 msgstr ""
-"Project-Id-Version: mutter master\n"
+"Project-Id-Version: mutter gnome-49\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues/\n";
-"POT-Creation-Date: 2025-03-11 00:58+0000\n"
-"PO-Revision-Date: 2025-03-12 14:59+0700\n"
+"POT-Creation-Date: 2025-12-03 15:57+0000\n"
+"PO-Revision-Date: 2026-01-23 19:01+0700\n"
 "Last-Translator: Andika Triwidada <[email protected]>\n"
 "Language-Team: Indonesian <[email protected]>\n"
 "Language: id\n"
@@ -20,7 +20,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.8\n"
 
 #: data/50-mutter-navigation.xml:6
 msgid "Navigation"
@@ -309,12 +309,12 @@
 #: data/org.gnome.mutter.gschema.xml.in:50
 msgid ""
 "Determines whether workspaces are managed dynamically or whether there’s a "
-"static number of workspaces (determined by the num-workspaces key in org."
-"gnome.desktop.wm.preferences)."
+"static number of workspaces (determined by the num-workspaces key in "
+"org.gnome.desktop.wm.preferences)."
 msgstr ""
 "Menentukan apakah ruang kerja dikelola secara dinamis atau apakah ada "
-"sejumlah tetap ruang kerja (ditentukan oleh kunci num-workspaces dalam org."
-"gnome.desktop.wm.preferences)."
+"sejumlah tetap ruang kerja (ditentukan oleh kunci num-workspaces dalam "
+"org.gnome.desktop.wm.preferences)."
 
 #: data/org.gnome.mutter.gschema.xml.in:59
 msgid "Workspaces only on primary"
@@ -626,26 +626,118 @@
 "+byteswappedclients/-byteswappedclients untuk mengontrol pengaturan "
 "tersebut. Xwayland perlu dimulai ulang agar pengaturan ini berlaku."
 
-#: src/backends/meta-monitor.c:266
+#: mdk/mdk-launcher-adder.c:451 mdk/mdk-launcher-adder.ui:22
+msgid "Application"
+msgstr "Aplikasi"
+
+#: mdk/mdk-launcher-adder.c:456 mdk/mdk-launcher-adder.ui:23
+msgid "Executable"
+msgstr "Executable"
+
+#: mdk/mdk-launcher-adder.ui:3
+msgid "Add Launcher"
+msgstr "Tambahkan Peluncur"
+
+#: mdk/mdk-launcher-adder.ui:15
+msgid "Launcher"
+msgstr "Peluncur"
+
+#: mdk/mdk-launcher-adder.ui:18
+msgid "Type"
+msgstr "Tipe"
+
+#: mdk/mdk-launcher-adder.ui:38 mdk/mdk-launchers-editor.ui:22
+msgid "Add"
+msgstr "Tambah"
+
+#: mdk/mdk-launcher-entry.c:198
+msgid "Run"
+msgstr "Jalankan"
+
+#: mdk/mdk-launcher-entry.ui:12
+msgid "Delete"
+msgstr "Hapus"
+
+#: mdk/mdk-launcher-entry.ui:20
+msgid "Action"
+msgstr "Aksi"
+
+#: mdk/mdk-launchers-editor.ui:3
+msgid "Edit Launchers"
+msgstr "Sunting Peluncur"
+
+#: mdk/mdk-launchers-editor.ui:16
+msgid "Launchers"
+msgstr "Peluncur"
+
+#: mdk/mdk-main-window.ui:7
+msgid "_Input"
+msgstr "_Masukan"
+
+#: mdk/mdk-main-window.ui:9
+msgid "_Emulate touch"
+msgstr "_Emulasikan sentuhan"
+
+#: mdk/mdk-main-window.ui:13
+msgid "_Inhibit system shortcuts"
+msgstr "Cegah p_intasan sistem"
+
+#: mdk/mdk-main-window.ui:20
+msgid "_Launchers"
+msgstr "Pe_luncur"
+
+#: mdk/mdk-main-window.ui:24
+msgid "_Edit launchers"
+msgstr "Sunting p_eluncur"
+
+#: mdk/mdk-main-window.ui:31
+msgid "_About Mutter Development Kit"
+msgstr "Tent_ang Kit Pengembangan Mutter"
+
+#: mdk/mdk-main-window.ui:37 mdk/mdk-main.c:56
+msgid "Mutter Development Kit"
+msgstr "Kit Pengembangan Mutter"
+
+#: mdk/mdk-main-window.ui:47
+msgid "Main Menu"
+msgstr "Menu Utama"
+
+#: mdk/mdk-main.c:49
+msgid "The Mutter Team"
+msgstr "Tim Mutter"
+
+#: mdk/mdk-main.c:62
+msgid "Mutter software development kit"
+msgstr "Kit pengembangan perangkat lunak Mutter"
+
+#: mdk/mdk-main.c:65
+msgid "About Mutter Development Kit"
+msgstr "Tentang Kit Pengembangan Mutter"
+
+#: mdk/mdk-monitor.c:674
+msgid "Failed to create monitor"
+msgstr "Gagal membuat pemantau"
+
+#: src/backends/meta-monitor.c:274
 msgid "Built-in display"
 msgstr "Tampilan bawaan"
 
-#: src/backends/meta-monitor.c:293
+#: src/backends/meta-monitor.c:301
 msgid "Unknown"
 msgstr "Tak Dikenal"
 
-#: src/backends/meta-monitor.c:295
+#: src/backends/meta-monitor.c:303
 msgid "Unknown Display"
 msgstr "Tampilan Tak Dikenal"
 
-#: src/backends/meta-monitor.c:303
+#: src/backends/meta-monitor.c:311
 #, c-format
 msgctxt ""
 "This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
 msgid "%s %s"
 msgstr "%s %s"
 
-#: src/backends/meta-monitor.c:311
+#: src/backends/meta-monitor.c:319
 #, c-format
 msgctxt ""
 "This is a monitor vendor name followed by product/model name where size in "
@@ -653,70 +745,62 @@
 msgid "%s %s"
 msgstr "%s %s"
 
-#: src/core/bell.c:193
+#: src/core/bell.c:237
 msgid "Bell event"
 msgstr "Bel peristiwa"
 
-#: src/core/display.c:741
+#: src/core/display.c:742
 msgid "Privacy Screen Enabled"
 msgstr "Layar Privasi Diaktifkan"
 
-#: src/core/display.c:742
+#: src/core/display.c:743
 msgid "Privacy Screen Disabled"
 msgstr "Layar Privasi Dinonaktifkan"
 
-#: src/core/meta-context-main.c:621
+#: src/core/meta-context-main.c:630
 msgid "Replace the running window manager"
 msgstr "Mengganti manajer jendela yang tengah berjalan"
 
-#: src/core/meta-context-main.c:627
+#: src/core/meta-context-main.c:636
 msgid "X Display to use"
 msgstr "Tampilan X yang digunakna"
 
-#: src/core/meta-context-main.c:633
-msgid "Disable connection to session manager"
-msgstr "Menonaktifkan koneksi ke manajer sesi"
-
-#: src/core/meta-context-main.c:639
-msgid "Specify session management ID"
-msgstr "Tentukan kode pengaturan sesi"
-
-#: src/core/meta-context-main.c:645
-msgid "Initialize session from savefile"
-msgstr "Aktifkan sesi dari berkas simpanan"
-
-#: src/core/meta-context-main.c:651
+#: src/core/meta-context-main.c:642
 msgid "Make X calls synchronous"
 msgstr "Buat panggilan X selaras"
 
-#: src/core/meta-context-main.c:659
+#: src/core/meta-context-main.c:650
 msgid "Run as a wayland compositor"
 msgstr "Jalankan sebagai kompositor wayland"
 
-#: src/core/meta-context-main.c:666
+#: src/core/meta-context-main.c:657
 msgid "Run as a nested compositor"
 msgstr "Jalankan sebagai kompositor bersarang"
 
-#: src/core/meta-context-main.c:672
+#: src/core/meta-context-main.c:665
 msgid "Run wayland compositor without starting Xwayland"
 msgstr "Jalankan kompositor wayland tanpa memmulai Xwayland"
 
-#: src/core/meta-context-main.c:679
+#: src/core/meta-context-main.c:672
 msgid "Specify Wayland display name to use"
 msgstr "Tentukan nama tampilan Wayland yang akan digunakan"
 
-#: src/core/meta-context-main.c:687
+#: src/core/meta-context-main.c:680
 msgid "Run as a full display server, rather than nested"
 msgstr "Jalankan sebagai peladen tampilan penuh, ketimbang tampilan bersarang"
 
-#: src/core/meta-context-main.c:692
+#: src/core/meta-context-main.c:685
 msgid "Run as a headless display server"
 msgstr "Jalankan sebagai peladen tampilan tanpa kepala (headless)"
 
-#: src/core/meta-context-main.c:697
+#: src/core/meta-context-main.c:690
 msgid "Add persistent virtual monitor (WxH or WxH@R)"
 msgstr "Tambah monitor virtual persisten (WxH atau WxH@R)"
 
+#: src/core/meta-context-main.c:697
+msgid "Run development kit"
+msgstr "Jalankan kit pengembangan"
+
 #: src/core/meta-context-main.c:709
 msgid "Run with X11 backend"
 msgstr "Jalankan dengan backend X11"
@@ -732,7 +816,7 @@
 #. TRANSLATORS: This string refers to a button that switches between
 #. * different modes in that button group.
 #.
-#: src/core/meta-pad-action-mapper.c:552
+#: src/core/meta-pad-action-mapper.c:615
 #, c-format
 msgid "Mode Switch (Group %d)"
 msgstr "Beralih Mode: (Grup %d)"
@@ -740,7 +824,7 @@
 #. TRANSLATORS: This string refers to a button that switches between
 #. * different modes.
 #.
-#: src/core/meta-pad-action-mapper.c:559
+#: src/core/meta-pad-action-mapper.c:622
 #, c-format
 msgid "Mode Switch"
 msgstr "Beralih Mode"
@@ -748,11 +832,11 @@
 #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
 #. * mapping through the available outputs.
 #.
-#: src/core/meta-pad-action-mapper.c:582
+#: src/core/meta-pad-action-mapper.c:645
 msgid "Switch monitor"
 msgstr "Berpindah monitor"
 
-#: src/core/meta-pad-action-mapper.c:584
+#: src/core/meta-pad-action-mapper.c:647
 msgid "Show on-screen help"
 msgstr "Tampilkan bantuan pada layar"
 
@@ -769,12 +853,12 @@
 msgid "Mutter plugin to use"
 msgstr "Pengaya Mutter yang dipakai"
 
-#: src/core/prefs.c:1869
+#: src/core/prefs.c:1874
 #, c-format
 msgid "Workspace %d"
 msgstr "Area kerja %d"
 
-#: src/core/util.c:140
+#: src/core/util.c:150
 msgid "Mutter was compiled without support for verbose mode"
 msgstr "Muter dikompilasi tanpa dukungan mode riuh"
 
@@ -782,12 +866,12 @@
 msgid "Workspace switched"
 msgstr "Area kerja dialihkan"
 
-#: src/wayland/meta-wayland-tablet-pad.c:532
+#: src/wayland/meta-wayland-tablet-pad.c:558
 #, c-format
 msgid "Mode Switch: Mode %d"
 msgstr "Tukar Mode: Mode %d"
 
-#: src/x11/meta-x11-display.c:858
+#: src/x11/meta-x11-display.c:844
 #, c-format
 msgid ""
 "Display “%s” already has a window manager; try using the --replace option to "
@@ -796,19 +880,19 @@
 "Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --"
 "replace untuk mengganti manajer jendela saat ini."
 
-#: src/x11/meta-x11-display.c:1243
+#: src/x11/meta-x11-display.c:1229
 #, c-format
 msgid "Failed to open X Window System display “%s”"
 msgstr "Gagal membuka tampilan X Window System \"%s\""
 
-#: src/x11/meta-x11-display.c:1476
+#: src/x11/meta-x11-display.c:1460
 #, c-format
 msgid "Screen %d on display “%s” is invalid"
 msgstr "Layar %d pada tampilan \"%s\" tidak valid"
 
 #. This probably means that a non-WM compositor like xcompmgr is running;
 #. * we have no way to get it to exit
-#: src/x11/meta-x11-display.c:2799
+#: src/x11/meta-x11-display.c:2788
 #, c-format
 msgid ""
 "Another compositing manager is already running on screen %i on display “%s”."
@@ -820,7 +904,7 @@
 msgid "Format %s not supported"
 msgstr "Format %s tidak didukung"
 
-#: src/x11/window-props.c:555
+#: src/x11/window-props.c:564
 #, c-format
 msgid "%s (on %s)"
 msgstr "%s (pada %s)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/po/ro.po new/mutter-49.4/po/ro.po
--- old/mutter-49.3/po/ro.po    2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/po/ro.po    2026-02-10 14:40:27.000000000 +0100
@@ -5,14 +5,14 @@
 # Adi Roiban https://launchpad.net/~adiroiban, 2008, 2009
 # Lucian Adrian Grijincu <[email protected]>, 2011.
 # Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015, 2018.
-# Antonio Marin <[email protected]>, 2025.
+# Antonio Marin <[email protected]>, 2025-2026.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: metacity.HEAD.ro\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues/\n";
-"POT-Creation-Date: 2025-11-26 19:35+0000\n"
-"PO-Revision-Date: 2025-12-02 14:08+0100\n"
+"POT-Creation-Date: 2026-01-14 16:17+0000\n"
+"PO-Revision-Date: 2026-01-22 11:31+0100\n"
 "Last-Translator: Antonio Marin <[email protected]>\n"
 "Language-Team: Romanian <[email protected]>\n"
 "Language: ro\n"
@@ -293,8 +293,7 @@
 
 #: data/org.gnome.mutter.gschema.xml.in:39
 msgid "Enable edge tiling when dropping windows on screen edges"
-msgstr ""
-"Activează plasarea pe margine la așezarea ferestrei pe marginea ecranului"
+msgstr "Activează redimensionarea ferestrei la atingerea marginilor ecranului"
 
 #: data/org.gnome.mutter.gschema.xml.in:40
 msgid ""
@@ -377,14 +376,15 @@
 
 #: data/org.gnome.mutter.gschema.xml.in:98
 msgid "Place new windows in the center"
-msgstr "Plasează ferestre noi în centru"
+msgstr "Așează ferestrele noi în centru"
 
 #: data/org.gnome.mutter.gschema.xml.in:99
 msgid ""
 "When true, the new windows will always be put in the center of the active "
 "screen of the monitor."
 msgstr ""
-"Când este adevărat, ferestrele noi vor fi plasate în centrul ecranului activ."
+"Când este „true” (adevărat), ferestrele noi vor fi așezate în centrul "
+"ecranului activ."
 
 #: data/org.gnome.mutter.gschema.xml.in:108
 msgid "Enable experimental features"
@@ -702,7 +702,7 @@
 
 #: mdk/mdk-main-window.ui:24
 msgid "_Edit launchers"
-msgstr "_Modifică lansatoare"
+msgstr "Modifică lansatoar_e"
 
 #: mdk/mdk-main-window.ui:31
 msgid "_About Mutter Development Kit"
@@ -900,14 +900,14 @@
 msgid "Failed to open X Window System display “%s”"
 msgstr "Nu s-a putut deschide afișajul „%s” al sistemului X Window"
 
-#: src/x11/meta-x11-display.c:1462
+#: src/x11/meta-x11-display.c:1460
 #, c-format
 msgid "Screen %d on display “%s” is invalid"
 msgstr "Ecranul %d cu afișajul „%s” este greșit"
 
 #. This probably means that a non-WM compositor like xcompmgr is running;
 #. * we have no way to get it to exit
-#: src/x11/meta-x11-display.c:2790
+#: src/x11/meta-x11-display.c:2788
 #, c-format
 msgid ""
 "Another compositing manager is already running on screen %i on display “%s”."
@@ -920,7 +920,7 @@
 msgid "Format %s not supported"
 msgstr "Formatul %s nu este acceptat"
 
-#: src/x11/window-props.c:564
+#: src/x11/window-props.c:562
 #, c-format
 msgid "%s (on %s)"
 msgstr "%s (pe %s)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/backends/meta-idle-monitor-private.h 
new/mutter-49.4/src/backends/meta-idle-monitor-private.h
--- old/mutter-49.3/src/backends/meta-idle-monitor-private.h    2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/backends/meta-idle-monitor-private.h    2026-02-10 
14:40:27.000000000 +0100
@@ -35,6 +35,7 @@
   guint64                   timeout_msec;
   int                       idle_source_id;
   GSource                  *timeout_source;
+  gboolean                  inhibitable;
 } MetaIdleMonitorWatch;
 
 struct _MetaIdleMonitorClass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/backends/meta-idle-monitor.c 
new/mutter-49.4/src/backends/meta-idle-monitor.c
--- old/mutter-49.3/src/backends/meta-idle-monitor.c    2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/backends/meta-idle-monitor.c    2026-02-10 
14:40:27.000000000 +0100
@@ -127,6 +127,9 @@
   if (!watch->timeout_source)
     return;
 
+  if (!watch->inhibitable)
+    return;
+
   if (monitor->inhibited)
     {
       g_source_set_ready_time (watch->timeout_source, -1);
@@ -255,9 +258,11 @@
             guint64                    timeout_msec,
             MetaIdleMonitorWatchFunc   callback,
             gpointer                   user_data,
-            GDestroyNotify             notify)
+            GDestroyNotify             notify,
+            MetaIdleMonitorWatchFlags  flags)
 {
   MetaIdleMonitorWatch *watch;
+  gboolean start_now = !!(flags & META_IDLE_MONITOR_WATCH_FLAGS_START_NOW);
 
   watch = g_new0 (MetaIdleMonitorWatch, 1);
 
@@ -267,6 +272,7 @@
   watch->user_data = user_data;
   watch->notify = notify;
   watch->timeout_msec = timeout_msec;
+  watch->inhibitable = !(flags & META_IDLE_MONITOR_WATCH_FLAGS_UNINHIBITABLE);
 
   if (timeout_msec != 0)
     {
@@ -275,11 +281,12 @@
       g_source_set_name (source, "[mutter] Idle monitor");
 
       g_source_set_callback (source, NULL, watch, NULL);
-      if (!monitor->inhibited)
+      if (!watch->inhibitable || !monitor->inhibited)
         {
-          g_source_set_ready_time (source,
-                                   monitor->last_event_time +
-                                   timeout_msec * 1000);
+          int64_t start_time =
+            start_now ? g_get_monotonic_time () : monitor->last_event_time;
+
+          g_source_set_ready_time (source, start_time + timeout_msec * 1000);
         }
       g_source_attach (source, NULL);
       g_source_unref (source);
@@ -310,6 +317,11 @@
  * meta_idle_monitor_remove_watch(), or can be used to tell idle time
  * watches apart if you have more than one.
  *
+ * The idle watch is affected by idle inhibitors and takes into account
+ * the idle time from before the watch was added.
+ * meta_idle_monitor_add_idle_watch_full() allows creating idle watches
+ * with different behavior.
+ *
  * Also note that this function will only care about positive transitions
  * (user's idle time exceeding a certain time). If you want to know about
  * when the user has become active, use
@@ -322,6 +334,38 @@
                                   gpointer                     user_data,
                                   GDestroyNotify               notify)
 {
+  return meta_idle_monitor_add_idle_watch_full (monitor,
+                                                interval_msec,
+                                                callback,
+                                                user_data,
+                                                notify,
+                                                
META_IDLE_MONITOR_WATCH_FLAGS_NONE);
+}
+
+/**
+ * meta_idle_monitor_add_idle_watch_full:
+ * @monitor: A #MetaIdleMonitor
+ * @interval_msec: The idletime interval, in milliseconds
+ * @callback: (nullable): The callback to call when the user has
+ *     accumulated @interval_msec milliseconds of idle time.
+ * @user_data: (nullable): The user data to pass to the callback
+ * @notify: A #GDestroyNotify
+ * @flags: Flags for the idle watch
+ *
+ * Returns: a watch id
+ *
+ * This function is identical to meta_idle_monitor_add_idle_watch(),
+ * with the addition of a flags parameter to modify the behavior
+ * of the idle watch.
+ */
+guint
+meta_idle_monitor_add_idle_watch_full (MetaIdleMonitor           *monitor,
+                                       guint64                    
interval_msec,
+                                       MetaIdleMonitorWatchFunc   callback,
+                                       gpointer                   user_data,
+                                       GDestroyNotify             notify,
+                                       MetaIdleMonitorWatchFlags  flags)
+{
   MetaIdleMonitorWatch *watch;
 
   g_return_val_if_fail (META_IS_IDLE_MONITOR (monitor), 0);
@@ -331,7 +375,8 @@
                       interval_msec,
                       callback,
                       user_data,
-                      notify);
+                      notify,
+                      flags);
 
   return watch->id;
 }
@@ -366,7 +411,8 @@
                       0,
                       callback,
                       user_data,
-                      notify);
+                      notify,
+                      META_IDLE_MONITOR_WATCH_FLAGS_NONE);
 
   return watch->id;
 }
@@ -429,7 +475,7 @@
         }
       else
         {
-          if (monitor->inhibited)
+          if (watch->inhibitable && monitor->inhibited)
             {
               g_source_set_ready_time (watch->timeout_source, -1);
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mutter-49.3/src/backends/meta-monitor-manager-private.h 
new/mutter-49.4/src/backends/meta-monitor-manager-private.h
--- old/mutter-49.3/src/backends/meta-monitor-manager-private.h 2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/backends/meta-monitor-manager-private.h 2026-02-10 
14:40:27.000000000 +0100
@@ -431,3 +431,6 @@
 
 MetaOutput * meta_monitor_manager_find_output (MetaMonitorManager 
*monitor_manager,
                                                MetaOutput         *old_output);
+
+float meta_monitor_manager_derive_configured_global_scale (MetaMonitorManager 
*manager,
+                                                           MetaMonitorsConfig 
*config);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/backends/meta-monitor-manager.c 
new/mutter-49.4/src/backends/meta-monitor-manager.c
--- old/mutter-49.3/src/backends/meta-monitor-manager.c 2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/backends/meta-monitor-manager.c 2026-02-10 
14:40:27.000000000 +0100
@@ -295,23 +295,6 @@
 }
 
 static float
-derive_configured_global_scale (MetaMonitorManager *manager,
-                                MetaMonitorsConfig *config)
-{
-  GList *l;
-
-  for (l = config->logical_monitor_configs; l; l = l->next)
-    {
-      MetaLogicalMonitorConfig *monitor_config = l->data;
-
-      if (is_global_scale_matching_in_config (config, monitor_config->scale))
-        return monitor_config->scale;
-    }
-
-  return 1.0;
-}
-
-static float
 calculate_monitor_scale (MetaMonitorManager *manager,
                          MetaMonitor        *monitor)
 {
@@ -405,7 +388,7 @@
   g_assert (capabilities & 
META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED);
 
   if (config)
-    global_scale = derive_configured_global_scale (manager, config);
+    global_scale = meta_monitor_manager_derive_configured_global_scale 
(manager, config);
   else
     global_scale = derive_calculated_global_scale (manager);
 
@@ -4711,3 +4694,20 @@
 
   return NULL;
 }
+
+float
+meta_monitor_manager_derive_configured_global_scale (MetaMonitorManager 
*manager,
+                                                     MetaMonitorsConfig 
*config)
+{
+  GList *l;
+
+  for (l = config->logical_monitor_configs; l; l = l->next)
+    {
+      MetaLogicalMonitorConfig *monitor_config = l->data;
+
+      if (is_global_scale_matching_in_config (config, monitor_config->scale))
+        return monitor_config->scale;
+    }
+
+  return 1.0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mutter-49.3/src/backends/meta-screen-cast-stream-src.c 
new/mutter-49.4/src/backends/meta-screen-cast-stream-src.c
--- old/mutter-49.3/src/backends/meta-screen-cast-stream-src.c  2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/backends/meta-screen-cast-stream-src.c  2026-02-10 
14:40:27.000000000 +0100
@@ -97,6 +97,13 @@
 
 static guint signals[N_SIGNALS];
 
+typedef struct _MetaSpaFractionRange
+{
+  struct spa_fraction def;
+  struct spa_fraction min;
+  struct spa_fraction max;
+} MetaSpaFractionRange;
+
 typedef struct _MetaPipeWireSource
 {
   GSource source;
@@ -233,10 +240,11 @@
 }
 
 static struct spa_pod *
-push_format_object (enum spa_video_format  format,
-                    uint64_t              *modifiers,
-                    int                    n_modifiers,
-                    gboolean               fixate_modifier,
+push_format_object (enum spa_video_format       format,
+                    uint64_t                   *modifiers,
+                    int                         n_modifiers,
+                    gboolean                    fixate_modifier,
+                    const MetaSpaFractionRange *max_framerate,
                     ...)
 {
   struct spa_pod_dynamic_builder pod_builder;
@@ -290,7 +298,21 @@
         }
     }
 
-  va_start (args, fixate_modifier);
+  spa_pod_builder_add (&pod_builder.b,
+                       SPA_FORMAT_VIDEO_framerate,
+                       SPA_POD_Fraction (&SPA_FRACTION (0, 1)),
+                       0);
+  if (max_framerate)
+    {
+      spa_pod_builder_add (&pod_builder.b,
+                           SPA_FORMAT_VIDEO_maxFramerate,
+                           SPA_POD_CHOICE_RANGE_Fraction (&max_framerate->def,
+                                                          &max_framerate->min,
+                                                          &max_framerate->max),
+                           0);
+    }
+
+  va_start (args, max_framerate);
   spa_pod_builder_addv (&pod_builder.b, args);
   va_end (args);
   return spa_pod_builder_pop (&pod_builder.b, &pod_frame);
@@ -1420,9 +1442,12 @@
   struct spa_rectangle default_size = DEFAULT_SIZE;
   struct spa_rectangle min_size = MIN_SIZE;
   struct spa_rectangle max_size = MAX_SIZE;
-  struct spa_fraction default_framerate = DEFAULT_FRAME_RATE;
-  struct spa_fraction min_framerate = MIN_FRAME_RATE;
-  struct spa_fraction max_framerate = MAX_FRAME_RATE;
+  MetaSpaFractionRange max_framerate_values = {
+    .def = DEFAULT_FRAME_RATE,
+    .min = MIN_FRAME_RATE,
+    .max = MAX_FRAME_RATE,
+  };
+  MetaSpaFractionRange *max_framerate = &max_framerate_values;
   struct spa_pod *pod;
   int width;
   int height;
@@ -1431,14 +1456,21 @@
 
   if (meta_screen_cast_stream_src_get_specs (src, &width, &height, 
&frame_rate))
     {
-      MetaFraction frame_rate_fraction;
+      if (G_APPROX_VALUE (frame_rate, 0.0f, FLT_EPSILON))
+        {
+          max_framerate = NULL;
+        }
+      else
+        {
+          MetaFraction frame_rate_fraction;
 
-      frame_rate_fraction = meta_fraction_from_double (frame_rate);
+          frame_rate_fraction = meta_fraction_from_double (frame_rate);
+          max_framerate_values.min = SPA_FRACTION (1, 1);
+          max_framerate_values.max = SPA_FRACTION (frame_rate_fraction.num,
+                                                   frame_rate_fraction.denom);
+          max_framerate_values.def = max_framerate_values.max;
+        }
 
-      min_framerate = SPA_FRACTION (1, 1);
-      max_framerate = SPA_FRACTION (frame_rate_fraction.num,
-                                    frame_rate_fraction.denom);
-      default_framerate = max_framerate;
       min_size = max_size = default_size = SPA_RECTANGLE (width, height);
     }
 
@@ -1476,14 +1508,10 @@
 
       pod = push_format_object (
         spa_video_formats[i], (uint64_t *) modifiers->data, modifiers->len, 
FALSE,
+        max_framerate,
         SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle (&default_size,
                                                                &min_size,
                                                                &max_size),
-        SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)),
-        SPA_FORMAT_VIDEO_maxFramerate,
-        SPA_POD_CHOICE_RANGE_Fraction (&default_framerate,
-                                       &min_framerate,
-                                       &max_framerate),
         0);
       g_ptr_array_add (params, g_steal_pointer (&pod));
     }
@@ -1491,14 +1519,10 @@
     {
       pod = push_format_object (
         spa_video_formats[i], NULL, 0, FALSE,
+        max_framerate,
         SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle (&default_size,
                                                                &min_size,
                                                                &max_size),
-        SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 1)),
-        SPA_FORMAT_VIDEO_maxFramerate,
-        SPA_POD_CHOICE_RANGE_Fraction (&default_framerate,
-                                       &min_framerate,
-                                       &max_framerate),
         0);
       g_ptr_array_add (params, g_steal_pointer (&pod));
     }
@@ -1639,6 +1663,21 @@
   return supported != 0;
 }
 
+static gboolean
+did_video_format_changed_for_log (MetaScreenCastStreamSrc   *src,
+                                  struct spa_video_info_raw *video_format)
+{
+  MetaScreenCastStreamSrcPrivate *priv =
+    meta_screen_cast_stream_src_get_instance_private (src);
+
+  return (video_format->size.width != priv->video_format.size.width ||
+          video_format->size.height != priv->video_format.size.height ||
+          video_format->framerate.num != priv->video_format.framerate.num ||
+          video_format->framerate.denom != priv->video_format.framerate.denom 
||
+          video_format->max_framerate.num != 
priv->video_format.max_framerate.num ||
+          video_format->max_framerate.denom != 
priv->video_format.max_framerate.denom);
+}
+
 static void
 on_stream_param_changed (void                 *data,
                          uint32_t              id,
@@ -1649,6 +1688,7 @@
     meta_screen_cast_stream_src_get_instance_private (src);
   MetaScreenCastStreamSrcClass *klass =
     META_SCREEN_CAST_STREAM_SRC_GET_CLASS (src);
+  struct spa_video_info_raw video_format = {};
   struct spa_pod_dynamic_builder pod_builder;
   struct spa_pod *pod;
   struct spa_pod_frame pod_frame;
@@ -1662,8 +1702,22 @@
 
   params = g_ptr_array_new_full (16, (GDestroyNotify) free);
 
-  spa_format_video_raw_parse (format,
-                              &priv->video_format);
+  spa_format_video_raw_parse (format, &video_format);
+
+  if (meta_is_topic_enabled (META_DEBUG_SCREEN_CAST) &&
+      did_video_format_changed_for_log (src, &video_format))
+    {
+      meta_topic (META_DEBUG_SCREEN_CAST,
+                  "Video format changed to %dx%d (framerate: %d/%d (max: 
%d/%d))",
+                  video_format.size.width,
+                  video_format.size.height,
+                  video_format.framerate.num,
+                  video_format.framerate.denom,
+                  video_format.max_framerate.num,
+                  video_format.max_framerate.denom);
+    }
+
+  priv->video_format = video_format;
 
   prop_modifier = spa_pod_find_prop (format, NULL, SPA_FORMAT_VIDEO_modifier);
 
@@ -1724,14 +1778,16 @@
                                                    
priv->video_format.size.height,
                                                    &preferred_modifier))
         {
+          MetaSpaFractionRange max_framerate = {
+            .def = priv->video_format.max_framerate,
+            .min = MIN_FRAME_RATE,
+            .max = priv->video_format.max_framerate,
+          };
           pod = push_format_object (
             priv->video_format.format, &preferred_modifier, 1, TRUE,
+            &max_framerate,
             SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle 
(&priv->video_format.size),
             SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction (&SPA_FRACTION (0, 
1)),
-            SPA_FORMAT_VIDEO_maxFramerate,
-            SPA_POD_CHOICE_RANGE_Fraction (&priv->video_format.max_framerate,
-                                           &MIN_FRAME_RATE,
-                                           &priv->video_format.max_framerate),
             0);
           g_ptr_array_add (params, g_steal_pointer (&pod));
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mutter-49.3/src/backends/x11/meta-monitor-manager-xrandr.c 
new/mutter-49.4/src/backends/x11/meta-monitor-manager-xrandr.c
--- old/mutter-49.3/src/backends/x11/meta-monitor-manager-xrandr.c      
2026-01-14 20:47:34.000000000 +0100
+++ new/mutter-49.4/src/backends/x11/meta-monitor-manager-xrandr.c      
2026-02-10 14:40:27.000000000 +0100
@@ -379,6 +379,30 @@
   return FALSE;
 }
 
+static gboolean
+is_scaling_changed (MetaMonitorManager  *manager,
+                    MetaMonitorsConfig  *config)
+{
+  GList *l;
+  float global_scale;
+  MetaMonitorManagerCapability capabilities;
+
+  capabilities = meta_monitor_manager_get_capabilities (manager);
+  g_assert (capabilities & 
META_MONITOR_MANAGER_CAPABILITY_GLOBAL_SCALE_REQUIRED);
+
+  global_scale = meta_monitor_manager_derive_configured_global_scale (manager, 
config);
+
+  for (l = manager->logical_monitors; l; l = l->next)
+    {
+      MetaLogicalMonitor *logical_monitor = l->data;
+
+      if (global_scale != logical_monitor->scale)
+        return TRUE;
+    }
+
+  return FALSE;
+}
+
 static void
 apply_crtc_assignments (MetaMonitorManager    *manager,
                         gboolean               save_timestamp,
@@ -650,7 +674,8 @@
                                   (MetaOutputAssignment **) 
output_assignments->pdata,
                                   output_assignments->len);
         }
-      else
+
+      if (is_scaling_changed (manager, config))
         {
           meta_monitor_manager_rebuild_derived (manager, config);
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/compositor/compositor.c 
new/mutter-49.4/src/compositor/compositor.c
--- old/mutter-49.3/src/compositor/compositor.c 2026-01-14 20:47:34.000000000 
+0100
+++ new/mutter-49.4/src/compositor/compositor.c 2026-02-10 14:40:27.000000000 
+0100
@@ -696,6 +696,8 @@
                           G_CALLBACK (on_top_window_actor_destroyed),
                           compositor);
     }
+
+  meta_display_queue_check_fullscreen (priv->display);
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/meta/meta-idle-monitor.h 
new/mutter-49.4/src/meta/meta-idle-monitor.h
--- old/mutter-49.3/src/meta/meta-idle-monitor.h        2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/meta/meta-idle-monitor.h        2026-02-10 
14:40:27.000000000 +0100
@@ -23,6 +23,23 @@
 
 #include "meta/types.h"
 
+/**
+ * MetaIdleMonitorWatchFlags:
+ * @META_IDLE_MONITOR_WATCH_FLAGS_NONE: No flag set
+ * @META_IDLE_MONITOR_WATCH_FLAGS_UNINHIBITABLE: Ignore inhibitors
+ * @META_IDLE_MONITOR_WATCH_FLAGS_START_NOW: Start idle timer now and ignore 
any
+ *   previous idle time
+ *
+ * Flags affecting the behavior of the idle watch created by
+ * meta_idle_monitor_add_idle_watch_full().
+ */
+typedef enum
+{
+  META_IDLE_MONITOR_WATCH_FLAGS_NONE = 0,
+  META_IDLE_MONITOR_WATCH_FLAGS_UNINHIBITABLE = 1 << 0,
+  META_IDLE_MONITOR_WATCH_FLAGS_START_NOW = 1 << 1,
+} MetaIdleMonitorWatchFlags;
+
 #define META_TYPE_IDLE_MONITOR (meta_idle_monitor_get_type ())
 META_EXPORT
 G_DECLARE_FINAL_TYPE (MetaIdleMonitor, meta_idle_monitor,
@@ -34,6 +51,14 @@
                                           gpointer         user_data);
 
 META_EXPORT
+guint         meta_idle_monitor_add_idle_watch_full   (MetaIdleMonitor         
  *monitor,
+                                                       guint64                 
   interval_msec,
+                                                       
MetaIdleMonitorWatchFunc   callback,
+                                                       gpointer                
   user_data,
+                                                       GDestroyNotify          
   notify,
+                                                       
MetaIdleMonitorWatchFlags  flags);
+
+META_EXPORT
 guint         meta_idle_monitor_add_idle_watch        (MetaIdleMonitor         
 *monitor,
                                                       guint64                  
 interval_msec,
                                                       MetaIdleMonitorWatchFunc 
 callback,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/wayland/meta-wayland-popup.c 
new/mutter-49.4/src/wayland/meta-wayland-popup.c
--- old/mutter-49.3/src/wayland/meta-wayland-popup.c    2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/wayland/meta-wayland-popup.c    2026-02-10 
14:40:27.000000000 +0100
@@ -86,10 +86,10 @@
   META_WAYLAND_POPUP_SURFACE_GET_IFACE (popup_surface)->dismiss 
(popup_surface);
 }
 
-static void
+static gboolean
 meta_wayland_popup_surface_finish (MetaWaylandPopupSurface *popup_surface)
 {
-  META_WAYLAND_POPUP_SURFACE_GET_IFACE (popup_surface)->finish (popup_surface);
+  return META_WAYLAND_POPUP_SURFACE_GET_IFACE (popup_surface)->finish 
(popup_surface);
 }
 
 static MetaWaylandSurface *
@@ -212,15 +212,17 @@
 void
 meta_wayland_popup_grab_finish (MetaWaylandPopupGrab *grab)
 {
-  MetaWaylandPopup *popup, *tmp;
-
-  wl_list_for_each_safe (popup, tmp, &grab->all_popups, link)
+  while (!wl_list_empty (&grab->all_popups))
     {
+      MetaWaylandPopup *popup = wl_container_of (grab->all_popups.next,
+                                                 popup, link);
       MetaWaylandPopupSurface *popup_surface = popup->popup_surface;
 
       meta_wayland_popup_surface_done (popup_surface);
       meta_wayland_popup_destroy (popup);
-      meta_wayland_popup_surface_finish (popup_surface);
+
+      if (meta_wayland_popup_surface_finish (popup_surface))
+        break;
     }
 }
 
@@ -292,9 +294,7 @@
 
   meta_wayland_popup_destroy (popup);
 
-  if (wl_list_empty (&popup_grab->all_popups))
-    meta_wayland_popup_surface_finish (popup_surface);
-  else
+  if (!meta_wayland_popup_surface_finish (popup_surface))
     meta_wayland_popup_grab_repick_keyboard_focus (popup_grab);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/wayland/meta-wayland-popup.h 
new/mutter-49.4/src/wayland/meta-wayland-popup.h
--- old/mutter-49.3/src/wayland/meta-wayland-popup.h    2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/wayland/meta-wayland-popup.h    2026-02-10 
14:40:27.000000000 +0100
@@ -37,7 +37,7 @@
 
   void (*done) (MetaWaylandPopupSurface *popup_surface);
   void (*dismiss) (MetaWaylandPopupSurface *popup_surface);
-  void (*finish) (MetaWaylandPopupSurface *popup_surface);
+  gboolean (*finish) (MetaWaylandPopupSurface *popup_surface);
   MetaWaylandSurface *(*get_surface) (MetaWaylandPopupSurface *popup_surface);
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/wayland/meta-wayland-xdg-shell.c 
new/mutter-49.4/src/wayland/meta-wayland-xdg-shell.c
--- old/mutter-49.3/src/wayland/meta-wayland-xdg-shell.c        2026-01-14 
20:47:34.000000000 +0100
+++ new/mutter-49.4/src/wayland/meta-wayland-xdg-shell.c        2026-02-10 
14:40:27.000000000 +0100
@@ -1711,7 +1711,7 @@
   meta_wayland_xdg_popup_unmap (xdg_popup);
 }
 
-static void
+static gboolean
 meta_wayland_xdg_popup_finish (MetaWaylandPopupSurface *popup_surface)
 {
   MetaWaylandXdgPopup *xdg_popup = META_WAYLAND_XDG_POPUP (popup_surface);
@@ -1725,7 +1725,10 @@
     {
       meta_wayland_popup_grab_destroy (xdg_shell_client->popup_grab);
       xdg_shell_client->popup_grab = NULL;
+      return TRUE;
     }
+
+  return FALSE;
 }
 
 static MetaWaylandSurface *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-49.3/src/x11/window-x11.c 
new/mutter-49.4/src/x11/window-x11.c
--- old/mutter-49.3/src/x11/window-x11.c        2026-01-14 20:47:34.000000000 
+0100
+++ new/mutter-49.4/src/x11/window-x11.c        2026-02-10 14:40:27.000000000 
+0100
@@ -2087,7 +2087,6 @@
 meta_window_x11_constructed (GObject *object)
 {
   MetaWindow *window = META_WINDOW (object);
-  MetaDisplay *display = window->display;
   MetaWindowX11 *window_x11 = META_WINDOW_X11 (object);
   MetaWindowX11Private *priv = meta_window_x11_get_instance_private 
(window_x11);
   XWindowAttributes attrs = priv->attributes;
@@ -2134,12 +2133,6 @@
                                       attrs.border_width, 0,
                                       &priv->border_width, NULL);
 
-  /* O-R windows bypass mutter window-management path, this ensures
-   * they get fullscreen checked properly.
-   */
-  if (window->override_redirect)
-    meta_display_queue_check_fullscreen (display);
-
   g_signal_connect (window, "notify::decorated",
                     G_CALLBACK (meta_window_x11_update_input_region),
                     NULL);

++++++ mutter.obsinfo ++++++
--- /var/tmp/diff_new_pack.dWhMd0/_old  2026-02-12 17:25:32.838658685 +0100
+++ /var/tmp/diff_new_pack.dWhMd0/_new  2026-02-12 17:25:32.862659703 +0100
@@ -1,5 +1,5 @@
 name: mutter
-version: 49.3
-mtime: 1768420054
-commit: 61659d33d6046c0af99db38c6adb956634c2da04
+version: 49.4
+mtime: 1770730827
+commit: e6379ecf07e7962d796fc057c50d0e6b2d803b7e
 

Reply via email to