Bearer: replace the use of QMutexPool in the Windows plugin

Use a simple Q_GLOBAL_STATIC

Change-Id: Ifea6e497f11a461db432ffff1449b14b63628c12
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
bb10
Thiago Macieira 2016-04-28 18:48:11 -07:00
parent e9d1d659a3
commit 29ac941c1e
1 changed files with 24 additions and 35 deletions

View File

@ -35,7 +35,6 @@
#include "platformdefs.h"
#include <QtCore/qmutex.h>
#include <QtCore/private/qmutexpool_p.h>
#include <QtCore/qlibrary.h>
#include <QtNetwork/private/qbearerplugin_p.h>
@ -46,42 +45,32 @@
QT_BEGIN_NAMESPACE
static void resolveLibrary()
static bool resolveLibraryInternal()
{
static QBasicAtomicInt triedResolve = Q_BASIC_ATOMIC_INITIALIZER(false);
if (!triedResolve.loadAcquire()) {
#ifndef QT_NO_THREAD
QMutexLocker locker(QMutexPool::globalInstanceGet(&local_WlanOpenHandle));
#endif
if (!triedResolve.load()) {
QLibrary wlanapiLib(QLatin1String("wlanapi"));
local_WlanOpenHandle = (WlanOpenHandleProto)
wlanapiLib.resolve("WlanOpenHandle");
local_WlanRegisterNotification = (WlanRegisterNotificationProto)
wlanapiLib.resolve("WlanRegisterNotification");
local_WlanEnumInterfaces = (WlanEnumInterfacesProto)
wlanapiLib.resolve("WlanEnumInterfaces");
local_WlanGetAvailableNetworkList = (WlanGetAvailableNetworkListProto)
wlanapiLib.resolve("WlanGetAvailableNetworkList");
local_WlanQueryInterface = (WlanQueryInterfaceProto)
wlanapiLib.resolve("WlanQueryInterface");
local_WlanConnect = (WlanConnectProto)
wlanapiLib.resolve("WlanConnect");
local_WlanDisconnect = (WlanDisconnectProto)
wlanapiLib.resolve("WlanDisconnect");
local_WlanScan = (WlanScanProto)
wlanapiLib.resolve("WlanScan");
local_WlanFreeMemory = (WlanFreeMemoryProto)
wlanapiLib.resolve("WlanFreeMemory");
local_WlanCloseHandle = (WlanCloseHandleProto)
wlanapiLib.resolve("WlanCloseHandle");
triedResolve.storeRelease(true);
}
}
QLibrary wlanapiLib(QLatin1String("wlanapi"));
local_WlanOpenHandle = (WlanOpenHandleProto)
wlanapiLib.resolve("WlanOpenHandle");
local_WlanRegisterNotification = (WlanRegisterNotificationProto)
wlanapiLib.resolve("WlanRegisterNotification");
local_WlanEnumInterfaces = (WlanEnumInterfacesProto)
wlanapiLib.resolve("WlanEnumInterfaces");
local_WlanGetAvailableNetworkList = (WlanGetAvailableNetworkListProto)
wlanapiLib.resolve("WlanGetAvailableNetworkList");
local_WlanQueryInterface = (WlanQueryInterfaceProto)
wlanapiLib.resolve("WlanQueryInterface");
local_WlanConnect = (WlanConnectProto)
wlanapiLib.resolve("WlanConnect");
local_WlanDisconnect = (WlanDisconnectProto)
wlanapiLib.resolve("WlanDisconnect");
local_WlanScan = (WlanScanProto)
wlanapiLib.resolve("WlanScan");
local_WlanFreeMemory = (WlanFreeMemoryProto)
wlanapiLib.resolve("WlanFreeMemory");
local_WlanCloseHandle = (WlanCloseHandleProto)
wlanapiLib.resolve("WlanCloseHandle");
return true;
}
Q_GLOBAL_STATIC_WITH_ARGS(bool, resolveLibrary, (resolveLibraryInternal()))
class QNativeWifiEnginePlugin : public QBearerEnginePlugin
{