]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
depends: qt: update to 6.5.3
authortobtoht <tob@featherwallet.org>
Thu, 28 Sep 2023 13:44:21 +0000 (15:44 +0200)
committertobtoht <tob@featherwallet.org>
Thu, 28 Sep 2023 18:32:09 +0000 (20:32 +0200)
contrib/depends/packages/native_qt.mk
contrib/depends/packages/qt.mk
contrib/depends/patches/native_qt/dont_hardcode_pwd.patch
contrib/depends/patches/qt/dont_hardcode_pwd.patch [deleted file]
contrib/depends/patches/qt/qtmultimedia-fixes.patch
contrib/depends/patches/qt/toolchain.cmake
contrib/depends/patches/qt/v4l2.patch

index 5d5ab8dc57fac0fff71a5f534345eff2ff1e76d4..d200eb442316712535a640784e92dcec9878cd69 100644 (file)
@@ -1,9 +1,9 @@
 package=native_qt
-$(package)_version=6.5.2
+$(package)_version=6.5.3
 $(package)_download_path=https://download.qt.io/official_releases/qt/6.5/$($(package)_version)/submodules
 $(package)_suffix=everywhere-src-$($(package)_version).tar.xz
 $(package)_file_name=qtbase-$($(package)_suffix)
-$(package)_sha256_hash=3db4c729b4d80a9d8fda8dd77128406353baff4755ca619177eda4cddae71269
+$(package)_sha256_hash=df2f4a230be4ea04f9798f2c19ab1413a3b8ec6a80bef359f50284235307b546
 $(package)_qt_libs=corelib network widgets gui plugins testlib
 $(package)_patches  = dont_hardcode_pwd.patch
 $(package)_patches += fast_fixed_dtoa_no_optimize.patch
@@ -13,16 +13,16 @@ $(package)_patches += rcc_hardcode_timestamp.patch
 $(package)_patches += root_CMakeLists.txt
 
 $(package)_qttools_file_name=qttools-$($(package)_suffix)
