~ubuntu-desktop/ubuntu/+source/mutter:upstream/3.34.x

Last commit made on 2020-01-06
Get this branch:
git clone -b upstream/3.34.x https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/mutter
Members of Ubuntu Desktop can upload to this branch. Log in for directions.

Branch merges

Branch information

Name:
upstream/3.34.x
Repository:
lp:~ubuntu-desktop/ubuntu/+source/mutter

Recent commits

60716ac... by Iain Lane

New upstream version 3.34.3

4947e8a... by =?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>

Bump version to 3.34.3

Update NEWS.

5724310... by Sebastian Keller <email address hidden>

clutter/stage: Fix picking of rectangles with negative positions

FLT_MIN is the smallest *positive* number above 0 that can be
represented as floating point number. If this is used to initialize the
maximum x/y coordinates of a rectangle, this will always be used if all
x/y coordinates of the rectangle are negative. This means that picking
at 0,0 will always be a hit for such rectangles.

Since mutter creates such a window for server side decorations on X11,
this window will always be picked at 0,0 preventing clicking/hovering
the activities button in gnome-shell at that coordinate.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/893

(cherry picked from commit 674f52ba747b59a7e72a4a18fea763ee9e617b7c)

9772f08... by Pascal Nowack

screen-cast: Fix window recording on HiDPI

Using the same scale for the window as the
logical monitor only works correctly when having
the experimental 'scale-monitor-framebuffer'
feature enabled.
Without this experimental feature, the stream
will contain a black screen, where the actual
window only takes a small part of it.

Therefore, use a scale of 1 for the non-
experimental case.

Patch is based on commit 3fa6a92cc5dda6ab3939c3e982185f6caf453360.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/976

(cherry picked from commit e89cea8e5a9c944919cc0632b88bd68432778806)

068753f... by Simon McVittie

New upstream version 3.34.2

8b087cf... by =?utf-8?q?Florian_M=C3=BCllner?= <email address hidden>

Bump version to 3.34.2

Update NEWS.

c05328f... by Bruce Cowan

Update British English translation

868a617... by Tim Crawford

backends/native: Fix double free of error

error is an autoptr, so must not be explicitly freed.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1852
Fixes: 5c500ad402194 ("backend: Move GPU ownership from the monitor manager to the backend")

https://gitlab.gnome.org/GNOME/mutter/merge_requests/960

(cherry picked from commit d70ddc65ea923d14dfa8f5b1f486455e6b6234b6)

6f02d2e... by Pekka Paalanen <email address hidden>

kms-impl/simple: Fix meta_set_fallback_feedback_idle

Presumably this function is supposed to be like
meta_kms_impl_simple_handle_page_flip_callback() but the condition in the
if-statement is inverted. Fix the inversion to make these two functions look
alike.

This is part 2 of 2 fixing a complete desktop freeze when drmModePageFlip()
fails with EINVAL and the fallback to drmModeSetCrtc() succeeds but the success
is not registered correctly as completed "flip". The freeze occurs under
wait_for_pending_flips() which calls down into meta_kms_impl_device_dispatch()
which ends up poll()'ing the DRM fd even though drmModeSetCrtc() will not
produce a DRM event, hence the poll() never returns. The freeze was observed
when hotplugging a DisplayLink dock for the first time on Ubuntu 19.10.

This patch makes meta_set_fallback_feedback_idle() actually end up calling into
notify_view_crtc_presented() which decrements
secondary_gpu_state->pending_flips so that wait_for_pending_flips() can finish.

CC stable: gnome-3-34

https://gitlab.gnome.org/GNOME/mutter/merge_requests/953
(cherry picked from commit 832a522cce4a40a520d21b1c67472a6e4d2ea382)

fc77efb... by Pekka Paalanen <email address hidden>

kms: Process impl idle callbacks before pre dispatch flush

mode_set_fallback() schedules a call to mode_set_fallback_feedback_idle(), but
it is possible for Mutter to repaint before the idle callbacks are dispatched.
If that happens, mode_set_fallback_feedback_idle() does not get called before
Mutter enters wait_for_pending_flips(), leading to a deadlock.

Add the needed interfaces so that meta_kms_device_dispatch_sync() can flush all
the implementation idle callbacks before it checks if any "events" are
available. This prevents the deadlock by ensuring
mode_set_fallback_feedback_idle() does get called before potentially waiting
for actual DRM events.

Presumably this call would not be needed if the implementation was running in
its own thread, since it would eventually dispatch its idle callbacks before
going to sleep polling on the DRM fd. This call might even be unnecessary
overhead in that case, synchronizing with the implementation thread needlessly.
But the thread does not exist yet, so this is needed for now.

This is part 1 of 2 fixing a complete desktop freeze when drmModePageFlip()
fails with EINVAL and the fallback to drmModeSetCrtc() succeeds but the success
is not registered correctly as completed "flip". The freeze occurs under
wait_for_pending_flips() which calls down into meta_kms_impl_device_dispatch()
which ends up poll()'ing the DRM fd even though drmModeSetCrtc() will not
produce a DRM event, hence the poll() never returns. The freeze was observed
when hotplugging a DisplayLink dock for the first time on Ubuntu 19.10.

CC stable: gnome-3-34

https://gitlab.gnome.org/GNOME/mutter/merge_requests/953
(cherry picked from commit 79491df2b8d90af3011d6a3a29b0d63ad52677f8)