On Tue, Oct 05, 2010 at 08:02:14AM +0200, Oliver Neukum wrote: > Am Dienstag, 5. Oktober 2010, 06:45:20 schrieb Dmitry Torokhov: > > > > +{ > > > > + struct appleir *appleir = input_get_drvdata(dev); > > > > + > > > > + mutex_lock(&appleir_mutex); > > > > + > > > > + if (!(appleir->flags & APPLEIR_SUSPENDED)) { > > > > + usb_kill_urb(appleir->urb); > > > > + del_timer_sync(&appleir->key_up_timer); > > > > > > You can close with a key unreleased. > > > > I think this is handled by input core. We forcibly send release events > > when device is disconnected; this takes care of surprise disconnect case. > > OTOH if input_dev->close() is called that means that there are no more > > listeners for the events so the fact that a key is still pressed is not > > interesting to anyone. > > But what about the next opener? He'll get a completely spurious > key release event, as the next key is pressed. How does the opening of a device handle relate to a device state? Userspace should expect to see releases without presses (in case they weren't the first client that opened the device). But I guess we should reset the "last key" here, just in case. > > > > > + usb_kill_urb(appleir->urb); > > > > > > If the system goes to sleep you'd better report a pressed key > > > as released here and kill the timer. > > > > Input core sends "release" events upon resume so we should be OK. > > I see. OK, this is covered. Might be a good idea to reset "last key" here as well. No need to send 2nd release event later on. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html