Carlos Garnacho
e64112de64
backends: Split kms cursor renderer from MetaCursorRendererNative
...
Move the KMS updating pieces to a distinct MetaKmsCursorRenderer whose
cursor sprite will get updated from the driving MetaCursorRenderer.
Since there could be multiple MetaCursorRenderers, also add the
necessary pieces to move the KMS cursor renderer between renderers.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:12:19 +02:00
Carlos Garnacho
05f385c8ee
backends: Move HW cursor inhibitors to MetaBackend
...
We are aiming for a split of HW and SW cursor rendering management.
Given the HW plane is a limited resource and the amount of cursor
renderers may be >1 (due to tablets, even though we currently use an
always-software cursor renderer there), it would ideally be able to
switch between renderers.
Being MetaCursorRenderer not really a singleton, having cursor
inhibitor accounting here doesn't pan out. Make it MetaBackend API
so all cursor renderers get the same picture.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:12:14 +02:00
Carlos Garnacho
8a2b529ca3
backends: Make MetaHwCursorInhibitor less about sprites
...
Remove the sprite argument from the vfunc, it's used in no implementations
and conceptually gets a bit in the middle.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:12:11 +02:00
Carlos Garnacho
0c92417178
core: Centralize cursor renderer and tracker updates
...
These use now more of a "pull" model, where they receive update
notifications and the relevant input position is queried, instead
of the coordinates being passed along.
This allows to treat cursor renderers all the same independently
of the device they track. This notifying of position changes should
ideally be more backend-y than core-y, a better location will be
figured out in future commits.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:48 +02:00
Carlos Garnacho
543d232b51
backends: Drop meta_cursor_renderer_get_position()
...
This is now unused.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:45 +02:00
Carlos Garnacho
4398d63566
wayland: Move away from meta_cursor_renderer_get_position()
...
Fetch the cursor renderer device, and query its position instead.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:42 +02:00
Carlos Garnacho
dc022a67b0
backends: Add ::device property to MetaCursorRenderer
...
A cursor renderer is made to invariably follow a pointer device, make
it a construct-time property, and update all creators of cursor renderers
to specify it.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:38 +02:00
Carlos Garnacho
60fa895ae3
backends: Move away from meta_cursor_renderer_get_position()
...
We are moving onto relying fully on the seat cursor position. As
this focuses (thus far?) on mouse pointers only, use the cursor
tracker as a convenient shortcut.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:35 +02:00
Carlos Garnacho
7bb3fe25aa
backends: Use graphene_point_t on meta_cursor_tracker_get_pointer()
...
It's nicer to propagate along.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:31 +02:00
Carlos Garnacho
6c5bba94fd
backends: Manage tablet cursors in backend
...
Instead of letting the wayland bits maintain an always-software
cursor renderer, let the cursor renderer be managed by the backend,
and only hook to it (as we do for pointer cursor) in the wayland
bits.
ATM, make the cursor renderer still always-software, although
ideally we should allow moving the HW cursor management between
renderers.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:18 +02:00
Carlos Garnacho
667b2726f5
wayland: Look up cursor renderer for device on MetaWaylandPointer
...
Make it explicitly look up the pointer device, instead of implicitly
relying on it.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:15 +02:00
Carlos Garnacho
1d3588ba48
backends: Add meta_backend_get_cursor_renderer_for_device()
...
Different devices may get standalone cursor renderers, add this API
to adapt slowly to this. The meta_backend_get_cursor_renderer() call
still exists, but shortcuts to the mouse pointer's renderer (as it
actually did before).
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:11 +02:00
Carlos Garnacho
16317cec12
wayland: Replace cursor renderer usage with cursor tracker
...
We just want to know the pointer position, let's use something else
here.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:08 +02:00
Carlos Garnacho
f3991c0164
backends: Add argument for best scale on MetaCursorSprite::prepare-at
...
Instead of letting implementations poke backend internals from various
places, give that information right away.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:05 +02:00
Carlos Garnacho
b07d9c5f92
core: Do not force cursor renderer update here
...
This is already taken care of in meta_backend_monitors_changed(), called
from the same code paths that emit ::monitors-changed-internal. It is
better to leave this up to backend internals.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:11:02 +02:00
Carlos Garnacho
be51a8c18c
backends: Remove x/y arguments from MetaCursorTracker::cursor-moved
...
Make this signal a hint, the actual coordinates should be queried to the
cursor tracker, the device, the seat... There's enough options.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:58 +02:00
Carlos Garnacho
11c86f9cb3
core: Remove unused struct field
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:55 +02:00
Carlos Garnacho
87c0821a30
backends: Drop unused function
...
meta_cursor_tracker_get_displayed_cursor() is used nowhere.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:52 +02:00
Carlos Garnacho
03f2bade19
backends: Delegate pointer confinements to an impl object
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:49 +02:00
Carlos Garnacho
a3825f2085
backends: Fix typo in comment
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:46 +02:00
Carlos Garnacho
8b2a89041a
backends: Drop GDK device querying code from MetaCursorTracker
...
Clutter behavior is now equivalent to GDK's on X11, avoid poking to
GDK here.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:42 +02:00
Carlos Garnacho
52da5fe4f2
clutter: Simplify backend-independent touch accounting
...
Coordinates are tracked by the ClutterSeat backends, we just need to
track the target actor at this level.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:39 +02:00
Carlos Garnacho
307be1e495
clutter: Drop clutter_input_device_set_coords()
...
Input devices aren't "updated" anymore, but their state queried to the
seat. This goes nowhere.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:36 +02:00
Carlos Garnacho
9b3ca86b7c
clutter: Drop clutter_input_device_update_from_event()
...
Input devices aren't "updated" anymore, but their state queried to
the seat instead. This is API only meant for embedders of Clutter,
and is pointless to us.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:33 +02:00
Carlos Garnacho
da55f15156
clutter: Pass base event to clutter_input_device_update()
...
So we may fetch coordinates without necessarily querying the device
state.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:29 +02:00
Carlos Garnacho
b13fe4895f
clutter: Drop clutter_input_device_set_state()
...
Nothing uses it anymore.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:25 +02:00
Carlos Garnacho
aae4a6065c
backends/native: Move away from ClutterInputDevice coords
...
Use a new set in MetaInputDeviceNative for the time being.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:22 +02:00
Carlos Garnacho
1555ecad11
clutter: Use ClutterSeat underneath coords/modifiers input device getters
...
This is not device state, but belonging to seat guts.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:18 +02:00
Carlos Garnacho
292b4dd605
backends/native: Implement ClutterSeat::query_state() vmethod
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:15 +02:00
Carlos Garnacho
4766e2f858
backends/x11: Implement ClutterSeat::query_state() vmethod
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:12 +02:00
Carlos Garnacho
e3fe8c3dd1
clutter: Add ClutterSeat::query_state() vmethod
...
This will query a device state; position and modifiers.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:09 +02:00
Carlos Garnacho
d3e1ce7dbc
clutter: Drop unused field in ClutterInputDevice struct
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:04 +02:00
Carlos Garnacho
63ad2c958d
clutter: Drop clutter_input_device_set_time()
...
An input device does not have time on itself, events do. This was made
unused so drop it.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:10:01 +02:00
Carlos Garnacho
849cc3d7f5
clutter: Pass timestamp to clutter_input_device_set_actor()
...
This function emits crossing events, so needs a (most times truthful)
timestamp. Make it explicit instead of fetching it from the device.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:58 +02:00
Carlos Garnacho
8d8c933eb4
clutter/main: Drop dead code branches
...
We shouldn't get an input event that has not a device.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:54 +02:00
Carlos Garnacho
2363f4c30b
clutter: Drop clutter_input_device_set_stage()
...
No one uses this already.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:51 +02:00
Carlos Garnacho
5d45722362
backends/x11: Drop users of clutter_input_device_set_stage()
...
There is no getter, so this information is useless.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:47 +02:00
Carlos Garnacho
cef6520836
backends/native: Drop users of clutter_input_device_set_stage()
...
There is no getter, so doing this is now pointless.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:44 +02:00
Carlos Garnacho
0fbbeb0c82
clutter: Drop clutter_input_device_get_[pointer_]stage()
...
Input devices are not related to the stage in any way. Drop all the
users that relied on it being so.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:40 +02:00
Carlos Garnacho
b97519bb6e
backends/x11: Drop all users of clutter_input_device_get_stage()
...
And clutter_input_device_get_pointer_stage().
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:36 +02:00
Carlos Garnacho
60b3f628a6
backends/native: Drop all uses of clutter_input_device_get_stage()
...
Rely on the seat stage, or other ways to fetch it. Also rely that
there is actually a single stage, so that we assign the right stage
to all events going out of the seat, in a single place.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:32 +02:00
Carlos Garnacho
37deba9557
clutter: Do not depend on device stage on ClutterInputMethod
...
Look it up through other means.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:29 +02:00
Carlos Garnacho
89cefd037f
clutter: Work out stage from actor on which to emit crossing
...
Don't rely on the device stage.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:26 +02:00
Carlos Garnacho
c9efadacd1
clutter: Specify stage on clutter_input_device_update() function
...
This is the function performing the picking, tell it explicitly the
stage it should happen on.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:22 +02:00
Carlos Garnacho
df724f5c75
backends/native: Move relative motion filter to MetaSeatNative altogether
...
And drop the relative motion filter API. The seat will handle relative motion
across outputs with different scales. This accesses the MetaMonitorManager
ATM.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:19 +02:00
Carlos Garnacho
44bb21c7aa
backends/native: Make seat constrain pointer to monitors out of the box
...
It does access the MetaMonitorManager directly ATM.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:15 +02:00
Carlos Garnacho
73e705a49b
backend/native: Move barrier manager to MetaSeatNative
...
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:10 +02:00
Carlos Garnacho
2316dfe394
backends/native: Use libinput seat slot API
...
Instead of creating a seat-wide touch slot ID ourselves, rely on libinput
API doing this for us.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:06 +02:00
Carlos Garnacho
9597b5a703
backends: Move absolute/relative device mapping to native backend
...
This is a bit scattered around, with the setter/getter in Clutter, and
it only being only directly honored in Wayland (it goes straight through
device properties in X11).
Make this private native API, and out of public ClutterInputDevice API.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:09:02 +02:00
Carlos Garnacho
0be0a14225
backends: Move device mapping check into backend
...
Make the upper parts agnostic about the device being relative in
order to apply the display mapping. Just make the low level bits
resort to the identity matrix for those.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
2020-08-13 21:08:58 +02:00