Hello community,

here is the log from the commit of package mutter for openSUSE:Factory checked 
in at 2018-11-18 23:25:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mutter (Old)
 and      /work/SRC/openSUSE:Factory/.mutter.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mutter"

Sun Nov 18 23:25:11 2018 rev:133 rq:648881 version:3.30.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/mutter/mutter.changes    2018-10-17 
08:23:51.854739510 +0200
+++ /work/SRC/openSUSE:Factory/.mutter.new/mutter.changes       2018-11-18 
23:25:20.425978428 +0100
@@ -1,0 +2,11 @@
+Wed Nov 14 09:26:14 UTC 2018 - [email protected]
+
+- Update to version 3.30.2:
+  + Fix handling of non-UTF8 encodings.
+  + Fix memory leaks introduced in 3.30.1.
+  + Work around hangul text input bug.
+  + Fix crash when restarting window manager.
+  + Fix crash on monitor hotplug.
+  + Updated translations.
+
+-------------------------------------------------------------------

Old:
----
  mutter-3.30.1.tar.xz

New:
----
  mutter-3.30.2.tar.xz

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

Other differences:
------------------
++++++ mutter.spec ++++++
--- /var/tmp/diff_new_pack.7dgGZ7/_old  2018-11-18 23:25:22.557975835 +0100
+++ /var/tmp/diff_new_pack.7dgGZ7/_new  2018-11-18 23:25:22.589975796 +0100
@@ -20,7 +20,7 @@
 %define api_minor 0
 %define libmutter libmutter-%{api_major}-%{api_minor}
 Name:           mutter
-Version:        3.30.1
+Version:        3.30.2
 Release:        0
 Summary:        Window and compositing manager based on Clutter
 License:        GPL-2.0-or-later

++++++ mutter-3.30.1.tar.xz -> mutter-3.30.2.tar.xz ++++++
++++ 1888 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/NEWS new/mutter-3.30.2/NEWS
--- old/mutter-3.30.1/NEWS      2018-10-08 20:55:40.000000000 +0200
+++ new/mutter-3.30.2/NEWS      2018-11-13 23:27:07.000000000 +0100
@@ -1,3 +1,18 @@
+3.30.2
+======
+* Fix handling of non-UTF8 encodings [Florian; !227]
+* Fix memory leaks introduced in 3.30.1 [Jonas; #653]
+* Work around hangul text input bug [Carlos; gtk#1365]
+* Fix crash when restarting window manager [Andrea; gnome-shell#595]
+* Fix crash on monitor hotplug [Olivier; #189]
+
+Contributors:
+  Jonas Ådahl, Andrea Azzarone, Olivier Fourdan, Carlos Garnacho,
+  Florian Müllner, Akira Nakajima
+
+Translators:
+  Dušan Kazik [sk]
+
 3.30.1
 ======
 * Improve trackball detection [Tony; #258]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/configure.ac new/mutter-3.30.2/configure.ac
--- old/mutter-3.30.1/configure.ac      2018-10-08 20:55:48.000000000 +0200
+++ new/mutter-3.30.2/configure.ac      2018-11-13 23:27:18.000000000 +0100
@@ -2,7 +2,7 @@
 
 m4_define([mutter_major_version], [3])
 m4_define([mutter_minor_version], [30])
-m4_define([mutter_micro_version], [1])
+m4_define([mutter_micro_version], [2])
 
 m4_define([mutter_version],
           [mutter_major_version.mutter_minor_version.mutter_micro_version])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/m4/glib-2.0.m4 new/mutter-3.30.2/m4/glib-2.0.m4
--- old/mutter-3.30.1/m4/glib-2.0.m4    2018-08-06 20:47:13.000000000 +0200
+++ new/mutter-3.30.2/m4/glib-2.0.m4    2018-11-09 14:29:51.000000000 +0100
@@ -2,7 +2,7 @@
 # Owen Taylor     1997-2001
 
 # Increment this whenever this file is changed.
-#serial 1
+#serial 3
 
 dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND 
[, MODULES]]]])
 dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
@@ -12,10 +12,16 @@
 [dnl 
 dnl Get the cflags and libraries from pkg-config
 dnl
+
+dnl We can't use PKG_PREREQ because that needs 0.29.
+m4_ifndef([PKG_PROG_PKG_CONFIG],
+          [pkg.m4 version 0.28 or later is required])
+
 AC_ARG_ENABLE(glibtest, [  --disable-glibtest      do not try to compile and 
run a test GLIB program],
                    , enable_glibtest=yes)
 
-  pkg_config_args=glib-2.0
+  min_glib_version=ifelse([$1], [], [2.0.0], [$1])
+  pkg_config_args="glib-2.0 >= $min_glib_version"
   for module in . $4
   do
       case "$module" in
@@ -46,7 +52,15 @@
     PKG_CONFIG=no
   fi
 
-  min_glib_version=ifelse([$1], ,2.0.0,$1)
+  dnl For GLIB_CFLAGS and GLIB_LIBS
+  PKG_CHECK_MODULES([GLIB], [$pkg_config_args], [:], [:])
+
+  dnl For the tools
+  PKG_CHECK_VAR([GLIB_GENMARSHAL], [glib-2.0], [glib_genmarshal])
+  PKG_CHECK_VAR([GOBJECT_QUERY], [glib-2.0], [gobject_query])
+  PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums])
+  PKG_CHECK_VAR([GLIB_COMPILE_RESOURCES], [gio-2.0], [glib_compile_resources])
+
   AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
 
   if test x$PKG_CONFIG != xno ; then
