diff options
9 files changed, 193 insertions, 3 deletions
diff --git a/src/network/kernel/qnetworkinformation.cpp b/src/network/kernel/qnetworkinformation.cpp index 1ebe2f6045..6ce572d408 100644 --- a/src/network/kernel/qnetworkinformation.cpp +++ b/src/network/kernel/qnetworkinformation.cpp @@ -56,6 +56,11 @@ QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcNetInfo) Q_LOGGING_CATEGORY(lcNetInfo, "qt.network.info"); +struct QNetworkInformationDeleter +{ + void operator()(QNetworkInformation *information) { delete information; } +}; + Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, (QNetworkInformationBackendFactory_iid, QStringLiteral("/networkinformationbackends"))) @@ -63,7 +68,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, struct QStaticNetworkInformationDataHolder { QMutex instanceMutex; - std::unique_ptr<QNetworkInformation> instanceHolder; + std::unique_ptr<QNetworkInformation, QNetworkInformationDeleter> instanceHolder; QList<QNetworkInformationBackendFactory *> factories; }; Q_GLOBAL_STATIC(QStaticNetworkInformationDataHolder, dataHolder); diff --git a/src/network/kernel/qnetworkinformation.h b/src/network/kernel/qnetworkinformation.h index 84d29c8a41..07f4fe873d 100644 --- a/src/network/kernel/qnetworkinformation.h +++ b/src/network/kernel/qnetworkinformation.h @@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE class QNetworkInformationBackend; class QNetworkInformationPrivate; +struct QNetworkInformationDeleter; class Q_NETWORK_EXPORT QNetworkInformation : public QObject { Q_OBJECT @@ -70,8 +71,6 @@ public: Q_DECLARE_FLAGS(Features, Feature) Q_FLAG(Features) - ~QNetworkInformation() override; - Reachability reachability() const; QString backendName() const; @@ -87,8 +86,10 @@ Q_SIGNALS: void reachabilityChanged(Reachability newReachability); private: + friend struct QNetworkInformationDeleter; friend class QNetworkInformationPrivate; QNetworkInformation(QNetworkInformationBackend *backend); + ~QNetworkInformation() override; Q_DISABLE_COPY_MOVE(QNetworkInformation) }; diff --git a/src/opengl/qopengltexture.cpp b/src/opengl/qopengltexture.cpp index 8e8f57d0fc..809ffaf634 100644 --- a/src/opengl/qopengltexture.cpp +++ b/src/opengl/qopengltexture.cpp @@ -4262,6 +4262,7 @@ QOpenGLTexture::DepthStencilMode QOpenGLTexture::depthStencilMode() const \value CompareAlways Equivalent to GL_ALWAYS. \value CompareNever Equivalent to GL_NEVER. + \omitvalue CommpareNotEqual */ /*! diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt index a94f1a51fe..acb7253731 100644 --- a/tests/auto/cmake/CMakeLists.txt +++ b/tests/auto/cmake/CMakeLists.txt @@ -216,3 +216,5 @@ _qt_internal_test_expect_pass(test_add_resources_binary_generated BINARY test_add_resources_binary_generated) include(test_plugin_shared_static_flavor.cmake) +_qt_internal_test_expect_pass(test_init_resources_static_plugin + BINARY test_init_resources_static_plugin) diff --git a/tests/auto/cmake/test_init_resources_static_plugin/CMakeLists.txt b/tests/auto/cmake/test_init_resources_static_plugin/CMakeLists.txt new file mode 100644 index 0000000000..a0e40585e3 --- /dev/null +++ b/tests/auto/cmake/test_init_resources_static_plugin/CMakeLists.txt @@ -0,0 +1,52 @@ +cmake_minimum_required(VERSION 3.16) + +if(DEFINED CMAKE_Core_MODULE_MAJOR_VERSION) + set(project_version "${CMAKE_Core_MODULE_MAJOR_VERSION}.\ +${CMAKE_Core_MODULE_MINOR_VERSION}.${CMAKE_Core_MODULE_PATCH_VERSION}" + ) +else() + set(project_version "6.0.0") +endif() + +project(TestInitResourcesStaticPlugin + LANGUAGES CXX + VERSION "${project_version}" +) + +find_package(Qt6 COMPONENTS Core BuildInternals CONFIG REQUIRED) +qt_prepare_standalone_project() + +find_package(Qt6 COMPONENTS Gui Test CONFIG REQUIRED) # Add gui since Core have no plugin types + +qt_internal_add_plugin(TestInitResourcesStaticPlugin STATIC + OUTPUT_NAME + testinitresourcesstaticplugin + TYPE generic + SOURCES + pluginmain.cpp + SKIP_INSTALL + LIBRARIES + Qt::Core +) + +qt_internal_add_resource(TestInitResourcesStaticPlugin "teststaticplugin1" + PREFIX + "/teststaticplugin1" + FILES + "testfile1.txt" +) + +qt_internal_add_resource(TestInitResourcesStaticPlugin "teststaticplugin2" + PREFIX + "/teststaticplugin2" + FILES + "testfile2.txt" +) + +qt_internal_add_test(test_init_resources_static_plugin + SOURCES + test_init_resources_static_plugin.cpp + LIBRARIES + Qt::Core + TestInitResourcesStaticPlugin +) diff --git a/tests/auto/cmake/test_init_resources_static_plugin/pluginmain.cpp b/tests/auto/cmake/test_init_resources_static_plugin/pluginmain.cpp new file mode 100644 index 0000000000..992c948e55 --- /dev/null +++ b/tests/auto/cmake/test_init_resources_static_plugin/pluginmain.cpp @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore/qfile.h> +#include <QtCore/qdebug.h> + +QT_BEGIN_NAMESPACE + +class TestStaticPlugin : public QObject +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "TestStaticPlugin" URI "qt.teststaticplugin") +public: + TestStaticPlugin() = default; + Q_INVOKABLE bool checkResources() + { + return QFile::exists(":/teststaticplugin1/testfile1.txt") + && QFile::exists(":/teststaticplugin2/testfile2.txt"); + } +}; + +QT_END_NAMESPACE + +#include "pluginmain.moc" diff --git a/tests/auto/cmake/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp b/tests/auto/cmake/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp new file mode 100644 index 0000000000..73452258e4 --- /dev/null +++ b/tests/auto/cmake/test_init_resources_static_plugin/test_init_resources_static_plugin.cpp @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtTest/QtTest> +#include <QtCore/qfile.h> +#include <QtCore/qobject.h> +#include <QtCore/qpluginloader.h> +#include <QtPlugin> + +Q_IMPORT_PLUGIN(TestStaticPlugin) + +class TestInitResourcesStaticPlugin : public QObject +{ + Q_OBJECT +private slots: + void resourceFilesExist(); +}; + +void TestInitResourcesStaticPlugin::resourceFilesExist() +{ + bool result = false; + for (QObject *obj : QPluginLoader::staticInstances()) { + if (obj->metaObject()->className() == QLatin1String("TestStaticPlugin")) { + QMetaObject::invokeMethod(obj, "checkResources", Qt::DirectConnection, + Q_RETURN_ARG(bool, result)); + } + break; + } + QVERIFY(result); +} + +QTEST_MAIN(TestInitResourcesStaticPlugin) +#include "test_init_resources_static_plugin.moc" diff --git a/tests/auto/cmake/test_init_resources_static_plugin/testfile1.txt b/tests/auto/cmake/test_init_resources_static_plugin/testfile1.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/auto/cmake/test_init_resources_static_plugin/testfile1.txt diff --git a/tests/auto/cmake/test_init_resources_static_plugin/testfile2.txt b/tests/auto/cmake/test_init_resources_static_plugin/testfile2.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/auto/cmake/test_init_resources_static_plugin/testfile2.txt |