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, ¤t_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, ¤t_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);
