diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-11-10 09:17:48 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-11-11 07:13:42 +0000 |
commit | 97b75440e1e70fe01c3ab1f66ac03401640771a4 (patch) | |
tree | c4a559f3486f4059f4f5e82093ee319080e163e6 | |
parent | f0fa6b486ca20b6d6cb62f37d1f90596df889f76 (diff) | |
download | qtmultimedia-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.cpp | 8 |
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) |