From 203d1825c51481b6efe7ae2b275742cd789452c4 Mon Sep 17 00:00:00 2001 From: Jerome Laheurte Date: Thu, 16 Aug 2018 12:35:50 +0200 Subject: [PATCH] ksvideosrc: fix device enumeration when hotplugging a camera Since both audio and video capture devices declare the KSCATEGORY_CAPTURE interface, plugging a camera that supports both could result in an audio device being mistaken for a video one. https://bugzilla.gnome.org/show_bug.cgi?id=796958 --- sys/winks/ksdeviceprovider.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/winks/ksdeviceprovider.c b/sys/winks/ksdeviceprovider.c index 609794d448..b54cba2c67 100644 --- a/sys/winks/ksdeviceprovider.c +++ b/sys/winks/ksdeviceprovider.c @@ -338,13 +338,14 @@ msg_window_message_proc (HWND window_handle, UINT message, bcdi = (PDEV_BROADCAST_DEVICEINTERFACE) lparam; - if (!IsEqualGUID (&bcdi->dbcc_classguid, &KSCATEGORY_CAPTURE) && - !IsEqualGUID (&bcdi->dbcc_classguid, &KSCATEGORY_RENDER)) + /* Since both video and audio capture device declare KSCATEGORY_CAPTURE, we filter on + KSCATEGORY_VIDEO here. To add audio support we should accept also KSCATEGORY_AUDIO. */ + if (!IsEqualGUID (&bcdi->dbcc_classguid, &KSCATEGORY_VIDEO)) break; devices = ks_enumerate_devices (&bcdi->dbcc_classguid, - &bcdi->dbcc_classguid); + &KSCATEGORY_CAPTURE); if (devices == NULL) break; @@ -356,7 +357,7 @@ msg_window_message_proc (HWND window_handle, UINT message, if ((source == NULL) && (g_ascii_strcasecmp (entry->path, bcdi->dbcc_name) == 0)) - source = new_video_source (entry); + source = new_video_source (entry); /* Or audio source, not implemented yet */ ks_device_entry_free (entry); }