-$(package)_qttools_sha256_hash=551ffb22751d8fd4d88e9ebd55b9131f4ca55341ee497fdbbba4da8d10d94341
+$(package)_qttools_sha256_hash=fc91d32b3f696725bbb48b0df240c25b606bbee3bd22627cfcbee876a6405e37
 
 $(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
-$(package)_qtsvg_sha256_hash=48b4cc1093af2e0ab3bea30f60651bddd877a2335d16e7207879a2e9e81963a3
+$(package)_qtsvg_sha256_hash=fc41c47b69ca1f80473cd4b11996394155781105345392961d064d04f95d5bef
 
 $(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
-$(package)_qtmultimedia_sha256_hash=948f00aa679e92839a2a71bd07245a92cc849af486607417ee4c334b2b998975
+$(package)_qtmultimedia_sha256_hash=ed64f3d2bb98c20cd12df19dbf84dc0233d9fcb2078fea812adf42eef9a0ff27
 
 $(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
-$(package)_qtshadertools_sha256_hash=ca3fb0db8576c59b9c38bb4b271cc6e10aebeb54e2121f429f4ee80671fc0a3d
+$(package)_qtshadertools_sha256_hash=201b7b3a409f048e78c5defb90a70af423166313ad4386f8e6b83990ae0f3573
 
 $(package)_extra_sources += $($(package)_qttools_file_name)
 $(package)_extra_sources += $($(package)_qtsvg_file_name)
index f80a4d89e8bbb6bf7a5226ecddae347c9da3dbe8..f54173d093be1713efa421dd96fafa4511d8eca6 100644 (file)
@@ -1,13 +1,12 @@
 package=qt
-$(package)_version=6.5.2
+$(package)_version=6.5.3
 $(package)_download_path=https://download.qt.io/official_releases/qt/6.5/$($(package)_version)/submodules
 $(package)_suffix=everywhere-src-$($(package)_version).tar.xz
 $(package)_file_name=qtbase-$($(package)_suffix)
-$(package)_sha256_hash=3db4c729b4d80a9d8fda8dd77128406353baff4755ca619177eda4cddae71269
+$(package)_sha256_hash=df2f4a230be4ea04f9798f2c19ab1413a3b8ec6a80bef359f50284235307b546
 $(package)_darwin_dependencies=native_cctools native_qt openssl
 $(package)_mingw32_dependencies=openssl native_qt
 $(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus
-$(package)_patches += dont_hardcode_pwd.patch
 $(package)_patches += fast_fixed_dtoa_no_optimize.patch
 $(package)_patches += guix_cross_lib_path.patch
 $(package)_patches += qtbase-moc-ignore-gcc-macro.patch
@@ -23,19 +22,19 @@ $(package)_patches += toolchain.cmake
 #$(package)_patches += fix-static-fontconfig-static-linking.patch
 
 $(package)_qttools_file_name=qttools-$($(package)_suffix)
-$(package)_qttools_sha256_hash=551ffb22751d8fd4d88e9ebd55b9131f4ca55341ee497fdbbba4da8d10d94341
+$(package)_qttools_sha256_hash=fc91d32b3f696725bbb48b0df240c25b606bbee3bd22627cfcbee876a6405e37
 
 $(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
-$(package)_qtsvg_sha256_hash=48b4cc1093af2e0ab3bea30f60651bddd877a2335d16e7207879a2e9e81963a3
+$(package)_qtsvg_sha256_hash=fc41c47b69ca1f80473cd4b11996394155781105345392961d064d04f95d5bef
 
 $(package)_qtwebsockets_file_name=qtwebsockets-$($(package)_suffix)
-$(package)_qtwebsockets_sha256_hash=204bd7b0dffb54c934abc6cf0eb5e3016f11b3c9721a67b4875a6b21bb8b5c76
+$(package)_qtwebsockets_sha256_hash=04e2ae17594d56cf2930c99dbd2a97eb88ff514b445c17ff7b86e8978fc7a7c3
 
 $(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
-$(package)_qtmultimedia_sha256_hash=948f00aa679e92839a2a71bd07245a92cc849af486607417ee4c334b2b998975
+$(package)_qtmultimedia_sha256_hash=ed64f3d2bb98c20cd12df19dbf84dc0233d9fcb2078fea812adf42eef9a0ff27
 
 $(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
-$(package)_qtshadertools_sha256_hash=ca3fb0db8576c59b9c38bb4b271cc6e10aebeb54e2121f429f4ee80671fc0a3d
+$(package)_qtshadertools_sha256_hash=201b7b3a409f048e78c5defb90a70af423166313ad4386f8e6b83990ae0f3573
 
 $(package)_extra_sources += $($(package)_qttools_file_name)
 $(package)_extra_sources += $($(package)_qtsvg_file_name)
@@ -171,7 +170,6 @@ endef
 
 define $(package)_preprocess_cmds
   cp $($(package)_patch_dir)/root_CMakeLists.txt CMakeLists.txt && \
-  patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \
   patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \
   patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
   patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \
index cf2c4d354cd2f7dcd6a808befce28e14135ff058..1a3b0d6562756536339e6b75cd6c899d084269ad 100644 (file)
@@ -1,25 +1,16 @@
-commit 0e953866fc4672486e29e1ba6d83b4207e7b2f0b
-Author: fanquake <fanquake@gmail.com>
-Date:   Tue Aug 18 15:09:06 2020 +0800
-
-    Don't hardcode pwd path
-
-    Let a man use his builtins if he wants to! Also, removes the unnecessary
-    assumption that pwd lives under /bin/pwd.
-
-    See #15581.
-
+diff --git a/qtbase/configure b/qtbase/configure
+index e57707dc..d8f6c934 100755
 --- a/qtbase/configure
 +++ b/qtbase/configure
-@@ -34,9 +34,9 @@
+@@ -9,9 +9,9 @@
  
  # the directory of this script is the "source tree"
- relpath=`dirname $0`
+ relpath=`dirname "$0"`
 -relpath=`(cd "$relpath"; /bin/pwd)`
 +relpath=`(cd "$relpath"; pwd)`
  # the current directory is the "build tree" or "object tree"
 -outpath=`/bin/pwd`
 +outpath=`pwd`
+ outpathPrefix=$outpath
  
  # do this early so we don't store it in config.status
- CFG_TOPLEVEL=
diff --git a/contrib/depends/patches/qt/dont_hardcode_pwd.patch b/contrib/depends/patches/qt/dont_hardcode_pwd.patch
deleted file mode 100644 (file)
index cf2c4d3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-commit 0e953866fc4672486e29e1ba6d83b4207e7b2f0b
-Author: fanquake <fanquake@gmail.com>
-Date:   Tue Aug 18 15:09:06 2020 +0800
-
-    Don't hardcode pwd path
-
-    Let a man use his builtins if he wants to! Also, removes the unnecessary
-    assumption that pwd lives under /bin/pwd.
-
-    See #15581.
-
---- a/qtbase/configure
-+++ b/qtbase/configure
-@@ -34,9 +34,9 @@
- # the directory of this script is the "source tree"
- relpath=`dirname $0`
--relpath=`(cd "$relpath"; /bin/pwd)`
-+relpath=`(cd "$relpath"; pwd)`
- # the current directory is the "build tree" or "object tree"
--outpath=`/bin/pwd`
-+outpath=`pwd`
- # do this early so we don't store it in config.status
- CFG_TOPLEVEL=
index f2250b5d3feaedf3647c3bf745b086a3f7e4e1c4..86264d8f72ef10823c35e6d37271aa4b4f32798c 100644 (file)
@@ -41,16 +41,16 @@ index 2f4633c34..35a276cb4 100644
  
  set(WMF_LIBRARIES ${WMF_STRMIIDS_LIBRARY} ${WMF_AMSTRMID_LIBRARY} ${WMF_DMOGUIDS_LIBRARY} ${WMF_UUID_LIBRARY}
 diff --git a/src/multimedia/configure.cmake b/src/multimedia/configure.cmake
-index 7fdb0af3a..868e91ba4 100644
+index 609806507..40b1b9b36 100644
 --- a/src/multimedia/configure.cmake
 +++ b/src/multimedia/configure.cmake
 @@ -24,7 +24,6 @@ qt_find_package(WrapPulseAudio PROVIDED_TARGETS WrapPulseAudio::WrapPulseAudio M
  qt_find_package(WMF PROVIDED_TARGETS WMF::WMF MODULE_NAME multimedia QMAKE_LIB wmf)
  qt_find_package(EGL)
+
 -qt_find_package(FFmpeg OPTIONAL_COMPONENTS AVCODEC AVFORMAT AVUTIL AVDEVICE SWRESAMPLE SWSCALE PROVIDED_TARGETS FFmpeg::avcodec FFmpeg::avformat FFmpeg::avutil FFmpeg::avdevice FFmpeg::swresample  FFmpeg::swscale MODULE_NAME multimedia QMAKE_LIB ffmpeg)
- qt_find_package(VAAPI COMPONENTS VA DRM PROVIDED_TARGETS VAAPI::VA VAAPI::DRM MODULE_NAME multimedia QMAKE_LIB vaapi)
+ qt_find_package(VAAPI COMPONENTS VA DRM PROVIDED_TARGETS VAAPI::VAAPI MODULE_NAME multimedia QMAKE_LIB vaapi)
+
  #### Tests
 @@ -76,7 +75,7 @@ qt_feature("ffmpeg" PRIVATE
      LABEL "FFmpeg"
index e8b0578f438d5b69685f98c606e26a0262e5e279..116af0bdfb8e08404b5e473edbab0ede6ec51351 100644 (file)
@@ -23,6 +23,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
 
     set(CMAKE_C_FLAGS "@cmake_c_flags@")
     set(CMAKE_CXX_FLAGS "@cmake_cxx_flags@")
+    set(CMAKE_OBJC_FLAGS "@cmake_c_flags@")
+    set(CMAKE_OBJCXX_FLAGS "@cmake_cxx_flags@")
 
     set(CMAKE_INSTALL_NAME_TOOL @target@-install_name_tool)
 endif()
\ No newline at end of file
index 0233de3ddb99fef9b400cac7d9ba96a8a22d2fa3..9f1f4189e9123fd7e3ecf87cc9c07ba944f68789 100644 (file)
@@ -670,10 +670,10 @@ index 000000000..e34005bbf
 +#endif
 diff --git a/src/plugins/multimedia/v4l2/qffmpegmediaintegration.cpp b/src/plugins/multimedia/v4l2/qffmpegmediaintegration.cpp
 new file mode 100644
-index 000000000..c07c0ebc7
+index 000000000..44d81e489
 --- /dev/null
 +++ b/src/plugins/multimedia/v4l2/qffmpegmediaintegration.cpp
-@@ -0,0 +1,130 @@
+@@ -0,0 +1,123 @@
 +// Copyright (C) 2021 The Qt Company Ltd.
 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
 +
@@ -722,8 +722,6 @@ index 000000000..c07c0ebc7
 +
 +QFFmpegMediaIntegration::QFFmpegMediaIntegration()
 +{
-+    m_formatsInfo = new QFFmpegMediaFormatInfo();
-+
 +#if QT_CONFIG(linux_v4l)
 +    m_videoDevices = std::make_unique<QV4L2CameraDevices>(this);
 +#endif
@@ -741,14 +739,9 @@ index 000000000..c07c0ebc7
 +#endif
 +}
 +
-+QFFmpegMediaIntegration::~QFFmpegMediaIntegration()
-+{
-+    delete m_formatsInfo;
-+}
-+
-+QPlatformMediaFormatInfo *QFFmpegMediaIntegration::formatInfo()
++QPlatformMediaFormatInfo *QFFmpegMediaIntegration::createFormatInfo()
 +{
-+    return m_formatsInfo;
++    return new QFFmpegMediaFormatInfo();
 +}
 +
 +QMaybe<QPlatformMediaCaptureSession *> QFFmpegMediaIntegration::createCaptureSession()
@@ -806,10 +799,10 @@ index 000000000..c07c0ebc7
 +#include "qffmpegmediaintegration.moc"
 diff --git a/src/plugins/multimedia/v4l2/qffmpegmediaintegration_p.h b/src/plugins/multimedia/v4l2/qffmpegmediaintegration_p.h
 new file mode 100644
-index 000000000..8b44da741
+index 000000000..905c3efd5
 --- /dev/null
 +++ b/src/plugins/multimedia/v4l2/qffmpegmediaintegration_p.h
-@@ -0,0 +1,43 @@
+@@ -0,0 +1,45 @@
 +// Copyright (C) 2021 The Qt Company Ltd.
 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
 +
@@ -837,17 +830,19 @@ index 000000000..8b44da741
 +{
 +public:
 +    QFFmpegMediaIntegration();
-+    ~QFFmpegMediaIntegration();
 +
-+    static QFFmpegMediaIntegration *instance() { return static_cast<QFFmpegMediaIntegration *>(QPlatformMediaIntegration::instance()); }
-+    QPlatformMediaFormatInfo *formatInfo() override;
++    static QFFmpegMediaIntegration *instance()
++    {
++        return static_cast<QFFmpegMediaIntegration *>(QPlatformMediaIntegration::instance());
++    }
 +
 +    QMaybe<QPlatformMediaCaptureSession *> createCaptureSession() override;
 +    QMaybe<QPlatformCamera *> createCamera(QCamera *) override;
 +    QMaybe<QPlatformImageCapture *> createImageCapture(QImageCapture *) override;
 +    QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *sink) override;
 +
-+    QFFmpegMediaFormatInfo *m_formatsInfo = nullptr;
++protected:
++    QPlatformMediaFormatInfo *createFormatInfo() override;
 +};
 +
 +QT_END_NAMESPACE
@@ -1037,10 +1032,10 @@ index 000000000..cbaa810d7
 +#endif
 diff --git a/src/plugins/multimedia/v4l2/qv4l2camera.cpp b/src/plugins/multimedia/v4l2/qv4l2camera.cpp
 new file mode 100644
-index 000000000..0f7a8c91a
+index 000000000..b635a7fce
 --- /dev/null
 +++ b/src/plugins/multimedia/v4l2/qv4l2camera.cpp
-@@ -0,0 +1,940 @@
+@@ -0,0 +1,949 @@
 +// Copyright (C) 2021 The Qt Company Ltd.
 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
 +
@@ -1069,28 +1064,38 @@ index 000000000..0f7a8c91a
 +
 +QT_BEGIN_NAMESPACE
 +
-+Q_LOGGING_CATEGORY(qLV4L2Camera, "qt.multimedia.ffmpeg.v4l2camera");
++static Q_LOGGING_CATEGORY(qLV4L2Camera, "qt.multimedia.ffmpeg.v4l2camera");
++
++static bool areCamerasEqual(QList<QCameraDevice> a, QList<QCameraDevice> b) {
++    auto areCamerasDataEqual = [](const QCameraDevice& a, const QCameraDevice& b) {
++        Q_ASSERT(QCameraDevicePrivate::handle(a));
++        Q_ASSERT(QCameraDevicePrivate::handle(b));
++        return *QCameraDevicePrivate::handle(a) == *QCameraDevicePrivate::handle(b);
++    };
++
++    return std::equal(a.cbegin(), a.cend(), b.cbegin(), b.cend(), areCamerasDataEqual);
++}
 +
 +QV4L2CameraDevices::QV4L2CameraDevices(QPlatformMediaIntegration *integration)
 +    : QPlatformVideoDevices(integration)
 +{
-+    deviceWatcher.addPath(QLatin1String("/dev"));
-+    connect(&deviceWatcher, &QFileSystemWatcher::directoryChanged, this, &QV4L2CameraDevices::checkCameras);
++    m_deviceWatcher.addPath(QLatin1String("/dev"));
++    connect(&m_deviceWatcher, &QFileSystemWatcher::directoryChanged, this, &QV4L2CameraDevices::checkCameras);
 +    doCheckCameras();
 +}
 +
 +QList<QCameraDevice> QV4L2CameraDevices::videoDevices() const
 +{
-+    return cameras;
++    return m_cameras;
 +}
 +
 +void QV4L2CameraDevices::checkCameras()
 +{
-+    doCheckCameras();
-+    videoInputsChanged();
++    if (doCheckCameras())
++        emit videoInputsChanged();
 +}
 +
-+const struct {
++static const struct {
 +    QVideoFrameFormat::PixelFormat fmt;
 +    uint32_t v4l2Format;
 +} formatMap[] = {
@@ -1139,9 +1144,9 @@ index 000000000..0f7a8c91a
 +}
 +
 +
-+void QV4L2CameraDevices::doCheckCameras()
++bool QV4L2CameraDevices::doCheckCameras()
 +{
-+    cameras.clear();
++    QList<QCameraDevice> newCameras;
 +
 +    QDir dir(QLatin1String("/dev"));
 +    const auto devices = dir.entryList(QDir::System);
@@ -1154,25 +1159,27 @@ index 000000000..0f7a8c91a
 +            continue;
 +
 +        QByteArray file = QFile::encodeName(dir.filePath(device));
-+        int fd = open(file.constData(), O_RDONLY);
++        const int fd = open(file.constData(), O_RDONLY);
 +        if (fd < 0)
 +            continue;
 +
-+        QCameraDevicePrivate *camera = nullptr;
++        auto fileCloseGuard = qScopeGuard([fd](){ close(fd); });
++
 +        v4l2_fmtdesc formatDesc = {};
 +
 +        struct v4l2_capability cap;
 +        if (ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0)
-+            goto fail;
++            continue;
 +
 +        if (cap.device_caps & V4L2_CAP_META_CAPTURE)
-+            goto fail;
++            continue;
 +        if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE))
-+            goto fail;
++            continue;
 +        if (!(cap.capabilities & V4L2_CAP_STREAMING))
-+            goto fail;
++            continue;
++
++        auto camera = std::make_unique<QCameraDevicePrivate>();
 +
-+        camera = new QCameraDevicePrivate;
 +        camera->id = file;
 +        camera->description = QString::fromUtf8((const char *)cap.card);
 +//        qCDebug(qLV4L2Camera) << "found camera" << camera->id << camera->description;
@@ -1193,6 +1200,7 @@ index 000000000..0f7a8c91a
 +            frameSize.pixel_format = formatDesc.pixelformat;
 +
 +            while (!ioctl(fd, VIDIOC_ENUM_FRAMESIZES, &frameSize)) {
++                ++frameSize.index;
 +                if (frameSize.type != V4L2_FRMSIZE_TYPE_DISCRETE)
 +                    continue;
 +
@@ -1206,9 +1214,9 @@ index 000000000..0f7a8c91a
 +                frameInterval.height = frameSize.discrete.height;
 +
 +                while (!ioctl(fd, VIDIOC_ENUM_FRAMEINTERVALS, &frameInterval)) {
++                    ++frameInterval.index;
 +                    if (frameInterval.type != V4L2_FRMIVAL_TYPE_DISCRETE)
 +                        continue;
-+                    ++frameInterval.index;
 +                    float rate = float(frameInterval.discrete.denominator)/float(frameInterval.discrete.numerator);
 +                    if (rate > max)
 +                        max = rate;
@@ -1217,15 +1225,14 @@ index 000000000..0f7a8c91a
 +                }
 +
 +//                qCDebug(qLV4L2Camera) << "    " << resolution << min << max;
-+                ++frameSize.index;
 +
 +                if (min <= max) {
-+                    QCameraFormatPrivate *fmt = new QCameraFormatPrivate;
++                    auto fmt = std::make_unique<QCameraFormatPrivate>();
 +                    fmt->pixelFormat = pixelFmt;
 +                    fmt->resolution = resolution;
 +                    fmt->minFrameRate = min;
 +                    fmt->maxFrameRate = max;
-+                    camera->videoFormats.append(fmt->create());
++                    camera->videoFormats.append(fmt.release()->create());
 +                    camera->photoResolutions.append(resolution);
 +                }
 +            }
@@ -1234,19 +1241,16 @@ index 000000000..0f7a8c91a
 +        }
 +
 +        // first camera is default
-+        camera->isDefault = first;
-+        first = false;
++        camera->isDefault = std::exchange(first, false);
 +
-+        cameras.append(camera->create());
++        newCameras.append(camera.release()->create());
++    }
 +
-+        close(fd);
-+        continue;
++    if (areCamerasEqual(m_cameras, newCameras))
++        return false;
 +
-+      fail:
-+        if (camera)
-+              delete camera;
-+        close(fd);
-+    }
++    m_cameras = std::move(newCameras);
++    return true;
 +}
 +
 +class QV4L2VideoBuffer : public QAbstractVideoBuffer
@@ -1983,10 +1987,10 @@ index 000000000..0f7a8c91a
 +QT_END_NAMESPACE
 diff --git a/src/plugins/multimedia/v4l2/qv4l2camera_p.h b/src/plugins/multimedia/v4l2/qv4l2camera_p.h
 new file mode 100644
-index 000000000..714b4c1db
+index 000000000..f5df691c3
 --- /dev/null
 +++ b/src/plugins/multimedia/v4l2/qv4l2camera_p.h
-@@ -0,0 +1,160 @@
+@@ -0,0 +1,159 @@
 +// Copyright (C) 2021 The Qt Company Ltd.
 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
 +
@@ -2014,8 +2018,7 @@ index 000000000..714b4c1db
 +
 +QT_BEGIN_NAMESPACE
 +
-+class QV4L2CameraDevices : public QObject,
-+                           public QPlatformVideoDevices
++class QV4L2CameraDevices : public QPlatformVideoDevices
 +{
 +    Q_OBJECT
 +public:
@@ -2027,10 +2030,10 @@ index 000000000..714b4c1db
 +    void checkCameras();
 +
 +private:
-+    void doCheckCameras();
++    bool doCheckCameras();
 +
-+    QList<QCameraDevice> cameras;
-+    QFileSystemWatcher deviceWatcher;
++    QList<QCameraDevice> m_cameras;
++    QFileSystemWatcher m_deviceWatcher;
 +};
 +
 +struct QV4L2CameraBuffers