aboutsummaryrefslogtreecommitdiff
path: root/include/backend/wayland.h
AgeCommit message (Collapse)Author
2021-11-23input-device: remove wlr_input_device.linkSimon Ser
This field's ownership is unclear: it's in wlr_input_device, but it's not managed by the common code, it's up to each individual backend to use it and clean it up. Since this is a backend implementation detail, move it to the backend-specific structs.
2021-11-22backend/wayland: report parent presentation clockSimon Ser
There's no guarantee that the parent Wayland compositor uses CLOCK_MONOTONIC for reporting presentation timestamps, they could be using e.g. CLOCK_MONOTONIC_RAW or another system-specific clock. Forward the value via wlr_backend_impl.get_presentation_clock. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3254#note_1143061
2021-10-31backend/wayland: use xdga client activationRonan Pigott
2021-09-27backend/wayland: send hold gesture eventsJosé Expósito
Receive hold gesture events using a Wayland listiner and emit the appropiate wlr_pointer signal.
2021-07-06move wlr_box from /types to /utilSimon Zeni
2021-06-07backend/wayland: remove swapchainSimon Ser
Rely on wlr_output's generic swapchain handling.
2021-06-02output: take a wlr_buffer in set_cursorSimon Ser
Instead of passing a wlr_texture to the backend, directly pass a wlr_buffer. Use get_cursor_size and get_cursor_formats to create a wlr_buffer that can be used as a cursor. We don't want to pass a wlr_texture because we want to remove as many rendering bits from the backend as possible.
2021-05-21backend/wayland: use common renderer and allocatorSimon Ser
Instead of managing our own renderer and allocator, let the common code do it.
2021-04-17backend/wayland: add support for wl_shm buffersSimon Ser
2021-01-16backend/wayland: implement get_drm_fdSimon Ser
2021-01-10backend/wayland: use the EGL GBM platformSimon Ser
Just like other backends, use the EGL GBM platform. This will make it easier to move the allocator and renderer initialization out of the backends.
2021-01-07remove unnecessary egl includesSimon Zeni
2021-01-07backend: remove wlr_egl from all backendsSimon Zeni
2020-12-21backend/wayland: re-use wl_buffersSimon Ser
Instead of re-importing a buffer each time we submit a new frame, re-use the wl_buffer objects if possible.
2020-12-13backend/wayland: use wlr_swapchain for cursor surfaceSimon Ser
2020-12-13backend/wayland: use wlr_swapchain for main surfaceSimon Ser
The cursor surface still uses a wl_egl_window. References: https://github.com/swaywm/wlroots/issues/1352
2020-11-12backend/wayland: Set cursor indivdualy per outputMykola Orliuk
2020-11-12backend/wayland: Add active pointer per host seatMykola Orliuk
Every host seat with pointer capability propagates events to one of sub-pointer depending which output window we entered. active_pointer tracks reference to sub-pointer on enter/leave events to avoid lookup for it on every move events. Fixes swaywm/wlroots#1499
2020-11-12backend/wayland: Add registering multiple seatsMykola Orliuk
2020-11-12backend/wayland: Link input devices with seatsMykola Orliuk
2020-11-12backend/wayland: Bind seat listener to wlr_wl_seatMykola Orliuk
2020-11-11Remove unneeded includes from wlr_input_device.hIsaac Freund
This uncovered many places where we were using things without directly including them.
2020-10-18backend/wayland: add error flow in create_wl_seatMykola Orliuk
2020-10-18backend/wayland: factor out wlr_wl_seatMykola Orliuk
2020-10-18backend/wayland: add touch support to the wayland backendIlia Bozhinov
Goal currently is to get support working for a single output, thus there is only one touch device created. Multi-output support is left for later.
2020-04-08output: check buffer in wlr_output_testSimon Ser
Check that buffer can be scanned out in wlr_output_test instead of wlr_output_attach_buffer. This allows the backend to have access to the whole pending state when performing the check. This brings the wlr_output API more in line with the KMS API. This removes the need for wlr_output_attach_buffer to return a value, and for wlr_output_impl.attach_buffer.
2020-01-09backend/wayland: listen to wl_buffer.release eventsSimon Ser
Previously, we just assumed submitting a new frame would make the compositor release the current one. This isn't always the case, for instance Sway retains old buffers when a transaction is pending. This resulted in synchronization issues with clients writing in front-buffers. Fix this by un-referencing a wlr_buffer when the parent compositor sends wl_buffer.release. Tested by running a fullscreen mpv instance in Sway with the Wayland backend.
2019-11-21backend/wayland: add support for presentation-timeSimon Ser
2019-11-13backend/wayland: add support for relative-pointer-unstable-v1Simon Ser
We just send relative motion events alongside absolute motion events. Compositors can figure out how absolute and relative events are related (e.g. whether they have been triggered by the same logical event) with the frame event.
2019-10-16backend/wayland: add support for direct scan-outSimon Ser
Closes: https://github.com/swaywm/wlroots/issues/1830
2019-09-26Clean up wayland backend tablet supportMarkus Ongyerth
Mostly address feedback from emersion on PR #1694 Remove const qualifier from char *name, to allow free() call
2019-09-26Add zwp-tablet-unstable-v2 client supportMarkus Ongyerth
This allows wlroots based compositors to properly use graphic tablets with the wayland backend. This should be a decent quality of life improvement when working on tablet related features.
2019-07-27Remove all wayland-server.h includesSimon Ser
The documentation for wayland-server.h says: > Use of this header file is discouraged. Prefer including > wayland-server-core.h instead, which does not include the server protocol > header and as such only defines the library PI, excluding the deprecated API > below. Replacing wayland-server.h with wayland-server-core.h allows us to drop the WL_HIDE_DEPRECATED declaration.
2019-06-21Support pointer-gestures on Wayland backendGreg V
2019-05-06backend/wayland: remove wl_shmSimon Ser
We bind to it but never use it.
2019-05-06backend/wayland: use xdg-decoration-unstable-v1Simon Ser
This allows the toplevel to have proper decorations on compositors that support xdg-decoration-unstable-v1.
2019-03-15backend/wayland: improve output number handlingBrian Ashworth
This improves the way the output numbers are handled for the wayland backend. Instead of using the number of active outputs plus one, the last used number is stored and new outputs will increment it. This fixes the situation where you start with one output, create a second, close the first, and create a third. Without this, both outputs will be `WL-2`, which causes an issue since the identifier will also be identical. With this, the last output is `WL-3` and the outputs can be distinguished.
2019-01-10Update Wayland backend to xdg-shell stableDrew DeVault
2018-11-11backend/wayland: Make header order consistentScott Anderson
2018-11-11backend/wayland: Move initilisation code earlierScott Anderson
The renderer redesign is going to need the render fd before the backend is fully started, so we have to move the wl registry code to when the backend is created instead of when it is started. We also need to stash the wl_keyboard and emit it to library users later, once they've added their listeners and started the backend.
2018-11-11backend/wayland: Move registry into backendScott Anderson
Registry was a very small file, and is heavily related to the backend, so there is not point in keeping them separate.
2018-09-18backend/wayland: add assertionsemersion
2018-05-12Add support for discrete axis valuesemersion
2018-05-09Fix hardware cursors scale & transformemersion
2018-05-01output: always use hardware cursors if availableemersion
This changes the `wlr_output_impl.set_cursor` function to take a `wlr_texture` instead of a byte buffer. This simplifies the DRM and Wayland backends since they were creating textures from the byte buffer anyway. With this commit, performance should be improved when moving the cursor since outputs don't need to be re-rendered anymore.
2018-04-29backend/wayland: only set one pointer listeneremersion
2018-04-29backend/wayland: create one virtual pointer per outputemersion
2018-04-25Make sure we don't use others' prefixesemersion
2018-04-25Remove wlr_ prefix from local symbolsemersion
2018-03-22wayland backend: fix use-after free on output destroyDominique Martinet
==12021==ERROR: AddressSanitizer: heap-use-after-free on address 0x617000015698 at pc 0x7f1a9abe1c09 bp 0x7ffe9068f6b0 sp 0x7ffe9068f6a0 WRITE of size 4 at 0x617000015698 thread T0 #0 0x7f1a9abe1c08 in pointer_handle_leave ../backend/wayland/wl_seat.c:40 #1 0x7f1a96ae7d1d in ffi_call_unix64 (/lib64/libffi.so.6+0x5d1d) #2 0x7f1a96ae768e in ffi_call (/lib64/libffi.so.6+0x568e) #3 0x7f1a988e0d8a (/lib64/libwayland-client.so.0+0x8d8a) #4 0x7f1a988dd927 (/lib64/libwayland-client.so.0+0x5927) #5 0x7f1a988debe3 in wl_display_dispatch_queue_pending (/lib64/libwayland-client.so.0+0x6be3) #6 0x7f1a9abdd6d6 in dispatch_events ../backend/wayland/backend.c:28 #7 0x7f1a9a968c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11) #8 0x7f1a9a967449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449) #9 0x418dff in main ../rootston/main.c:81 #10 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #11 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9) 0x617000015698 is located 664 bytes inside of 696-byte region [0x617000015400,0x6170000156b8) freed by thread T0 here: #0 0x7f1a9af754b8 in __interceptor_free (/lib64/libasan.so.4+0xde4b8) #1 0x7f1a9abe01ee in wlr_wl_output_destroy ../backend/wayland/output.c:194 #2 0x7f1a9ac12918 in wlr_output_destroy ../types/wlr_output.c:299 #3 0x7f1a9abe061b in xdg_toplevel_handle_close ../backend/wayland/output.c:255 #4 0x7f1a96ae7d1d in ffi_call_unix64 (/lib64/libffi.so.6+0x5d1d) #5 0x7f1a96ae768e in ffi_call (/lib64/libffi.so.6+0x568e) #6 0x7f1a988e0d8a (/lib64/libwayland-client.so.0+0x8d8a) #7 0x7f1a988dd927 (/lib64/libwayland-client.so.0+0x5927) #8 0x7f1a988debe3 in wl_display_dispatch_queue_pending (/lib64/libwayland-client.so.0+0x6be3) #9 0x7f1a9abdd6d6 in dispatch_events ../backend/wayland/backend.c:28 #10 0x7f1a9a968c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11) #11 0x7f1a9a967449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449) #12 0x418dff in main ../rootston/main.c:81 #13 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #14 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9) previously allocated by thread T0 here: #0 0x7f1a9af75a38 in __interceptor_calloc (/lib64/libasan.so.4+0xdea38) #1 0x7f1a9abe0703 in wlr_wl_output_create ../backend/wayland/output.c:272 #2 0x7f1a9abdd8eb in wlr_wl_backend_start ../backend/wayland/backend.c:55 #3 0x7f1a9abbeb49 in wlr_backend_start ../backend/backend.c:28 #4 0x7f1a9abd8ce1 in multi_backend_start ../backend/multi/backend.c:24 #5 0x7f1a9abbeb49 in wlr_backend_start ../backend/backend.c:28 #6 0x418c32 in main ../rootston/main.c:58 #7 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #8 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9)