}
}
+static void
+emit_event_wrappers(struct wl_list *message_list, struct interface *interface)
+{
+ struct message *m;
+ struct arg *a;
+
+ /* We provide hand written functions for the display object */
+ if (strcmp(interface->name, "wl_display") == 0)
+ return;
+
+ wl_list_for_each(m, message_list, link) {
+ printf("static inline void\n"
+ "%s_send_%s(struct wl_resource *resource_",
+ interface->name, m->name);
+
+ wl_list_for_each(a, &m->arg_list, link) {
+ printf(", ");
+ switch (a->type) {
+ case NEW_ID:
+ case OBJECT:
+ printf("struct wl_resource *");
+ break;
+ default:
+ emit_type(a);
+ }
+ printf("%s", a->name);
+ }
+
+ printf(")\n"
+ "{\n"
+ "\twl_resource_post_event(resource_, %s_%s",
+ interface->uppercase_name, m->uppercase_name);
+
+ wl_list_for_each(a, &m->arg_list, link)
+ printf(", %s", a->name);
+
+ printf(");\n");
+ printf("}\n\n");
+ }
+}
+
static const char *indent(int n)
{
const char *whitespace[] = {
if (server) {
emit_structs(&i->request_list, i);
emit_opcodes(&i->event_list, i);
+ emit_event_wrappers(&i->event_list, i);
} else {
emit_structs(&i->event_list, i);
emit_opcodes(&i->request_list, i);
#include <sys/types.h>
#include <stdint.h>
#include "wayland-util.h"
-#include "wayland-server-protocol.h"
enum {
WL_EVENT_READABLE = 0x01,
void *data;
};
+struct wl_buffer {
+ struct wl_resource resource;
+ int32_t width, height;
+ uint32_t busy_count;
+ void *user_data;
+};
+
struct wl_shm_callbacks {
void (*buffer_created)(struct wl_buffer *buffer);
void (*buffer_destroyed)(struct wl_buffer *buffer);
};
-struct wl_buffer {
- struct wl_resource resource;
- int32_t width, height;
- uint32_t busy_count;
- void *user_data;
-};
-
struct wl_listener {
struct wl_list link;
void (*func)(struct wl_listener *listener,
uint32_t code, const char *msg, ...);
void wl_resource_post_no_memory(struct wl_resource *resource);
+#include "wayland-server-protocol.h"
+
void
wl_display_post_frame(struct wl_display *display, struct wl_surface *surface,
uint32_t msecs);