summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2011-10-07 14:45:47 +0200
committerJan-Arve Saether <jan-arve.saether@nokia.com>2011-10-07 14:45:47 +0200
commit1e8479b2aa781e6ce3fadf01294023fbc6ddbc22 (patch)
treef71430dfeddf810ab06ad496c3a31334537071ad /src
parenta0feeef52efde872c6d6e458c8e15616da0bf74f (diff)
don't lock the global mutex if there is nothing to protect
according to Thiago, setting the pointer with the same values *is* thread-safe Merge-request: 2655 Reviewed-by: Jan-Arve Saether <jan-arve.saether@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp6
-rw-r--r--src/gui/dialogs/qfiledialog_win.cpp17
-rw-r--r--src/network/kernel/qhostinfo_win.cpp20
-rw-r--r--src/plugins/bearer/nativewifi/main.cpp14
4 files changed, 9 insertions, 48 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 365b28e8d0..c135c4a3fd 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -53,7 +53,6 @@
#include "qabstracteventdispatcher_p.h"
#include "qcoreapplication_p.h"
#include <private/qthread_p.h>
-#include <private/qmutexpool_p.h>
QT_BEGIN_NAMESPACE
@@ -322,11 +321,6 @@ static void resolveTimerAPI()
{
static bool triedResolve = false;
if (!triedResolve) {
-#ifndef QT_NO_THREAD
- QMutexLocker locker(QMutexPool::globalInstanceGet(&triedResolve));
- if (triedResolve)
- return;
-#endif
#ifndef Q_OS_WINCE
QSystemLibrary library(QLatin1String("Mmtimer"));
#else
diff --git a/src/gui/dialogs/qfiledialog_win.cpp b/src/gui/dialogs/qfiledialog_win.cpp
index 45f6164ca2..32dbe4fc8d 100644
--- a/src/gui/dialogs/qfiledialog_win.cpp
+++ b/src/gui/dialogs/qfiledialog_win.cpp
@@ -55,10 +55,6 @@
#include <private/qsystemlibrary_p.h>
#include "qfiledialog_win_p.h"
-#ifndef QT_NO_THREAD
-# include <private/qmutexpool_p.h>
-#endif
-
#ifdef Q_WS_WINCE
#include <commdlg.h>
bool qt_priv_ptr_valid = false;
@@ -83,20 +79,7 @@ QT_BEGIN_NAMESPACE
static void qt_win_resolve_libs()
{
static bool triedResolve = false;
-
if (!triedResolve) {
-#ifndef QT_NO_THREAD
- // protect initialization
- QMutexLocker locker(QMutexPool::globalInstanceGet(&triedResolve));
- // check triedResolve again, since another thread may have already
- // done the initialization
- if (triedResolve) {
- // another thread did initialize the security function pointers,
- // so we shouldn't do it again.
- return;
- }
-#endif
-
#if !defined(Q_WS_WINCE)
QSystemLibrary lib(QLatin1String("shell32"));
ptrSHBrowseForFolder = (PtrSHBrowseForFolder)lib.resolve("SHBrowseForFolderW");
diff --git a/src/network/kernel/qhostinfo_win.cpp b/src/network/kernel/qhostinfo_win.cpp
index 03e72c4101..1cbf35062f 100644
--- a/src/network/kernel/qhostinfo_win.cpp
+++ b/src/network/kernel/qhostinfo_win.cpp
@@ -45,9 +45,7 @@
#include "private/qnativesocketengine_p.h"
#include <ws2tcpip.h>
#include <private/qsystemlibrary_p.h>
-#include <qmutex.h>
#include <qurl.h>
-#include <private/qmutexpool_p.h>
QT_BEGIN_NAMESPACE
@@ -84,6 +82,10 @@ static void resolveLibrary()
{
// Attempt to resolve getaddrinfo(); without it we'll have to fall
// back to gethostbyname(), which has no IPv6 support.
+ static bool triedResolve = false;
+ if (triedResolve)
+ return;
+
#if !defined(Q_OS_WINCE)
QSystemLibrary ws2lib(QLatin1String("ws2_32"));
#else
@@ -94,6 +96,8 @@ static void resolveLibrary()
local_freeaddrinfo = (freeaddrinfoProto)ws2lib.resolve("freeaddrinfo");
local_getnameinfo = (getnameinfoProto)ws2lib.resolve("getnameinfo");
}
+
+ triedResolve = true;
}
#if defined(Q_OS_WINCE)
@@ -103,21 +107,13 @@ QMutex qPrivCEMutex;
QHostInfo QHostInfoAgent::fromName(const QString &hostName)
{
+ resolveLibrary();
+
#if defined(Q_OS_WINCE)
QMutexLocker locker(&qPrivCEMutex);
#endif
QWindowsSockInit winSock;
- // Load res_init on demand.
- static volatile bool triedResolve = false;
- if (!triedResolve) {
- QMutexLocker locker(QMutexPool::globalInstanceGet(&local_getaddrinfo));
- if (!triedResolve) {
- resolveLibrary();
- triedResolve = true;
- }
- }
-
QHostInfo results;
#if defined(QHOSTINFO_DEBUG)
diff --git a/src/plugins/bearer/nativewifi/main.cpp b/src/plugins/bearer/nativewifi/main.cpp
index cbdfd99316..d279631286 100644
--- a/src/plugins/bearer/nativewifi/main.cpp
+++ b/src/plugins/bearer/nativewifi/main.cpp
@@ -42,30 +42,18 @@
#include "qnativewifiengine.h"
#include "platformdefs.h"
-#include <QtCore/qmutex.h>
-#include <QtCore/private/qmutexpool_p.h>
#include <QtCore/private/qsystemlibrary_p.h>
#include <QtNetwork/private/qbearerplugin_p.h>
-#include <QtCore/qdebug.h>
-
#ifndef QT_NO_BEARERMANAGEMENT
QT_BEGIN_NAMESPACE
static void resolveLibrary()
{
- static volatile bool triedResolve = false;
-
+ static bool triedResolve = false;
if (!triedResolve) {
-#ifndef QT_NO_THREAD
- QMutexLocker locker(QMutexPool::globalInstanceGet(&local_WlanOpenHandle));
-#endif
-
- if (triedResolve)
- return;
-
QSystemLibrary wlanapi(QLatin1String("wlanapi"));
if (wlanapi.load()) {
local_WlanOpenHandle = (WlanOpenHandleProto)