Messages in this thread | | | Date | Thu, 4 Feb 2010 10:41:32 -0800 | From | Dmitry Torokhov <> | Subject | Re: [PATCH 1/1] media: dvb-usb/af9015, fix disconnection crashes |
| |
On Thu, Feb 04, 2010 at 07:33:22PM +0100, Jiri Slaby wrote: > On 02/04/2010 07:14 PM, Dmitry Torokhov wrote: > > On Thu, Feb 04, 2010 at 11:31:45AM +0100, Jiri Slaby wrote: > > + > >> +static int dvb_event(struct hid_device *hdev, struct hid_field *field, > >> + struct hid_usage *usage, __s32 value) > >> +{ > >> + /* we won't get a "key up" event */ > >> + if (value) { > >> + input_event(field->hidinput->input, usage->type, usage->code, 1); > >> + input_event(field->hidinput->input, usage->type, usage->code, 0); > > > > Do not ever forget input_sync(), you need 2 of them here. > > > > With the latest changes to evdev, if you are using SIGIO you won't get > > wioken up until EV_SYN/SYN_REPORT. > > HID layer syncs on its own. So the second is not needed. Why is needed > the first? >
Userpsace has a right to accumulate events and only act on them when receiving EV_SYN. Press + release in the same event block may be treated as no change. The same as REL_X +2, REL_X -2 - no need to move pointer at all. And so on.
> I.e. should there be one also in dvb_usb_read_remote_control?
Probably, I have not looked.
-- Dmitry
| |