Check return value of wl_cursor functions
This patch adds checks for themes and cursors returned by wl_cursor functions. Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
This commit is contained in:
committed by
Kristian Høgsberg
parent
2d9d689427
commit
842a36ae4a
@@ -501,6 +501,8 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
|
|||||||
else if (cursor) {
|
else if (cursor) {
|
||||||
image = display->default_cursor->images[0];
|
image = display->default_cursor->images[0];
|
||||||
buffer = wl_cursor_image_get_buffer(image);
|
buffer = wl_cursor_image_get_buffer(image);
|
||||||
|
if (!buffer)
|
||||||
|
return;
|
||||||
wl_pointer_set_cursor(pointer, serial,
|
wl_pointer_set_cursor(pointer, serial,
|
||||||
display->cursor_surface,
|
display->cursor_surface,
|
||||||
image->hotspot_x,
|
image->hotspot_x,
|
||||||
@@ -715,8 +717,16 @@ registry_handle_global(void *data, struct wl_registry *registry,
|
|||||||
d->shm = wl_registry_bind(registry, name,
|
d->shm = wl_registry_bind(registry, name,
|
||||||
&wl_shm_interface, 1);
|
&wl_shm_interface, 1);
|
||||||
d->cursor_theme = wl_cursor_theme_load(NULL, 32, d->shm);
|
d->cursor_theme = wl_cursor_theme_load(NULL, 32, d->shm);
|
||||||
|
if (!d->cursor_theme) {
|
||||||
|
fprintf(stderr, "unable to load default theme\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
d->default_cursor =
|
d->default_cursor =
|
||||||
wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr");
|
wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr");
|
||||||
|
if (!d->default_cursor) {
|
||||||
|
fprintf(stderr, "unable to load default left pointer\n");
|
||||||
|
// TODO: abort ?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1279,6 +1279,10 @@ create_cursors(struct display *display)
|
|||||||
weston_config_destroy(config);
|
weston_config_destroy(config);
|
||||||
|
|
||||||
display->cursor_theme = wl_cursor_theme_load(theme, size, display->shm);
|
display->cursor_theme = wl_cursor_theme_load(theme, size, display->shm);
|
||||||
|
if (!display->cursor_theme) {
|
||||||
|
fprintf(stderr, "could not load theme '%s'\n", theme);
|
||||||
|
return;
|
||||||
|
}
|
||||||
free(theme);
|
free(theme);
|
||||||
display->cursors =
|
display->cursors =
|
||||||
xmalloc(ARRAY_LENGTH(cursors) * sizeof display->cursors[0]);
|
xmalloc(ARRAY_LENGTH(cursors) * sizeof display->cursors[0]);
|
||||||
|
|||||||
@@ -968,7 +968,8 @@ input_set_cursor(struct wayland_input *input)
|
|||||||
|
|
||||||
image = input->compositor->cursor->images[0];
|
image = input->compositor->cursor->images[0];
|
||||||
buffer = wl_cursor_image_get_buffer(image);
|
buffer = wl_cursor_image_get_buffer(image);
|
||||||
|
if (!buffer)
|
||||||
|
return;
|
||||||
|
|
||||||
wl_pointer_set_cursor(input->parent.pointer, input->enter_serial,
|
wl_pointer_set_cursor(input->parent.pointer, input->enter_serial,
|
||||||
input->parent.cursor.surface,
|
input->parent.cursor.surface,
|
||||||
@@ -1428,6 +1429,10 @@ create_cursor(struct wayland_compositor *c, struct weston_config *config)
|
|||||||
weston_config_section_get_int(s, "cursor-size", &size, 32);
|
weston_config_section_get_int(s, "cursor-size", &size, 32);
|
||||||
|
|
||||||
c->cursor_theme = wl_cursor_theme_load(theme, size, c->parent.shm);
|
c->cursor_theme = wl_cursor_theme_load(theme, size, c->parent.shm);
|
||||||
|
if (!c->cursor_theme) {
|
||||||
|
fprintf(stderr, "could not load cursor theme\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
free(theme);
|
free(theme);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user