Lines Matching refs:closure
531 struct wl_closure *closure; in wl_closure_marshal() local
544 closure = malloc(sizeof *closure); in wl_closure_marshal()
545 if (closure == NULL) { in wl_closure_marshal()
550 memcpy(closure->args, args, count * sizeof *args); in wl_closure_marshal()
574 closure->args[i].n = object ? object->id : 0; in wl_closure_marshal()
585 closure->args[i].h = dup_fd; in wl_closure_marshal()
593 closure->sender_id = sender->id; in wl_closure_marshal()
594 closure->opcode = opcode; in wl_closure_marshal()
595 closure->message = message; in wl_closure_marshal()
596 closure->count = count; in wl_closure_marshal()
598 return closure; in wl_closure_marshal()
601 wl_closure_destroy(closure); in wl_closure_marshal()
633 struct wl_closure *closure; in wl_connection_demarshal() local
645 closure = malloc(sizeof *closure + size + num_arrays * sizeof *array); in wl_connection_demarshal()
646 if (closure == NULL) { in wl_connection_demarshal()
652 array_extra = closure->extra; in wl_connection_demarshal()
653 p = (uint32_t *)(closure->extra + num_arrays); in wl_connection_demarshal()
657 closure->sender_id = *p++; in wl_connection_demarshal()
658 closure->opcode = *p++ & 0x0000ffff; in wl_connection_demarshal()
674 closure->args[i].u = *p++; in wl_connection_demarshal()
677 closure->args[i].i = *p++; in wl_connection_demarshal()
680 closure->args[i].f = *p++; in wl_connection_demarshal()
686 closure->args[i].s = NULL; in wl_connection_demarshal()
694 closure->sender_id, message->name, in wl_connection_demarshal()
710 closure->args[i].s = s; in wl_connection_demarshal()
715 closure->args[i].n = id; in wl_connection_demarshal()
727 closure->args[i].n = id; in wl_connection_demarshal()
753 closure->sender_id, message->name, in wl_connection_demarshal()
763 closure->args[i].a = array_extra++; in wl_connection_demarshal()
770 closure->sender_id, message->name, in wl_connection_demarshal()
778 closure->args[i].h = fd; in wl_connection_demarshal()
786 closure->count = count; in wl_connection_demarshal()
787 closure->message = message; in wl_connection_demarshal()
791 return closure; in wl_connection_demarshal()
794 wl_closure_destroy(closure); in wl_connection_demarshal()
801 wl_closure_lookup_objects(struct wl_closure *closure, struct wl_map *objects) in wl_closure_lookup_objects() argument
810 message = closure->message; in wl_closure_lookup_objects()
817 id = closure->args[i].n; in wl_closure_lookup_objects()
818 closure->args[i].o = NULL; in wl_closure_lookup_objects()
842 closure->args[i].o = object; in wl_closure_lookup_objects()
908 wl_closure_invoke(struct wl_closure *closure, uint32_t flags, in wl_closure_invoke() argument
917 count = arg_count_for_signature(closure->message->signature); in wl_closure_invoke()
924 convert_arguments_to_ffi(closure->message->signature, flags, closure->args, in wl_closure_invoke()
939 wl_closure_dispatch(struct wl_closure *closure, wl_dispatcher_func_t dispatcher, in wl_closure_dispatch() argument
942 dispatcher(target->implementation, target, opcode, closure->message, in wl_closure_dispatch()
943 closure->args); in wl_closure_dispatch()
947 copy_fds_to_connection(struct wl_closure *closure, in copy_fds_to_connection() argument
950 const struct wl_message *message = closure->message; in copy_fds_to_connection()
962 fd = closure->args[i].h; in copy_fds_to_connection()
975 buffer_size_for_closure(struct wl_closure *closure) in buffer_size_for_closure() argument
977 const struct wl_message *message = closure->message; in buffer_size_for_closure()
999 if (closure->args[i].s == NULL) { in buffer_size_for_closure()
1004 size = strlen(closure->args[i].s) + 1; in buffer_size_for_closure()
1008 if (closure->args[i].a == NULL) { in buffer_size_for_closure()
1013 size = closure->args[i].a->size; in buffer_size_for_closure()
1025 serialize_closure(struct wl_closure *closure, uint32_t *buffer, in serialize_closure() argument
1028 const struct wl_message *message = closure->message; in serialize_closure()
1053 *p++ = closure->args[i].u; in serialize_closure()
1056 *p++ = closure->args[i].i; in serialize_closure()
1059 *p++ = closure->args[i].f; in serialize_closure()
1062 *p++ = closure->args[i].o ? closure->args[i].o->id : 0; in serialize_closure()
1065 *p++ = closure->args[i].n; in serialize_closure()
1068 if (closure->args[i].s == NULL) { in serialize_closure()
1073 size = strlen(closure->args[i].s) + 1; in serialize_closure()
1079 memcpy(p, closure->args[i].s, size); in serialize_closure()
1083 if (closure->args[i].a == NULL) { in serialize_closure()
1088 size = closure->args[i].a->size; in serialize_closure()
1094 memcpy(p, closure->args[i].a->data, size); in serialize_closure()
1104 buffer[0] = closure->sender_id; in serialize_closure()
1105 buffer[1] = size << 16 | (closure->opcode & 0x0000ffff); in serialize_closure()
1115 wl_closure_send(struct wl_closure *closure, struct wl_connection *connection) in wl_closure_send() argument
1122 if (copy_fds_to_connection(closure, connection)) in wl_closure_send()
1125 buffer_size = buffer_size_for_closure(closure); in wl_closure_send()
1130 size = serialize_closure(closure, buffer, buffer_size); in wl_closure_send()
1143 wl_closure_queue(struct wl_closure *closure, struct wl_connection *connection) in wl_closure_queue() argument
1150 if (copy_fds_to_connection(closure, connection)) in wl_closure_queue()
1153 buffer_size = buffer_size_for_closure(closure); in wl_closure_queue()
1158 size = serialize_closure(closure, buffer, buffer_size); in wl_closure_queue()
1171 wl_closure_print(struct wl_closure *closure, struct wl_object *target, int send) in wl_closure_print() argument
1175 const char *signature = closure->message->signature; in wl_closure_print()
1186 closure->message->name); in wl_closure_print()
1188 for (i = 0; i < closure->count; i++) { in wl_closure_print()
1195 fprintf(stderr, "%u", closure->args[i].u); in wl_closure_print()
1198 fprintf(stderr, "%d", closure->args[i].i); in wl_closure_print()
1202 wl_fixed_to_double(closure->args[i].f)); in wl_closure_print()
1205 fprintf(stderr, "\"%s\"", closure->args[i].s); in wl_closure_print()
1208 if (closure->args[i].o) in wl_closure_print()
1210 closure->args[i].o->interface->name, in wl_closure_print()
1211 closure->args[i].o->id); in wl_closure_print()
1217 (closure->message->types[i]) ? in wl_closure_print()
1218 closure->message->types[i]->name : in wl_closure_print()
1220 if (closure->args[i].n != 0) in wl_closure_print()
1221 fprintf(stderr, "%u", closure->args[i].n); in wl_closure_print()
1229 fprintf(stderr, "fd %d", closure->args[i].h); in wl_closure_print()
1238 wl_closure_destroy(struct wl_closure *closure) in wl_closure_destroy() argument
1240 free(closure); in wl_closure_destroy()