struct arg *a, *ret;
int has_destructor, has_destroy;
- /* We provide a hand written constructor for the display object */
- if (strcmp(interface->name, "wl_display") != 0)
- printf("static inline struct %s *\n"
- "%s_create(struct wl_display *display, uint32_t id, uint32_t version)\n"
- "{\n"
- "\twl_display_bind(display, id, \"%s\", version);\n\n"
- "\treturn (struct %s *)\n"
- "\t\twl_proxy_create_for_id(display, &%s_interface, id);\n"
- "}\n\n",
- interface->name,
- interface->name,
- interface->name,
- interface->name,
- interface->name);
+ /* We provide a hand written functions for the display object */
+ if (strcmp(interface->name, "wl_display") == 0)
+ return;
+
+ printf("static inline struct %s *\n"
+ "%s_create(struct wl_display *display, uint32_t id, uint32_t version)\n"
+ "{\n"
+ "\twl_display_bind(display, id, \"%s\", version);\n\n"
+ "\treturn (struct %s *)\n"
+ "\t\twl_proxy_create_for_id(display, &%s_interface, id);\n"
+ "}\n\n",
+ interface->name,
+ interface->name,
+ interface->name,
+ interface->name,
+ interface->name);
printf("static inline void\n"
"%s_set_user_data(struct %s *%s, void *user_data)\n"
exit(EXIT_FAILURE);
}
- /* And we have a hand-written display destructor */
- if (!has_destructor && strcmp(interface->name, "wl_display") != 0)
+ if (!has_destructor)
printf("static inline void\n"
"%s_destroy(struct %s *%s)\n"
"{\n"
}
WL_EXPORT void
+wl_display_bind(struct wl_display *display,
+ uint32_t id, const char *interface, uint32_t version)
+{
+ wl_proxy_marshal(&display->proxy,
+ WL_DISPLAY_BIND, id, interface, version);
+}
+
+WL_EXPORT struct wl_callback *
+wl_display_sync(struct wl_display *display)
+{
+ struct wl_proxy *proxy;
+
+ proxy = wl_proxy_create(&display->proxy, &wl_callback_interface);
+
+ if (!proxy)
+ return NULL;
+
+ wl_proxy_marshal(&display->proxy, WL_DISPLAY_SYNC, proxy);
+
+ return (struct wl_callback *) proxy;
+}
+
+WL_EXPORT void
wl_proxy_set_user_data(struct wl_proxy *proxy, void *user_data)
{
proxy->user_data = user_data;
void wl_proxy_set_user_data(struct wl_proxy *proxy, void *user_data);
void *wl_proxy_get_user_data(struct wl_proxy *proxy);
+void wl_display_bind(struct wl_display *display,
+ uint32_t id, const char *interface, uint32_t version);
+struct wl_callback *wl_display_sync(struct wl_display *display);
+
#include "wayland-client-protocol.h"
#define WL_DISPLAY_READABLE 0x01