aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kampas <martin.kampas@jolla.com>2017-02-13 14:58:55 +0100
committerSvetlana Abramenkova <sabramenkova@luxoft.com>2018-06-07 13:02:20 +0000
commit2feb1bddf81e2b69e8af9532b3da3affd1d42ddb (patch)
tree283f95c0de3b2276a01ba28f8a82122bccb3b06a
parentee4c464efb4153639f1616b50594dcfde5a240be (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.cpp29
-rw-r--r--src/previewGenerator/main.cpp27
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);