mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:41:20 +02:00
fix crash related to menu vs watchdog create order
This commit is contained in:
parent
f3275b680b
commit
bd1eb5842a
3 changed files with 13 additions and 3 deletions
|
@ -241,6 +241,8 @@ public:
|
||||||
*crashTrigger = 0xDEAD10CC;
|
*crashTrigger = 0xDEAD10CC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setSuppressStatus(bool suppress) { _suppressStatus = suppress; }
|
||||||
|
|
||||||
void run() override {
|
void run() override {
|
||||||
while (!_quit) {
|
while (!_quit) {
|
||||||
QThread::sleep(HEARTBEAT_UPDATE_INTERVAL_SECS);
|
QThread::sleep(HEARTBEAT_UPDATE_INTERVAL_SECS);
|
||||||
|
@ -251,7 +253,6 @@ public:
|
||||||
auto sinceLastReport = (now > _lastReport) ? now - _lastReport : 0;
|
auto sinceLastReport = (now > _lastReport) ? now - _lastReport : 0;
|
||||||
auto elapsedMovingAverage = _movingAverage.getAverage();
|
auto elapsedMovingAverage = _movingAverage.getAverage();
|
||||||
auto menu = Menu::getInstance();
|
auto menu = Menu::getInstance();
|
||||||
bool suppressStatusMessages = menu ? menu->isOptionChecked(MenuOption::SupressDeadlockWatchdogStatus) : false;
|
|
||||||
|
|
||||||
if (elapsedMovingAverage > _maxElapsedAverage) {
|
if (elapsedMovingAverage > _maxElapsedAverage) {
|
||||||
qDebug() << "DEADLOCK WATCHDOG WARNING:"
|
qDebug() << "DEADLOCK WATCHDOG WARNING:"
|
||||||
|
@ -283,7 +284,7 @@ public:
|
||||||
_lastReport = now;
|
_lastReport = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!suppressStatusMessages && sinceLastReport > HEARTBEAT_REPORT_INTERVAL_USECS) {
|
if (!_suppressStatus && sinceLastReport > HEARTBEAT_REPORT_INTERVAL_USECS) {
|
||||||
qDebug() << "DEADLOCK WATCHDOG STATUS:"
|
qDebug() << "DEADLOCK WATCHDOG STATUS:"
|
||||||
<< "lastHeartbeatAge:" << lastHeartbeatAge
|
<< "lastHeartbeatAge:" << lastHeartbeatAge
|
||||||
<< "elapsedMovingAverage:" << elapsedMovingAverage
|
<< "elapsedMovingAverage:" << elapsedMovingAverage
|
||||||
|
@ -312,6 +313,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::atomic<bool> _suppressStatus;
|
||||||
static std::atomic<uint64_t> _heartbeat;
|
static std::atomic<uint64_t> _heartbeat;
|
||||||
static std::atomic<uint64_t> _lastReport;
|
static std::atomic<uint64_t> _lastReport;
|
||||||
static std::atomic<uint64_t> _maxElapsed;
|
static std::atomic<uint64_t> _maxElapsed;
|
||||||
|
@ -321,12 +323,17 @@ public:
|
||||||
bool _quit { false };
|
bool _quit { false };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::atomic<bool> DeadlockWatchdogThread::_suppressStatus;
|
||||||
std::atomic<uint64_t> DeadlockWatchdogThread::_heartbeat;
|
std::atomic<uint64_t> DeadlockWatchdogThread::_heartbeat;
|
||||||
std::atomic<uint64_t> DeadlockWatchdogThread::_lastReport;
|
std::atomic<uint64_t> DeadlockWatchdogThread::_lastReport;
|
||||||
std::atomic<uint64_t> DeadlockWatchdogThread::_maxElapsed;
|
std::atomic<uint64_t> DeadlockWatchdogThread::_maxElapsed;
|
||||||
std::atomic<int> DeadlockWatchdogThread::_maxElapsedAverage;
|
std::atomic<int> DeadlockWatchdogThread::_maxElapsedAverage;
|
||||||
ThreadSafeMovingAverage<int, DeadlockWatchdogThread::HEARTBEAT_SAMPLES> DeadlockWatchdogThread::_movingAverage;
|
ThreadSafeMovingAverage<int, DeadlockWatchdogThread::HEARTBEAT_SAMPLES> DeadlockWatchdogThread::_movingAverage;
|
||||||
|
|
||||||
|
void Application::toggleSuppressDeadlockWatchdogStatus(bool checked) {
|
||||||
|
DeadlockWatchdogThread::setSuppressStatus(checked);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
class MyNativeEventFilter : public QAbstractNativeEventFilter {
|
class MyNativeEventFilter : public QAbstractNativeEventFilter {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -255,6 +255,7 @@ public slots:
|
||||||
|
|
||||||
void resetSensors(bool andReload = false);
|
void resetSensors(bool andReload = false);
|
||||||
void setActiveFaceTracker() const;
|
void setActiveFaceTracker() const;
|
||||||
|
void toggleSuppressDeadlockWatchdogStatus(bool checked);
|
||||||
|
|
||||||
#ifdef HAVE_IVIEWHMD
|
#ifdef HAVE_IVIEWHMD
|
||||||
void setActiveEyeTracker();
|
void setActiveEyeTracker();
|
||||||
|
|
|
@ -530,7 +530,9 @@ Menu::Menu() {
|
||||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::PipelineWarnings);
|
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::PipelineWarnings);
|
||||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::LogExtraTimings);
|
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::LogExtraTimings);
|
||||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SuppressShortTimings);
|
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SuppressShortTimings);
|
||||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SupressDeadlockWatchdogStatus, 0, false);
|
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SupressDeadlockWatchdogStatus, 0, false,
|
||||||
|
qApp, SLOT(toggleSuppressDeadlockWatchdogStatus(bool)));
|
||||||
|
|
||||||
|
|
||||||
// Developer > Audio >>>
|
// Developer > Audio >>>
|
||||||
MenuWrapper* audioDebugMenu = developerMenu->addMenu("Audio");
|
MenuWrapper* audioDebugMenu = developerMenu->addMenu("Audio");
|
||||||
|
|
Loading…
Reference in a new issue