summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorSamuel Gaist <samuel.gaist@edeltech.ch>2013-10-31 09:18:30 (GMT)
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-02 22:33:02 (GMT)
commitbe4e275fdb2f144b79c90b7fe612132ab3dbc0a9 (patch)
tree5cdad9725053da407c9073333eaacdd4b9977aa0 /src/corelib/kernel
parent8f84a6e549b90286afb2e4af378ea8b271babcd5 (diff)
downloadQt-be4e275fdb2f144b79c90b7fe612132ab3dbc0a9.zip
Qt-be4e275fdb2f144b79c90b7fe612132ab3dbc0a9.tar.gz
Qt-be4e275fdb2f144b79c90b7fe612132ab3dbc0a9.tar.bz2
Backport of Qt5 applicationName handling
Currently applicationName returns an empty value unless the user explicitly sets it. Qt 5 is smarter and get the name either based on the application arguments or a platform specific way (e.g. OS X using the menu bar name) if the user didn't set it. Based on f04b46f34e9446417cd5681f511332344679ef30 and 696060134d10d44175970ffd38618544ecdd9387 Change-Id: Ifc17cf4a74fed8cfabb46b3540dfbd64a5452640 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp23
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h2
2 files changed, 18 insertions, 7 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 0bf26ad..8c9e3f8 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -64,6 +64,7 @@
#include <private/qfactoryloader_p.h>
#include <private/qfunctions_p.h>
#include <private/qlocale_p.h>
+#include <private/qmutexpool_p.h>
#ifdef Q_OS_SYMBIAN
# include <exception>
@@ -203,15 +204,18 @@ QString QCoreApplicationPrivate::macMenuBarName()
#endif
QString QCoreApplicationPrivate::appName() const
{
- static QString applName;
+ QMutexLocker locker(QMutexPool::globalInstanceGet(&applicationName));
+
+ if (applicationName.isNull()) {
#ifdef Q_OS_MAC
- applName = macMenuBarName();
+ applicationName = macMenuBarName();
#endif
- if (applName.isEmpty() && argv[0]) {
- char *p = strrchr(argv[0], '/');
- applName = QString::fromLocal8Bit(p ? p + 1 : argv[0]);
+ if (applicationName.isEmpty() && argv[0]) {
+ char *p = strrchr(argv[0], '/');
+ applicationName = QString::fromLocal8Bit(p ? p + 1 : argv[0]);
+ }
}
- return applName;
+ return applicationName;
}
#endif
@@ -2417,7 +2421,12 @@ QString QCoreApplication::applicationName()
#ifdef Q_OS_BLACKBERRY
coreappdata()->loadManifest();
#endif
- return coreappdata()->application;
+
+ QString appname = coreappdata() ? coreappdata()->application : QString();
+ if (appname.isEmpty() && QCoreApplication::self)
+ appname = QCoreApplication::self->d_func()->appName();
+
+ return appname;
}
/*!
diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h
index 2bbc71f..beee229 100644
--- a/src/corelib/kernel/qcoreapplication_p.h
+++ b/src/corelib/kernel/qcoreapplication_p.h
@@ -87,6 +87,8 @@ public:
bool notify_helper(QObject *, QEvent *);
virtual QString appName() const;
+ mutable QString applicationName;
+
virtual void createEventDispatcher();
static void removePostedEvent(QEvent *);
#ifdef Q_OS_WIN