Age | Commit message (Collapse) | Author |
|
Slightly improves the code style.
|
|
wlr_tablet_tool is not a wlr_input_device.
The name is confusing, but changing it would be a breaking change.
Let's fix the docs as a first step.
|
|
Some tablets may not have a USB vendor/product set.
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/180#note_2303637
|
|
libinput guarantees that the name is non-NULL, and an empty string
if unset. However wlroots uses NULL to indicate that an input device
name is unset.
|
|
Instead, use enum wl_pointer_axis from the Wayland protocol.
|
|
Instead, use enum wl_pointer_axis_relative_direction from the
Wayland protocol.
|
|
|
|
Instead, use enum wl_pointer_axis_source from the Wayland protocol.
|
|
|
|
Improves readability, no functional change.
|
|
Only print the list of connectors once, with both the old and new
status. Use CRTC object IDs instead of CRTC indices. Make it obvious
when a connector keeps the same CRTC.
|
|
If a connector has no current/queued buffer, but has a pending
buffer in the commit, we need to process that pending buffer before
checking pending.primary_fb.
|
|
When turning off a CRTC, we don't need a buffer.
It doesn't matter whether this is a modeset or not: we always need
a buffer even for regular page-flips as long as a connector is
active.
Fixes: 374daeb25603 ("backend/drm: Ensure a primary fb is available when configuring an output")
|
|
|
|
Use the helper instead of hand-rolling the logic.
|
|
|
|
We can never hit the case where we try to light up an output without
a buffer. output_ensure_buffer() will catch this for now, and when that's
removed, output_basic_test() will catch this case.
|
|
drm_connect_state_init() will set primary_fd to null if no CRTC is active
for the connector and can crash later if the code expects a CRTC (like
when lighting up an output).
|
|
This is unused.
|
|
This is no longer used.
|
|
Saving the old context and immediately making our own context
current is a common pattern. Let's make it easier to do.
No functional change, just refactoring.
|
|
For XWayland surfaces that start maximized, it's best to send an initial
Configure event to set the size of the surface before mapping it. This
reduces visual glitches since the application sees the correct maximized
size when performing its initial layout and drawing.
wlroots surfaces emit their first "map" event after the XWayland window
has already been mapped and the first frame has been drawn & committed.
This is too late to send the initial Configure event.
So, add a new "map_request" event which is emitted immediately before
telling XWayland to map the window. Compositors can connect to this
event to send the initial Configure event to an XWayland app based on
its requested maximized (or fullscreen) state.
Compositors should not place anything visually on the screen at this
point but rather wait until the "map" event as before.
|
|
scan-build is a little confused, thinking xwm->xres value could change
during the execution of xwayland_surface_create so client_id_cookie
could end up used uninitialized.
The struct is just an unsigned int, so no harm in initializing it to get
it off the list.
|
|
|
|
In query_modifier_support, the calloc for either or both of render_mods
and texture_mods may fail, in which case both are freed for convenience.
However, if one is non-NULL, vulkan_format_props_finish will try to free
it again.
NULL them to avoid double-free.
|
|
If drm_format_set_extend fails, we need to make sure each wlr_drm_format
is cleaned up together with the formats array. Finish the set to take
care of it.
|
|
837060f894a4 made a change to only allocate the xcb_window_t array if it
was not going to be zero-sized. It accidentally shadowed the variable so
the output of the allocation would never be used.
Regressed-by: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4563
|
|
Zero-sized allocations have glibc-specific behavior, so avoid those.
|
|
|
|
init_plane tries to free a single plane on error, but this is an element
in a calloc'd array by the caller that we should not touch.
|
|
|
|
On startup, we fetch the previous MODE_ID blob ID so that
compositors can keep using the previous mode if they want to.
However, that blob doesn't belong to us, it belongs to the
previous DRM master. As a result, we get an error when trying to
destroy it.
Fix this by tracking whether the blob belongs to us or not.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3811
|
|
The Linux graphics section of 01.org is no more. Link to more
official docs instead.
|
|
|
|
An assert was added in [1] to avoid tracking the same output multiple
times. However, this is cumbersome for compositors [2]: they need to
add a special check for this. Additionally, this is inconsistent with
wlr_output_layout_add().
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4380
[2]: https://github.com/cage-kiosk/cage/pull/315
|
|
Stop trying to maintain a per-file _POSIX_C_SOURCE. Instead,
require POSIX.1-2008 globally. A lot of core source files depend
on that already.
Some care must be taken on a few select files where we need a bit
more than POSIX. Some files need XSI extensions (_XOPEN_SOURCE) and
some files need BSD extensions (_DEFAULT_SOURCE). In both cases,
these feature test macros imply _POSIX_C_SOURCE. Make sure to not
define both these macros and _POSIX_C_SOURCE explicitly to avoid
POSIX requirement conflicts (e.g. _POSIX_C_SOURCE says POSIX.1-2001
but _XOPEN_SOURCE says POSIX.1-2008).
Additionally, there is one special case in render/vulkan/vulkan.c.
That file needs major()/minor(), and these are system-specific.
On FreeBSD, _POSIX_C_SOURCE hides system-specific symbols so we need
to make sure it's not defined for this file. On Linux, we can
explicitly include <sys/sysmacros.h> and ensure that apart from
symbols defined there the file only uses POSIX toys.
|
|
snprintf() is actually ISO C99.
We still need POSIX for clock_gettime().
|
|
If all connectors and planes already have the right CRTC set, or
are disabled, we can skip the device-wide reset after a VT switch.
I've contemplated using a more fine-grained logic to only reset
the connectors, CRTCs and planes that need to be migrated. However,
writing a correct algorithm for this would be quite involved, and it
doesn't seem worth the trouble anyways.
Closes: https://github.com/swaywm/sway/issues/7956
|
|
|
|
We'll need to use a bunch of internal functions from that file in
the next commits.
|
|
Allows the KMS driver to parallelize the modesets, so should be
faster than going through each CRTC one by one.
|
|
This function fetches property IDs. These don't change for the
lifetime of the connector. Instead of refreshing the property IDs
on hotplug (and leaving property IDs unset for disconnected
connectors), only fetch the property IDs when we create the
connector.
|
|
|
|
|
|
Centralizes the logic to destroy a DRM blob: check whether it's
zero, and print a nice error message.
|
|
No need for this, the backend can be grabbed from the connector.
|
|
|
|
|
|
This extracts common string updating logic into a function and fixes a
possible NULL dereference.
|
|
We only need base POSIX here.
|