Trait wayland_server::Resource [] [src]

pub 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 ();

    fn post_error(&self, error_code: u32, msg: String) { ... }
    fn clone(&self) -> Option<Self> where Self: Sized { ... }
    unsafe fn clone_unchecked(&self) -> Self where Self: Sized { ... }
}

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

Pointer to the underlying wayland proxy object

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).

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.

Pointer to the interface representation

Internal wayland name of this interface

Max version of this interface supported

Current version of the interface this resource is instantiated with

Check if the resource behind this handle is actually still alive

Check of two handles are actually the same wayland object

Returns false if any of the objects has already been destroyed

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.

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.

Provided Methods

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.

Clone this resource handle

Will only succeed if the resource is managed by this library and is still alive.

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.

Implementors