Takashi Iwai wrote: > Martin Langer wrote: > > usb hotplug works perfect if my usbmidi client isn't aconnected to another > > midi client. But the aconnected usb midi device still remains in the clients > > list, after hotpluging out. > > yep, when the connection exists, the connected devices (on both > sides) are regarded as active.
The sequencer design allows asynchronous removal of clients. --- alsa-kernel/core/seq/seq_device.c.orig Wed Aug 14 18:11:13 2002 +++ alsa-kernel/core/seq/seq_device.c Thu Nov 28 23:05:47 2002 @@ -92,6 +92,7 @@ static int snd_seq_device_free(snd_seq_device_t *dev); static int snd_seq_device_dev_free(snd_device_t *device); static int snd_seq_device_dev_register(snd_device_t *device); +static int snd_seq_device_dev_disconnect(snd_device_t *device); static int snd_seq_device_dev_unregister(snd_device_t *device); static int init_device(snd_seq_device_t *dev, ops_list_t *ops); @@ -166,6 +167,7 @@ static snd_device_ops_t dops = { .dev_free = snd_seq_device_dev_free, .dev_register = snd_seq_device_dev_register, + .dev_disconnect = snd_seq_device_dev_disconnect, .dev_unregister = snd_seq_device_dev_unregister }; @@ -265,6 +267,22 @@ init_device(dev, ops); unlock_driver(ops); + return 0; +} + +/* + * disconnect the device + */ +static int snd_seq_device_dev_disconnect(snd_device_t *device) +{ + snd_seq_device_t *dev = snd_magic_cast(snd_seq_device_t, device->device_data, +return -ENXIO); + ops_list_t *ops; + + ops = find_driver(dev->id, 0); + if (ops == NULL) + return -ENOENT; + + free_device(dev, ops); return 0; } ------------------------------------------------------- This SF.net email is sponsored by: Get the new Palm Tungsten T handheld. Power & Color in a compact size! http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel