aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2012-04-22 14:16:08 -0400
committerKristian Høgsberg <krh@bitplanet.net>2012-04-22 14:17:20 -0400
commit243672cd3ca35a6418176fbd16db033f40b92b90 (patch)
tree01320d38d8797c2f680c5fd7ea3d752ae7d0c2c8 /src
parentconnection: Move closure object out of wl_connection (diff)
downloadwayland-243672cd3ca35a6418176fbd16db033f40b92b90.tar
wayland-243672cd3ca35a6418176fbd16db033f40b92b90.tar.gz
wayland-243672cd3ca35a6418176fbd16db033f40b92b90.tar.bz2
wayland-243672cd3ca35a6418176fbd16db033f40b92b90.tar.lz
wayland-243672cd3ca35a6418176fbd16db033f40b92b90.tar.xz
wayland-243672cd3ca35a6418176fbd16db033f40b92b90.tar.zst
wayland-243672cd3ca35a6418176fbd16db033f40b92b90.zip
connection: Make sure we can invoke closures built with wl_closure_vmarshal()
Diffstat (limited to 'src')
-rw-r--r--src/connection.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/connection.c b/src/connection.c
index ffae35d..a599f91 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -422,6 +422,9 @@ wl_closure_vmarshal(struct wl_closure *closure,
end = &closure->buffer[ARRAY_LENGTH(closure->buffer)];
p = &start[2];
+ closure->types[0] = &ffi_type_pointer;
+ closure->types[1] = &ffi_type_pointer;
+
for (i = 2; i < count; i++) {
switch (message->signature[i - 2]) {
case 'u':
@@ -538,6 +541,9 @@ wl_closure_vmarshal(struct wl_closure *closure,
closure->message = message;
closure->count = count;
+ ffi_prep_cif(&closure->cif, FFI_DEFAULT_ABI,
+ closure->count, &ffi_type_void, closure->types);
+
return 0;
err:
@@ -723,6 +729,7 @@ wl_connection_demarshal(struct wl_connection *connection,
}
closure->count = i;
+
ffi_prep_cif(&closure->cif, FFI_DEFAULT_ABI,
closure->count, &ffi_type_void, closure->types);