@@ -64,13 +78,6 @@
   fi
 
   if test x"$no_glib" = x ; then
-    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
-    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
-    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
-    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources 
gio-2.0`
-
-    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
-    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
     glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
     glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
@@ -204,11 +211,5 @@
      GLIB_COMPILE_RESOURCES=""
      ifelse([$3], , :, [$3])
   fi
-  AC_SUBST(GLIB_CFLAGS)
-  AC_SUBST(GLIB_LIBS)
-  AC_SUBST(GLIB_GENMARSHAL)
-  AC_SUBST(GOBJECT_QUERY)
-  AC_SUBST(GLIB_MKENUMS)
-  AC_SUBST(GLIB_COMPILE_RESOURCES)
   rm -f conf.glibtest
 ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/m4/gsettings.m4 new/mutter-3.30.2/m4/gsettings.m4
--- old/mutter-3.30.1/m4/gsettings.m4   2018-08-06 20:47:13.000000000 +0200
+++ new/mutter-3.30.2/m4/gsettings.m4   2018-11-09 14:29:51.000000000 +0100
@@ -1,5 +1,5 @@
 # Increment this whenever this file is changed.
-#serial 1
+#serial 2
 
 dnl GLIB_GSETTINGS
 dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether
@@ -8,6 +8,10 @@
 
 AC_DEFUN([GLIB_GSETTINGS],
 [
+  dnl We can't use PKG_PREREQ because that needs 0.29.
+  m4_ifndef([PKG_PROG_PKG_CONFIG],
+            [pkg.m4 version 0.28 or later is required])
+
   m4_pattern_allow([AM_V_GEN])
   AC_ARG_ENABLE(schemas-compile,
                 AS_HELP_STRING([--disable-schemas-compile],
@@ -20,11 +24,9 @@
   AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE])
   PKG_PROG_PKG_CONFIG([0.16])
   AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas])
-  if test x$cross_compiling != xyes; then
-    GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0`
-  else
-    AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
-  fi
+  AS_IF([test x$cross_compiling != xyes],
+        [PKG_CHECK_VAR([GLIB_COMPILE_SCHEMAS], [gio-2.0], 
[glib_compile_schemas])],
+        [AC_PATH_PROG([GLIB_COMPILE_SCHEMAS], [glib-compile-schemas])])
   AC_SUBST(GLIB_COMPILE_SCHEMAS)
   if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then
     ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2])
Binary files old/mutter-3.30.1/po/sk.gmo and new/mutter-3.30.2/po/sk.gmo differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/po/sk.po new/mutter-3.30.2/po/sk.po
--- old/mutter-3.30.1/po/sk.po  2018-09-04 19:53:56.000000000 +0200
+++ new/mutter-3.30.2/po/sk.po  2018-11-09 14:43:43.000000000 +0100
@@ -13,8 +13,8 @@
 msgstr ""
 "Project-Id-Version: mutter\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n";
