commit mutter for openSUSE:Factory
Hello community, here is the log from the commit of package mutter for openSUSE:Factory checked in at 2018-07-31 15:55:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mutter (Old) and /work/SRC/openSUSE:Factory/.mutter.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "mutter" Tue Jul 31 15:55:37 2018 rev:130 rq:625068 version:3.28.3+20180719.62660bbd1 Changes: -------- --- /work/SRC/openSUSE:Factory/mutter/mutter.changes 2018-07-12 09:15:31.526112847 +0200 +++ /work/SRC/openSUSE:Factory/.mutter.new/mutter.changes 2018-07-31 15:55:44.999175675 +0200 @@ -1,0 +2,21 @@ +Mon Jul 23 18:36:08 UTC 2018 - bjorn.lie@gmail.com + +- Update to version 3.28.3+20180719.62660bbd1: + + gpu-kms: Don't crash if drmModeGetResources returns NULL. + + Bump version to 3.28.3. + + monitor-manager: Add back warning messages. + + screen-cast-src: Allow negotiating the framerate. + + contraints: Do not constrain modals without parent. + + backends: + - Add logical monitor -> monitor -> output -> crtc ref chain. + - Move MetaOutput::crtc field into private struct. + + renderer-native: Don't crash if the FB surface can't be locked. + + device-manager-evdev: + - Add main seat to seats by default. + - Free the main seat on finalize. + - Set and unset the stage for the main seat too. + + clutter-device-evdev: Get devices from main seat if no real + seat is set. + + clutter-seat-evdev: Add function to get device by id. + +------------------------------------------------------------------- Old: ---- mutter-3.28.2+20180526.abc7ad8e9.tar.xz New: ---- mutter-3.28.3+20180719.62660bbd1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mutter.spec ++++++ --- /var/tmp/diff_new_pack.iu5Vpf/_old 2018-07-31 15:55:45.667176803 +0200 +++ /var/tmp/diff_new_pack.iu5Vpf/_new 2018-07-31 15:55:45.667176803 +0200 @@ -19,7 +19,7 @@ %define mutter_major 2 %define mutter_minor 0 Name: mutter -Version: 3.28.2+20180526.abc7ad8e9 +Version: 3.28.3+20180719.62660bbd1 Release: 0 Summary: Window and compositing manager based on Clutter License: GPL-2.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.iu5Vpf/_old 2018-07-31 15:55:45.691176843 +0200 +++ /var/tmp/diff_new_pack.iu5Vpf/_new 2018-07-31 15:55:45.691176843 +0200 @@ -3,7 +3,7 @@ <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param> <param name="scm">git</param> <param name="revision">gnome-3-28</param> - <param name="versionformat">3.28.2+%cd.%h</param> + <param name="versionformat">3.28.3+%cd.%h</param> <param name="changesgenerate">enable</param> </service> <service mode="disabled" name="recompress"> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.iu5Vpf/_old 2018-07-31 15:55:45.703176864 +0200 +++ /var/tmp/diff_new_pack.iu5Vpf/_new 2018-07-31 15:55:45.703176864 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param> - <param name="changesrevision">abc7ad8e9f67a720516fb739c5dfe4b49748d423</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">62660bbd1526c6135d149df397b2470c6e71969d</param></service></servicedata> \ No newline at end of file ++++++ mutter-3.28.2+20180526.abc7ad8e9.tar.xz -> mutter-3.28.3+20180719.62660bbd1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/NEWS new/mutter-3.28.3+20180719.62660bbd1/NEWS --- old/mutter-3.28.2+20180526.abc7ad8e9/NEWS 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/NEWS 2018-07-19 21:29:03.000000000 +0200 @@ -1,3 +1,16 @@ +3.28.3 +====== +* Handle touch events on server-side titlebars [Carlos; #770185] +* Fix crash with unhandled mouse buttons on titlebars [Olivier; #160] +* Fix Korean Hangul support on wayland [Changwoo; #152] +* Fix crash when taking up from suspend [Jonas; #786929] +* Fix crash with parent-less modal dialogs [Olivier; #174] +* Misc. bug fixes [Olivier, Georges; #83, #112, #150, #104, + +Contributors: + Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Georges Basile Stavracas Neto, + Changwoo Ryu, Marco Trevisan (Treviño) + 3.28.2 ====== * Take inhibitors into account for monitoring idle [Bastien; #705942] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/clutter/clutter/evdev/clutter-device-manager-evdev.c new/mutter-3.28.3+20180719.62660bbd1/clutter/clutter/evdev/clutter-device-manager-evdev.c --- old/mutter-3.28.2+20180526.abc7ad8e9/clutter/clutter/evdev/clutter-device-manager-evdev.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/clutter/clutter/evdev/clutter-device-manager-evdev.c 2018-07-19 21:29:03.000000000 +0200 @@ -793,10 +793,12 @@ if (priv->main_seat->libinput_seat == NULL) seat = priv->main_seat; else - seat = clutter_seat_evdev_new (manager_evdev); + { + seat = clutter_seat_evdev_new (manager_evdev); + priv->seats = g_slist_append (priv->seats, seat); + } clutter_seat_evdev_set_libinput_seat (seat, libinput_seat); - priv->seats = g_slist_append (priv->seats, seat); } device = _clutter_input_device_evdev_new (manager, seat, libinput_device); @@ -919,7 +921,6 @@ ClutterDeviceManagerEvdev *manager_evdev; ClutterDeviceManagerEvdevPrivate *priv; GSList *l; - GSList *device_it; manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); priv = manager_evdev->priv; @@ -927,14 +928,10 @@ for (l = priv->seats; l; l = l->next) { ClutterSeatEvdev *seat = l->data; + ClutterInputDevice *device = clutter_seat_evdev_get_device (seat, id); - for (device_it = seat->devices; device_it; device_it = device_it->next) - { - ClutterInputDevice *device = device_it->data; - - if (clutter_input_device_get_device_id (device) == id) - return device; - } + if (device) + return device; } return NULL; @@ -1967,6 +1964,7 @@ xkb_context_unref (ctx); priv->main_seat = clutter_seat_evdev_new (manager_evdev); + priv->seats = g_slist_append (priv->seats, priv->main_seat); dispatch_libinput (manager_evdev); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/clutter/clutter/evdev/clutter-seat-evdev.c new/mutter-3.28.3+20180719.62660bbd1/clutter/clutter/evdev/clutter-seat-evdev.c --- old/mutter-3.28.2+20180526.abc7ad8e9/clutter/clutter/evdev/clutter-seat-evdev.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/clutter/clutter/evdev/clutter-seat-evdev.c 2018-07-19 21:29:03.000000000 +0200 @@ -858,6 +858,24 @@ g_free (seat); } +ClutterInputDevice * +clutter_seat_evdev_get_device (ClutterSeatEvdev *seat, + gint id) +{ + ClutterInputDevice *device; + GSList *l; + + for (l = seat->devices; l; l = l->next) + { + device = l->data; + + if (clutter_input_device_get_device_id (device) == id) + return device; + } + + return NULL; +} + void clutter_seat_evdev_set_stage (ClutterSeatEvdev *seat, ClutterStage *stage) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/clutter/clutter/evdev/clutter-seat-evdev.h new/mutter-3.28.3+20180719.62660bbd1/clutter/clutter/evdev/clutter-seat-evdev.h --- old/mutter-3.28.2+20180526.abc7ad8e9/clutter/clutter/evdev/clutter-seat-evdev.h 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/clutter/clutter/evdev/clutter-seat-evdev.h 2018-07-19 21:29:03.000000000 +0200 @@ -139,6 +139,9 @@ void clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat); +ClutterInputDevice * clutter_seat_evdev_get_device (ClutterSeatEvdev *seat, + gint id); + ClutterTouchState * clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat, int device_slot); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/configure.ac new/mutter-3.28.3+20180719.62660bbd1/configure.ac --- old/mutter-3.28.2+20180526.abc7ad8e9/configure.ac 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/configure.ac 2018-07-19 21:29:03.000000000 +0200 @@ -2,7 +2,7 @@ m4_define([mutter_major_version], [3]) m4_define([mutter_minor_version], [28]) -m4_define([mutter_micro_version], [2]) +m4_define([mutter_micro_version], [3]) m4_define([mutter_version], [mutter_major_version.mutter_minor_version.mutter_micro_version]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-logical-monitor.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-logical-monitor.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-logical-monitor.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-logical-monitor.c 2018-07-19 21:29:03.000000000 +0200 @@ -100,11 +100,12 @@ derive_monitor_transform (MetaMonitor *monitor) { MetaOutput *main_output; + MetaMonitorTransform transform; main_output = meta_monitor_get_main_output (monitor); + transform = meta_output_get_assigned_crtc (main_output)->transform; - return meta_monitor_crtc_to_logical_transform (monitor, - main_output->crtc->transform); + return meta_monitor_crtc_to_logical_transform (monitor, transform); } MetaLogicalMonitor * @@ -145,7 +146,7 @@ is_presentation = logical_monitor->is_presentation; logical_monitor->monitors = g_list_append (logical_monitor->monitors, - monitor); + g_object_ref (monitor)); for (l = logical_monitor->monitors; l; l = l->next) { @@ -157,10 +158,12 @@ for (l_output = outputs; l_output; l_output = l_output->next) { MetaOutput *output = l_output->data; + MetaCrtc *crtc; is_presentation = is_presentation && output->is_presentation; - if (output->crtc) - output->crtc->logical_monitor = logical_monitor; + crtc = meta_output_get_assigned_crtc (output); + if (crtc) + crtc->logical_monitor = logical_monitor; } } @@ -220,7 +223,7 @@ ForeachCrtcData *data = user_data; data->func (data->logical_monitor, - monitor_crtc_mode->output->crtc, + meta_output_get_assigned_crtc (monitor_crtc_mode->output), data->user_data); return TRUE; @@ -254,13 +257,17 @@ } static void -meta_logical_monitor_finalize (GObject *object) +meta_logical_monitor_dispose (GObject *object) { MetaLogicalMonitor *logical_monitor = META_LOGICAL_MONITOR (object); - g_list_free (logical_monitor->monitors); + if (logical_monitor->monitors) + { + g_list_free_full (logical_monitor->monitors, g_object_unref); + logical_monitor->monitors = NULL; + } - G_OBJECT_CLASS (meta_logical_monitor_parent_class)->finalize (object); + G_OBJECT_CLASS (meta_logical_monitor_parent_class)->dispose (object); } static void @@ -268,7 +275,7 @@ { GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = meta_logical_monitor_finalize; + object_class->dispose = meta_logical_monitor_dispose; } gboolean diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-monitor-manager-dummy.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-monitor-manager-dummy.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-monitor-manager-dummy.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-monitor-manager-dummy.c 2018-07-19 21:29:03.000000000 +0200 @@ -486,7 +486,7 @@ output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; output->is_dirty = TRUE; - output->crtc = crtc; + meta_output_assign_crtc (output, crtc); } } } @@ -531,7 +531,7 @@ continue; } - output->crtc = NULL; + meta_output_unassign_crtc (output); output->is_primary = FALSE; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-monitor-manager.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-monitor-manager.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-monitor-manager.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-monitor-manager.c 2018-07-19 21:29:03.000000000 +0200 @@ -585,6 +585,8 @@ &error)) { g_clear_object (&config); + g_warning ("Failed to use linear monitor configuration: %s", + error->message); g_clear_error (&error); } else @@ -602,6 +604,8 @@ &error)) { g_clear_object (&config); + g_warning ("Failed to use fallback monitor configuration: %s", + error->message); g_clear_error (&error); } else @@ -1041,6 +1045,7 @@ GVariantBuilder crtcs, modes, clones, properties; GBytes *edid; char *edid_file; + MetaCrtc *crtc; int crtc_index; g_variant_builder_init (&crtcs, G_VARIANT_TYPE ("au")); @@ -1134,8 +1139,8 @@ output->tile_info.tile_h)); } - crtc_index = output->crtc ? g_list_index (combined_crtcs, output->crtc) - : -1; + crtc = meta_output_get_assigned_crtc (output); + crtc_index = crtc ? g_list_index (combined_crtcs, crtc) : -1; g_variant_builder_add (&output_builder, "(uxiausauaua{sv})", i, /* ID */ (gint64)output->winsys_id, @@ -2903,11 +2908,7 @@ if (meta_monitor_is_active (monitor) && g_str_equal (connector, meta_monitor_get_connector (monitor))) - { - MetaOutput *main_output = meta_monitor_get_main_output (monitor); - - return main_output->crtc->logical_monitor->number; - } + return meta_monitor_get_logical_monitor (monitor)->number; } return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-monitor.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-monitor.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-monitor.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-monitor.c 2018-07-19 21:29:03.000000000 +0200 @@ -204,10 +204,12 @@ meta_monitor_is_active (MetaMonitor *monitor) { MetaOutput *output; + MetaCrtc *crtc; output = meta_monitor_get_main_output (monitor); + crtc = meta_output_get_assigned_crtc (output); - return output->crtc && output->crtc->current_mode; + return crtc && crtc->current_mode; } gboolean @@ -386,6 +388,21 @@ } static void +meta_monitor_dispose (GObject *object) +{ + MetaMonitor *monitor = META_MONITOR (object); + MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor); + + if (priv->outputs) + { + g_list_free_full (priv->outputs, g_object_unref); + priv->outputs = NULL; + } + + G_OBJECT_CLASS (meta_monitor_parent_class)->dispose (object); +} + +static void meta_monitor_finalize (GObject *object) { MetaMonitor *monitor = META_MONITOR (object); @@ -393,7 +410,6 @@ g_hash_table_destroy (priv->mode_ids); g_list_free_full (priv->modes, (GDestroyNotify) meta_monitor_mode_free); - g_clear_pointer (&priv->outputs, g_list_free); meta_monitor_spec_free (priv->spec); G_OBJECT_CLASS (meta_monitor_parent_class)->finalize (object); @@ -412,6 +428,7 @@ { GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->dispose = meta_monitor_dispose; object_class->finalize = meta_monitor_finalize; } @@ -493,6 +510,7 @@ for (i = 0; i < output->n_modes; i++) { MetaCrtcMode *crtc_mode = output->modes[i]; + MetaCrtc *crtc; MetaMonitorMode *mode; gboolean replace; @@ -526,7 +544,9 @@ if (crtc_mode == output->preferred_mode) monitor_priv->preferred_mode = mode; - if (output->crtc && crtc_mode == output->crtc->current_mode) + + crtc = meta_output_get_assigned_crtc (output); + if (crtc && crtc_mode == crtc->current_mode) monitor_priv->current_mode = mode; } } @@ -545,7 +565,7 @@ monitor_priv->gpu = gpu; - monitor_priv->outputs = g_list_append (NULL, output); + monitor_priv->outputs = g_list_append (NULL, g_object_ref (output)); monitor_priv->winsys_id = output->winsys_id; meta_monitor_generate_spec (monitor); @@ -568,13 +588,15 @@ MetaRectangle *layout) { MetaOutput *output; + MetaCrtc *crtc; output = meta_monitor_get_main_output (monitor); + crtc = meta_output_get_assigned_crtc (output); *layout = (MetaRectangle) { - .x = output->crtc->rect.x, - .y = output->crtc->rect.y, - .width = output->crtc->rect.width, - .height = output->crtc->rect.height + .x = crtc->rect.x, + .y = crtc->rect.y, + .width = crtc->rect.width, + .height = crtc->rect.height }; } @@ -658,7 +680,8 @@ g_warn_if_fail (output->subpixel_order == monitor_tiled->origin_output->subpixel_order); - monitor_priv->outputs = g_list_append (monitor_priv->outputs, output); + monitor_priv->outputs = g_list_append (monitor_priv->outputs, + g_object_ref (output)); } } @@ -764,12 +787,13 @@ { MetaOutput *output = l->data; MetaMonitorCrtcMode *monitor_crtc_mode = &mode->crtc_modes[i]; + MetaCrtc *crtc; + crtc = meta_output_get_assigned_crtc (output); if (monitor_crtc_mode->crtc_mode && - (!output->crtc || - output->crtc->current_mode != monitor_crtc_mode->crtc_mode)) + (!crtc || crtc->current_mode != monitor_crtc_mode->crtc_mode)) return FALSE; - else if (!monitor_crtc_mode->crtc_mode && output->crtc) + else if (!monitor_crtc_mode->crtc_mode && crtc) return FALSE; } @@ -1217,14 +1241,16 @@ for (l = monitor_priv->outputs; l; l = l->next) { MetaOutput *output = l->data; + MetaCrtc *crtc; - if (!output->crtc) + crtc = meta_output_get_assigned_crtc (output); + if (!crtc) continue; - min_x = MIN (output->crtc->rect.x, min_x); - min_y = MIN (output->crtc->rect.y, min_y); - max_x = MAX (output->crtc->rect.x + output->crtc->rect.width, max_x); - max_y = MAX (output->crtc->rect.y + output->crtc->rect.height, max_y); + min_x = MIN (crtc->rect.x, min_x); + min_y = MIN (crtc->rect.y, min_y); + max_x = MAX (crtc->rect.x + crtc->rect.width, max_x); + max_y = MAX (crtc->rect.y + crtc->rect.height, max_y); } *layout = (MetaRectangle) { @@ -1318,10 +1344,14 @@ MetaLogicalMonitor * meta_monitor_get_logical_monitor (MetaMonitor *monitor) { - MetaOutput *output = meta_monitor_get_main_output (monitor); + MetaOutput *output; + MetaCrtc *crtc; + + output = meta_monitor_get_main_output (monitor); + crtc = meta_output_get_assigned_crtc (output); - if (output->crtc) - return output->crtc->logical_monitor; + if (crtc) + return crtc->logical_monitor; else return NULL; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-output.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-output.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-output.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-output.c 2018-07-19 21:29:03.000000000 +0200 @@ -21,7 +21,13 @@ #include "backends/meta-output.h" -G_DEFINE_TYPE (MetaOutput, meta_output, G_TYPE_OBJECT) +typedef struct _MetaOutputPrivate +{ + /* The CRTC driving this output, NULL if the output is not enabled */ + MetaCrtc *crtc; +} MetaOutputPrivate; + +G_DEFINE_TYPE_WITH_PRIVATE (MetaOutput, meta_output, G_TYPE_OBJECT) MetaGpu * meta_output_get_gpu (MetaOutput *output) @@ -29,6 +35,44 @@ return output->gpu; } +void +meta_output_assign_crtc (MetaOutput *output, + MetaCrtc *crtc) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + g_assert (crtc); + + g_set_object (&priv->crtc, crtc); +} + +void +meta_output_unassign_crtc (MetaOutput *output) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + g_clear_object (&priv->crtc); +} + +MetaCrtc * +meta_output_get_assigned_crtc (MetaOutput *output) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + return priv->crtc; +} + +static void +meta_output_dispose (GObject *object) +{ + MetaOutput *output = META_OUTPUT (object); + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + g_clear_object (&priv->crtc); + + G_OBJECT_CLASS (meta_output_parent_class)->dispose (object); +} + static void meta_output_finalize (GObject *object) { @@ -58,5 +102,6 @@ { GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->dispose = meta_output_dispose; object_class->finalize = meta_output_finalize; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-output.h new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-output.h --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-output.h 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-output.h 2018-07-19 21:29:03.000000000 +0200 @@ -64,9 +64,6 @@ MetaGpu *gpu; - /* The CRTC driving this output, NULL if the output is not enabled */ - MetaCrtc *crtc; - /* The low-level ID of this output, used to apply back configuration */ glong winsys_id; char *name; @@ -122,4 +119,11 @@ MetaGpu * meta_output_get_gpu (MetaOutput *output); +void meta_output_assign_crtc (MetaOutput *output, + MetaCrtc *crtc); + +void meta_output_unassign_crtc (MetaOutput *output); + +MetaCrtc * meta_output_get_assigned_crtc (MetaOutput *output); + #endif /* META_OUTPUT_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-screen-cast-stream-src.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-screen-cast-stream-src.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/meta-screen-cast-stream-src.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/meta-screen-cast-stream-src.c 2018-07-19 21:29:03.000000000 +0200 @@ -360,9 +360,9 @@ ":", spa_type->format_video.format, "I", spa_type->video_format.BGRx, ":", spa_type->format_video.size, "R", &SPA_RECTANGLE (width, height), ":", spa_type->format_video.framerate, "F", &SPA_FRACTION (0, 1), - ":", spa_type->format_video.max_framerate, "Fr", &max_framerate, - PROP_RANGE (&min_framerate, - &max_framerate)); + ":", spa_type->format_video.max_framerate, "Fru", &max_framerate, + PROP_RANGE (&min_framerate, + &max_framerate)); pw_stream_add_listener (pipewire_stream, &priv->pipewire_stream_listener, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-cursor-renderer-native.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-cursor-renderer-native.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-cursor-renderer-native.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-cursor-renderer-native.c 2018-07-19 21:29:03.000000000 +0200 @@ -291,6 +291,7 @@ data->in_cursor_renderer_native; MetaCursorRendererNativePrivate *priv = meta_cursor_renderer_native_get_instance_private (cursor_renderer_native); + MetaCrtc *crtc; MetaMonitorTransform transform; ClutterRect scaled_crtc_rect; float scale; @@ -330,6 +331,8 @@ }, }; + crtc = meta_output_get_assigned_crtc (monitor_crtc_mode->output); + if (priv->has_hw_cursor && clutter_rect_intersection (&scaled_crtc_rect, &data->in_local_cursor_rect, @@ -340,7 +343,7 @@ float crtc_cursor_x, crtc_cursor_y; set_crtc_cursor (data->in_cursor_renderer_native, - monitor_crtc_mode->output->crtc, + crtc, data->in_cursor_sprite); gpu_kms = META_GPU_KMS (meta_monitor_get_gpu (monitor)); @@ -350,7 +353,7 @@ crtc_cursor_y = (data->in_local_cursor_rect.origin.y - scaled_crtc_rect.origin.y) * scale; drmModeMoveCursor (kms_fd, - monitor_crtc_mode->output->crtc->crtc_id, + crtc->crtc_id, roundf (crtc_cursor_x), roundf (crtc_cursor_y)); @@ -358,8 +361,7 @@ } else { - set_crtc_cursor (data->in_cursor_renderer_native, - monitor_crtc_mode->output->crtc, NULL); + set_crtc_cursor (data->in_cursor_renderer_native, crtc, NULL); } return TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-gpu-kms.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-gpu-kms.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-gpu-kms.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-gpu-kms.c 2018-07-19 21:29:03.000000000 +0200 @@ -105,8 +105,10 @@ for (l = meta_gpu_get_outputs (gpu); l; l = l->next) { MetaOutput *output = l->data; + MetaCrtc *assigned_crtc; - if (output->crtc == crtc) + assigned_crtc = meta_output_get_assigned_crtc (output); + if (assigned_crtc == crtc) g_array_append_val (connectors_array, output->winsys_id); } @@ -186,8 +188,10 @@ for (l = meta_gpu_get_outputs (gpu); l; l = l->next) { MetaOutput *output = l->data; + MetaCrtc *assigned_crtc; - if (output->crtc == crtc) + assigned_crtc = meta_output_get_assigned_crtc (output); + if (assigned_crtc == crtc) { connected_crtc_found = TRUE; break; @@ -797,6 +801,13 @@ */ drm_resources = drmModeGetResources (kms_fd); + if (!drm_resources) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "No resources"); + meta_launcher_close_restricted (launcher, kms_fd); + return NULL; + } + n_connectors = drm_resources->count_connectors; drmModeFreeResources (drm_resources); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-monitor-manager-kms.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-monitor-manager-kms.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-monitor-manager-kms.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-monitor-manager-kms.c 2018-07-19 21:29:03.000000000 +0200 @@ -188,7 +188,7 @@ MetaOutput *output = g_ptr_array_index (crtc_info->outputs, j); output->is_dirty = TRUE; - output->crtc = crtc; + meta_output_assign_crtc (output, crtc); } } @@ -249,7 +249,7 @@ continue; } - output->crtc = NULL; + meta_output_unassign_crtc (output); output->is_primary = FALSE; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-output-kms.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-output-kms.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-output-kms.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-output-kms.c 2018-07-19 21:29:03.000000000 +0200 @@ -64,11 +64,13 @@ void meta_output_kms_set_underscan (MetaOutput *output) { - if (!output->crtc) + MetaCrtc *crtc; + + crtc = meta_output_get_assigned_crtc (output); + if (!crtc) return; - meta_crtc_kms_set_underscan (output->crtc, - output->is_underscanning); + meta_crtc_kms_set_underscan (crtc, output->is_underscanning); } void @@ -600,14 +602,14 @@ if (crtc->crtc_id == output_kms->current_encoder->crtc_id) { - output->crtc = crtc; + meta_output_assign_crtc (output, crtc); break; } } } else { - output->crtc = NULL; + meta_output_unassign_crtc (output); } if (old_output) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-renderer-native.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-renderer-native.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/native/meta-renderer-native.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/native/meta-renderer-native.c 2018-07-19 21:29:03.000000000 +0200 @@ -1601,6 +1601,12 @@ /* Now we need to set the CRTC to whatever is the front buffer */ next_bo = gbm_surface_lock_front_buffer (gbm_surface); + if (!next_bo) + { + g_error ("Impossible to lock surface front buffer: %m"); + return FALSE; + } + for (i = 0; i < gbm_bo_get_plane_count (next_bo); i++) { strides[i] = gbm_bo_get_stride_for_plane (next_bo, i); @@ -2083,6 +2089,7 @@ EGLDisplay egl_display = renderer_gpu_data->egl_display; MetaMonitor *monitor; MetaOutput *output; + MetaCrtc *crtc; EGLConfig egl_config; EGLStreamKHR egl_stream; EGLSurface egl_surface; @@ -2106,6 +2113,7 @@ monitor = meta_logical_monitor_get_monitors (logical_monitor)->data; output = meta_monitor_get_main_output (monitor); + crtc = meta_output_get_assigned_crtc (output); /* * An "logical_monitor" may have multiple outputs/crtcs in case its tiled, @@ -2113,7 +2121,7 @@ * lets pass the first one. */ output_attribs[0] = EGL_DRM_CRTC_EXT; - output_attribs[1] = output->crtc->crtc_id; + output_attribs[1] = crtc->crtc_id; output_attribs[2] = EGL_NONE; if (!meta_egl_get_output_layers (egl, egl_display, @@ -2711,12 +2719,10 @@ { MetaMonitor *main_monitor; MetaOutput *main_output; - MetaMonitorTransform crtc_transform; + MetaCrtc *crtc; main_monitor = meta_logical_monitor_get_monitors (logical_monitor)->data; main_output = meta_monitor_get_main_output (main_monitor); - crtc_transform = - meta_monitor_logical_to_crtc_transform (main_monitor, - logical_monitor->transform); + crtc = meta_output_get_assigned_crtc (main_output); /* * Pick any monitor and output and check; all CRTCs of a logical monitor will @@ -2724,11 +2730,11 @@ */ if (meta_monitor_manager_is_transform_handled (monitor_manager, - main_output->crtc, - crtc_transform)) + crtc, + crtc->transform)) return META_MONITOR_TRANSFORM_NORMAL; else - return crtc_transform; + return crtc->transform; } static MetaRendererView * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/meta-monitor-manager-xrandr.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/meta-monitor-manager-xrandr.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/meta-monitor-manager-xrandr.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/meta-monitor-manager-xrandr.c 2018-07-19 21:29:03.000000000 +0200 @@ -225,8 +225,10 @@ for (j = 0; j < crtc_info->outputs->len; j++) { MetaOutput *output = ((MetaOutput**) crtc_info->outputs->pdata)[j]; + MetaCrtc *assigned_crtc; - if (output->crtc != crtc) + assigned_crtc = meta_output_get_assigned_crtc (output); + if (assigned_crtc != crtc) return TRUE; } @@ -243,6 +245,7 @@ MetaOutputInfo **output_infos, unsigned int n_output_infos) { + MetaCrtc *assigned_crtc; gboolean output_is_found = FALSE; unsigned int i; @@ -265,8 +268,10 @@ output_is_found = TRUE; } + assigned_crtc = meta_output_get_assigned_crtc (output); + if (!output_is_found) - return output->crtc != NULL; + return assigned_crtc != NULL; for (i = 0; i < n_crtc_infos; i++) { @@ -279,7 +284,7 @@ ((MetaOutput**) crtc_info->outputs->pdata)[j]; if (crtc_info_output == output && - crtc_info->crtc == output->crtc) + crtc_info->crtc == assigned_crtc) return FALSE; } } @@ -455,7 +460,7 @@ output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; output->is_dirty = TRUE; - output->crtc = crtc; + meta_output_assign_crtc (output, crtc); output_ids[j] = output->winsys_id; } @@ -521,7 +526,7 @@ continue; } - output->crtc = NULL; + meta_output_unassign_crtc (output); output->is_primary = FALSE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/meta-output-xrandr.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/meta-output-xrandr.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/meta-output-xrandr.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/meta-output-xrandr.c 2018-07-19 21:29:03.000000000 +0200 @@ -97,10 +97,13 @@ * make the border configurable. */ if (underscanning) { + MetaCrtc *crtc; uint32_t border_value; + crtc = meta_output_get_assigned_crtc (output); + prop = XInternAtom (xdisplay, "underscan hborder", False); - border_value = output->crtc->current_mode->width * 0.05; + border_value = crtc->current_mode->width * 0.05; xcb_randr_change_output_property (XGetXCBConnection (xdisplay), (XID) output->winsys_id, @@ -109,7 +112,7 @@ 1, &border_value); prop = XInternAtom (xdisplay, "underscan vborder", False); - border_value = output->crtc->current_mode->height * 0.05; + border_value = crtc->current_mode->height * 0.05; xcb_randr_change_output_property (XGetXCBConnection (xdisplay), (XID) output->winsys_id, @@ -737,14 +740,14 @@ } output->n_possible_crtcs = n_actual_crtcs; - output->crtc = NULL; + meta_output_unassign_crtc (output); for (l = meta_gpu_get_crtcs (gpu); l; l = l->next) { MetaCrtc *crtc = l->data; if ((XID) crtc->crtc_id == xrandr_output->crtc) { - output->crtc = crtc; + meta_output_assign_crtc (output, crtc); break; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/meta-stage-x11-nested.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/meta-stage-x11-nested.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/meta-stage-x11-nested.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/meta-stage-x11-nested.c 2018-07-19 21:29:03.000000000 +0200 @@ -113,7 +113,7 @@ CoglTexture *texture = data->texture; MetaLogicalMonitor *logical_monitor = data->logical_monitor; MetaOutput *output = monitor_crtc_mode->output; - MetaCrtc *crtc = output->crtc; + MetaCrtc *crtc; MetaRendererView *renderer_view = META_RENDERER_VIEW (data->view); MetaMonitorTransform view_transform; MetaMonitorTransform layout_transform = META_MONITOR_TRANSFORM_NORMAL; @@ -129,6 +129,8 @@ texture_width = cogl_texture_get_width (texture); texture_height = cogl_texture_get_height (texture); + crtc = meta_output_get_assigned_crtc (output); + clutter_stage_view_get_layout (data->view, &view_layout); sample_x = crtc->rect.x - view_layout.x; sample_y = crtc->rect.y - view_layout.y; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/nested/meta-renderer-x11-nested.c new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/nested/meta-renderer-x11-nested.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/backends/x11/nested/meta-renderer-x11-nested.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/backends/x11/nested/meta-renderer-x11-nested.c 2018-07-19 21:29:03.000000000 +0200 @@ -50,24 +50,22 @@ { MetaMonitor *main_monitor; MetaOutput *main_output; - MetaMonitorTransform crtc_transform; + MetaCrtc *crtc; + main_monitor = meta_logical_monitor_get_monitors (logical_monitor)->data; main_output = meta_monitor_get_main_output (main_monitor); - crtc_transform = - meta_monitor_logical_to_crtc_transform (main_monitor, - logical_monitor->transform); - + crtc = meta_output_get_assigned_crtc (main_output); /* * Pick any monitor and output and check; all CRTCs of a logical monitor will * always have the same transform assigned to them. */ if (meta_monitor_manager_is_transform_handled (monitor_manager, - main_output->crtc, - crtc_transform)) + crtc, + crtc->transform)) return META_MONITOR_TRANSFORM_NORMAL; else - return crtc_transform; + return crtc->transform; } static MetaRendererView * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/core/constraints.c new/mutter-3.28.3+20180719.62660bbd1/src/core/constraints.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/core/constraints.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/core/constraints.c 2018-07-19 21:29:03.000000000 +0200 @@ -886,7 +886,8 @@ MetaRectangle child_rect, parent_rect; gboolean constraint_already_satisfied; - if (!meta_window_is_attached_dialog (window) || + if (!parent || + !meta_window_is_attached_dialog (window) || meta_window_get_placement_rule (window)) return TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/tests/meta-monitor-manager-test.c new/mutter-3.28.3+20180719.62660bbd1/src/tests/meta-monitor-manager-test.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/tests/meta-monitor-manager-test.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/tests/meta-monitor-manager-test.c 2018-07-19 21:29:03.000000000 +0200 @@ -209,7 +209,7 @@ output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; output->is_dirty = TRUE; - output->crtc = crtc; + meta_output_assign_crtc (output, crtc); } } } @@ -255,7 +255,7 @@ continue; } - output->crtc = NULL; + meta_output_unassign_crtc (output); output->is_primary = FALSE; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-3.28.2+20180526.abc7ad8e9/src/tests/monitor-unit-tests.c new/mutter-3.28.3+20180719.62660bbd1/src/tests/monitor-unit-tests.c --- old/mutter-3.28.2+20180526.abc7ad8e9/src/tests/monitor-unit-tests.c 2018-05-26 15:26:09.000000000 +0200 +++ new/mutter-3.28.3+20180719.62660bbd1/src/tests/monitor-unit-tests.c 2018-07-19 21:29:03.000000000 +0200 @@ -449,22 +449,24 @@ CheckMonitorModeData *data = user_data; MetaMonitorManager *monitor_manager = data->monitor_manager; MetaOutput *output; + MetaCrtc *crtc; output = output_from_winsys_id (monitor_manager, data->expect_crtc_mode_iter->output); + crtc = meta_output_get_assigned_crtc (output); if (data->expect_crtc_mode_iter->crtc_mode == -1) { - g_assert_null (output->crtc); + g_assert_null (crtc); } else { MetaLogicalMonitor *logical_monitor; - g_assert_nonnull (output->crtc); - g_assert (monitor_crtc_mode->crtc_mode == output->crtc->current_mode); + g_assert_nonnull (crtc); + g_assert (monitor_crtc_mode->crtc_mode == crtc->current_mode); - logical_monitor = output->crtc->logical_monitor; + logical_monitor = crtc->logical_monitor; g_assert_nonnull (logical_monitor); } @@ -553,6 +555,7 @@ for (l_output = outputs; l_output; l_output = l_output->next) { MetaOutput *output = l_output->data; + MetaCrtc *crtc; if (output->is_primary) { @@ -560,8 +563,8 @@ primary_output = output; } - g_assert (!output->crtc || - output->crtc->logical_monitor == logical_monitor); + crtc = meta_output_get_assigned_crtc (output); + g_assert (!crtc || crtc->logical_monitor == logical_monitor); g_assert_cmpint (logical_monitor->is_presentation, ==, output->is_presentation); @@ -983,7 +986,8 @@ output = g_object_new (META_TYPE_OUTPUT, NULL); - output->crtc = crtc; + if (crtc) + meta_output_assign_crtc (output, crtc); output->winsys_id = i; output->name = (is_laptop_panel ? g_strdup_printf ("eDP-%d", ++n_laptop_panels)
participants (1)
-
root