summaryrefslogtreecommitdiffstats
path: root/wayland.h
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2008-09-30 09:46:10 -0400
committerKristian Høgsberg <krh@redhat.com>2008-09-30 09:56:42 -0400
commit97f1ebe8d5c2e166fabf757182c289fed266a45a (patch)
tree3eb472ec9d560becb94e08650629d376d763d2b6 /wayland.h
downloadwayland-97f1ebe8d5c2e166fabf757182c289fed266a45a.tar.gz
wayland-97f1ebe8d5c2e166fabf757182c289fed266a45a.tar.xz
wayland-97f1ebe8d5c2e166fabf757182c289fed266a45a.zip
Initial commit.
This has the basic event loop, and a first cut of the libffi dispatcher.
Diffstat (limited to 'wayland.h')
-rw-r--r--wayland.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/wayland.h b/wayland.h
new file mode 100644
index 0000000..409e3a3
--- /dev/null
+++ b/wayland.h
@@ -0,0 +1,67 @@
+#ifndef WAYLAND_H
+#define WAYLAND_H
+
+#include <stdint.h>
+
+enum {
+ WL_EVENT_READABLE = 0x01,
+ WL_EVENT_WRITEABLE = 0x02
+};
+
+struct wl_event_loop;
+struct wl_event_source;
+typedef void (*wl_event_loop_func_t)(int fd, uint32_t mask, void *data);
+
+struct wl_event_loop *wl_event_loop_create(void);
+void wl_event_loop_destroy(struct wl_event_loop *loop);
+struct wl_event_source *wl_event_loop_add_fd(struct wl_event_loop *loop,
+ int fd, uint32_t mask,
+ wl_event_loop_func_t func,
+ void *data);
+int wl_event_loop_remove_source(struct wl_event_loop *loop,
+ struct wl_event_source *source);
+int wl_event_loop_wait(struct wl_event_loop *loop);
+
+struct wl_hash {
+ struct wl_object **objects;
+ uint32_t count, alloc, id;
+};
+
+int wl_hash_insert(struct wl_hash *hash, struct wl_object *object);
+struct wl_object *wl_hash_lookup(struct wl_hash *hash, uint32_t id);
+void wl_hash_delete(struct wl_hash *hash, struct wl_object *object);
+
+struct wl_client;
+
+enum {
+ WL_ARGUMENT_UINT32,
+ WL_ARGUMENT_STRING,
+ WL_ARGUMENT_OBJECT,
+ WL_ARGUMENT_NEW_ID
+};
+
+struct wl_argument {
+ uint32_t type;
+ void *data;
+};
+
+struct wl_method {
+ const char *name;
+ void *func;
+ int argument_count;
+ const struct wl_argument *arguments;
+};
+
+struct wl_interface {
+ const char *name;
+ int version;
+ int method_count;
+ const struct wl_method *methods;
+};
+
+struct wl_object {
+ const struct wl_interface *interface;
+ uint32_t id;
+};
+
+#endif