diff options
Diffstat (limited to 'src/libs/installer/remoteclient_p.h')
-rw-r--r-- | src/libs/installer/remoteclient_p.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/libs/installer/remoteclient_p.h b/src/libs/installer/remoteclient_p.h index 9cc679de8..3dec97c95 100644 --- a/src/libs/installer/remoteclient_p.h +++ b/src/libs/installer/remoteclient_p.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -39,8 +39,9 @@ #include "constants.h" #include <QCoreApplication> -#include <QElapsedTimer> -#include <QMutex> +#include <QDeadlineTimer> +#include <QRecursiveMutex> +#include <QTimer> #include <QThread> namespace QInstaller { @@ -54,7 +55,6 @@ public: RemoteClientPrivate(RemoteClient *parent) : RemoteObject(QLatin1String("RemoteClientPrivate")) , q_ptr(parent) - , m_mutex(QMutex::Recursive) , m_startServerAs(Protocol::StartAs::User) , m_serverStarted(false) , m_active(false) @@ -165,11 +165,19 @@ public: } if (started) { - QElapsedTimer t; - t.start(); + QTimer timer; + QEventLoop loop; // 30 seconds waiting ought to be enough for the app to start - while ((!m_serverStarted) && (t.elapsed() < 30000)) + QDeadlineTimer deadline(30000); + + connect(&timer, &QTimer::timeout, [&]() { m_serverStarted = authorize(); + if (m_serverStarted || deadline.hasExpired()) + loop.quit(); + }); + + timer.start(100); + loop.exec(); } } @@ -192,7 +200,7 @@ public: private: RemoteClient *q_ptr; - QMutex m_mutex; + QRecursiveMutex m_mutex; QString m_socketName; Protocol::StartAs m_startServerAs; bool m_serverStarted; |