aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-06-16output: remove wlr_output_impl.transformSimon Ser
The backend doesn't need to handle transform changes, since everything is done in software. In fact, all of the implementations were all identical and just set the transform. We could add support for hardware transforms, but: - This would require a different field (something like hardware_transform) - Not all combinations are possible because there often are hardware limitations - The Wayland protocol isn't ready for this (in particular xdg-output, see [1]) This belongs to a different patch series anyway. [1]: https://patchwork.freedesktop.org/series/52324/
2019-06-16output: reset the pending state on failed commitSimon Ser
It can be surprising for callers to stash pending changes, commit, get a failure, then set some other pending changes, commit again, and get another failure because of the previously-pending changes. Instead, make commit reset the pending state on failure.
2019-06-16Use a set to track pointer button state.Ashkan Kiani
In addition to `button_count`, we keep track of the current buttons pressed just as in `wlr_keyboard`. Add `set_add` and `set_remove` to assist with this. These functions can only be used with values greater than 0 (such as the button/key masks for keyboards and pointers). Partially addresses: - https://github.com/swaywm/wlroots/issues/1716 - https://github.com/swaywm/wlroots/issues/1593
2019-06-11Remove WLR_DRM_NO_ATOMIC_GAMMA workaroundScott Anderson
This is fixed on amdgpu, so we don't need this anymore.
2019-06-07backend/drm: add support for multiplanar BOsSimon Ser
2019-06-07backend/drm: fallback to drmModeAddFB2Simon Ser
2019-06-07output-damage: support direct scan-outSimon Ser
In case direct scan-out is used, we still need to accumulate damage for the render-buffers.
2019-06-07output: introduce wlr_output_lock_attach_renderSimon Ser
This allows screen shooters and screen grabbers to ensure rendering will be used instead of direct scan-out.
2019-06-07output: refuse to scan-out if software cursors are usedSimon Ser
2019-06-07rootston: add support for direct scan-outSimon Ser
2019-06-07backend/drm: reject DMA-BUFs with flagsSimon Ser
2019-06-07backend/drm: hold buffers while scanning outSimon Ser
2019-06-07output: save buffer in pending stateSimon Ser
2019-06-07output: fix attach_buffer semanticsSimon Ser
2019-06-07output: change set_dmabuf to attach_bufferSimon Ser
2019-06-07buffer: add wlr_buffer_get_dmabufSimon Ser
2019-06-07render/dmabuf: add wlr_dmabuf_attributes_copySimon Ser
2019-06-07backend/drm: strip alpha channel on scan-outSimon Ser
2019-06-07backend/drm: check format when scanning out DMA-BUFSimon Ser
2019-06-07backend/drm: add basic support for direct scan-outemersion
2019-06-02Remove orbital screenshooter and gamma-controlSimon Ser
These are undocumented, outdated protocols that have a better wlr-protocols equivalent.
2019-06-02Merge pull request #1713 from Emantor/fix/legacy_null_modesetScott Anderson
drm: legacy: issue a NULL modeset on disable
2019-06-02drm: legacy: issue a NULL modeset on disableRouven Czerwinski
The DRM subsystem needs a NULL modeset for connectors which disappear from the system to disable the hardware pipes, otherwise the pixels get rendered but are sent nowhere. The atomic backend does the equivalent by removing the properties and issuing a commit. Fixes #1706
2019-05-31zwp_virtual-keyboard: fix mmap error handlingBrian Ashworth
If mmap fails, it will return MAP_FAILED not NULL. Since the error handling was incorrectly checking for NULL, MAP_FAILED was being passed to xkb_keymap_new_from_string, on mmap failure, causing a segfault. This just fixes the error checking.
2019-05-30wlr_output: remove idle_done on output destroyRouven Czerwinski
If an output is destroyed while an idle_done event is scheduled, it results in the following Address Sanitizer Output: ==1469==ERROR: AddressSanitizer: heap-use-after-free on address 0x6170000bb668 at pc 0x7f49aaa0c348 bp 0x7ffed5da35b0 sp 0x7ffed5da35a0 WRITE of size 8 at 0x6170000bb668 thread T0 #0 0x7f49aaa0c347 in schedule_done_handle_idle_timer ../subprojects/wlroots/types/wlr_output.c:265 #1 0x7f49aa2f875b in wl_event_loop_dispatch_idle (/usr/lib/libwayland-server.so.0+0xa75b) #2 0x7f49aa2f8815 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xa815) #3 0x7f49aa2f739b in wl_display_run (/usr/lib/libwayland-server.so.0+0x939b) #4 0x556622dadd51 in server_run ../sway/server.c:216 #5 0x556622dac25d in main ../sway/main.c:397 #6 0x7f49aa0d0ce2 in __libc_start_main (/usr/lib/libc.so.6+0x23ce2) #7 0x556622d8d09d in _start (/usr/local/bin/sway+0x3909d) 0x6170000bb668 is located 488 bytes inside of 672-byte region [0x6170000bb480,0x6170000bb720) freed by thread T0 here: #0 0x7f49aabc8f89 in __interceptor_free /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:66 #1 0x7f49aa968fc2 in drm_connector_destroy ../subprojects/wlroots/backend/drm/drm.c:829 #2 0x7f49aaa0cc52 in wlr_output_destroy ../subprojects/wlroots/types/wlr_output.c:357 #3 0x7f49aa96d2e9 in scan_drm_connectors ../subprojects/wlroots/backend/drm/drm.c:1265 #4 0x7f49aa961a59 in drm_invalidated ../subprojects/wlroots/backend/drm/backend.c:135 #5 0x7f49aaa2e1e9 in wlr_signal_emit_safe ../subprojects/wlroots/util/signal.c:29 #6 0x7f49aa98319f in udev_event ../subprojects/wlroots/backend/session/session.c:52 #7 0x7f49aa2f87f1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xa7f1) previously allocated by thread T0 here: #0 0x7f49aabc95a1 in __interceptor_calloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:95 #1 0x7f49aa96b7a2 in scan_drm_connectors ../subprojects/wlroots/backend/drm/drm.c:1114 #2 0x7f49aa961a59 in drm_invalidated ../subprojects/wlroots/backend/drm/backend.c:135 #3 0x7f49aaa2e1e9 in wlr_signal_emit_safe ../subprojects/wlroots/util/signal.c:29 #4 0x7f49aa98319f in udev_event ../subprojects/wlroots/backend/session/session.c:52 #5 0x7f49aa2f87f1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xa7f1) SUMMARY: AddressSanitizer: heap-use-after-free ../subprojects/wlroots/types/wlr_output.c:265 in schedule_done_handle_idle_timer Shadow bytes around the buggy address: 0x0c2e8000f670: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2e8000f680: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2e8000f690: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c2e8000f6a0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c2e8000f6b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd =>0x0c2e8000f6c0: fd fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd fd 0x0c2e8000f6d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c2e8000f6e0: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2e8000f6f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2e8000f700: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2e8000f710: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb Remove the idle_done idle timer when the output is destroyed
2019-05-22Merge pull request #1705 from rindeal/patch-2Scott Anderson
session/logind: check for XDG_SESSION_ID first
2019-05-22session/logind: check for XDG_SESSION_ID firstJan Chren
In order to support compositors running as systemd user units without display manager, a mechanism for specifying session ID exactly must exist. Checking for `XDG_SESSION_ID` mimics loginctl behaviour https://github.com/systemd/systemd/blob/e95be7def26c6c5feaf08a4135aa4f50c53263a8/src/login/loginctl.c#L856.
2019-05-22Merge pull request #1704 from rindeal/patch-2Scott Anderson
session/logind: specify seat exactly
2019-05-22session/logind: specify seat exactlyJan Chren
"/org/freedesktop/login1/seat/self" path triggers seat-finding code path in logind, which currently relies on getting the session based on caller's PID. This behaviour is deprecated in logind as it doesn't work eg. with systemd user units, which run outside of user session. We check for "seat0" in logind_change_vt() already as introduced in 47985d2dc56a6af469ac9375e7548136765aff16, so hard-coding it here is not a problem, otherwise sd_session_get_seat() could be used.
2019-05-19rootston: remove duplicated includeSilvan Jegen
2019-05-15Merge pull request #1696 from RedSoxFan/logind-stay-active-on-goneScott Anderson
session/logind: keep active for pause_device gone
2019-05-13Fixes #1689 RDP RemoteFX crashMichiel
When using the rdp backend and connecting with xfreerdp ... --rfx, wlroots crashes in backend/rdp/output.c while attempting to realloc(..., 0). This commit guards against that and instead returns true, resulting in no rfx message being sent. This prevents the crash and appears to work, but it's not obvious if this is correct from a specification perspective.
2019-05-13output: clear output->damage on successful commitIlia Bozhinov
2019-05-13session/logind: keep active for pause_device goneBrian Ashworth
This appears to be a quick fix for compositors freezing when a dock is disconnected. Disconnection of the dock is causing `pause_device` for the DRM devices associated with the dock. Since these devices major number is `DRM_MAJOR`, the session was being set to inactive. This just makes it so the session is not set to inactive when the device's state is `gone`.
2019-05-07render/gles2: print GL_RENDERERSimon Ser
This is often the name of the GPU and can help debugging graphics issues.
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-05-03Test RDP backend on FreeBSD as wellJan Beich
2019-05-03Update version to 0.6.0Drew DeVault
2019-04-29ci: enable Meson auto featuresSimon Ser
This makes it so we don't miss build failures because the CI misses a dependency.
2019-04-29backend/noop: disallow renderingSimon Ser
Closes: https://github.com/swaywm/wlroots/issues/1662
2019-04-29Switch to system epoll-shim.pc in FreeBSD buildJan Beich
2019-04-29examples: add fullscreening to foreign-toplevel.cIlia Bozhinov
2019-04-29rootston: add support for foreign-toplevel fullscreeningIlia Bozhinov
2019-04-29foreign-toplevel: support fullscreen state and requestIlia Bozhinov
2019-04-27seat: fallback to v6 if libwayland 1.17 isn't availableSimon Ser
See https://github.com/swaywm/wlroots/pull/1675#issuecomment-487300445
2019-04-27xdg-output: schedule a wl_output.done event on updateSimon Ser
Xwayland expects an xdg_output.done event to always be sent with a wl_output.done event.
2019-04-27output: introduce wlr_output_schedule_doneSimon Ser
This commit introduces wlr_output_schedule_done and refactors the mechanism used to send wl_output events to clients. wlr_output_schedule_done schedules a wl_output.done event. This allows clients to see wlr_output property changes as atomic. This function is also useful for add-on interfaces like xdg_output which need to trigger a wl_output.done event to apply their new state.
2019-04-27rootston: fix damage tracking debug modeSimon Ser
We want to damage the whole output in this mode. However if we overwrite the damaged region after it's useless. Fixes: 57d32d03a87ab4a74230294cefc5fa8b1e28c96d
2019-04-26output: disambiguate the two types of damageSimon Ser
See https://github.com/swaywm/wlroots/issues/1665