Sebastian Keller
81de2c2913
backends/x11: Fix use after free on device removal
...
The devices_by_id hash table is responsible for managing the reference
to the devices. In remove_device however, for non-core devices there are
additional calls to dispose/unref, after the last reference has
already been dropped by the hash table.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1032
2020-02-01 15:35:49 +00:00
Carlos Garnacho
ffad55c66f
wayland: Handle dragging from/dropping to v1 data device users
...
Interoperation between wl_data_device_manager v1 and v3 got broken
at some point. Ensure that we resort to the "copy" action if either
the drop site or the drag source are from a client that requested v1.
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/965
2020-02-01 15:14:52 +00:00
Sebastian Keller
2212a44cc2
clutter/actor: Fix GValue leak when overwriting transition values
...
When the 'initial'/'final' values of an existing transition were being
overwritten, the GValues used in _clutter_actor_create_transition()
were not being unset.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1033
2020-02-01 15:00:15 +00:00
Sebastian Keller
98040e67a2
core: Fix task leak in meta_selection_source_memory_read_async
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
e7928ce6ee
selection: Fix task leak in error case of source_read_cb
...
Fixes the last part of https://gitlab.gnome.org/GNOME/mutter/issues/1006
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
b41094ef5f
x11-selection: Unref owners and cancellables on shutdown
...
Selection owners are set using g_set_object in source_new_cb, but that
reference is never removed on shutdown.
Similarly the cancellables created in handle_xfixes_selection_notify are
never freed on shutdown.
Fixes parts of https://gitlab.gnome.org/GNOME/mutter/issues/1006
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
d699c80ac2
display: Unref selection on shutdown
...
Otherwise it will be leaked and the dispose method added in the previous
commit would never be run.
Fixes parts of https://gitlab.gnome.org/GNOME/mutter/issues/1006
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
35316a034f
selection: Unref selection owners on dispose
...
Selection owners are set using g_set_object, which adds a reference to
the owner, which then never was removed on shutdown.
Fixes parts of https://gitlab.gnome.org/GNOME/mutter/issues/1006
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
c05019e232
x11-selection: Don't store copies of strings that are not being used
...
MetaX11SelectionOutputStream was storing copies of strings only to use
them in init and then free them in finalize. This was also causing a
small leak, because one of these strings was not freed. Instead of doing
that just don't create these unnecessary copies in the first place.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
861e5caf8c
x11-selection: Plug potential GInputStream leak
...
The stream was not freed in the error case. I have never observed this
one in practice though.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
8e6821bc65
x11-selection: Plug MetaSelectionSourceX11 leak
...
meta_selection_source_x11_new_finish() transfers the ownership of the
selection source, but source_new_cb() was not freeing it.
Fixes https://gitlab.gnome.org/GNOME/mutter/issues/998
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Sebastian Keller
05301d280c
clipboard-manager: Plug mimetypes list leak
...
Fixes https://gitlab.gnome.org/GNOME/mutter/issues/1005
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1001
2020-02-01 14:02:19 +00:00
Adam Jackson
c1bdaba5ac
cogl: Inline cogl_use_program into its one caller
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
640ad4718e
cogl: Inline _cogl_framebuffer_remove_all_dependencies into its one caller
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
985b3b32ce
cogl: Remove unused _cogl_pipeline_get_layers
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
795491c80a
cogl: Remove unused cogl_program_use and friends
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
f5e2310dc7
cogl: Remove unused _cogl_framebuffer_set_clip_stack
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
c5a936e0e8
cogl: Remove unused _cogl_framebuffer_{push,pop}_projection
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
600dd155ce
cogl: Remove unused p-axis texture wrap mode
...
Unused since removing 3D textures.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
99043e2af2
cogl: Mark _cogl_buffer_access_to_gl_enum static
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
e0d2e1096d
cogl: Remove unused _cogl_framebuffer_try_creating_gl_fbo
...
Unused since the cogl-gles2 removal in 7e8a8649
.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Adam Jackson
136c09585d
cogl: Remove unused cogl.symbols
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1015
2020-01-31 17:26:25 +00:00
Robert Mader
15b46a6f88
wayland/data-device: Small style fixes
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1031
2020-01-31 12:13:02 +01:00
Robert Mader
c27fc3537b
wayland/data-device: Guard against a potential crash
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1031
2020-01-31 12:13:02 +01:00
Robert Mader
6cc748cce9
wayland/data-device: Cancel drag source when the drag finished unsuccessfully
...
When a drag was performed but did not finish successfully, e.g. because no
mimetype was accepted, we need to send the source cancel event so clients
know they can destroy the drag source (since version 3).
Fixes https://gitlab.gnome.org/GNOME/mutter/issues/740
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1031
2020-01-31 12:13:02 +01:00
Sebastian Keller
afd645193a
backends/native: Use proper method for getting core idle monitor
...
e9fbbd5853
changed meta_backend_get_idle_monitor() to use
ClutterInputDevice pointers instead of device IDs, but did not adjust
the call in meta_backend_native_resume() which was still using 0 to get
the core idle monitor resulting in a NULL pointer dereference.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1029
2020-01-30 22:19:49 +00:00
Sebastian Keller
09af21cd0b
clutter: Fix input device node path leak
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1030
2020-01-30 22:28:56 +01:00
Daniel van Vugt
2731be6929
clutter/actor: Use the new shallow relayout API
...
If an actor sets flag `CLUTTER_ACTOR_NO_LAYOUT` then that means it
is (or should be) unaffected by `queue_relayout` calls in its children.
So we can avoid propagating `queue_relayout` all the way up to the stage
and avoid a full stage relayout each time.
But those children whose parent has `CLUTTER_ACTOR_NO_LAYOUT` still need
to be allocated at some point. So we do it at the same point where it
happened before. Only we now queue a *shallow* relayout so the `allocate`
run on the next frame doesn't need to descend the whole actor tree anymore.
Only a subtree and hopefully very small.
For free-floating and top-level actors this provides a measurable
performance benefit. According to Google Profiler, calls to
`_clutter_stage_maybe_relayout` are now so cheap that they no longer show
up in performance profiles.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/575
2020-01-30 18:31:24 +00:00
Daniel van Vugt
5257c6ecc2
clutter/stage: Add an API for shallow relayouts
...
Where "shallow" means you can specify any actor instead of every relayout
having to start from the stage.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/575
2020-01-30 18:31:24 +00:00
Carlos Garnacho
5723bd8ec7
backends: Use latest pointer position if no pointer constrain exists
...
The meta_seat_native_constrain_pointer() function receives the current
pointer position, and the new pointer position as in/out parameters.
We were however calculating the new coordinates based on the last pointer
position if there was no pointer constrain in place.
Fortunately to us, this didn't use to happen often/ever, as a pointer
constrain function is set on MetaBackend initialization. This behavior
did also exist previously in MetaDeviceManagerNative.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1028
2020-01-30 18:57:18 +01:00
Carlos Garnacho
1e9682b417
backends: Move warp_pointer() to ClutterSeat
...
The onscreen pointer sprite is a per-seat element, so it makes sense
to move pointer warping over there too.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:12:58 +01:00
Carlos Garnacho
9da275cf73
backends: Set pointer constrain/relative motion hooks before backend init
...
The backend being initialized triggers a pointer warp (and motion event)
where we want to observe the callbacks put in place. So ensure we set
up the hooks before that could happen.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:12:58 +01:00
Carlos Garnacho
f1d4d687f3
backends: Drop get_relative_motion_deltas() vfunc
...
Just go ATM through backend checks, and looking up directly the
native event data, pretty much like the rest of the places do that...
Eventually would be nice to have this information in ClutterEvent,
but let's not have it clutter the MetaBackend class.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:11:37 +01:00
Carlos Garnacho
e9fbbd5853
backends: Do not use device IDs on idle monitors
...
Device IDs are somewhat x11 specific, seems better to avoid those
on public API. We can rely everywhere on ClutterInputDevice, so use
it instead.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:11:23 +01:00
Carlos Garnacho
d3160d095d
clutter: Drop ClutterDeviceManager
...
This is mostly replaced by ClutterSeat, which offers a per-seat instead
of a global device abstraction.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:11:23 +01:00
Carlos Garnacho
873449d0f9
tests: Replace ClutterDeviceManager usage in favor of ClutterSeat
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:11:23 +01:00
Carlos Garnacho
4413b86a30
backends: Replace ClutterDeviceManager usage in favor of ClutterSeat
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:11:23 +01:00
Carlos Garnacho
f8fa86f9db
clutter: Replace ClutterDeviceManager usage in favor of ClutterSeat
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:11:23 +01:00
Carlos Garnacho
f55d4f33af
backends: Make meta_backend_update_last_device() take a clutter device
...
Instead of a pretty x11 specific device ID. This also updates the argument
of the ::last-device-changed signal to be a ClutterInputDevice.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:34 +01:00
Carlos Garnacho
4761c4ee1c
backends: Move native keymap manipulation functions to MetaSeatNative
...
Since the ClutterKeymap is obtained through the ClutterSeat, it makes
sense to have these manipulation functions in the ClutterSeat impl.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:34 +01:00
Carlos Garnacho
7644ddeddc
core: Replace ClutterDeviceManager usage in favor of ClutterSeat
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:34 +01:00
Carlos Garnacho
6dfd2ffcef
wayland: Replace ClutterDeviceManager usage in favor of ClutterSeat
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:34 +01:00
Carlos Garnacho
835f12043e
clutter: Drop select_stage_events() device manager vfunc
...
This is specific to X11, so handle it within the X11 backend.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:34 +01:00
Carlos Garnacho
7afbc01fe8
clutter: Move motion compression handling to ClutterSeat
...
Another responsibility taken away from ClutterDeviceManager
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:31 +01:00
Carlos Garnacho
1c689b83f9
clutter: Move virtual device management to ClutterSeat
...
A11y in general may be considered a per-seat feature.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:02:14 +01:00
Carlos Garnacho
8d0527f674
clutter: Move pointer a11y from ClutterDeviceManager to ClutterSeat
...
A11y in general may be considered a per-seat feature.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:01:53 +01:00
Carlos Garnacho
bc7ba8c875
clutter: Move keyboard a11y from ClutterDeviceManager to ClutterSeat
...
A11y in general may be considered a per-seat feature.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 18:01:50 +01:00
Carlos Garnacho
34ce39f8dc
clutter: Move platform event data management to ClutterSeat
...
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 17:59:47 +01:00
Carlos Garnacho
9be4f98c73
clutter: Move keymap from ClutterBackend to ClutterSeat
...
Keymaps are a per-seat feature, so move it there.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 17:59:47 +01:00
Carlos Garnacho
1fc021c3c6
clutter: Move bell_notify() from ClutterBackend to ClutterSeat
...
Bells can be considered to be a per-seat feature, so move it there.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
2020-01-30 17:59:46 +01:00