-"POT-Creation-Date: 2018-02-06 04:14+0000\n"
-"PO-Revision-Date: 2018-03-17 21:52+0100\n"
+"POT-Creation-Date: 2018-10-22 16:18+0000\n"
+"PO-Revision-Date: 2018-10-27 21:19+0200\n"
 "Last-Translator: Dušan Kazik <[email protected]>\n"
 "Language-Team: Slovak <[email protected]>\n"
 "Language: sk\n"
@@ -22,7 +22,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 2.2\n"
 
 #: data/50-mutter-navigation.xml:6
 msgid "Navigation"
@@ -468,29 +468,26 @@
 "proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
 "mutter default to layout logical monitors in a logical pixel coordinate "
 "space, while scaling monitor framebuffers instead of window content, to "
-"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
-"enables remote desktop support. To support remote desktop with screen "
-"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
-"screen cast support."
+"manage HiDPI monitors. Does not require a restart."
 msgstr ""
 
 # summary
-#: data/org.gnome.mutter.gschema.xml.in:145
+#: data/org.gnome.mutter.gschema.xml.in:141
 msgid "Select window from tab popup"
 msgstr "Vybrať okno z rozbaľovacej ponuky tabulátora"
 
 # summary
-#: data/org.gnome.mutter.gschema.xml.in:150
+#: data/org.gnome.mutter.gschema.xml.in:146
 msgid "Cancel tab popup"
 msgstr "Zrušit rozbaľovaciu ponuku tabulátora"
 
 # PK: predpokladam ze to prepisane medzi tlacidlami
 # description
-#: data/org.gnome.mutter.gschema.xml.in:155
+#: data/org.gnome.mutter.gschema.xml.in:151
 msgid "Switch monitor configurations"
 msgstr "Prepnúť nastavenia monitorov"
 
-#: data/org.gnome.mutter.gschema.xml.in:160
+#: data/org.gnome.mutter.gschema.xml.in:156
 msgid "Rotates the built-in monitor configuration"
 msgstr "Otočí nastavenie vstavaného monitora"
 
@@ -587,7 +584,7 @@
 #. TRANSLATORS: This string refers to a button that switches between
 #. * different modes.
 #.
-#: src/backends/meta-input-settings.c:2260
+#: src/backends/meta-input-settings.c:2310
 #, c-format
 msgid "Mode Switch (Group %d)"
 msgstr "Prepínač režimu (skupina č. %d)"
@@ -597,30 +594,30 @@
 #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
 #. * mapping through the available outputs.
 #.
-#: src/backends/meta-input-settings.c:2283
+#: src/backends/meta-input-settings.c:2333
 msgid "Switch monitor"
 msgstr "Prepnúť monitor"
 
-#: src/backends/meta-input-settings.c:2285
+#: src/backends/meta-input-settings.c:2335
 msgid "Show on-screen help"
 msgstr "Zobraziť pomocníka na obrazovke"
 
-#: src/backends/meta-monitor-manager.c:900
+#: src/backends/meta-monitor-manager.c:888
 msgid "Built-in display"
 msgstr "Vstavaný displej"
 
-#: src/backends/meta-monitor-manager.c:923
+#: src/backends/meta-monitor-manager.c:911
 msgid "Unknown"
 msgstr "Neznámy"
 
-#: src/backends/meta-monitor-manager.c:925
+#: src/backends/meta-monitor-manager.c:913
 msgid "Unknown Display"
 msgstr "Neznámy displej"
 
 #. TRANSLATORS: this is a monitor vendor name, followed by a
 #. * size in inches, like 'Dell 15"'
 #.
-#: src/backends/meta-monitor-manager.c:933
+#: src/backends/meta-monitor-manager.c:921
 #, c-format
 msgid "%s %s"
 msgstr "%s %s"
@@ -634,86 +631,84 @@
 msgstr ""
 "Pre obrazovku č. %i na displeji „%s“ je spustený už iný správca rozloženia."
 
-#: src/core/bell.c:194
+#: src/core/bell.c:254
 msgid "Bell event"
 msgstr "Udalosť zvončeka"
 
-# X window system preloz, napr. system na spravu okien X
-#: src/core/display.c:608
-#, c-format
-msgid "Failed to open X Window System display “%s”\n"
-msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n"
-
 # cmd desc
-#: src/core/main.c:190
+#: src/core/main.c:191
 msgid "Disable connection to session manager"
 msgstr "Zakáže pripojenia k správcovi relácií"
 
 # cmd desc
