return;
}
- cb->resource = wl_resource_create(client,
- &wl_callback_interface,
- 1, callback);
+ cb->resource = wl_resource_create(client, &wl_callback_interface, 1,
+ callback);
+ if (cb->resource == NULL) {
+ free(cb);
+ wl_resource_post_no_memory(resource);
+ return;
+ }
+
wl_resource_set_implementation(cb->resource, NULL, cb,
destroy_frame_callback);
surface->resource =
wl_resource_create(client, &wl_surface_interface,
wl_resource_get_version(resource), id);
+ if (surface->resource == NULL) {
+ weston_surface_destroy(surface);
+ wl_resource_post_no_memory(resource);
+ return;
+ }
wl_resource_set_implementation(surface->resource, &surface_interface,
surface, destroy_surface);
}
region->resource =
wl_resource_create(client, &wl_region_interface, 1, id);
+ if (region->resource == NULL) {
+ free(region);
+ wl_resource_post_no_memory(resource);
+ return;
+ }
wl_resource_set_implementation(region->resource, ®ion_interface,
region, destroy_region);
}
resource =
wl_resource_create(client, &wl_subcompositor_interface, 1, id);
- if (resource)
- wl_resource_set_implementation(resource,
- &subcompositor_interface,
- compositor, NULL);
+ if (resource == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
+ wl_resource_set_implementation(resource, &subcompositor_interface,
+ compositor, NULL);
}
static void
resource = wl_resource_create(client, &wl_output_interface,
MIN(version, 2), id);
+ if (resource == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
wl_list_insert(&output->resource_list, wl_resource_get_link(resource));
wl_resource_set_implementation(resource, NULL, data, unbind_resource);
resource = wl_resource_create(client, &wl_compositor_interface,
MIN(version, 3), id);
- if (resource)
- wl_resource_set_implementation(resource, &compositor_interface,
- compositor, NULL);
+ if (resource == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
+
+ wl_resource_set_implementation(resource, &compositor_interface,
+ compositor, NULL);
}
static void
resource = wl_resource_create(client,
&wl_data_device_interface, 1, id);
+ if (resource == NULL) {
+ wl_resource_post_no_memory(manager_resource);
+ return;
+ }
- wl_list_insert(&seat->drag_resource_list, wl_resource_get_link(resource));
+ wl_list_insert(&seat->drag_resource_list,
+ wl_resource_get_link(resource));
wl_resource_set_implementation(resource, &data_device_interface,
seat, unbind_data_device);
}
resource =
wl_resource_create(client,
&wl_data_device_manager_interface, 1, id);
- if (resource)
- wl_resource_set_implementation(resource, &manager_interface,
- NULL, NULL);
+ if (resource == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
+
+ wl_resource_set_implementation(resource, &manager_interface,
+ NULL, NULL);
}
WL_EXPORT void
cr = wl_resource_create(client, &wl_pointer_interface,
wl_resource_get_version(resource), id);
+ if (cr == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
+
wl_list_insert(&seat->pointer->resource_list, wl_resource_get_link(cr));
wl_resource_set_implementation(cr, &pointer_interface, seat->pointer,
unbind_resource);
cr = wl_resource_create(client, &wl_keyboard_interface,
wl_resource_get_version(resource), id);
+ if (cr == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
+
wl_list_insert(&seat->keyboard->resource_list, wl_resource_get_link(cr));
wl_resource_set_implementation(cr, NULL, seat, unbind_resource);
cr = wl_resource_create(client, &wl_touch_interface,
wl_resource_get_version(resource), id);
+ if (cr == NULL) {
+ wl_client_post_no_memory(client);
+ return;
+ }
+
wl_list_insert(&seat->touch->resource_list, wl_resource_get_link(cr));
wl_resource_set_implementation(cr, NULL, seat, unbind_resource);
}