evdev: Discard events from a touchscreen paired with an unplugged output
Commit17bccaedintended to make the events coming from a touchscreen paired with an unplugged output to be discarded, while an unpaired one would just choose a different output. However, the logic was inverted causing the opposite to happen. Later in commit161c6c56, the default behavior was changed to map an output to a default output if the one specified via udev is not present. This change is reverted by this patch. v2: undo the change from commit161c6c56. v3: deal with libinput too.
This commit is contained in:
committed by
Kristian Høgsberg
parent
f957dfb1de
commit
6c975faaa9
+1
-1
@@ -602,7 +602,7 @@ notify_output_destroy(struct wl_listener *listener, void *data)
|
||||
struct weston_compositor *c = device->seat->compositor;
|
||||
struct weston_output *output;
|
||||
|
||||
if (device->output_name) {
|
||||
if (!device->output_name) {
|
||||
output = container_of(c->output_list.next,
|
||||
struct weston_output, link);
|
||||
evdev_device_set_output(device, output);
|
||||
|
||||
@@ -264,7 +264,7 @@ notify_output_destroy(struct wl_listener *listener, void *data)
|
||||
struct weston_compositor *c = device->seat->compositor;
|
||||
struct weston_output *output;
|
||||
|
||||
if (device->output_name) {
|
||||
if (!device->output_name) {
|
||||
output = container_of(c->output_list.next,
|
||||
struct weston_output, link);
|
||||
evdev_device_set_output(device, output);
|
||||
|
||||
+1
-3
@@ -84,9 +84,7 @@ device_added(struct udev_input *input, struct libinput_device *libinput_device)
|
||||
wl_list_for_each(output, &c->output_list, link)
|
||||
if (strcmp(output->name, device->output_name) == 0)
|
||||
evdev_device_set_output(device, output);
|
||||
}
|
||||
|
||||
if (device->output == NULL) {
|
||||
} else if (device->output == NULL) {
|
||||
output = container_of(c->output_list.next,
|
||||
struct weston_output, link);
|
||||
evdev_device_set_output(device, output);
|
||||
|
||||
+1
-3
@@ -125,9 +125,7 @@ device_added(struct udev_device *udev_device, struct udev_input *input)
|
||||
wl_list_for_each(output, &c->output_list, link)
|
||||
if (strcmp(output->name, device->output_name) == 0)
|
||||
evdev_device_set_output(device, output);
|
||||
}
|
||||
|
||||
if (device->output == NULL) {
|
||||
} else if (device->output == NULL) {
|
||||
output = container_of(c->output_list.next,
|
||||
struct weston_output, link);
|
||||
evdev_device_set_output(device, output);
|
||||
|
||||
Reference in New Issue
Block a user