summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-11-10 09:17:48 +0100
committerPiotr Srebrny <piotr.srebrny@qt.io>2022-11-10 10:49:06 +0100
commit79267f7d3da56a4907d6ff9f2ddfdb2d296a47d1 (patch)
tree2aaa29b4899bfd5f21d18a9c6debd6b6fae1bc6b /src
parent7578eb075be004f02e00e02a0b4b35557659f59d (diff)
Look up device classes in an order independent way
GStreamer does not guarantee any specific order in the class list returned by gst_device_get_device_class. Instead of using strcmp on this list we can check device classes in the order independet way using gst_device_has_classes. Fixes: QTBUG-107671 Pick-to: 6.4 Change-Id: If43781f39cd229ba9b0d9eefebd687017ba9e952 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp b/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp
index d0c341fc9..cd4d15e02 100644
--- a/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp
+++ b/src/plugins/multimedia/gstreamer/qgstreamervideodevices.cpp
@@ -119,16 +119,12 @@ QList<QCameraDevice> QGstreamerVideoDevices::videoDevices() const
void QGstreamerVideoDevices::addDevice(GstDevice *device)
{
- gchar *type = gst_device_get_device_class(device);
- gst_object_ref(device);
- if (!strcmp(type, "Video/Source") || !strcmp(type, "Source/Video")) {
+ if (gst_device_has_classes(device, "Video/Source")) {
+ gst_object_ref(device);
m_videoSources.push_back({device, QByteArray::number(m_idGenerator)});
videoInputsChanged();
m_idGenerator++;
- } else {
- gst_object_unref(device);
}
- g_free(type);
}
void QGstreamerVideoDevices::removeDevice(GstDevice *device)