diff options
Diffstat (limited to 'rootston')
| -rw-r--r-- | rootston/desktop.c | 13 | ||||
| -rw-r--r-- | rootston/input.c | 27 | ||||
| -rw-r--r-- | rootston/keyboard.c | 13 | 
3 files changed, 43 insertions, 10 deletions
| diff --git a/rootston/desktop.c b/rootston/desktop.c index bf556131..70767f92 100644 --- a/rootston/desktop.c +++ b/rootston/desktop.c @@ -202,11 +202,18 @@ struct roots_view *view_at(struct roots_desktop *desktop, double lx, double ly,  struct roots_desktop *desktop_create(struct roots_server *server,  		struct roots_config *config) { -	struct roots_desktop *desktop = calloc(1, sizeof(struct roots_desktop)); -	assert(desktop);  	wlr_log(L_DEBUG, "Initializing roots desktop"); -	assert(desktop->views = list_create()); +	struct roots_desktop *desktop = calloc(1, sizeof(struct roots_desktop)); +	if (desktop == NULL) { +		return NULL; +	} + +	desktop->views = list_create(); +	if (desktop->views == NULL) { +		free(desktop); +		return NULL; +	}  	wl_list_init(&desktop->outputs);  	desktop->output_add.notify = output_add_notify; diff --git a/rootston/input.c b/rootston/input.c index 28af67a6..5dc7d16d 100644 --- a/rootston/input.c +++ b/rootston/input.c @@ -74,15 +74,34 @@ struct roots_input *input_create(struct roots_server *server,  	assert(server->desktop);  	struct roots_input *input = calloc(1, sizeof(struct roots_input)); -	assert(input); +	if (input == NULL) { +		return NULL; +	}  	input->config = config;  	input->server = server; -	assert(input->theme = wlr_xcursor_theme_load("default", 16)); -	assert(input->xcursor = wlr_xcursor_theme_get_cursor(input->theme, "left_ptr")); +	input->theme = wlr_xcursor_theme_load("default", 16); +	if (input->theme == NULL) { +		wlr_log(L_ERROR, "Cannot load xcursor theme"); +		free(input); +		return NULL; +	} +	input->xcursor = wlr_xcursor_theme_get_cursor(input->theme, "left_ptr"); +	if (input->xcursor == NULL) { +		wlr_log(L_ERROR, "Cannot load xcursor from theme"); +		wlr_xcursor_theme_destroy(input->theme); +		free(input); +		return NULL; +	} -	assert(input->wl_seat = wlr_seat_create(server->wl_display, "seat0")); +	input->wl_seat = wlr_seat_create(server->wl_display, "seat0"); +	if (input->wl_seat == NULL) { +		wlr_log(L_ERROR, "Cannot create seat"); +		wlr_xcursor_theme_destroy(input->theme); +		free(input); +		return NULL; +	}  	wlr_seat_set_capabilities(input->wl_seat, WL_SEAT_CAPABILITY_KEYBOARD  		| WL_SEAT_CAPABILITY_POINTER | WL_SEAT_CAPABILITY_TOUCH); diff --git a/rootston/keyboard.c b/rootston/keyboard.c index f2075d26..61604da0 100644 --- a/rootston/keyboard.c +++ b/rootston/keyboard.c @@ -127,6 +127,9 @@ static void keyboard_key_notify(struct wl_listener *listener, void *data) {  void keyboard_add(struct wlr_input_device *device, struct roots_input *input) {  	struct roots_keyboard *keyboard = calloc(sizeof(struct roots_keyboard), 1); +	if (keyboard == NULL) { +		return; +	}  	device->data = keyboard;  	keyboard->device = device;  	keyboard->input = input; @@ -141,11 +144,15 @@ void keyboard_add(struct wlr_input_device *device, struct roots_input *input) {  	rules.layout = getenv("XKB_DEFAULT_LAYOUT");  	rules.variant = getenv("XKB_DEFAULT_VARIANT");  	rules.options = getenv("XKB_DEFAULT_OPTIONS"); -	struct xkb_context *context; -	assert(context = xkb_context_new(XKB_CONTEXT_NO_FLAGS)); +	struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); +	if (context == NULL) { +		wlr_log(L_ERROR, "Cannot create XKB context"); +		return; +	}  	wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, -				&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); +		&rules, XKB_KEYMAP_COMPILE_NO_FLAGS));  	xkb_context_unref(context); +  	wlr_seat_attach_keyboard(input->wl_seat, device);  } | 
