diff options
-rw-r--r-- | include/client/client.h | 48 | ||||
-rw-r--r-- | wayland/buffers.c | 64 |
2 files changed, 56 insertions, 56 deletions
diff --git a/include/client/client.h b/include/client/client.h index 02806eae..39f18caf 100644 --- a/include/client/client.h +++ b/include/client/client.h | |||
@@ -8,36 +8,36 @@ | |||
8 | #include "list.h" | 8 | #include "list.h" |
9 | 9 | ||
10 | struct output_state { | 10 | struct output_state { |
11 | struct wl_output *output; | 11 | struct wl_output *output; |
12 | uint32_t flags; | 12 | uint32_t flags; |
13 | uint32_t width, height; | 13 | uint32_t width, height; |
14 | }; | 14 | }; |
15 | 15 | ||
16 | struct buffer { | 16 | struct buffer { |
17 | struct wl_buffer *buffer; | 17 | struct wl_buffer *buffer; |
18 | int fd; | 18 | int fd; |
19 | cairo_surface_t *surface; | 19 | cairo_surface_t *surface; |
20 | cairo_t *cairo; | 20 | cairo_t *cairo; |
21 | PangoContext *pango; | 21 | PangoContext *pango; |
22 | uint32_t width, height; | 22 | uint32_t width, height; |
23 | bool busy; | 23 | bool busy; |
24 | }; | 24 | }; |
25 | 25 | ||
26 | struct client_state { | 26 | struct client_state { |
27 | struct wl_compositor *compositor; | 27 | struct wl_compositor *compositor; |
28 | struct wl_display *display; | 28 | struct wl_display *display; |
29 | struct wl_pointer *pointer; | 29 | struct wl_pointer *pointer; |
30 | struct wl_seat *seat; | 30 | struct wl_seat *seat; |
31 | struct wl_shell *shell; | 31 | struct wl_shell *shell; |
32 | struct wl_shm *shm; | 32 | struct wl_shm *shm; |
33 | struct buffer buffers[2]; | 33 | struct buffer buffers[2]; |
34 | struct buffer *buffer; | 34 | struct buffer *buffer; |
35 | struct wl_surface *surface; | 35 | struct wl_surface *surface; |
36 | struct wl_shell_surface *shell_surface; | 36 | struct wl_shell_surface *shell_surface; |
37 | struct wl_callback *frame_cb; | 37 | struct wl_callback *frame_cb; |
38 | uint32_t width, height; | 38 | uint32_t width, height; |
39 | cairo_t *cairo; | 39 | cairo_t *cairo; |
40 | list_t *outputs; | 40 | list_t *outputs; |
41 | }; | 41 | }; |
42 | 42 | ||
43 | struct client_state *client_setup(uint32_t width, uint32_t height); | 43 | struct client_state *client_setup(uint32_t width, uint32_t height); |
diff --git a/wayland/buffers.c b/wayland/buffers.c index cc8740c4..f426b912 100644 --- a/wayland/buffers.c +++ b/wayland/buffers.c | |||
@@ -75,44 +75,44 @@ static struct buffer *create_buffer(struct client_state *state, struct buffer *b | |||
75 | } | 75 | } |
76 | 76 | ||
77 | static void destroy_buffer(struct buffer *buffer) { | 77 | static void destroy_buffer(struct buffer *buffer) { |
78 | if (buffer->buffer) { | 78 | if (buffer->buffer) { |
79 | wl_buffer_destroy(buffer->buffer); | 79 | wl_buffer_destroy(buffer->buffer); |
80 | } | 80 | } |
81 | if (buffer->cairo) { | 81 | if (buffer->cairo) { |
82 | cairo_destroy(buffer->cairo); | 82 | cairo_destroy(buffer->cairo); |
83 | } | 83 | } |
84 | if (buffer->surface) { | 84 | if (buffer->surface) { |
85 | cairo_surface_destroy(buffer->surface); | 85 | cairo_surface_destroy(buffer->surface); |
86 | } | 86 | } |
87 | memset(buffer, 0, sizeof(struct buffer)); | 87 | memset(buffer, 0, sizeof(struct buffer)); |
88 | } | 88 | } |
89 | 89 | ||
90 | struct buffer *get_next_buffer(struct client_state *state) { | 90 | struct buffer *get_next_buffer(struct client_state *state) { |
91 | struct buffer *buffer = NULL; | 91 | struct buffer *buffer = NULL; |
92 | 92 | ||
93 | int i; | 93 | int i; |
94 | for (i = 0; i < 2; ++i) { | 94 | for (i = 0; i < 2; ++i) { |
95 | if (state->buffers[i].busy) { | 95 | if (state->buffers[i].busy) { |
96 | continue; | 96 | continue; |
97 | } | ||
98 | buffer = &state->buffers[i]; | ||
97 | } | 99 | } |
98 | buffer = &state->buffers[i]; | ||
99 | } | ||
100 | 100 | ||
101 | if (!buffer) { | 101 | if (!buffer) { |
102 | return NULL; | 102 | return NULL; |
103 | } | 103 | } |
104 | 104 | ||
105 | if (buffer->width != state->width || buffer->height != state->height) { | 105 | if (buffer->width != state->width || buffer->height != state->height) { |
106 | destroy_buffer(buffer); | 106 | destroy_buffer(buffer); |
107 | } | 107 | } |
108 | 108 | ||
109 | if (!buffer->buffer) { | 109 | if (!buffer->buffer) { |
110 | if (!create_buffer(state, buffer, state->width, state->height, WL_SHM_FORMAT_ARGB8888)) { | 110 | if (!create_buffer(state, buffer, state->width, state->height, WL_SHM_FORMAT_ARGB8888)) { |
111 | return NULL; | 111 | return NULL; |
112 | } | ||
112 | } | 113 | } |
113 | } | 114 | |
114 | 115 | state->cairo = buffer->cairo; | |
115 | state->cairo = buffer->cairo; | 116 | state->buffer = buffer; |
116 | state->buffer = buffer; | 117 | return buffer; |
117 | return buffer; | ||
118 | } | 118 | } |