Hi Kristian,

I think I should split the patch in two. Firstly not abort the
compositor initialisation if we can't open a device or if there is a
problem with the device and secondly some kind of input presence
tests.

In terms of presence tests what condition ar we trying to mitigate
against? I personally remember being caught out in the past where I
ended up starting weston with no input devices and thus couldn't kill
it / VT switch. From a developer experience perspective that's not
very nice.

But from a production perspective weston might be deployed in setups
that don't feature a keyboard and instead feature a touchscreen. I'm
thinking we could have a command line option and weston.ini entry
along the lines of:

--required-input=[touch,pointer,keyboard]

For which I think a sensible default is keyboard. And if you are in a
touchscreen only environment you will need to configure your weston to
permit it to start up (giving some advice in the log of how to do
this.) How this interacts in a multiple seat environment is an open
problem :-)

In terms of the device list check warning I agree I think we should
drop that if we go with some required device check like above.

Rob

On 20 May 2013 22:25, Kristian Høgsberg <[email protected]> wrote:
> On Mon, May 20, 2013 at 05:55:03PM +0100, Rob Bradford wrote:
>> From: Rob Bradford <[email protected]>
>>
>> Rather than failing seat setup if we fail to open the input device
>> instead fail the seat setup if we don't have "complete seat" with both
>> keyboard and pointer or a touchscreen.
>>
>> https://bugs.freedesktop.org/show_bug.cgi?id=64506
>> ---
>>  src/udev-seat.c | 10 ++++++++--
>>  1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/udev-seat.c b/src/udev-seat.c
>> index 7e62429..3dd3438 100644
>> --- a/src/udev-seat.c
>> +++ b/src/udev-seat.c
>> @@ -58,7 +58,7 @@ device_added(struct udev_device *udev_device, struct 
>> udev_seat *master)
>>       fd = weston_launcher_open(c, devnode, O_RDWR | O_NONBLOCK);
>>       if (fd < 0) {
>>               weston_log("opening input device '%s' failed.\n", devnode);
>> -             return -1;
>> +             return 0;
>>       }
>>
>>       device = evdev_device_create(&master->base, devnode, fd);
>> @@ -69,7 +69,7 @@ device_added(struct udev_device *udev_device, struct 
>> udev_seat *master)
>>       } else if (device == NULL) {
>>               close(fd);
>>               weston_log("failed to create input device '%s'.\n", devnode);
>> -             return -1;
>> +             return 0;
>>       }
>>
>>       calibration_values =
>> @@ -142,6 +142,12 @@ udev_seat_add_devices(struct udev_seat *seat, struct 
>> udev *udev)
>>                       "udev device property ID_SEAT)\n");
>>       }
>>
>> +     if (!(seat->base.touch || (seat->base.keyboard && 
>> seat->base.pointer))) {
>> +             weston_log ("seat not complete: no touchscreen or "
>> +                         "no keyboard and pointer found.\n");
>> +             return -1;
>> +     }
>> +
>
> I wonder if the previous check isn't good enough - I think requiring a
> keyboard and a mouse is a little restrictive, there are many cases
> where we only have a keyboard or only a mouse.  And if we do want this
> more specific check, at least drop the check for an empty
> devices_list.
>
>>       return 0;
>>  }
>>
>> --
>> 1.8.1.4
>>
>> _______________________________________________
>> wayland-devel mailing list
>> [email protected]
>> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to