-#: src/core/main.c:196
+#: src/core/main.c:197
 msgid "Replace the running window manager"
 msgstr "Nahradí bežiaceho správcu okien"
 
 # cmd desc
-#: src/core/main.c:202
+#: src/core/main.c:203
 msgid "Specify session management ID"
 msgstr "Zadá identifikátor správy relácií"
 
-#: src/core/main.c:207
+#: src/core/main.c:208
 msgid "X Display to use"
 msgstr "X displej, ktorý bude použitý"
 
 # cmd desc
-#: src/core/main.c:213
+#: src/core/main.c:214
 msgid "Initialize session from savefile"
 msgstr "Inicializuje reláciu z uloženého súboru"
 
 # cmd desc
-#: src/core/main.c:219
+#: src/core/main.c:220
 msgid "Make X calls synchronous"
 msgstr "Použije synchrónne volania X"
 
 # cmd desc
-#: src/core/main.c:226
+#: src/core/main.c:227
 msgid "Run as a wayland compositor"
 msgstr "Spustí ako kompozitor protokolu wayland"
 
 # cmd desc
-#: src/core/main.c:232
+#: src/core/main.c:233
 msgid "Run as a nested compositor"
 msgstr "Spustí ako kompozitor s vnoreným režimom"
 
-#: src/core/main.c:240
+#: src/core/main.c:239
+msgid "Run wayland compositor without starting Xwayland"
+msgstr ""
+
+#: src/core/main.c:247
 msgid "Run as a full display server, rather than nested"
 msgstr "Spustí ako plnohodnotný zobrazovací server, namiesto vnoreného režimu"
 
-#: src/core/main.c:246
+#: src/core/main.c:253
 msgid "Run with X11 backend"
 msgstr "Spustí s obslužným programom X11"
 
 # %s is a window title
 #. Translators: %s is a window title
-#: src/core/meta-close-dialog-default.c:147
+#: src/core/meta-close-dialog-default.c:148
 #, c-format
 msgid "“%s” is not responding."
 msgstr "„%s“ neodpovedá."
 
-#: src/core/meta-close-dialog-default.c:149
+#: src/core/meta-close-dialog-default.c:150
 msgid "Application is not responding."
 msgstr "Aplikácia neodpovedá."
 
-#: src/core/meta-close-dialog-default.c:154
+#: src/core/meta-close-dialog-default.c:155
 msgid ""
 "You may choose to wait a short while for it to continue or force the "
 "application to quit entirely."
 msgstr ""
 "Môžete chvíľu počkať na pokračovanie aplikácie, alebo ju môžete ukončiť."
 
-#: src/core/meta-close-dialog-default.c:161
+#: src/core/meta-close-dialog-default.c:162
 msgid "_Force Quit"
 msgstr "_Vynútiť ukončenie"
 
-#: src/core/meta-close-dialog-default.c:161
+#: src/core/meta-close-dialog-default.c:162
 msgid "_Wait"
 msgstr "_Počkať"
 
@@ -742,12 +737,21 @@
 msgid "Mutter plugin to use"
 msgstr "Použije zásuvný modul Mutter"
 
-#: src/core/prefs.c:1997
+#: src/core/prefs.c:1787
 #, c-format
 msgid "Workspace %d"
 msgstr "Pracovný priestor č. %d"
 
-#: src/core/screen.c:583
+#: src/core/util.c:120
+msgid "Mutter was compiled without support for verbose mode\n"
+msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
+
+#: src/wayland/meta-wayland-tablet-pad.c:567
+#, c-format
+msgid "Mode Switch: Mode %d"
+msgstr "Prepínač režimu: Režim č. %d"
+
+#: src/x11/meta-x11-display.c:666
 #, c-format
 msgid ""
 "Display “%s” already has a window manager; try using the --replace option to "
@@ -756,21 +760,22 @@
 "Displej „%s“ už má správcu okien. Skúste použiť prepínač --replace, aby sa "
 "aktuálny správca nahradil."
 
-#: src/core/screen.c:668
-#, c-format
-msgid "Screen %d on display “%s” is invalid\n"
-msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n"
+#: src/x11/meta-x11-display.c:1010
+msgid "Failed to initialize GDK\n"
+msgstr "Zlyhala inicializácia rozhrania GDK\n"
 
