[][src]Struct wayland_client::NewProxy

pub struct NewProxy<I: Interface> { /* fields omitted */ }

A newly-created proxy that needs implementation

Whenever a new wayland object is created, you will receive it as a NewProxy. 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 Proxy.

Implementations are structs implementing the appropriate variant of the Implementation trait. They can also be closures.

Methods

impl<I: Interface + 'static> NewProxy<I>[src]

pub fn implement<F, UD>(self, implementation: F, user_data: UD) -> Proxy<I> where
    F: FnMut(I::Event, Proxy<I>) + Send + 'static,
    UD: Send + Sync + 'static,
    I::Event: MessageGroup<Map = ProxyMap>, 
[src]

Implement this proxy using given function and implementation data.

pub unsafe fn implement_nonsend<Impl, UD>(
    self,
    implementation: Impl,
    user_data: UD,
    queue: &QueueToken
) -> Proxy<I> where
    Impl: FnMut(I::Event, Proxy<I>) + 'static,
    UD: 'static,
    I::Event: MessageGroup<Map = ProxyMap>, 
[src]

Implement this proxy using given function and implementation data.

This method allows the implementation to not be Send, but requires for safety that you provide a token to the event queue this proxy will be implemented on. This method will then ensure that this proxy is registered on this event queue, so that it cannot be dispatched from an other thread.

Unsafety:

This call can be racy if the proxy is not already registered on this event queue and its old queue is being dispatched from an other thread.

To ensure safety, see Proxy::make_wrapper.

impl<I: Interface + 'static> NewProxy<I>[src]

pub fn c_ptr(&self) -> *mut wl_proxy[src]

Get a raw pointer to the underlying wayland object

Retrieve a pointer to the object from the libwayland-client.so library. You will mostly need it to interface with C libraries needing access to wayland objects (to initialize an opengl context for example).

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_proxy) -> Self[src]

Create a NewProxy 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.

Auto Trait Implementations

impl<I> Unpin for NewProxy<I> where
    I: Unpin

impl<I> !Sync for NewProxy<I>

impl<I> !Send for NewProxy<I>

impl<I> UnwindSafe for NewProxy<I> where
    I: RefUnwindSafe

impl<I> RefUnwindSafe for NewProxy<I> where
    I: RefUnwindSafe

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]