mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-31 22:25:25 -04:00
client: Invoke new_id closure arguments as pointers instead of integers
This commit adds a flags parameter to wl_closure_invoke(). The so far added flags are ment to specify if the invokation is client side or server side. When on the server side, closure arguments of type 'new_id' should be invoked as a integer id while on the client side they should be invoked as a pointer to a proxy object. This fixes a bug happening when the address of a client side 'new_id' proxy object did not fit in a 32 bit integer. krh: Squashed test suite compile fix from Jason Ekstrand. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
parent
e053a56251
commit
cb73bffed5
6 changed files with 23 additions and 12 deletions
|
|
@ -338,7 +338,7 @@ demarshal(struct marshal_data *data, const char *format,
|
|||
closure = wl_connection_demarshal(data->read_connection,
|
||||
size, &objects, &message);
|
||||
assert(closure);
|
||||
wl_closure_invoke(closure, &object, func, data);
|
||||
wl_closure_invoke(closure, WL_CLOSURE_INVOKE_SERVER, &object, func, data);
|
||||
wl_closure_destroy(closure);
|
||||
}
|
||||
|
||||
|
|
@ -418,7 +418,7 @@ marshal_demarshal(struct marshal_data *data,
|
|||
object.id = msg[0];
|
||||
closure = wl_connection_demarshal(data->read_connection,
|
||||
size, &objects, &message);
|
||||
wl_closure_invoke(closure, &object, func, data);
|
||||
wl_closure_invoke(closure, WL_CLOSURE_INVOKE_SERVER, &object, func, data);
|
||||
wl_closure_destroy(closure);
|
||||
}
|
||||
|
||||
|
|
@ -505,7 +505,7 @@ marshal_helper(const char *format, void *handler, ...)
|
|||
|
||||
assert(closure);
|
||||
done = 0;
|
||||
wl_closure_invoke(closure, &object, handler, &done);
|
||||
wl_closure_invoke(closure, WL_CLOSURE_INVOKE_SERVER, &object, handler, &done);
|
||||
wl_closure_destroy(closure);
|
||||
assert(done);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ marshal_demarshal(struct marshal_data *data,
|
|||
object.id = msg[0];
|
||||
closure = wl_connection_demarshal(data->read_connection,
|
||||
size, &objects, &message);
|
||||
wl_closure_invoke(closure, &object, func, data);
|
||||
wl_closure_invoke(closure, WL_CLOSURE_INVOKE_SERVER, &object, func, data);
|
||||
wl_closure_destroy(closure);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue