evdev: Simplify error path for device creation
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
This commit is contained in:
committed by
Kristian Høgsberg
parent
d9f7d1f0c5
commit
ac9cfd3065
+15
-19
@@ -293,7 +293,7 @@ evdev_input_device_create(struct evdev_input *master,
|
||||
return NULL;
|
||||
|
||||
ec = (struct wlsc_compositor *) master->base.input_device.compositor;
|
||||
device->output =
|
||||
device->output =
|
||||
container_of(ec->output_list.next, struct wlsc_output, link);
|
||||
|
||||
device->tool = 1;
|
||||
@@ -302,33 +302,29 @@ evdev_input_device_create(struct evdev_input *master,
|
||||
device->devnode = strdup(path);
|
||||
|
||||
device->fd = open(path, O_RDONLY);
|
||||
if (device->fd < 0) {
|
||||
free(device->devnode);
|
||||
free(device);
|
||||
fprintf(stderr, "couldn't create pointer for %s: %m\n", path);
|
||||
return NULL;
|
||||
}
|
||||
if (device->fd < 0)
|
||||
goto err0;
|
||||
|
||||
if (evdev_configure_device(device) == -1) {
|
||||
close(device->fd);
|
||||
free(device->devnode);
|
||||
free(device);
|
||||
return NULL;
|
||||
}
|
||||
if (evdev_configure_device(device) == -1)
|
||||
goto err1;
|
||||
|
||||
loop = wl_display_get_event_loop(display);
|
||||
device->source = wl_event_loop_add_fd(loop, device->fd,
|
||||
WL_EVENT_READABLE,
|
||||
evdev_input_device_data, device);
|
||||
if (device->source == NULL) {
|
||||
close(device->fd);
|
||||
free(device->devnode);
|
||||
free(device);
|
||||
return NULL;
|
||||
}
|
||||
if (device->source == NULL)
|
||||
goto err1;
|
||||
|
||||
wl_list_insert(master->devices_list.prev, &device->link);
|
||||
|
||||
return device;
|
||||
|
||||
err1:
|
||||
close(device->fd);
|
||||
err0:
|
||||
free(device->devnode);
|
||||
free(device);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char default_seat[] = "seat0";
|
||||
|
||||
Reference in New Issue
Block a user