Struct wayland_server::NewResource
[−]
[src]
pub struct NewResource<I: Interface> { /* fields omitted */ }
A newly-created resource that needs implementation
Whenever a new wayland object is created, you will
receive it as a NewResource
. You then have to provide an
implementation for it, in order to process the incoming
events it may receive. Once this done you will be able
to use it as a regular Resource
.
Implementations are structs implementing the appropriate
variant of the Implementation
trait. They can also be
closures.
Methods
impl<I: Interface + 'static> NewResource<I>
[src]
pub fn implement<Impl, Dest>(
self,
implementation: Impl,
destructor: Option<Dest>
) -> Resource<I> where
Impl: Implementation<Resource<I>, I::Request> + Send + 'static,
Dest: FnMut(Resource<I>, Box<Implementation<Resource<I>, I::Request>>) + Send + 'static,
[src]
self,
implementation: Impl,
destructor: Option<Dest>
) -> Resource<I> where
Impl: Implementation<Resource<I>, I::Request> + Send + 'static,
Dest: FnMut(Resource<I>, Box<Implementation<Resource<I>, I::Request>>) + Send + 'static,
Implement this resource using given function, destructor, and implementation data.
pub fn implement_nonsend<Impl, Dest>(
self,
implementation: Impl,
destructor: Option<Dest>,
token: &LoopToken
) -> Resource<I> where
Impl: Implementation<Resource<I>, I::Request> + 'static,
Dest: FnMut(Resource<I>, Box<Implementation<Resource<I>, I::Request>>) + 'static,
[src]
self,
implementation: Impl,
destructor: Option<Dest>,
token: &LoopToken
) -> Resource<I> where
Impl: Implementation<Resource<I>, I::Request> + 'static,
Dest: FnMut(Resource<I>, Box<Implementation<Resource<I>, I::Request>>) + 'static,
Implement this resource using given function and implementation data.
This method allows the implementation data to not be Send
, but requires for
safety that you provide a token to the event loop owning the proxy. As the token
is not Send
, this ensures you are implementing the resource from the same thread
as the event loop runs on.
** Panics **
This function will panic if you create several wayland event loops and do not provide a token to the right one.
pub fn c_ptr(&self) -> *mut wl_resource
[src]
Get a raw pointer to the underlying wayland object
Retrieve a pointer to the object from the libwayland-server.so
library.
You will mostly need it to interface with C libraries needing access
to wayland objects.
Use this if you need to pass an unimplemented object to the C library you are interfacing with.
pub unsafe fn from_c_ptr(ptr: *mut wl_resource) -> Self
[src]
Create a NewResource
instance from a C pointer.
By doing so, you assert that this wayland object was newly created and can be safely implemented. As implementing it will overwrite any previously associated data or implementation, this can cause weird errors akin to memory corruption if it was not the case.