From 0aea5c18d46328b2e8e52b517e3c1189b321d2d2 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Tue, 21 Jul 2009 02:00:46 +0000 Subject: [PATCH] Make that queue_request() call into a clear_feature() call, as that's how it was probably meant to be. The call as it was made no sense at all, as it hardcoded the endpoint number and tried to supply data to a non-data request. It also wasn't using a synchronous call, possibly triggering the callback function with an incompletely set-up device structure, depending on how quickly the request would return. This caused bug #4107. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31666 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/midi/usb_midi/usb_midi.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c index 4e0dba5a42..af94f4eb1b 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c +++ b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c @@ -273,17 +273,10 @@ got_one: if ((my_dev = create_device (dev, intf, ifno)) == NULL) { return B_ERROR; } - - st = usb->queue_request(dev, - USB_REQTYPE_ENDPOINT_OUT | USB_REQTYPE_STANDARD, - USB_REQUEST_CLEAR_FEATURE, - USB_FEATURE_ENDPOINT_HALT, 1, my_dev->total_report_size, - my_dev->buffer, my_dev->total_report_size, midi_usb_callback, my_dev); - if (st != B_OK) { - DPRINTF_ERR ((MY_ID "queue_request() error %d\n", (int)st)); - return B_ERROR; - } - + + usb->clear_feature(intf->endpoint[0].handle, USB_FEATURE_ENDPOINT_HALT); + // TODO: verify if this is necessary at all + my_dev->timestamp = system_time (); /* issue bulk transfer */