summaryrefslogtreecommitdiffstats
path: root/wayland-util.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2009-02-23 22:30:29 -0500
committerKristian Høgsberg <krh@redhat.com>2009-02-23 22:30:29 -0500
commit3c38fa0c3e55893911f85edeb0a0eaa4460e59ca (patch)
tree0f3d0c98eee039bfbc6a69ebdb809a357dc8f09e /wayland-util.c
parent7e3e860031282d439e4f2da5477a6c96392ea09d (diff)
downloadwayland-3c38fa0c3e55893911f85edeb0a0eaa4460e59ca.tar.gz
wayland-3c38fa0c3e55893911f85edeb0a0eaa4460e59ca.tar.xz
wayland-3c38fa0c3e55893911f85edeb0a0eaa4460e59ca.zip
Include the currently pressed keys in keyboard focus event.
Diffstat (limited to 'wayland-util.c')
-rw-r--r--wayland-util.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/wayland-util.c b/wayland-util.c
index 4fae435..a5ab8be 100644
--- a/wayland-util.c
+++ b/wayland-util.c
@@ -137,3 +137,47 @@ wl_list_empty(struct wl_list *list)
{
return list->next == list;
}
+
+void
+wl_array_init(struct wl_array *array)
+{
+ memset(array, 0, sizeof *array);
+}
+
+void
+wl_array_release(struct wl_array *array)
+{
+ free(array->data);
+}
+
+void *
+wl_array_add(struct wl_array *array, int size)
+{
+ int alloc;
+ void *data, *p;
+
+ if (array->alloc > 0)
+ alloc = array->alloc;
+ else
+ alloc = 16;
+
+ while (alloc < array->size + size)
+ alloc *= 2;
+
+ if (array->alloc < alloc) {
+ if (array->alloc > 0)
+ data = realloc(array->data, alloc);
+ else
+ data = malloc(alloc);
+
+ if (data == NULL)
+ return 0;
+ array->data = data;
+ array->alloc = alloc;
+ }
+
+ p = array->data + array->size;
+ array->size += size;
+
+ return p;
+}