-#: src/core/util.c:120
-msgid "Mutter was compiled without support for verbose mode\n"
-msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
+# X window system preloz, napr. system na spravu okien X
+#: src/x11/meta-x11-display.c:1034
+#, c-format
+msgid "Failed to open X Window System display “%s”\n"
+msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n"
 
-#: src/wayland/meta-wayland-tablet-pad.c:563
+#: src/x11/meta-x11-display.c:1117
 #, c-format
-msgid "Mode Switch: Mode %d"
-msgstr "Prepínač režimu: Režim č. %d"
+msgid "Screen %d on display “%s” is invalid\n"
+msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n"
 
-#: src/x11/session.c:1818
+#: src/x11/session.c:1819
 msgid ""
 "These windows do not support “save current setup” and will have to be "
 "restarted manually next time you log in."
@@ -779,7 +784,7 @@
 "prihlásení ich budete musieť znovu spustiť ručne."
 
 # window title; wm_client_machine
-#: src/x11/window-props.c:559
+#: src/x11/window-props.c:565
 #, c-format
 msgid "%s (on %s)"
 msgstr "%s (na %s)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/compositor/meta-shaped-texture.c 
new/mutter-3.30.2/src/compositor/meta-shaped-texture.c
--- old/mutter-3.30.1/src/compositor/meta-shaped-texture.c      2018-10-05 
18:06:51.000000000 +0200
+++ new/mutter-3.30.2/src/compositor/meta-shaped-texture.c      2018-11-09 
14:43:43.000000000 +0100
@@ -516,6 +516,7 @@
     }
   else
     {
+      opaque_tex_region = NULL;
       use_opaque_region = FALSE;
     }
 
@@ -659,6 +660,8 @@
         }
     }
 
+  g_clear_pointer (&clip_tex_region, cairo_region_destroy);
+  g_clear_pointer (&opaque_tex_region, cairo_region_destroy);
   g_clear_pointer (&blended_tex_region, cairo_region_destroy);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/core/constraints.c 
new/mutter-3.30.2/src/core/constraints.c
--- old/mutter-3.30.1/src/core/constraints.c    2018-10-08 18:56:05.000000000 
+0200
+++ new/mutter-3.30.2/src/core/constraints.c    2018-11-09 14:43:43.000000000 
+0100
@@ -787,7 +787,7 @@
   MetaPlacementRule *placement_rule;
   MetaRectangle intersection;
   gboolean constraint_satisfied;
-  MetaPlacementRule *current_rule;
+  MetaPlacementRule current_rule;
   MetaWindow *parent;
   MetaRectangle parent_rect;
 
@@ -820,25 +820,24 @@
   if (check_only)
     return constraint_satisfied;
 
