diff options
author | Martin Kampas <martin.kampas@jolla.com> | 2017-02-13 14:58:55 +0100 |
---|---|---|
committer | Svetlana Abramenkova <sabramenkova@luxoft.com> | 2018-06-07 13:02:20 +0000 |
commit | 2feb1bddf81e2b69e8af9532b3da3affd1d42ddb (patch) | |
tree | 283f95c0de3b2276a01ba28f8a82122bccb3b06a | |
parent | ee4c464efb4153639f1616b50594dcfde5a240be (diff) |
Use user-specific keys for IPC resources
Allow to be run by multiple users on the same machine.
Change-Id: Id8388f87a3c512f1daf39a5179c59fa9bc6d87b1
Reviewed-by: Svetlana Abramenkova <sabramenkova@luxoft.com>
-rw-r--r-- | src/bench/main.cpp | 29 | ||||
-rw-r--r-- | src/previewGenerator/main.cpp | 27 |
2 files changed, 50 insertions, 6 deletions
diff --git a/src/bench/main.cpp b/src/bench/main.cpp index cffc627..9336b33 100644 --- a/src/bench/main.cpp +++ b/src/bench/main.cpp @@ -54,6 +54,9 @@ protected: QString serverName() const; void setDarkStyle(); void parseArguments(const QStringList &arguments, Options *options); + +private: + static QString userName(); }; class MasterApplication : public Application @@ -119,9 +122,10 @@ bool Application::isMaster() if (lock != 0) return retv; - const QString key = QString::fromLatin1("%1.%2-lock") + const QString key = QString::fromLatin1("%1.%2-%3-lock") .arg(organizationDomain().isEmpty() ? organizationName() : organizationDomain()) - .arg(applicationName()); + .arg(applicationName()) + .arg(userName()); lock = new QSharedMemory(key, qApp); @@ -146,9 +150,10 @@ QString Application::serverName() const Q_ASSERT(!applicationName().isEmpty()); Q_ASSERT(!organizationDomain().isEmpty() || !organizationName().isEmpty()); - return QString::fromLatin1("%1.%2-app") + return QString::fromLatin1("%1.%2-%3-app") .arg(organizationDomain().isEmpty() ? organizationName() : organizationDomain()) - .arg(applicationName()); + .arg(applicationName()) + .arg(userName()); } void Application::setDarkStyle() @@ -303,6 +308,22 @@ void Application::parseArguments(const QStringList &arguments, Options *options) } } +QString Application::userName() +{ + QString retv; + +#if defined(Q_OS_UNIX) + retv = QString::fromLocal8Bit(qgetenv("USER")); +#elif defined(Q_OS_WIN) + retv = QString::fromLocal8Bit(qgetenv("USERNAME")); +#endif + + if (retv.isEmpty()) + qWarning("Failed to determine system user name"); + + return retv; +} + /* * class MasterApplication */ diff --git a/src/previewGenerator/main.cpp b/src/previewGenerator/main.cpp index a17e66d..32c07bf 100644 --- a/src/previewGenerator/main.cpp +++ b/src/previewGenerator/main.cpp @@ -45,6 +45,8 @@ #include <QDebug> #include <QTextStream> +#include "../qmllive_version.h" + void handlePreview(QLocalSocket *socket); class PreviewServer : public QObject @@ -59,8 +61,25 @@ public: bool listen() { - QLocalServer::removeServer("QmlLivePreviewGenerator"); - return m_server->listen("QmlLivePreviewGenerator"); + Q_ASSERT(!qApp->applicationName().isEmpty()); + Q_ASSERT(!qApp->organizationDomain().isEmpty() || !qApp->organizationName().isEmpty()); + + QString userName; +#if defined(Q_OS_UNIX) + userName = qgetenv("USER"); +#elif defined(Q_OS_WIN) + userName = qgetenv("USERNAME"); +#endif + if (userName.isEmpty()) + qWarning("Failed to determine system user name"); + + QString serverName = QString::fromLatin1("%1.%2-%3") + .arg(qApp->organizationDomain().isEmpty() ? qApp->organizationName() : qApp->organizationDomain()) + .arg(qApp->applicationName()) + .arg(userName); + + QLocalServer::removeServer(serverName); + return m_server->listen(serverName); } QString serverName() const @@ -93,6 +112,10 @@ Q_LOGGING_CATEGORY(pg, "PreviewGenerator", QtInfoMsg) int main (int argc, char** argv) { + QGuiApplication::setApplicationName("QmlLivePreviewGenerator"); + QGuiApplication::setOrganizationDomain(QLatin1String(QMLLIVE_ORGANIZATION_DOMAIN)); + QGuiApplication::setOrganizationName(QLatin1String(QMLLIVE_ORGANIZATION_NAME)); + QGuiApplication app(argc, argv); app.setQuitOnLastWindowClosed(false); |