additional robustness with ipc
parent
71ec8dba73
commit
8db7adfa74
|
@ -14,10 +14,6 @@
|
|||
#include <QSurfaceFormat>
|
||||
#include <QFontDatabase>
|
||||
|
||||
namespace {
|
||||
const QString socketName = QStringLiteral("Xybrid.IPC");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
qRegisterMetaType<Xybrid::Data::Port>();
|
||||
// enable antialiasing on accelerated graphicsview
|
||||
|
@ -37,6 +33,11 @@ int main(int argc, char *argv[]) {
|
|||
QString fileName = args.size() >= 1 ? args.at(0) : QString();
|
||||
if (!fileName.isEmpty()) fileName = QFileInfo(fileName).absoluteFilePath(); // canonicize
|
||||
|
||||
QString userName = qEnvironmentVariable("USER");
|
||||
if (userName.isEmpty()) userName = qEnvironmentVariable("USERNAME");
|
||||
|
||||
QString socketName = QStringLiteral("xybrid-ipc-%1").arg(userName);
|
||||
|
||||
QLocalSocket tryc;
|
||||
tryc.connectToServer(socketName);
|
||||
tryc.waitForConnected(1000); // wait for connection attempt (can't hang on local)
|
||||
|
@ -49,6 +50,7 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
QLocalServer srv;
|
||||
srv.setSocketOptions(QLocalServer::UserAccessOption);
|
||||
srv.removeServer(socketName); // if it exists and we're here, previous instance probably crashed or was killed
|
||||
srv.listen(socketName);
|
||||
QObject::connect(&srv, &QLocalServer::newConnection, &srv, [&]() {
|
||||
auto s = srv.nextPendingConnection();
|
||||
|
|
Loading…
Reference in New Issue