From 399220f14bc60581490936d9f1a0fd353bfc9ef5 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Wed, 18 Nov 2015 08:22:37 -0500 Subject: Fix up wayland client implementation Now it receives frame callbacks and renders properly, and is double buffered and such. --- include/client.h | 46 ---------------------------------------------- include/client/buffer.h | 8 ++++++++ include/client/client.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 46 deletions(-) delete mode 100644 include/client.h create mode 100644 include/client/buffer.h create mode 100644 include/client/client.h (limited to 'include') diff --git a/include/client.h b/include/client.h deleted file mode 100644 index f10e6b1a..00000000 --- a/include/client.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _CLIENT_H -#define _CLIENT_H - -#include -#include -#include -#include -#include "list.h" - -struct output_state { - struct wl_output *output; - uint32_t flags; - int width, height; -}; - -struct buffer { - struct wl_buffer *buffer; - struct wl_shm_pool *pool; - uint32_t width, height; -}; - -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 *buffer; - struct wl_surface *surface; - struct wl_shell_surface *shell_surface; - struct wl_callback *frame_cb; - bool busy; - cairo_t *cairo; - cairo_surface_t *cairo_surface; - PangoContext *pango; - list_t *outputs; -}; - -struct client_state *client_setup(void); -void client_teardown(struct client_state *state); -struct buffer *create_memory_pool(struct client_state *state, int32_t width, int32_t height, uint32_t format); -int client_prerender(struct client_state *state); -int client_render(struct client_state *state); - -#endif diff --git a/include/client/buffer.h b/include/client/buffer.h new file mode 100644 index 00000000..aa8d68a1 --- /dev/null +++ b/include/client/buffer.h @@ -0,0 +1,8 @@ +#ifndef _BUFFER_H +#define _BUFFER_H + +#include "client/client.h" + +struct buffer *get_next_buffer(struct client_state *state); + +#endif 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 +#include +#include +#include +#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 -- cgit v1.2.3