6 #define WL_HIDE_DEPRECATED
7 #include <wayland-client.h>
8 #include <wayland-tbm-client.h>
9 #include <wayland-tbm-int.h>
11 #include <tbm_surface.h>
13 #include "wayland-tbm-test-client-protocol.h"
15 #define WL_APP_C_LOG(fmt, ...) fprintf(stderr, "[CLIENT(%d):%s] " fmt, getpid(), __func__, ##__VA_ARGS__)
18 struct wayland_tbm_client *tbm_client;
19 struct wl_tbm *wl_tbm;
20 struct wl_tbm_test *wl_tbm_test;
21 struct wl_test_remote *remote;
23 struct wl_buffer *bufs[3];
32 _wl_registry_global_cb(void *data,
33 struct wl_registry *wl_registry,
35 const char *interface,
38 AppInfoClient *app = (AppInfoClient *)data;
40 if (!strcmp(interface, "wl_tbm_test")) {
41 WL_APP_C_LOG("bind %s", interface);
42 app->wl_tbm_test = wl_registry_bind(wl_registry, name,
43 &wl_tbm_test_interface, 1);
48 _wl_registry_global_remove_cb(void *data,
49 struct wl_registry *wl_registry,
54 static const struct wl_registry_listener wl_registry_impl = {
55 _wl_registry_global_cb,
56 _wl_registry_global_remove_cb,
60 _wl_test_remote_update_cb(void *data,
61 struct wl_test_remote *wl_test_remote,
62 struct wl_buffer *buffer)
64 WL_APP_C_LOG("wl_buffer:%p, tbm_surface:%p\n", buffer, wl_buffer_get_user_data(buffer));
67 static const struct wl_test_remote_listener wl_test_remote_impl = {
68 _wl_test_remote_update_cb
71 void create_consumer(AppInfoClient *app)
73 app->remote = wl_tbm_test_create_remote_surface(app->wl_tbm_test, "test");
74 wl_test_remote_add_listener(app->remote, &wl_test_remote_impl, NULL);
75 wl_test_remote_redirect(app->remote, app->wl_tbm);
79 main(int argc, char *argv[])
81 static const char *default_dpy_name = "tbm_remote";
82 struct wl_display *dpy = NULL;
83 struct wl_registry *registry;
84 const char *dpy_name = NULL;
90 dpy_name = default_dpy_name;
92 dpy = wl_display_connect(dpy_name);
94 printf("[APP] failed to connect server\n");
98 registry = wl_display_get_registry(dpy);
99 wl_registry_add_listener(registry, &wl_registry_impl, &gApp);
100 wl_display_roundtrip(dpy);
101 if (gApp.wl_tbm_test == NULL) {
102 WL_APP_C_LOG("fail to bind::wl_tbm_test");
106 gApp.tbm_client = wayland_tbm_client_init(dpy);
107 if (!gApp.tbm_client) {
108 WL_APP_C_LOG("fail to wayland_tbm_client_init()\n");
111 gApp.wl_tbm = wayland_tbm_client_get_wl_tbm(gApp.tbm_client);
113 create_consumer(&gApp);
115 while (ret >= 0 && gApp.exit == 0)
116 ret = wl_display_dispatch(dpy);