Qt: Throttle fatal error dialogs

This commit is contained in:
Vicki Pfau 2025-04-13 17:58:01 -07:00
parent c3f3d00f14
commit d79579d1ca
3 changed files with 8 additions and 1 deletions

View File

@ -61,6 +61,7 @@ Misc:
- Qt: Support building against Qt 6
- Qt: Add shortcuts to increment fast forward speed (mgba.io/i/2903)
- Qt: Enable ROM preloading by default
- Qt: Throttle fatal error dialogs
- Res: Port hq2x and OmniScale shaders from SameBoy
- Res: Port NSO-gba-colors shader (closes mgba.io/i/2834)
- Res: Update gba-colors shader (closes mgba.io/i/2976)

View File

@ -205,7 +205,8 @@ CoreController::CoreController(mCore* core, QObject* parent)
}
message = QString::vasprintf(format, args);
QMetaObject::invokeMethod(controller, "logPosted", Q_ARG(int, level), Q_ARG(int, category), Q_ARG(const QString&, message));
if (level == mLOG_FATAL) {
if (level == mLOG_FATAL && !controller->m_crashSeen) {
controller->m_crashSeen = true;
QMetaObject::invokeMethod(controller, "crashed", Q_ARG(const QString&, message));
}
};
@ -500,6 +501,7 @@ void CoreController::stop() {
}
void CoreController::reset() {
m_crashSeen = false;
mCoreThreadReset(&m_threadContext);
}
@ -651,6 +653,7 @@ void CoreController::loadState(int slot) {
m_stateSlot = slot;
m_backupSaveState.clear();
}
m_crashSeen = false;
mCoreThreadClearCrashed(&m_threadContext);
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
CoreController* controller = static_cast<CoreController*>(context->userData);
@ -671,6 +674,7 @@ void CoreController::loadState(const QString& path, int flags) {
if (flags != -1) {
m_loadStateFlags = flags;
}
m_crashSeen = false;
mCoreThreadClearCrashed(&m_threadContext);
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
CoreController* controller = static_cast<CoreController*>(context->userData);
@ -700,6 +704,7 @@ void CoreController::loadState(QIODevice* iodev, int flags) {
if (flags != -1) {
m_loadStateFlags = flags;
}
m_crashSeen = false;
mCoreThreadClearCrashed(&m_threadContext);
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
CoreController* controller = static_cast<CoreController*>(context->userData);

View File

@ -257,6 +257,7 @@ private:
struct CoreLogger : public mLogger {
CoreController* self;
} m_logger{};
bool m_crashSeen = false;
QString m_path;
QString m_baseDirectory;