org.freedesktop.wayland.client.WlShmPoolProxy Maven / Gradle / Ivy
Show all versions of wayland Show documentation
package org.freedesktop.wayland.client;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.freedesktop.wayland.util.Arguments;
import org.freedesktop.wayland.util.Interface;
import org.freedesktop.wayland.util.Message;
//
//
// Copyright © 2008-2011 Kristian Høgsberg
// Copyright © 2010-2011 Intel Corporation
// Copyright © 2012-2013 Collabora, Ltd.
//
// Permission to use, copy, modify, distribute, and sell this
// software and its documentation for any purpose is hereby granted
// without fee, provided that the above copyright notice appear in
// all copies and that both that copyright notice and this permission
// notice appear in supporting documentation, and that the name of
// the copyright holders not be used in advertising or publicity
// pertaining to distribution of the software without specific,
// written prior permission. The copyright holders make no
// representations about the suitability of this software for any
// purpose. It is provided "as is" without express or implied
// warranty.
//
// THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
// FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
// SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
// AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
// THIS SOFTWARE.
//
/**
* a shared memory pool
*
*
* The wl_shm_pool object encapsulates a piece of memory shared
* between the compositor and client. Through the wl_shm_pool
* object, the client can allocate shared memory wl_buffer objects.
* All objects created through the same pool share the same
* underlying mapped memory. Reusing the mapped memory avoids the
* setup/teardown overhead and is useful when interactively resizing
* a surface or for many small buffers.
*
*/
@Interface(
methods = {
@Message(
types = {
org.freedesktop.wayland.client.WlBufferProxy.class,
int.class,
int.class,
int.class,
int.class,
int.class
},
signature = "niiiiu",
functionName = "createBuffer",
name = "create_buffer"
)
,
@Message(
types = {
},
signature = "",
functionName = "destroy",
name = "destroy"
)
,
@Message(
types = {
int.class
},
signature = "i",
functionName = "resize",
name = "resize"
)
},
name = "wl_shm_pool",
version = 1,
events = {
}
)
public class WlShmPoolProxy extends Proxy {
public static final String INTERFACE_NAME = "wl_shm_pool";
public WlShmPoolProxy(com.sun.jna.Pointer pointer, WlShmPoolEvents implementation, int version) {
super(pointer, implementation, version);
}
public WlShmPoolProxy(com.sun.jna.Pointer pointer) {
super(pointer);
}
/**
* create a buffer from the pool
*
*
* Create a wl_buffer object from the pool.
*
* The buffer is created offset bytes into the pool and has
* width and height as specified. The stride arguments specifies
* the number of bytes from beginning of one row to the beginning
* of the next. The format is the pixel format of the buffer and
* must be one of those advertised through the wl_shm.format event.
*
* A buffer will keep a reference to the pool it was created from
* so it is valid to destroy the pool immediately after creating
* a buffer from it.
*
* @param implementation A protocol event listener for the newly created proxy.
* @param offset
* @param width
* @param height
* @param stride
* @param format
*/
public WlBufferProxy createBuffer(WlBufferEvents implementation, int offset, int width, int height, int stride, int format) {
return marshalConstructor(0, implementation, getVersion(), org.freedesktop.wayland.client.WlBufferProxy.class, Arguments.create(6).set(0, 0).set(1, offset).set(2, width).set(3, height).set(4, stride).set(5, format));
}
/**
* destroy the pool
*
*
* Destroy the shared memory pool.
*
* The mmapped memory will be released when all
* buffers that have been created from this pool
* are gone.
*
*/
public void destroy() {
marshal(1);
}
/**
* change the size of the pool mapping
*
*
* This request will cause the server to remap the backing memory
* for the pool from the file descriptor passed when the pool was
* created, but using the new size. This request can only be
* used to make the pool bigger.
*
* @param size
*/
public void resize(int size) {
marshal(2, Arguments.create(1).set(0, size));
}
}