• Home
  • Raw
  • Download

Lines Matching refs:closure

542 wl_closure_clear_fds(struct wl_closure *closure)  in wl_closure_clear_fds()  argument
544 const char *signature = closure->message->signature; in wl_closure_clear_fds()
548 for (i = 0; i < closure->count; i++) { in wl_closure_clear_fds()
551 closure->args[i].h = -1; in wl_closure_clear_fds()
559 struct wl_closure *closure; in wl_closure_init() local
571 closure = malloc(sizeof *closure + size + in wl_closure_init()
574 closure = malloc(sizeof *closure); in wl_closure_init()
577 if (!closure) { in wl_closure_init()
583 memcpy(closure->args, args, count * sizeof *args); in wl_closure_init()
585 closure->message = message; in wl_closure_init()
586 closure->count = count; in wl_closure_init()
594 wl_closure_clear_fds(closure); in wl_closure_init()
596 return closure; in wl_closure_init()
604 struct wl_closure *closure; in wl_closure_marshal() local
610 closure = wl_closure_init(message, 0, NULL, args); in wl_closure_marshal()
611 if (closure == NULL) in wl_closure_marshal()
614 count = closure->count; in wl_closure_marshal()
638 closure->args[i].n = object ? object->id : 0; in wl_closure_marshal()
648 wl_closure_destroy(closure); in wl_closure_marshal()
653 closure->args[i].h = dup_fd; in wl_closure_marshal()
661 closure->sender_id = sender->id; in wl_closure_marshal()
662 closure->opcode = opcode; in wl_closure_marshal()
664 return closure; in wl_closure_marshal()
667 wl_closure_destroy(closure); in wl_closure_marshal()
699 struct wl_closure *closure; in wl_connection_demarshal() local
710 closure = wl_closure_init(message, size, &num_arrays, NULL); in wl_connection_demarshal()
711 if (closure == NULL) { in wl_connection_demarshal()
716 count = closure->count; in wl_connection_demarshal()
718 array_extra = closure->extra; in wl_connection_demarshal()
719 p = (uint32_t *)(closure->extra + num_arrays); in wl_connection_demarshal()
723 closure->sender_id = *p++; in wl_connection_demarshal()
724 closure->opcode = *p++ & 0x0000ffff; in wl_connection_demarshal()
733 closure->sender_id, message->name, in wl_connection_demarshal()
741 closure->args[i].u = *p++; in wl_connection_demarshal()
744 closure->args[i].i = *p++; in wl_connection_demarshal()
747 closure->args[i].f = *p++; in wl_connection_demarshal()
753 closure->args[i].s = NULL; in wl_connection_demarshal()
761 closure->sender_id, message->name, in wl_connection_demarshal()
778 closure->args[i].s = s; in wl_connection_demarshal()
783 closure->args[i].n = id; in wl_connection_demarshal()
795 closure->args[i].n = id; in wl_connection_demarshal()
821 closure->sender_id, message->name, in wl_connection_demarshal()
832 closure->args[i].a = array_extra++; in wl_connection_demarshal()
839 closure->sender_id, message->name, in wl_connection_demarshal()
847 closure->args[i].h = fd; in wl_connection_demarshal()
857 return closure; in wl_connection_demarshal()
860 wl_closure_destroy(closure); in wl_connection_demarshal()
884 wl_closure_lookup_objects(struct wl_closure *closure, struct wl_map *objects) in wl_closure_lookup_objects() argument
893 message = closure->message; in wl_closure_lookup_objects()
900 id = closure->args[i].n; in wl_closure_lookup_objects()
901 closure->args[i].o = NULL; in wl_closure_lookup_objects()
925 closure->args[i].o = object; in wl_closure_lookup_objects()
991 wl_closure_invoke(struct wl_closure *closure, uint32_t flags, in wl_closure_invoke() argument
1000 count = arg_count_for_signature(closure->message->signature); in wl_closure_invoke()
1007 convert_arguments_to_ffi(closure->message->signature, flags, closure->args, in wl_closure_invoke()
1019 wl_closure_clear_fds(closure); in wl_closure_invoke()
1023 wl_closure_dispatch(struct wl_closure *closure, wl_dispatcher_func_t dispatcher, in wl_closure_dispatch() argument
1026 dispatcher(target->implementation, target, opcode, closure->message, in wl_closure_dispatch()
1027 closure->args); in wl_closure_dispatch()
1029 wl_closure_clear_fds(closure); in wl_closure_dispatch()
1033 copy_fds_to_connection(struct wl_closure *closure, in copy_fds_to_connection() argument
1036 const struct wl_message *message = closure->message; in copy_fds_to_connection()
1048 fd = closure->args[i].h; in copy_fds_to_connection()
1054 closure->args[i].h = -1; in copy_fds_to_connection()
1062 buffer_size_for_closure(struct wl_closure *closure) in buffer_size_for_closure() argument
1064 const struct wl_message *message = closure->message; in buffer_size_for_closure()
1086 if (closure->args[i].s == NULL) { in buffer_size_for_closure()
1091 size = strlen(closure->args[i].s) + 1; in buffer_size_for_closure()
1095 if (closure->args[i].a == NULL) { in buffer_size_for_closure()
1100 size = closure->args[i].a->size; in buffer_size_for_closure()
1112 serialize_closure(struct wl_closure *closure, uint32_t *buffer, in serialize_closure() argument
1115 const struct wl_message *message = closure->message; in serialize_closure()
1140 *p++ = closure->args[i].u; in serialize_closure()
1143 *p++ = closure->args[i].i; in serialize_closure()
1146 *p++ = closure->args[i].f; in serialize_closure()
1149 *p++ = closure->args[i].o ? closure->args[i].o->id : 0; in serialize_closure()
1152 *p++ = closure->args[i].n; in serialize_closure()
1155 if (closure->args[i].s == NULL) { in serialize_closure()
1160 size = strlen(closure->args[i].s) + 1; in serialize_closure()
1166 memcpy(p, closure->args[i].s, size); in serialize_closure()
1170 if (closure->args[i].a == NULL) { in serialize_closure()
1175 size = closure->args[i].a->size; in serialize_closure()
1181 memcpy(p, closure->args[i].a->data, size); in serialize_closure()
1191 buffer[0] = closure->sender_id; in serialize_closure()
1192 buffer[1] = size << 16 | (closure->opcode & 0x0000ffff); in serialize_closure()
1202 wl_closure_send(struct wl_closure *closure, struct wl_connection *connection) in wl_closure_send() argument
1209 if (copy_fds_to_connection(closure, connection)) in wl_closure_send()
1212 buffer_size = buffer_size_for_closure(closure); in wl_closure_send()
1217 size = serialize_closure(closure, buffer, buffer_size); in wl_closure_send()
1230 wl_closure_queue(struct wl_closure *closure, struct wl_connection *connection) in wl_closure_queue() argument
1237 if (copy_fds_to_connection(closure, connection)) in wl_closure_queue()
1240 buffer_size = buffer_size_for_closure(closure); in wl_closure_queue()
1245 size = serialize_closure(closure, buffer, buffer_size); in wl_closure_queue()
1258 wl_closure_print(struct wl_closure *closure, struct wl_object *target, int send) in wl_closure_print() argument
1262 const char *signature = closure->message->signature; in wl_closure_print()
1273 closure->message->name); in wl_closure_print()
1275 for (i = 0; i < closure->count; i++) { in wl_closure_print()
1282 fprintf(stderr, "%u", closure->args[i].u); in wl_closure_print()
1285 fprintf(stderr, "%d", closure->args[i].i); in wl_closure_print()
1289 wl_fixed_to_double(closure->args[i].f)); in wl_closure_print()
1292 if (closure->args[i].s) in wl_closure_print()
1293 fprintf(stderr, "\"%s\"", closure->args[i].s); in wl_closure_print()
1298 if (closure->args[i].o) in wl_closure_print()
1300 closure->args[i].o->interface->name, in wl_closure_print()
1301 closure->args[i].o->id); in wl_closure_print()
1307 (closure->message->types[i]) ? in wl_closure_print()
1308 closure->message->types[i]->name : in wl_closure_print()
1310 if (closure->args[i].n != 0) in wl_closure_print()
1311 fprintf(stderr, "%u", closure->args[i].n); in wl_closure_print()
1319 fprintf(stderr, "fd %d", closure->args[i].h); in wl_closure_print()
1328 wl_closure_close_fds(struct wl_closure *closure) in wl_closure_close_fds() argument
1332 const char *signature = closure->message->signature; in wl_closure_close_fds()
1334 for (i = 0; i < closure->count; i++) { in wl_closure_close_fds()
1336 if (arg.type == 'h' && closure->args[i].h != -1) in wl_closure_close_fds()
1337 close(closure->args[i].h); in wl_closure_close_fds()
1344 wl_closure_destroy(struct wl_closure *closure) in wl_closure_destroy() argument
1347 if (!closure) in wl_closure_destroy()
1350 wl_closure_close_fds(closure); in wl_closure_destroy()
1351 free(closure); in wl_closure_destroy()