Trait wayland_server::Resource
[−]
[src]
pub unsafe trait Resource { fn ptr(&self) -> *mut wl_resource; unsafe fn from_ptr_new(_: *mut wl_resource) -> Self; unsafe fn from_ptr_initialized(_: *mut wl_resource) -> Self; fn interface_ptr() -> *const wl_interface; fn interface_name() -> &'static str; fn supported_version() -> u32; fn version(&self) -> i32; fn status(&self) -> Liveness; fn equals(&self, _: &Self) -> bool; fn set_user_data(&self, ptr: *mut ()); fn get_user_data(&self) -> *mut (); unsafe fn clone_unchecked(&self) -> Self; fn post_error(&self, error_code: u32, msg: String) { ... } fn clone(&self) -> Option<Self>
where
Self: Sized, { ... } fn same_client_as<R: Resource>(&self, other: &R) -> bool { ... } }
Common routines for wayland resource objects.
All wayland objects automatically implement this trait as generated by the scanner.
It is mostly used for internal use by the library, and you should only need these methods for interfacing with C library working on wayland objects.
Required Methods
fn ptr(&self) -> *mut wl_resource
Pointer to the underlying wayland proxy object
unsafe fn from_ptr_new(_: *mut wl_resource) -> Self
Create an instance from a wayland pointer
The pointer must refer to a valid wayland resource of the appropriate interface, but that have not yet been seen by the library.
The library will take control of the object (notably overwrite its user_data).
unsafe fn from_ptr_initialized(_: *mut wl_resource) -> Self
Create an instance from a wayland pointer
The pointer must refer to a valid wayland resource of the appropriate interface. The library will detect if the resource is already managed by it or not. If it is not, this resource will be considered as "unmanaged", and should then be handled with care.
fn interface_ptr() -> *const wl_interface
Pointer to the interface representation
fn interface_name() -> &'static str
Internal wayland name of this interface
fn supported_version() -> u32
Max version of this interface supported
fn version(&self) -> i32
Current version of the interface this resource is instantiated with
fn status(&self) -> Liveness
Check if the resource behind this handle is actually still alive
fn equals(&self, _: &Self) -> bool
Check of two handles are actually the same wayland object
Returns false
if any of the objects has already been destroyed
fn set_user_data(&self, ptr: *mut ())
Set a pointer associated as user data on this resource
All handles to the same wayland object share the same user data pointer.
The get/set operations are atomic, no more guarantee is given. If you need to synchronise access to this data, it is your responsibility to add a Mutex or any other similar mechanism.
fn get_user_data(&self) -> *mut ()
Get the pointer associated as user data on this resource
All handles to the same wayland object share the same user data pointer.
See set_user_data
for synchronisation guarantee.
unsafe fn clone_unchecked(&self) -> Self
Unsafely clone this resource handle
This function is unsafe because if the resource is unmanaged, the lib has no knowledge of its lifetime, and cannot ensure that the new handle will not outlive the object.
Provided Methods
fn post_error(&self, error_code: u32, msg: String)
Posts a protocol error to this resource
The error code can be obtained from the various Error
enums of the protocols.
An error is fatal to the client that caused it.
fn clone(&self) -> Option<Self> where
Self: Sized,
Self: Sized,
Clone this resource handle
Will only succeed if the resource is managed by this library and is still alive.
fn same_client_as<R: Resource>(&self, other: &R) -> bool
Checks wether this resource and the other are from the same client
Returns true
if both are alive and belong to the same client, false
otherwise.
Implementors
impl Resource for WlCallback
impl Resource for WlCompositor
impl Resource for WlShmPool
impl Resource for WlShm
impl Resource for WlBuffer
impl Resource for WlDataOffer
impl Resource for WlDataSource
impl Resource for WlDataDevice
impl Resource for WlDataDeviceManager
impl Resource for WlShell
impl Resource for WlShellSurface
impl Resource for WlSurface
impl Resource for WlSeat
impl Resource for WlPointer
impl Resource for WlKeyboard
impl Resource for WlTouch
impl Resource for WlOutput
impl Resource for WlRegion
impl Resource for WlSubcompositor
impl Resource for WlSubsurface