Qt: Throttle fatal error dialogs
This commit is contained in:
parent
c3f3d00f14
commit
d79579d1ca
1
CHANGES
1
CHANGES
@ -61,6 +61,7 @@ Misc:
|
|||||||
- Qt: Support building against Qt 6
|
- Qt: Support building against Qt 6
|
||||||
- Qt: Add shortcuts to increment fast forward speed (mgba.io/i/2903)
|
- Qt: Add shortcuts to increment fast forward speed (mgba.io/i/2903)
|
||||||
- Qt: Enable ROM preloading by default
|
- Qt: Enable ROM preloading by default
|
||||||
|
- Qt: Throttle fatal error dialogs
|
||||||
- Res: Port hq2x and OmniScale shaders from SameBoy
|
- Res: Port hq2x and OmniScale shaders from SameBoy
|
||||||
- Res: Port NSO-gba-colors shader (closes mgba.io/i/2834)
|
- Res: Port NSO-gba-colors shader (closes mgba.io/i/2834)
|
||||||
- Res: Update gba-colors shader (closes mgba.io/i/2976)
|
- Res: Update gba-colors shader (closes mgba.io/i/2976)
|
||||||
|
@ -205,7 +205,8 @@ CoreController::CoreController(mCore* core, QObject* parent)
|
|||||||
}
|
}
|
||||||
message = QString::vasprintf(format, args);
|
message = QString::vasprintf(format, args);
|
||||||
QMetaObject::invokeMethod(controller, "logPosted", Q_ARG(int, level), Q_ARG(int, category), Q_ARG(const QString&, message));
|
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));
|
QMetaObject::invokeMethod(controller, "crashed", Q_ARG(const QString&, message));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -500,6 +501,7 @@ void CoreController::stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CoreController::reset() {
|
void CoreController::reset() {
|
||||||
|
m_crashSeen = false;
|
||||||
mCoreThreadReset(&m_threadContext);
|
mCoreThreadReset(&m_threadContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -651,6 +653,7 @@ void CoreController::loadState(int slot) {
|
|||||||
m_stateSlot = slot;
|
m_stateSlot = slot;
|
||||||
m_backupSaveState.clear();
|
m_backupSaveState.clear();
|
||||||
}
|
}
|
||||||
|
m_crashSeen = false;
|
||||||
mCoreThreadClearCrashed(&m_threadContext);
|
mCoreThreadClearCrashed(&m_threadContext);
|
||||||
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
|
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
|
||||||
CoreController* controller = static_cast<CoreController*>(context->userData);
|
CoreController* controller = static_cast<CoreController*>(context->userData);
|
||||||
@ -671,6 +674,7 @@ void CoreController::loadState(const QString& path, int flags) {
|
|||||||
if (flags != -1) {
|
if (flags != -1) {
|
||||||
m_loadStateFlags = flags;
|
m_loadStateFlags = flags;
|
||||||
}
|
}
|
||||||
|
m_crashSeen = false;
|
||||||
mCoreThreadClearCrashed(&m_threadContext);
|
mCoreThreadClearCrashed(&m_threadContext);
|
||||||
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
|
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
|
||||||
CoreController* controller = static_cast<CoreController*>(context->userData);
|
CoreController* controller = static_cast<CoreController*>(context->userData);
|
||||||
@ -700,6 +704,7 @@ void CoreController::loadState(QIODevice* iodev, int flags) {
|
|||||||
if (flags != -1) {
|
if (flags != -1) {
|
||||||
m_loadStateFlags = flags;
|
m_loadStateFlags = flags;
|
||||||
}
|
}
|
||||||
|
m_crashSeen = false;
|
||||||
mCoreThreadClearCrashed(&m_threadContext);
|
mCoreThreadClearCrashed(&m_threadContext);
|
||||||
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
|
mCoreThreadRunFunction(&m_threadContext, [](mCoreThread* context) {
|
||||||
CoreController* controller = static_cast<CoreController*>(context->userData);
|
CoreController* controller = static_cast<CoreController*>(context->userData);
|
||||||
|
@ -257,6 +257,7 @@ private:
|
|||||||
struct CoreLogger : public mLogger {
|
struct CoreLogger : public mLogger {
|
||||||
CoreController* self;
|
CoreController* self;
|
||||||
} m_logger{};
|
} m_logger{};
|
||||||
|
bool m_crashSeen = false;
|
||||||
|
|
||||||
QString m_path;
|
QString m_path;
|
||||||
QString m_baseDirectory;
|
QString m_baseDirectory;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user