aboutsummaryrefslogtreecommitdiffstats
path: root/connection.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2010-09-07 10:58:19 -0400
committerKristian Høgsberg <krh@bitplanet.net>2010-09-07 15:58:29 -0400
commitf1e7bd384c48a7c7531539ef4dedbe6b384a7609 (patch)
treeb59aa7aa640b2ff95c751d28827ebf2c399eca9f /connection.c
parentTODO editing (diff)
downloadwayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.tar
wayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.tar.gz
wayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.tar.bz2
wayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.tar.lz
wayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.tar.xz
wayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.tar.zst
wayland-f1e7bd384c48a7c7531539ef4dedbe6b384a7609.zip
Add protocol debugging facility
Diffstat (limited to 'connection.c')
-rw-r--r--connection.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/connection.c b/connection.c
index 8d4f19f..42ec038 100644
--- a/connection.c
+++ b/connection.c
@@ -564,6 +564,49 @@ wl_closure_invoke(struct wl_closure *closure,
}
void
+wl_closure_print(struct wl_closure *closure, struct wl_object *target)
+{
+ struct wl_object *object;
+ int i;
+
+ fprintf(stderr, "%s(%d).%s(",
+ target->interface->name, target->id,
+ closure->message->name);
+
+ for (i = 2; i < closure->count; i++) {
+ if (i > 2)
+ fprintf(stderr, ", ");
+ switch (closure->message->signature[i - 2]) {
+ case 'u':
+ fprintf(stderr, "%u", closure->values[i].uint32);
+ break;
+ case 'i':
+ fprintf(stderr, "%d", closure->values[i].uint32);
+ break;
+ case 's':
+ fprintf(stderr, "\"%s\"", closure->values[i].string);
+ break;
+ case 'o':
+ object = closure->values[i].object;
+ fprintf(stderr, "object %u", object ? object->id : 0);
+ break;
+ case 'n':
+ fprintf(stderr, "new id %u",
+ closure->values[i].uint32);
+ break;
+ case 'a':
+ fprintf(stderr, "array");
+ break;
+ case 'h':
+ fprintf(stderr, "fd %d", closure->values[i].uint32);
+ break;
+ }
+ }
+
+ fprintf(stderr, ")\n");
+}
+
+void
wl_closure_destroy(struct wl_closure *closure)
{
int i;