Commit graph

5119 commits

Author SHA1 Message Date
Simon Zeni
ae43cf93dd render/pixel_format: make wlr_pixel_format_info part of the public API 2021-09-23 13:53:45 -04:00
Simon Zeni
4a4c8ca320 render/gles2: add getter for wlr_egl_context instead of wlr_egl 2021-09-23 13:53:30 -04:00
Simon Zeni
f12fa92a85 render/gles2: make wlr_renderer_create private 2021-09-23 13:53:30 -04:00
Simon Zeni
72073e5792 render/egl: remove wlr_egl context functions 2021-09-23 13:53:30 -04:00
Simon Zeni
95928cec72 render/egl: make wlr_egl hold a wlr_egl_context 2021-09-23 13:53:30 -04:00
Simon Zeni
7ff1664030 render/egl: clean includes 2021-09-23 13:53:30 -04:00
Simon Zeni
c22655cffb render/egl: make wlr_egl private 2021-09-23 13:53:30 -04:00
Simon Zeni
f70f37a2c2 render/egl: make wlr_egl context private, replace them with public wlr_egl_context functions 2021-09-23 13:53:30 -04:00
Simon Zeni
6eff6c365b render/egl: make wlr_egl_context public 2021-09-23 13:53:30 -04:00
Simon Ser
3c26244340 scene: add wlr_scene_buffer_set_transform 2021-09-22 10:45:39 -06:00
Simon Ser
43833fba64 scene: add wlr_scene_buffer_set_dest_size 2021-09-22 10:45:39 -06:00
Simon Ser
3d4afbe945 scene: use scene_node_get_size in wlr_scene_node_at
This allows to unify the RECT and BUFFER code-paths. The BUFFER one
will become more complicated with destination size and transforms.
2021-09-22 10:45:39 -06:00
Simon Ser
27b529f8a0 scene: add scene_node_get_size helper 2021-09-22 10:45:39 -06:00
Simon Ser
63040d6744 scene: add wlr_scene_buffer_set_source_box 2021-09-22 10:45:39 -06:00
Simon Ser
fdc22449d6 util/box: introduce wlr_fbox_empty
Same as wlr_box_empty, but for wlr_fbox.
2021-09-22 10:45:39 -06:00
Simon Ser
7939bf8cc6 scene: add wlr_scene_buffer
This new scene-graph node displays a wlr_buffer.

Closes: https://github.com/swaywm/wlroots/issues/3161
2021-09-22 10:45:39 -06:00
Simon Ser
f6f0e010d1 scene: unify intersection logic in wlr_scene_node_at
Let's extract the common bits.
2021-09-22 10:45:39 -06:00
Simon Ser
b25759cd20 scene: drop default case in wlr_scene_node_at
This allows the compiler to error out if we haven't enumerated all
of the cases. This is useful to avoid a missing implementation when
adding a new node type.
2021-09-22 10:45:39 -06:00
Tadeo Kondrak
30d3c76817 Implement input_method_v2 popups 2021-09-22 09:42:14 +02:00
Tadeo Kondrak
e0daa65aa6 input-method-unstable-v2: Add error for surface with existing role 2021-09-22 09:42:14 +02:00
Simon Ser
2e12de96ca backend/drm: add support for panel orientation
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-21 11:40:37 -06:00
Simon Ser
0c5ff5efab build: simplify get_variable calls
With recent-ish Meson we can stop repeating the variable name for
each provider.
2021-09-21 11:35:08 -06:00
Simon Ser
2e590026e9 scene: add wlr_scene_subsurface_tree_create 2021-09-21 16:48:31 +02:00
Simon Ser
597ba2b932 surface: add addon set 2021-09-21 16:48:31 +02:00
Simon Ser
211b3b760e scene: add wlr_scene_tree 2021-09-21 16:48:31 +02:00
Kirill Primak
ccc84f11a4 xdg surface: check adding configure_idle for NULL 2021-09-21 10:09:09 +02:00
Kirill Primak
0e2d369106 xdg-surface: simplify configure mechanism
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-21 10:09:09 +02:00
Kirill Primak
b72a217fcc xdg-toplevel: refactor configure/state flow
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-21 10:09:09 +02:00
Simon Zeni
9579d62a16 types/buffer: make {begin,end}_data_ptr_access part of the public API 2021-09-15 11:50:44 +02:00
Simon Ser
6cb25ebad7 ci: switch to seatd-launch
This removes the need for the ad-hoc loop.

Because udev creates the symlinks in /dev/dri/by-path/, we need to
wait for it to consume all pending events before the chmod call.
Previously the delay needed for seatd to come up was enough to let
udev create the symlinks in time (by chance).
2021-09-14 12:47:19 +02:00
Kirill Primak
52da68b591 xdg popup: move function to a file it belongs to 2021-09-11 12:11:55 +02:00
Guido Günther
e479dc1ef0 xwayland: Allow to retrieve startup-id via _NET_STARTUP_INFO
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-11 09:53:23 +02:00
Simon Ser
4e7a8707cc buffer: add data_ptr access flags
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-10 13:16:10 -04:00
Andri Yngvason
105fdecd0c screencopy: Handle shm copy in commit event handler
This simplifies the implementation considerably.
2021-09-10 10:37:18 +02:00
Andri Yngvason
04d234bac1 screencopy: Use output->front_buffer instead of wlr_output_export_dmabuf 2021-09-10 10:37:18 +02:00
Simon Ser
a181a37b12 scene: add wlr_scene_attach_output_layout
This is a helper to integrate wlr_scene with wlr_output_layout.
2021-09-09 12:04:35 +02:00
Simon Ser
7832005a1f scene: move source to subdir
This will allow more scene-graph extensions to be added without
cluttering wlr_scene.c, for instance for sub-surface handling and
wlr_output_layout integration.
2021-09-09 12:04:35 +02:00
Quantum
679f5ed966 scene: fix compile error in release builds
On release builds, gcc detects a variable uninitialized error, and generates
a warning, which gets converted to an error due to -Werror.
2021-09-09 10:01:48 +02:00
Simon Ser
e05c884891 examples/scene-graph: use wlr_scene_output
This allows us to get damage tracking for free™.
2021-09-08 09:50:08 -04:00
Simon Ser
44f0f7a0a7 scene: add damage tracking support 2021-09-08 09:50:08 -04:00
Simon Ser
9195b77e14 scene: add wlr_scene_node_coords 2021-09-08 09:50:08 -04:00
Simon Ser
04d105760d scene: add wlr_scene_output_commit 2021-09-08 09:50:08 -04:00
Simon Ser
968c1df7e9 scene: add scene outputs
These allow describing an output's viewport inside the scene-graph.
2021-09-08 09:50:08 -04:00
Simon Ser
872993f95d scene: fix wlr_scene_render_output offset
When providing non-zero layout-local coordinates to
wlr_scene_render_output, the viewport should be translated by the
given values. However the viewport was translated by the opposite
values: when giving 42,42 the viewport's position would be set to
-42,-42.
2021-09-08 09:50:08 -04:00
Simon Zeni
3984c81faa types: introduce wlr_drm_lease_v1 2021-09-08 11:09:07 +02:00
Simon Zeni
c67e3fe3b7 protocol/meson: bump wayland-protocols requirement to 1.22 2021-09-08 11:09:07 +02:00
Simon Zeni
94ed8f9496 backend/drm: introduce wlr_drm_backend_get_non_master_fd 2021-09-08 11:09:07 +02:00
Simon Zeni
e5a949a955 backend/drm: implement drm lease function 2021-09-08 11:09:07 +02:00
Simon Ser
42dba9dc90 backend/drm: drop wlr_drm_connector.desired_mode
Previously used by attempt_enable_needs_modeset, but this has been
dropped in the previous commit.
2021-09-07 22:33:40 +02:00
Simon Ser
b01d97a38f backend/drm: drop attempt_enable_needs_modeset
Modesets require a buffer. The DRM backend tried to auto-enable
outputs when a CRTC becomes available in the past, but now that
fails because no buffer is available.

Instead of having this magic inside the DRM backend, a better
approach is to do it in the compositor or in an optional helper.
2021-09-07 22:33:40 +02:00