diff options
author | Kristian Høgsberg <krh@redhat.com> | 2009-02-23 22:30:29 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2009-02-23 22:30:29 -0500 |
commit | 3c38fa0c3e55893911f85edeb0a0eaa4460e59ca (patch) | |
tree | 0f3d0c98eee039bfbc6a69ebdb809a357dc8f09e /wayland-util.c | |
parent | 7e3e860031282d439e4f2da5477a6c96392ea09d (diff) | |
download | wayland-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.c | 44 |
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; +} |