diff options
author | Drew DeVault <sir@cmpwn.com> | 2015-11-18 08:22:37 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2015-11-18 08:22:53 -0500 |
commit | 399220f14bc60581490936d9f1a0fd353bfc9ef5 (patch) | |
tree | ec086840b4f340029e775d324279730fda64a9ad /include/client/client.h | |
parent | 01202568f9da643716b47deb15db8416d1c3bdc7 (diff) |
Fix up wayland client implementation
Now it receives frame callbacks and renders properly, and is double
buffered and such.
Diffstat (limited to 'include/client/client.h')
-rw-r--r-- | include/client/client.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/include/client/client.h b/include/client/client.h new file mode 100644 index 00000000..bac2c1a6 --- /dev/null +++ b/include/client/client.h @@ -0,0 +1,47 @@ +#ifndef _CLIENT_H +#define _CLIENT_H + +#include <wayland-client.h> +#include <cairo/cairo.h> +#include <pango/pangocairo.h> +#include <stdbool.h> +#include "list.h" + +struct output_state { + struct wl_output *output; + uint32_t flags; + uint32_t width, height; +}; + +struct buffer { + struct wl_buffer *buffer; + cairo_surface_t *surface; + cairo_t *cairo; + PangoContext *pango; + uint32_t width, height; + bool busy; +}; + +struct client_state { + struct wl_compositor *compositor; + struct wl_display *display; + struct wl_pointer *pointer; + struct wl_seat *seat; + struct wl_shell *shell; + struct wl_shm *shm; + struct buffer buffers[2]; + struct buffer *buffer; + struct wl_surface *surface; + struct wl_shell_surface *shell_surface; + struct wl_callback *frame_cb; + uint32_t width, height; + cairo_t *cairo; + list_t *outputs; +}; + +struct client_state *client_setup(uint32_t width, uint32_t height); +void client_teardown(struct client_state *state); +int client_prerender(struct client_state *state); +int client_render(struct client_state *state); + +#endif |