summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-11-10 09:17:48 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-11-11 07:13:42 +0000
commit97b75440e1e70fe01c3ab1f66ac03401640771a4 (patch)
treec4a559f3486f4059f4f5e82093ee319080e163e6
parentf0fa6b486ca20b6d6cb62f37d1f90596df889f76 (diff)
downloadqtmultimedia-97b75440e1e70fe01c3ab1f66ac03401640771a4.tar.gz
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 Change-Id: If43781f39cd229ba9b0d9eefebd687017ba9e952 Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 79267f7d3da56a4907d6ff9f2ddfdb2d296a47d1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-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)