| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Update NEWS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Changes in games between fullscreen and windowed modes may trigger
chaotic situations where the buffer and the frame size temporarily
disagree, producing rectangles with negative width/height. This is
usually followed by other updates that bring the pointer constraint
up to date.
This makes cairo panic and return an "error" empty region, which breaks
deeper down when using the region rectangles to apply the pointer
constraint.
If we hit this situation, ignore the frame rectangle, and just go with
the buffer rectangle.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1655>
(cherry picked from commit 98ef6d0d0521b3cfb72153bc427a9bfc86b8d338)
|
|
|
|
|
|
|
| |
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1668>
(cherry picked from commit d439501faf68e8d7adac37ebca519ae832d85987)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After last monitor gets unplugged from the system, hotplug detection may
no longer work on Intel GFX.
This is because we didn't trigger a modeset to disable CRTCs, and i915
requires it to make hotplug detection continue to work [1].
There's no guarantee that DPMS off in DDX also disables CRTCs, so
explicitly disable CRTCs to solve the issue.
[1] https://www.kernel.org/doc/html/latest/gpu/i915.html#hotplug
https://gitlab.freedesktop.org/drm/intel/-/issues/2602
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1561>
(cherry-picked from commit ed87937faf4a327bb27f580939e0d8572f5a6ec3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After last monitor gets unplugged from the system, hotplug detection may
no longer work on Intel GFX.
This is because we didn't trigger a modeset to disable CRTCs, and i915
requires it to make hotplug detection continue to work [1].
Ensure disabled CRTCs are unset and post a modeset to disable them.
[1] https://www.kernel.org/doc/html/latest/gpu/i915.html#hotplug
https://gitlab.freedesktop.org/drm/intel/-/issues/2602
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1561>
(cherry-picked from commit e5b07138f0c8af6ecf5588fafbb61ab97910c379)
|
|
|
|
|
|
|
|
|
|
| |
Extract some boilerplate into new functions for next patch.
No functional change intended.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1561>
(cherry-picked from commit 45a9c386bbc5a7f280cf931661f6d0c6ab78cfc6)
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a test case for
https://gitlab.gnome.org/GNOME/mutter/-/issues/862 that checks that
hiding a dialog where its parent is not yet shown doesn't trigger any
asserts or crashes.
(cherry picked from commit c94d929332d9371646fde15668097c4ea136147c)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1650>
|
|
|
|
|
|
|
|
|
|
|
|
| |
find_focusable_ancestor() may pick an ancestor window which is not
mapped or hidden, and setting focus on that window will fail.
Be a tad more selective when looking for a focusable ancestor, to reduce
the chance of meta_window_focus() not focusing the happy chosen one.
(cherry picked from commit 76d1a64204181f4da82d9614fe59daf350d5dfda)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1650>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The function focus_default_window() optionally takes a MetaWindow
argument denoting a window that should not be focused.
That function calls focus_ancestor_or_top_window() which in turn
calls meta_window_focus() to pass focus to another window.
However meta_window_focus() gives no guarantee that the given window
will end up being the one focused, and can fail in various and creative
ways.
If that fails, we could possibly end up with the focus window being the
one to avoid, while the caller assumes focus was changed, going as far
as asserting that fact like meta_window_unmanage() does.
As a result, mutter may abort simply because meta_window_focus() failed
to set focus on the expected window.
To avoid that issue, check that the focus did not end up on the window
that we explicitly did not want, and if that's the case, simply fallback
to the default focus window.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/862
(cherry picked from commit afa431547b696a82375412a289993a8d0eebdabd)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1650>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To find XWayland output that should be the primary one, iterate through all
XWayland outputs, and compare their geometry to the geometry of the primary
logical monitor.
To avoid possible race conditions (Mutter's monitor configuration already
updated, but Xrandr not yet), set the output both after Randr notifications and
after 'monitors-changed' signal.
https://gitlab.gnome.org/GNOME/mutter/-/issues/1407
Signed-off-by: Aleksandr Mezin <mezin.alexander@gmail.com>
(cherry picked from commit 4f544b63626aa98a0e706c3862def62b41adb628)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1638>
|
| |
|
| |
|
| |
|
|
|
|
| |
Update NEWS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The API allows for invalid barriers to be created; in an X11 session,
this could result in involutary early exit, so guard against those with
soft asserts. These will be logged in the journal as warnings, but will
avoid the crash unless compiled out.
Note that this doesn't fix the bug, it just makes it more detectable.
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1901610
(cherry picked from commit f5949af0bbbb84931382aeabc8dadd2c4e82b8e4)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1613>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
device gets added
Unconditionally setting has_touchscreen to check_touch_mode
when a new device gets added leads to has_touchscreen becoming
false when during runtime e.g. an USB keyboard gets plugged in.
Fix this by setting has_touchscreen to TRUE when check_touch_mode
is TRUE and leaving it alone otherwise.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1506
(cherry picked from commit 6c240dc83b33d26696825c6ee70560e201542fd7)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1610>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
xkb recently gained support for user-specified keymaps, which means we
can no longer assume that the configuration data is necessarily fully
complete or correct; and the configuration language is quite a labyrinth,
so it's easy to get wrong. If setting the keymap fails, leave it in
whatever state it previously had, since that seems preferable to crashing
with a NULL pointer dereference.
Resolves: https://gitlab.gnome.org/GNOME/mutter/-/issues/1555
Signed-off-by: Simon McVittie <smcv@debian.org>
(cherry picked from commit 60f647df8ec5a74bddffcc3a20577a7efcef105c)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1609>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While multiple built-in panels isn't actually supported in any
meaningful manner, if we would ever end up with such a situation, e.g.
due to kernel bugs[0], we shouldn't crash when trying to set an
'external only' without any external monitors.
While we could handle this with more degraded functionality (e.g. don't
support the 'switch' method of monitor configuration at all), handle it
by simply not trying to switch to external-only when there are no,
according to the kernel, external monitors available. This would e.g.
still allow betwene 'mirror-all', and 'linear' switches.
The crash itself was disguised as an arbitrary X11 BadValue error, due
to mutter trying to resize the root window to 0x0, as the monitor
configuration that was applied consisted of zero logical monitors, thus
was effectively empty.
[0] https://bugzilla.redhat.com/show_bug.cgi?id=1896904
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1899260
(cherry picked from commit f6db6cd2032a1c85c137935907fd9e5c756a5f06)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1608>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a sanity check if the cursor is on screen and cursor texture data
is available. This prevents a potential segfault when trying to access
non-existing texture data.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1446
(cherry picked from commit efb577efb0cd23e98caad1544f556cb82130f8e0)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1606>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Users of Debian arm64 (aarch64) report that on at least some GPUs
or screens, after time-based screen blanking has occurred, it is not
possible to unlock the screen. Bisection indicates that this regressed
in commit 209b1ba3, so presumably this is because a refresh rate of 0
is reported while the screen is blanked, leading to the frame clock
pausing forever.
Fixes: 209b1ba3 "clutter/frame-clock: Adapt refresh rate from to frame info"
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1536
Bug-Debian: https://bugs.debian.org/974172
Signed-off-by: Simon McVittie <smcv@debian.org>
(cherry picked from commit 1a1f1eccbaeded8fd42b5157b83e3ab87722f90d)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1602>
|
|
|
|
|
|
|
|
|
|
|
| |
If Xwayland was built with the X Security extension enabled, it should
be safe to use, there is no need to disable it by default from mutter.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1485
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1552
(cherry picked from commit 935d594978693547deb3a3f1cd8b8193daa275ae)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1600>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In case we only have a single view (or there's only one view left to
check and the actor is visible on previous views) we can take a short-
cut, saving a region allocation and some calculations.
While on it, declare float numbers in '.f' style to make them more
recognizable.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1596>
(cherry picked from commit 3b7137cb3595ebf78491966f6ee1037ba9e9b6e1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During seat initialization, we process early libinput events (adding all known
devices) before the seat gets a stage assigned. This causes warnings when trying
to handle the corresponding CLUTTER_DEVICE_ADDED events, as they are sent
stageless.
As it is definitely too soon to have those events sent meaningfully, filter
those events out and instead handle the CLUTTER_DEVICE_ADDED emission for all
known devices after the seat receives an stage. This makes the events guaranteed
to be emitted early in initialization, but not so soon that they can't be
handled yet.
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1549
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1597>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 03c69ed8 ("Do not go past size hints on resize") was meant to
ensure the size hints set by the client would be honored during resize,
as going past those values could cause the window to move on resize.
However, it did so by calling ensure_size_hints_satisfied() which works
with the frame rect rather than the client rect. As a result, the
minimum size enforced would end up being larger than expected with
client-side decorations.
Use meta_window_maybe_apply_size_hints() instead which automatically
adjusts for client size.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1542
(cherry picked from commit 27131198c702d07b43e8bba2d1bf15ffef489ade)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1595>
|
|
|
|
|
|
|
| |
https://gitlab.gnome.org/GNOME/mutter/merge_requests/801#note_676932
(cherry picked from commit 3faea8532c0935ee07ff2fff0517f230aa5d6c0c)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1595>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pango doesn't make it easy but the lists are generally extremely
short and it's worth the effort. Because when they are equal we
can avoid the `clutter_actor_queue_relayout` in
`clutter_text_set_attributes`. This particularly avoids stuttering
when moving the mouse over the gnome-shell calendar (which repeatedly
sets `font-feature-settings: "tnum"` on `calendar-day-base` themed
widgets).
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1411
https://gitlab.gnome.org/GNOME/mutter/merge_requests/983
|
|
|
|
|
|
|
|
|
| |
Because it gets destroyed (unreferenced) immediately after that.
This avoids a deep copy of potentially kilobytes of data.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1572>
(cherry picked from commit 32b68478ede34caee447c9803addedc12a4df6c7)
|
|
|
|
|
|
|
|
|
|
| |
As you should always do. Using the `float` variant even if `scale` is
a `double` as values passed in are potentially computed at `float`
precission.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1565>
(cherry picked from commit 09b1bbb1cf64ec5e90396d4cedd4bbd84df899a1)
|
|
|
|
|
|
|
|
|
| |
This applies the optimizations from 0c55e87d8fb70848e to serveral
similar places in region-utils.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1565>
(cherry picked from commit 91c9416259f744a9f1ae123a1f319943705ff23d)
|
|
|
|
|
|
|
|
|
|
|
| |
Since we schedule frames for each stage view seperately now, surfaces receive
frame callbacks for each stage view they are visible on.
Only emit frame callbacks for the primary stage view.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1468>
(cherry picked from commit c78b03bd50783983e9d0e75882bc8565c42ed509)
|
|
|
|
|
|
|
|
|
| |
Add a simple heuristic how to choose the primary stage view to drive events
like frame callbacks for a given surface actor.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1468>
(cherry picked from commit ff94ed0ebff722d70204964af7a33513713ffd58)
|
|
|
|
|
|
|
|
|
|
|
| |
Our main use case of `is_obscured()` is frame callback emission.
Since we now support stage views running at differt speeds, we
need to know whether an actor is visible on a specific stage view
in order to schedule frame callbacks accordingly.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1468>
(cherry picked from commit 9db09e327c87275d86600b1d510ab5708027ca57)
|
|
|
|
|
|
|
|
| |
We'll need it in a follow-up commit
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1468>
(cherry picked from commit f7cef11515f863c51383e9c6a7a5a1440c95e0fe)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit e28c1ab4 added a hints_have_changed() function to only
recalculate windows features when the WM_NORMAL_HINTS change.
That function hints_have_changed() however was merely checking whether
the various XSizeHints flags where flipped, which is not sufficient
because the hints may remain the same while the actual values are
changed.
Not checking for the actual value differences would prevent some windows
from being able to switch fullscreen.
Improve the helper function hints_have_changed() to check not only for
flags being flipped, but also for the values being changed for each
relevant XSizeHints flags being set currently.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1534
(cherry picked from commit 06e604cfefdd2eb68bc863cb5600d622a1662880)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1574>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sometimes the automatically selected primary GPU isn't suitable with no
way to make an well educated guess to do it better. To make it possible
for the user to override the automatically calculated default, make it
possible to override it using a udev rule.
E.g. to select /dev/dri/card1 as the primary GPU, add a file e.g.
/usr/lib/udev/rules.d/61-mutter-primary-gpu.rules (path my vary
depending on distribution) containing the fellowing line:
ENV{DEVNAME}=="/dev/dri/card1", TAG+="mutter-device-preferred-primary"
Reboot or manual triggering of udev rules to make it take effect may be
required.
Related: https://gitlab.gnome.org/GNOME/mutter/merge_requests/1057
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1562
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1562>
(cherry picked from commit d622960429b2a10bc19d43a8fb56a73f99ecef10)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of aborting with an error, display a half transparent gray
square instead of cursors and log a warning in the journal, allowing the
user to fix their system withotu having to rely on switching to a TTY.
It will be immediately obvious the cursor is silly looking, which will
be a better hint than just aborting.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1428
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1563>
(cherry picked from commit 83360a4aede860d0e6ad5a29ab374fd4f26f3882)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use a typedef for MetaRemoteDesktop, so tests poking MetaBackend don't
indirectly depend upon generated headers. This is arguably a code fix
for a build system bug.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1470
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1449
(or something...)
(cherry picked from commit e0944b6097566dee3a09a919ba49a071e0137f26)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Qt sets window geometry without in the same commit providing actual
content matching it, and relies on the compositor being able to adapt
without a new window geometry on a later commit. Other compositors do
this, so do the same, even though it's not guaranteed according to spec.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1557
(cherry picked from commit f5b44be9f22efd59b34dd8c3a98328306f979eea)
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1559
|
|
|
|
|
|
|
| |
This happens due to Qt doing wierd things, committing incomplete and
incorrect state.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1559
|
|
|
|
|
|
|
|
|
|
|
| |
This is similar to commit b9e5a2d6e23, but for the X11 backend.
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1466
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1495
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1553
(cherry-picked from commit b6211bb6842fd7f88bc4f70f0d268614b85f4b3d)
|
|
|
|
|
|
|
|
|
|
|
|
| |
These devices in x11 are "disabled", that doesn't mean we should refrain
from notifying about them.
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1476
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1496
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1553
(cherry-picked from commit 34710eabc0dc2154d26296f3121728683af4afe6)
|
|
|
|
|
|
|
|
|
| |
If a subsurface is equal to or an ancestor of the parent surface
we currently crash. Check for that case and terminate the client.
Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/1521
(cherry picked from commit 4e9a67acc6e09b012b6034b1928c2cc6ba0cb1bf)
|
|
|
|
|
|
|
|
|
|
|
| |
Monitor tile info is possible to fetch when RANDR version 15 is exposed
by the X11 server. We had inverted the check meaning that only if older
versions were advertised would we attempt to init the tile information.
Fix this guard, thus fix monitor tiling on X11.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1524
(cherry picked from commit 4ecc80fd8025842452262001fc4d6b7047696d4e)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As explained in https://gitlab.gnome.org/GNOME/mutter/-/issues/1494,
with commit 29caa5bea576ed056aa6c82de192426abe6019ae we stopped queueing
a relayout for the parent of the removed actor in
clutter_actor_remove_child_internal(). This relayout was, as opposed to
the relayout in clutter_actor_real_hide()/clutter_actor_real_unmap(),
queued unconditionally without looking at the parents NO_LAYOUT flag.
Now while that relayout in clutter_actor_remove_child_internal() would
do unnecessary work if the parent had the NO_LAYOUT flag set, it did
also queue a redraw of the parent, which is necessary in any case.
So by removing that relayout in clutter_actor_remove_child_internal(),
we stopped queueing redraws for NO_LAYOUT parents when a child gets
removed from the scenegraph. This caused bugs where the texture of the
child would be left visible on the screen even though the child got
destroyed.
To fix this, make sure again that we always queue a redraw on the parent
when unmapping a child.
Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/1494
(cherry picked from commit c88615aac869bf94a0e9ebc372396eabc640c0a3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Not calling libinput dispatch in the backend constructor defeats the
logic in post init as the device added events have not been processed
yet.
So instead of trying to guess the cursor initial visibility, simply
update it along when devices get added.
Additional benefit, we do not need to walk the all device list looking
for touchscreens anymore, we just need to check the device being added
since the current logic is to hide the cursor as soon as a touchscreen
is found.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1534
(cherry picked from commit 9b881729821b360cc6e6f06f37fee0fe9b417a27)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At startup, libinput dispatch is called from the MetaSeatNative
constructed callback.
That means that we may get libinput events even before the default seat
is set.
In turn, processing those events may trigger the use the default seat
while it's still not set yet, and cause a crash of gnome-shell/mutter
at startup.
A simple reproducer for this is to start gnome-shell/mutter with a
tablet connected and the stylus in proximity, the proximity event will
cause gnome-shell/mutter to crash at startup.
To avoid that issue, avoid dispatching libinput events early from the
MetaSeatNative constructed callback, those events will eventually get
processed when the seat and the backend are all setup.
https://gitlab.gnome.org/GNOME/mutter/-/issues/1501
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1534
(cherry picked from commit c618b8a0eb1919219da29934945b303fd0a311ed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 8bdd2aa7 would offset the window position by the difference
between the configured window size and the committed size from the
client to prevent the window from drifting while resizing.
This, however, did not take into account the actual geometry scale, so
when using any scale greater than 1, the window would rapidly drift away
due to that offset.
In order to solve this, we need to make sure we store away the pending
window configuration in the stage coordinate space, in order to not
loose precision. When we then calculate the offset given the result from
the client, it'll use the right scalars, while before, one scalar was in
surface coordinates, while the other in stage coordinates.
https://gitlab.gnome.org/GNOME/mutter/-/issues/1490
(cherry picked from commit eaa6efef56d3a251e864c7064d7c6ad5d1329c78)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise we might run into a use-after-free and crash on (virtual)
device removal:
Invalid read of size 8
at clutter_input_device_get_device_type (clutter-input-device.c:811)
by update_last_device (meta-backend.c:1282)
by g_main_dispatch (gmain.c:3325)
by g_main_context_dispatch (gmain.c:4016)
by g_main_context_iterate.constprop.0 (gmain.c:4092)
by g_main_loop_run (gmain.c:4290)
by meta_run_main_loop (main.c:708)
by meta_run (main.c:723)
by main (main.c:550)
Address is 32 bytes inside a block of size 504 free'd
at free (vg_replace_malloc.c:538)
by g_type_free_instance (gtype.c:1939)
by clutter_event_free (clutter-event.c:1420)
by _clutter_stage_process_queued_events (clutter-stage.c:830)
by handle_frame_clock_before_frame (clutter-stage-view.c:1064)
by clutter_frame_clock_dispatch (clutter-frame-clock.c:405)
by frame_clock_source_dispatch (clutter-frame-clock.c:456)
by g_main_dispatch (gmain.c:3325)
by g_main_context_dispatch (gmain.c:4016)
by g_main_context_iterate.constprop.0 (gmain.c:4092)
by g_main_loop_run (gmain.c:4290)
by meta_run_main_loop (main.c:708)
by meta_run (main.c:723)
Block was alloc'd at
at malloc (vg_replace_malloc.c:307)
by g_malloc (gmem.c:106)
by g_slice_alloc (gslice.c:1025)
by g_slice_alloc0 (gslice.c:1051)
by g_type_create_instance (gtype.c:1839)
by g_object_new_internal (gobject.c:1939)
by g_object_new_valist (gobject.c:2264)
by g_object_new (gobject.c:1782)
by meta_input_device_native_new_virtual (meta-input-device-native.c:1365)
by meta_virtual_input_device_native_constructed (meta-virtual-input-device-native.c:705)
by g_object_new_internal (gobject.c:1979)
by g_object_new_valist (gobject.c:2264)
Suggested-by: Carlos Garnacho <carlosg@gnome.org>
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1529
(cherry picked from commit 8711d8d5914df8e19a907105d9fa7139221f21b4)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Because clones may not have identical geometry to their source actors.
So we can't use the geometry of the source actor to decide to take the
more optimized (more clipped) path.
Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1480
(cherry picked from commit a24b2f4b0fc72ebe262988a14a6fcd58d531e2bb)
|