# HG changeset patch # User Wuzzy # Date 1533746172 -7200 # Node ID 1b536e268519044dd381479e19c689277edc08c2 # Parent 690cc84e9fd668f1ec91bb564f8604236e8b42a4 Fix frontend crash when rapidly aborting many active video encodings. Fixes bug 595 diff -r 690cc84e9fd6 -r 1b536e268519 ChangeLog.txt --- a/ChangeLog.txt Wed Aug 08 15:22:34 2018 +0200 +++ b/ChangeLog.txt Wed Aug 08 18:36:12 2018 +0200 @@ -32,6 +32,7 @@ Frontend: + Add setting to disable audio dampening when losing window focus + * Fix rare crash when aborting video encoding in progress * Controllers are detected again * No longer allow having schemes with equal names (case-insensitive) * Lobby/room: No longer allow opening context menu if no player selected diff -r 690cc84e9fd6 -r 1b536e268519 QTfrontend/net/recorder.cpp --- a/QTfrontend/net/recorder.cpp Wed Aug 08 15:22:34 2018 +0200 +++ b/QTfrontend/net/recorder.cpp Wed Aug 08 18:36:12 2018 +0200 @@ -39,6 +39,7 @@ this->prefix = prefix; item = 0; finished = false; + aborted = false; name = prefix + "." + LibavInteraction::instance().getExtension(config->AVFormat()); } @@ -152,3 +153,10 @@ { return true; } + +void HWRecorder::abort() +{ + queue.removeOne(this); + aborted = true; + deleteLater(); +} diff -r 690cc84e9fd6 -r 1b536e268519 QTfrontend/net/recorder.h --- a/QTfrontend/net/recorder.h Wed Aug 08 15:22:34 2018 +0200 +++ b/QTfrontend/net/recorder.h Wed Aug 08 18:36:12 2018 +0200 @@ -35,6 +35,7 @@ virtual ~HWRecorder(); void EncodeVideo(const QByteArray & record); + void abort(); bool simultaneousRun(); VideoItem * item; // used by pagevideos @@ -53,6 +54,7 @@ private: bool finished; + bool aborted; GameUIConfig * config; }; diff -r 690cc84e9fd6 -r 1b536e268519 QTfrontend/ui/page/pagevideos.cpp --- a/QTfrontend/ui/page/pagevideos.cpp Wed Aug 08 15:22:34 2018 +0200 +++ b/QTfrontend/ui/page/pagevideos.cpp Wed Aug 08 18:36:12 2018 +0200 @@ -594,9 +594,9 @@ if (reallyDeleteMsg.exec() != QMessageBox::Ok) return; - // remove + // abort / remove if (!item->ready()) - item->pRecorder->deleteLater(); + item->pRecorder->abort(); else { cfgdir->remove("Videos/" + item->name);