-  current_rule = g_new0 (MetaPlacementRule, 1);
-  *current_rule = *placement_rule;
+  current_rule = *placement_rule;
 
   if (constraint_satisfied)
     goto done;
 
   if (info->current.width != intersection.width &&
-      (current_rule->constraint_adjustment &
+      (current_rule.constraint_adjustment &
        META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X))
     {
-      try_flip_window_position (window, info, current_rule,
+      try_flip_window_position (window, info, &current_rule,
                                 META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X,
                                 &info->current, &intersection);
     }
   if (info->current.height != intersection.height &&
-      (current_rule->constraint_adjustment &
+      (current_rule.constraint_adjustment &
        META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y))
     {
-      try_flip_window_position (window, info, current_rule,
+      try_flip_window_position (window, info, &current_rule,
                                 META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y,
                                 &info->current, &intersection);
     }
@@ -852,7 +851,7 @@
   if (constraint_satisfied)
     goto done;
 
-  if (current_rule->constraint_adjustment &
+  if (current_rule.constraint_adjustment &
       META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_X)
     {
       if (info->current.x != intersection.x)
@@ -860,7 +859,7 @@
       else if (info->current.width != intersection.width)
         info->current.x -= info->current.width - intersection.width;
     }
-  if (current_rule->constraint_adjustment &
+  if (current_rule.constraint_adjustment &
       META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_Y)
     {
       if (info->current.y != intersection.y)
@@ -878,13 +877,13 @@
   if (constraint_satisfied)
     goto done;
 
-  if (current_rule->constraint_adjustment &
+  if (current_rule.constraint_adjustment &
       META_PLACEMENT_CONSTRAINT_ADJUSTMENT_RESIZE_X)
     {
       info->current.x = intersection.x;
       info->current.width = intersection.width;
     }
-  if (current_rule->constraint_adjustment &
+  if (current_rule.constraint_adjustment &
       META_PLACEMENT_CONSTRAINT_ADJUSTMENT_RESIZE_Y)
     {
       info->current.y = intersection.y;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/core/window-private.h 
new/mutter-3.30.2/src/core/window-private.h
--- old/mutter-3.30.1/src/core/window-private.h 2018-10-08 18:56:05.000000000 
+0200
+++ new/mutter-3.30.2/src/core/window-private.h 2018-11-13 23:01:21.000000000 
+0100
@@ -82,6 +82,7 @@
   META_MOVE_RESIZE_UNMAXIMIZE = 1 << 6,
   META_MOVE_RESIZE_FORCE_MOVE = 1 << 7,
   META_MOVE_RESIZE_WAYLAND_STATE_CHANGED = 1 << 8,
+  META_MOVE_RESIZE_FORCE_UPDATE_MONITOR = 1 << 9,
 } MetaMoveResizeFlags;
 
 typedef enum
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/core/window.c new/mutter-3.30.2/src/core/window.c
--- old/mutter-3.30.1/src/core/window.c 2018-10-08 18:56:05.000000000 +0200
+++ new/mutter-3.30.2/src/core/window.c 2018-11-13 23:01:21.000000000 +0100
@@ -121,6 +121,7 @@
                                          void       *data);
 
 static void meta_window_move_between_rects (MetaWindow          *window,
+                                            MetaMoveResizeFlags  
move_resize_flags,
                                             const MetaRectangle *old_area,
                                             const MetaRectangle *new_area);
 
@@ -3865,6 +3866,7 @@
        * monitors changed and the same index could be refereing
        * to a different monitor. */
       meta_window_move_between_rects (window,
+                                      META_MOVE_RESIZE_FORCE_UPDATE_MONITOR,
                                       &old->rect,
                                       &new->rect);
     }
@@ -4046,6 +4048,8 @@
   update_monitor_flags = META_WINDOW_UPDATE_MONITOR_FLAGS_NONE;
   if (flags & META_MOVE_RESIZE_USER_ACTION)
     update_monitor_flags |= META_WINDOW_UPDATE_MONITOR_FLAGS_USER_OP;
+  if (flags & META_MOVE_RESIZE_FORCE_UPDATE_MONITOR)
+    update_monitor_flags |= META_WINDOW_UPDATE_MONITOR_FLAGS_FORCE;
 
   if (window->monitor)
     {
@@ -4105,6 +4109,7 @@
 
 static void
 meta_window_move_between_rects (MetaWindow  *window,
+                                MetaMoveResizeFlags  move_resize_flags,
                                 const MetaRectangle *old_area,
                                 const MetaRectangle *new_area)
 {
@@ -4128,7 +4133,12 @@
   window->saved_rect.x = window->unconstrained_rect.x;
   window->saved_rect.y = window->unconstrained_rect.y;
 
-  meta_window_move_resize_now (window);
+  meta_window_move_resize_internal (window,
+                                    move_resize_flags |
+                                    META_MOVE_RESIZE_MOVE_ACTION |
+                                    META_MOVE_RESIZE_RESIZE_ACTION,
+                                    NorthWestGravity,
+                                    window->unconstrained_rect);
 }
 
 /**
@@ -4189,14 +4199,14 @@
       window->unconstrained_rect.height == 0 ||
       !meta_rectangle_overlap (&window->unconstrained_rect, &old_area))
     {
-      meta_window_move_between_rects (window, NULL, &new_area);
+      meta_window_move_between_rects (window, 0, NULL, &new_area);
     }
   else
     {
       if (monitor == window->monitor->number)
         return;
 
-      meta_window_move_between_rects (window, &old_area, &new_area);
+      meta_window_move_between_rects (window, 0, &old_area, &new_area);
     }
 
   window->preferred_output_winsys_id = window->monitor->winsys_id;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/wayland/meta-wayland-text-input.c 
new/mutter-3.30.2/src/wayland/meta-wayland-text-input.c
--- old/mutter-3.30.1/src/wayland/meta-wayland-text-input.c     2018-09-04 
19:53:56.000000000 +0200
+++ new/mutter-3.30.2/src/wayland/meta-wayland-text-input.c     2018-11-09 
14:43:43.000000000 +0100
@@ -70,6 +70,8 @@
   uint32_t content_type_purpose;
   uint32_t text_change_cause;
   gboolean enabled;
+
+  guint done_idle_id;
 };
 
 struct _MetaWaylandTextInputFocus
@@ -114,6 +116,52 @@
                        GUINT_TO_POINTER (serial + 1));
 }
 
+static gboolean
+done_idle_cb (gpointer user_data)
+{
+  ClutterInputFocus *focus = user_data;
+  MetaWaylandTextInput *text_input;
+  struct wl_resource *resource;
+
+  text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
+
+  wl_resource_for_each (resource, &text_input->focus_resource_list)
+    {
+      zwp_text_input_v3_send_done (resource,
+                                   lookup_serial (text_input, resource));
+    }
+
+  text_input->done_idle_id = 0;
+  return G_SOURCE_REMOVE;
+}
+
+static void
+meta_wayland_text_input_focus_defer_done (ClutterInputFocus *focus)
+{
+  MetaWaylandTextInput *text_input;
+
+  text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
+
+  if (text_input->done_idle_id != 0)
+    return;
+
+  /* This operates on 3 principles:
+   * - GDBus uses G_PRIORITY_DEFAULT to put messages in the thread default main
+   *   context.
+   * - All relevant ClutterInputFocus methods are ultimately backed by
+   *   DBus methods inside IBus.
+   * - We want to run .done after them all. The slightly lower
+   *   G_PRIORITY_DEFAULT + 1 priority should ensure we at least group
+   *   all messages seen so far.
+   *
+   * FIXME: .done may be delayed indefinitely if there's a high enough
+   *        priority idle source in the main loop. It's unlikely that
+   *        recurring idles run at this high priority though.
+   */
+  text_input->done_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT + 1,
+                                              done_idle_cb, focus, NULL);
+}
+
 static void
 meta_wayland_text_input_focus_delete_surrounding (ClutterInputFocus *focus,
                                                   guint              cursor,
@@ -127,9 +175,9 @@
   wl_resource_for_each (resource, &text_input->focus_resource_list)
     {
       zwp_text_input_v3_send_delete_surrounding_text (resource, cursor, len);
-      zwp_text_input_v3_send_done (resource,
-                                   lookup_serial (text_input, resource));
     }
+
+  meta_wayland_text_input_focus_defer_done (focus);
 }
 
 static void
@@ -145,9 +193,9 @@
     {
       zwp_text_input_v3_send_preedit_string (resource, NULL, 0, 0);
       zwp_text_input_v3_send_commit_string (resource, text);
-      zwp_text_input_v3_send_done (resource,
-                                   lookup_serial (text_input, resource));
     }
+
+  meta_wayland_text_input_focus_defer_done (focus);
 }
 
 static void
@@ -163,9 +211,9 @@
   wl_resource_for_each (resource, &text_input->focus_resource_list)
     {
       zwp_text_input_v3_send_preedit_string (resource, text, cursor, cursor);
-      zwp_text_input_v3_send_done (resource,
-                                   lookup_serial (text_input, resource));
     }
+
+  meta_wayland_text_input_focus_defer_done (focus);
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/x11/events.c new/mutter-3.30.2/src/x11/events.c
--- old/mutter-3.30.1/src/x11/events.c  2018-10-05 18:06:51.000000000 +0200
+++ new/mutter-3.30.2/src/x11/events.c  2018-11-13 23:01:21.000000000 +0100
@@ -1139,6 +1139,18 @@
 }
 
 static gboolean
+close_display_idle_cb (gpointer user_data)
+{
+  MetaX11Display *x11_display = META_X11_DISPLAY (user_data);
+
+  meta_display_close (x11_display->display,
+                      x11_display->xselectionclear_timestamp);
+  x11_display->display_close_idle = 0;
+
+  return G_SOURCE_REMOVE;
+}
+
+static gboolean
 process_selection_clear (MetaX11Display *x11_display,
                          XEvent         *event)
 {
@@ -1163,8 +1175,13 @@
   meta_verbose ("Got selection clear for on display %s\n",
                 x11_display->name);
 
-  meta_display_close (x11_display->display,
-                      event->xselectionclear.time);
+  /* We can't close a GdkDisplay in an even handler. */
+  if (!x11_display->display_close_idle)
+    {
+      x11_display->xselectionclear_timestamp = event->xselectionclear.time;
+      x11_display->display_close_idle = g_idle_add (close_display_idle_cb, 
x11_display);
+    }
+
   return TRUE;
 }
 
@@ -1818,11 +1835,8 @@
     {
       if (process_selection_clear (x11_display, event))
         {
-          /* This means we called meta_display_unmanage_screen, which
-           * means the MetaDisplay is effectively dead. We don't want
-           * to poke into display->current_time below, since that would
-           * crash, so just directly return. */
-          return TRUE;
+          bypass_gtk = TRUE;
+          goto out;
         }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/x11/meta-x11-display-private.h 
new/mutter-3.30.2/src/x11/meta-x11-display-private.h
--- old/mutter-3.30.1/src/x11/meta-x11-display-private.h        2018-09-04 
19:53:56.000000000 +0200
+++ new/mutter-3.30.2/src/x11/meta-x11-display-private.h        2018-11-13 
23:01:21.000000000 +0100
@@ -92,6 +92,9 @@
   Atom wm_sn_atom;
   guint32 wm_sn_timestamp;
 
+  guint display_close_idle;
+  guint32 xselectionclear_timestamp;
+
   Window wm_cm_selection_window;
 
   Window composite_overlay_window;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/x11/meta-x11-display.c 
new/mutter-3.30.2/src/x11/meta-x11-display.c
--- old/mutter-3.30.1/src/x11/meta-x11-display.c        2018-09-04 
19:53:56.000000000 +0200
+++ new/mutter-3.30.2/src/x11/meta-x11-display.c        2018-11-13 
23:01:21.000000000 +0100
@@ -215,6 +215,12 @@
       x11_display->gdk_display = NULL;
     }
 
+  if (x11_display->display_close_idle)
+    {
+      g_source_remove (x11_display->display_close_idle);
+      x11_display->display_close_idle = 0;
+    }
+
   g_free (x11_display->name);
   x11_display->name = NULL;
 
@@ -1186,6 +1192,9 @@
   x11_display->timestamp_pinging_window = None;
   x11_display->wm_sn_selection_window = None;
 
+  x11_display->display_close_idle = 0;
+  x11_display->xselectionclear_timestamp = 0;
+
   x11_display->last_bell_time = 0;
   x11_display->focus_serial = 0;
   x11_display->server_focus_window = None;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/x11/window-props.c 
new/mutter-3.30.2/src/x11/window-props.c
--- old/mutter-3.30.1/src/x11/window-props.c    2018-10-08 18:55:55.000000000 
+0200
+++ new/mutter-3.30.2/src/x11/window-props.c    2018-11-09 14:43:43.000000000 
+0100
@@ -651,10 +651,7 @@
 
   if (value->type != META_PROP_VALUE_INVALID)
     {
-      g_autofree gchar *title = g_convert (value->v.str, -1,
-                                           "UTF-8", "LATIN1",
-                                           NULL, NULL, NULL);
-      set_window_title (window, title);
+      set_window_title (window, value->v.str);
 
       meta_verbose ("Using WM_NAME for new title of %s: \"%s\"\n",
                     window->desc, window->title);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/mutter-3.30.1/src/x11/xprops.c new/mutter-3.30.2/src/x11/xprops.c
--- old/mutter-3.30.1/src/x11/xprops.c  2018-09-04 19:53:56.000000000 +0200
+++ new/mutter-3.30.2/src/x11/xprops.c  2018-11-09 14:43:43.000000000 +0100
@@ -639,6 +639,7 @@
 {
   char *ret = NULL;
   char **local_list = NULL;
+  const char *charset = NULL;
   int count = 0;
   int res;
 
@@ -649,7 +650,10 @@
   if (count == 0)
     goto out;
 
-  ret = g_strdup (local_list[0]);
+  if (g_get_charset (&charset))
+    ret = g_strdup (local_list[0]);
+  else
+    ret = g_convert (local_list[0], -1, "UTF-8", charset, NULL, NULL, NULL);
 
  out:
   XFreeStringList (local_list);


Reply via email to