mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-31 22:25:21 -04:00
Introduce wlr_shm
This is a re-implementation of wl_shm. The motivations for using this over the one shipped in libwayland are: - Properly handle SIGBUS when accessing a wl_buffer's underlying data after the wl_buffer protocol object has been destroyed. With the current code, we just crash if the client does that and then shrinks the backing file. - No need to fight the wl_shm_buffer API anymore. This was awkward because we weren't notified when clients created a wl_shm buffer, and this doesn't play well with our wlr_buffer abstraction. - Access to the underlying FD. This makes it possible to forward the wl_shm buffer to a parent compositor with the Wayland/X11 backends. - Better stride checks. We can use our format table to ensure that the stride is consistent with the bpp and width.
This commit is contained in:
parent
6e88eeadeb
commit
0ae3c7b1a2
3 changed files with 580 additions and 0 deletions
31
include/wlr/types/wlr_shm.h
Normal file
31
include/wlr/types/wlr_shm.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* This an unstable interface of wlroots. No guarantees are made regarding the
|
||||
* future consistency of this API.
|
||||
*/
|
||||
#ifndef WLR_USE_UNSTABLE
|
||||
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
|
||||
#endif
|
||||
|
||||
#ifndef WLR_TYPES_WLR_SHM_H
|
||||
#define WLR_TYPES_WLR_SHM_H
|
||||
|
||||
#include <wayland-server-core.h>
|
||||
|
||||
/**
|
||||
* Shared memory buffer interface.
|
||||
*
|
||||
* The buffers created via this interface are not safe to use from different
|
||||
* threads.
|
||||
*
|
||||
* Currently, accessing two buffers concurrently via
|
||||
* wlr_buffer_begin_data_ptr_access() will return an error.
|
||||
*/
|
||||
struct wlr_shm;
|
||||
|
||||
/**
|
||||
* Create the wl_shm global.
|
||||
*/
|
||||
struct wlr_shm *wlr_shm_create_with_renderer(struct wl_display *display,
|
||||
uint32_t version, struct wlr_renderer *renderer);
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue