1 #ifndef BQ_MGR_CLIENT_PROTOCOL_H
2 #define BQ_MGR_CLIENT_PROTOCOL_H
10 #include "wayland-client.h"
20 extern const struct wl_interface bq_mgr_interface;
21 extern const struct wl_interface bq_consumer_interface;
22 extern const struct wl_interface bq_provider_interface;
23 extern const struct wl_interface bq_buffer_interface;
25 #ifndef BQ_MGR_ERROR_ENUM
26 #define BQ_MGR_ERROR_ENUM
28 BQ_MGR_ERROR_INVALID_PERMISSION = 0,
29 BQ_MGR_ERROR_INVALID_NAME = 1,
30 BQ_MGR_ERROR_ALREADY_USED = 2,
32 #endif /* BQ_MGR_ERROR_ENUM */
34 #define BQ_MGR_CREATE_CONSUMER 0
35 #define BQ_MGR_CREATE_PROVIDER 1
38 bq_mgr_set_user_data(struct bq_mgr *bq_mgr, void *user_data)
40 wl_proxy_set_user_data((struct wl_proxy *) bq_mgr, user_data);
44 bq_mgr_get_user_data(struct bq_mgr *bq_mgr)
46 return wl_proxy_get_user_data((struct wl_proxy *) bq_mgr);
50 bq_mgr_destroy(struct bq_mgr *bq_mgr)
52 wl_proxy_destroy((struct wl_proxy *) bq_mgr);
55 static inline struct bq_consumer *
56 bq_mgr_create_consumer(struct bq_mgr *bq_mgr, const char *name, int32_t queue_size, int32_t width, int32_t height)
60 id = wl_proxy_marshal_constructor((struct wl_proxy *) bq_mgr,
61 BQ_MGR_CREATE_CONSUMER, &bq_consumer_interface, NULL, name, queue_size, width, height);
63 return (struct bq_consumer *) id;
66 static inline struct bq_provider *
67 bq_mgr_create_provider(struct bq_mgr *bq_mgr, const char *name)
71 id = wl_proxy_marshal_constructor((struct wl_proxy *) bq_mgr,
72 BQ_MGR_CREATE_PROVIDER, &bq_provider_interface, NULL, name);
74 return (struct bq_provider *) id;
77 struct bq_consumer_listener {
81 void (*connected)(void *data,
82 struct bq_consumer *bq_consumer);
84 * disconnected - (none)
86 void (*disconnected)(void *data,
87 struct bq_consumer *bq_consumer);
89 * buffer_attached - (none)
97 void (*buffer_attached)(void *data,
98 struct bq_consumer *bq_consumer,
99 struct bq_buffer *buffer,
106 * set_buffer_id - (none)
116 void (*set_buffer_id)(void *data,
117 struct bq_consumer *bq_consumer,
118 struct bq_buffer *buffer,
127 * set_buffer_pixmap_id - (none)
137 void (*set_buffer_pixmap_id)(void *data,
138 struct bq_consumer *bq_consumer,
139 struct bq_buffer *buffer,
148 * set_buffer_fd - (none)
158 void (*set_buffer_fd)(void *data,
159 struct bq_consumer *bq_consumer,
160 struct bq_buffer *buffer,
169 * buffer_detached - (none)
172 void (*buffer_detached)(void *data,
173 struct bq_consumer *bq_consumer,
174 struct bq_buffer *buffer);
176 * add_buffer - (none)
180 void (*add_buffer)(void *data,
181 struct bq_consumer *bq_consumer,
182 struct bq_buffer *buffer,
187 bq_consumer_add_listener(struct bq_consumer *bq_consumer,
188 const struct bq_consumer_listener *listener, void *data)
190 return wl_proxy_add_listener((struct wl_proxy *) bq_consumer,
191 (void (**)(void)) listener, data);
194 #define BQ_CONSUMER_DESTROY 0
195 #define BQ_CONSUMER_RELEASE_BUFFER 1
198 bq_consumer_set_user_data(struct bq_consumer *bq_consumer, void *user_data)
200 wl_proxy_set_user_data((struct wl_proxy *) bq_consumer, user_data);
204 bq_consumer_get_user_data(struct bq_consumer *bq_consumer)
206 return wl_proxy_get_user_data((struct wl_proxy *) bq_consumer);
210 bq_consumer_destroy(struct bq_consumer *bq_consumer)
212 wl_proxy_marshal((struct wl_proxy *) bq_consumer,
213 BQ_CONSUMER_DESTROY);
215 wl_proxy_destroy((struct wl_proxy *) bq_consumer);
219 bq_consumer_release_buffer(struct bq_consumer *bq_consumer, struct bq_buffer *buffer)
221 wl_proxy_marshal((struct wl_proxy *) bq_consumer,
222 BQ_CONSUMER_RELEASE_BUFFER, buffer);
225 #ifndef BQ_PROVIDER_ERROR_ENUM
226 #define BQ_PROVIDER_ERROR_ENUM
227 enum bq_provider_error {
228 BQ_PROVIDER_ERROR_OVERFLOW_QUEUE_SIZE = 0,
229 BQ_PROVIDER_ERROR_CONNECTION = 1,
231 #endif /* BQ_PROVIDER_ERROR_ENUM */
233 struct bq_provider_listener {
236 * @queue_size: (none)
240 void (*connected)(void *data,
241 struct bq_provider *bq_provider,
246 * disconnected - (none)
248 void (*disconnected)(void *data,
249 struct bq_provider *bq_provider);
251 * add_buffer - (none)
255 void (*add_buffer)(void *data,
256 struct bq_provider *bq_provider,
257 struct bq_buffer *buffer,
262 bq_provider_add_listener(struct bq_provider *bq_provider,
263 const struct bq_provider_listener *listener, void *data)
265 return wl_proxy_add_listener((struct wl_proxy *) bq_provider,
266 (void (**)(void)) listener, data);
269 #define BQ_PROVIDER_DESTROY 0
270 #define BQ_PROVIDER_ATTACH_BUFFER 1
271 #define BQ_PROVIDER_SET_BUFFER_ID 2
272 #define BQ_PROVIDER_SET_BUFFER_PIXMAP_ID 3
273 #define BQ_PROVIDER_SET_BUFFER_FD 4
274 #define BQ_PROVIDER_DETACH_BUFFER 5
275 #define BQ_PROVIDER_ENQUEUE_BUFFER 6
278 bq_provider_set_user_data(struct bq_provider *bq_provider, void *user_data)
280 wl_proxy_set_user_data((struct wl_proxy *) bq_provider, user_data);
284 bq_provider_get_user_data(struct bq_provider *bq_provider)
286 return wl_proxy_get_user_data((struct wl_proxy *) bq_provider);
290 bq_provider_destroy(struct bq_provider *bq_provider)
292 wl_proxy_marshal((struct wl_proxy *) bq_provider,
293 BQ_PROVIDER_DESTROY);
295 wl_proxy_destroy((struct wl_proxy *) bq_provider);
298 static inline struct bq_buffer *
299 bq_provider_attach_buffer(struct bq_provider *bq_provider, const char *engine, int32_t width, int32_t height, int32_t format, uint32_t flags)
301 struct wl_proxy *buffer;
303 buffer = wl_proxy_marshal_constructor((struct wl_proxy *) bq_provider,
304 BQ_PROVIDER_ATTACH_BUFFER, &bq_buffer_interface, NULL, engine, width, height, format, flags);
306 return (struct bq_buffer *) buffer;
310 bq_provider_set_buffer_id(struct bq_provider *bq_provider, struct bq_buffer *buffer, int32_t id, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2)
312 wl_proxy_marshal((struct wl_proxy *) bq_provider,
313 BQ_PROVIDER_SET_BUFFER_ID, buffer, id, offset0, stride0, offset1, stride1, offset2, stride2);
317 bq_provider_set_buffer_pixmap_id(struct bq_provider *bq_provider, struct bq_buffer *buffer, int32_t id, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2)
319 wl_proxy_marshal((struct wl_proxy *) bq_provider,
320 BQ_PROVIDER_SET_BUFFER_PIXMAP_ID, buffer, id, offset0, stride0, offset1, stride1, offset2, stride2);
324 bq_provider_set_buffer_fd(struct bq_provider *bq_provider, struct bq_buffer *buffer, int32_t fd, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2)
326 wl_proxy_marshal((struct wl_proxy *) bq_provider,
327 BQ_PROVIDER_SET_BUFFER_FD, buffer, fd, offset0, stride0, offset1, stride1, offset2, stride2);
331 bq_provider_detach_buffer(struct bq_provider *bq_provider, struct bq_buffer *buffer)
333 wl_proxy_marshal((struct wl_proxy *) bq_provider,
334 BQ_PROVIDER_DETACH_BUFFER, buffer);
338 bq_provider_enqueue_buffer(struct bq_provider *bq_provider, struct bq_buffer *buffer, uint32_t serial)
340 wl_proxy_marshal((struct wl_proxy *) bq_provider,
341 BQ_PROVIDER_ENQUEUE_BUFFER, buffer, serial);
344 #define BQ_BUFFER_DESTROY 0
347 bq_buffer_set_user_data(struct bq_buffer *bq_buffer, void *user_data)
349 wl_proxy_set_user_data((struct wl_proxy *) bq_buffer, user_data);
353 bq_buffer_get_user_data(struct bq_buffer *bq_buffer)
355 return wl_proxy_get_user_data((struct wl_proxy *) bq_buffer);
359 bq_buffer_destroy(struct bq_buffer *bq_buffer)
361 wl_proxy_marshal((struct wl_proxy *) bq_buffer,
364 wl_proxy_destroy((struct wl_proxy *) bq_buffer);