aboutsummaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2021-10-29backend/drm: get rid of BO handle tableSimon Ser
The BO handle table exists to avoid double-closing a BO handle, which aren't reference-counted by the kernel. But if we can guarantee that there is only ever a single ref for each BO handle, then we don't need the BO handle table anymore. This is possible if we create the handle right before the ADDFB2 IOCTL, and close the handle right after. The handles are very short-lived and we don't need to track their lifetime. Because of multi-planar FBs, we need to be a bit careful: some FB planes might share the same handle. But with a small check, it's easy to avoid double-closing the same handle (which wouldn't be a big deal anyways). There's one gotcha though: drmModeSetCursor2 takes a BO handle as input. Saving the handles until drmModeSetCursor2 time would require us to track BO handle lifetimes, so we wouldn't be able to get rid of the BO handle table. As a workaround, use drmModeGetFB to turn the FB ID back to a BO handle, call drmModeSetCursor2 and then immediately close the BO handle. The overhead should be minimal since these IOCTLs are pretty cheap. Closes: https://github.com/swaywm/wlroots/issues/3164
2021-10-23output: split into multiple filesSimon Ser
This organizes the wlr_output implementation into separate files. This avoids having a single mega-file with lots of unrelated parts and makes it more obvious what the interactions between all the parts are. No functional changes, just moving code around.
2021-10-23scene: add support for direct scan-outSimon Ser
Check if only a single node intersects with the output viewport and all of its properties match. In this case, attempt direct scan-out.
2021-10-22scene: add wlr_scene_output_for_each_surfaceSimon Ser
This allows compositors to more easily implement sending wl_surface.frame callback done events.
2021-10-22presentation-time: remove unused fieldSimon Ser
2021-10-22presentation-time: use a surface addonKirill Primak
2021-10-18render/vulkan: add Vulkan renderernyorain
This new renderer is implemented with the existing wlr_renderer API (which is known to be sub-optimal for some operations). It's not used by default, but users can opt-in by setting WLR_RENDERER=vulkan. The renderer depends on VK_EXT_image_drm_format_modifier and VK_EXT_physical_device_drm. Co-authored-by: Simon Ser <contact@emersion.fr> Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
2021-10-15output: add presented flag to presentation eventKirill Primak
2021-10-14scene: add functions to place node on top/bottomIsaac Freund
These are very common operations for compositors (including tinywl) to perform.
2021-10-14scene: assert that node != sibling in place above/belowIsaac Freund
Currently these functions remove the node from the scene if the sibling argument is the same node as the node. To prevent confusion when misusing this API, assert that the nodes are distinct and document this.
2021-10-07xdg-decoration: refactor configure/state flowKirill Primak
The same logic/motivation as xdg-toplevel.
2021-10-02surface_at: check if surfaces are mappedtiosgz
2021-10-02for_each_surface: only iterate mapped surfacestiosgz
These functions are used mostly for rendering, where including unmapped surfaces is undesired. This is a breaking change. However, few to no usages will have to be updated.
2021-10-02Fix spelling errorsElyes HAOUAS
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2021-10-01Revert "render/drm_format_set: add wlr_drm_format_has"Simon Ser
This reverts commit 833437d5921339f2862ccfb0493617630ea3937d.
2021-10-01render/drm_format_set: add wlr_drm_format_hasSimon Ser
2021-09-30xdg-shell: rename wlr_xdg_surface.next_configure_serialSimon Ser
Rename it to scheduled_serial for consistency with the rest of wlroots.
2021-09-30xdg-shell: introduce wlr_xdg_surface.currentSimon Ser
This holds the current state, and avoids having ad-hoc fields in wlr_xdg_surface.
2021-09-30xdg-surface: add pending stateKirill Primak
struct wlr_xdg_surface_state is introduced to hold the geometry and configure serial to be applied on next wl_surface.commit. This commit fixes our handling for ack_configure: instead of making the request mutate our current state, it mutates the pending state only. Co-authored-by: Simon Ser <contact@emersion.fr>
2021-09-27wlr_pointer_gestures: hold gestures (protocol v3)José Expósito
Update the pointer gestures protocol to version 3 allowing to send hold gestures to clients.
2021-09-27cursor: emit hold gesture eventsJosé Expósito
Recevie the hold gesture events from the libinput or Wayland backends, abstracted as pointer signals, and re-emit them from the cursor interface.
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-09-27backend/libinput: send hold gesture eventsJosé Expósito
Receive hold gesture events from libinput and emit the appropiate wlr_pointer signal.
2021-09-27pointer: add hold pointer event definitionJosé Expósito
As touchpad touches are generally fully abstracted, a client cannot currently know when a user is interacting with the touchpad without moving. This is solved by hold gestures. Hold gestures are notifications about one or more fingers being held down on the touchpad without significant movement. Hold gestures are primarily designed for two interactions: - Hold to interact: where a hold gesture is active for some time a menu could pop up, some object could be selected, etc. - Hold to cancel: where e.g. kinetic scrolling is currently active, the start of a hold gesture can be used to stop the scroll. Unlike swipe and pinch, hold gestures, by definition, do not have movement, so there is no need for an "update" stage in the gesture. Create two structs, wlr_event_pointer_hold_begin and wlr_event_pointer_hold_end, to represent hold gesture events and the signals to emit them: wlr_pointer->pointer.hold_begin/hold_end.
2021-09-24layer-shell: add `committed` bitmaskKirill Primak
2021-09-23layer-shell: refactor configure/state flowKirill Primak
Same logic as xdg-toplevel.
2021-09-22scene: add wlr_scene_buffer_set_transformSimon Ser
2021-09-22scene: add wlr_scene_buffer_set_dest_sizeSimon Ser
2021-09-22scene: add wlr_scene_buffer_set_source_boxSimon Ser
2021-09-22util/box: introduce wlr_fbox_emptySimon Ser
Same as wlr_box_empty, but for wlr_fbox.
2021-09-22scene: add wlr_scene_bufferSimon Ser
This new scene-graph node displays a wlr_buffer. Closes: https://github.com/swaywm/wlroots/issues/3161
2021-09-22Implement input_method_v2 popupsTadeo Kondrak
2021-09-21backend/drm: add support for panel orientationSimon Ser
Expose the panel orientation with wlr_drm_connector_get_panel_orientation. Leave it to the compositor to consume this information and configure the output accordingly. Closes: https://github.com/swaywm/wlroots/issues/1581
2021-09-21build: simplify get_variable callsSimon Ser
With recent-ish Meson we can stop repeating the variable name for each provider.
2021-09-21scene: add wlr_scene_subsurface_tree_createSimon Ser
2021-09-21surface: add addon setSimon Ser
2021-09-21scene: add wlr_scene_treeSimon Ser
2021-09-21xdg-surface: simplify configure mechanismKirill Primak
This commit removes any checks whether a configure will change anything and makes configures be sent unconditionally. Additionally, configures are scheduled on xdg_toplevel.{un,}set_{maximized,fullscreen} events.
2021-09-21xdg-toplevel: refactor configure/state flowKirill Primak
Previously, `wlr_xdg_toplevel` didn't follow the usual "current state + pending state" pattern and instead had confusingly named `client_pending` and `server_pending`. This commit removes them, and instead introduces `wlr_xdg_toplevel.scheduled` to store the properties that are yet to be sent to a client, and `wlr_xdg_toplevel.requested` to store the properties that a client has requested. They have different types to emphasize that they aren't actual states.
2021-09-15types/buffer: make {begin,end}_data_ptr_access part of the public APISimon Zeni
2021-09-11xwayland: Allow to retrieve startup-id via _NET_STARTUP_INFOGuido Günther
A launchee notifies with a "remove"¹ message when done starting up. Catch these and forward to the compositor. This allows the compositor to end the startup sequence that might have been started by another protocol like xdg-activation. We don't handle other messages since we expect the launcher to use a wayland protocol like xdg-activation. While `_NET_STARTUP_ID` helps to associate toplevels with startup-ids this signals the end of the startup sequence. 1) https://specifications.freedesktop.org/startup-notification-spec/startup-notification-latest.txt
2021-09-10buffer: add data_ptr access flagsSimon Ser
This allows callers to specify the operations they'll perform on the returned data pointer. The motivations for this are: - The upcoming Linux MAP_NOSIGBUS flag may only be usable on read-only mappings. - gbm_bo_map with GBM_BO_TRANSFER_READ hurts performance.
2021-09-10screencopy: Handle shm copy in commit event handlerAndri Yngvason
This simplifies the implementation considerably.
2021-09-09scene: add wlr_scene_attach_output_layoutSimon Ser
This is a helper to integrate wlr_scene with wlr_output_layout.
2021-09-08scene: add damage tracking supportSimon Ser
2021-09-08scene: add wlr_scene_node_coordsSimon Ser
2021-09-08scene: add wlr_scene_output_commitSimon Ser
2021-09-08scene: add scene outputsSimon Ser
These allow describing an output's viewport inside the scene-graph.
2021-09-08types: introduce wlr_drm_lease_v1Simon Zeni
2021-09-08backend/drm: introduce wlr_drm_backend_get_non_master_fdSimon Zeni