Bug fix for Qt TAS editor, don't call updateCaption from within emulation thread. Instead, set a flag to notify GUI thread to update caption.
This commit is contained in:
parent
53463bc370
commit
f6b52262da
|
@ -599,7 +599,7 @@ void GREENZONE::invalidate(int after)
|
|||
}
|
||||
// redraw Piano Roll even if Greenzone didn't change
|
||||
//pianoRoll.redraw();
|
||||
bookmarks->redrawBookmarksList();
|
||||
//bookmarks->redrawBookmarksList();
|
||||
}
|
||||
// invalidate and restore playback
|
||||
void GREENZONE::invalidateAndUpdatePlayback(int after)
|
||||
|
|
|
@ -260,6 +260,9 @@ void RECORDER::recheckRecordingRadioButtons()
|
|||
}
|
||||
}
|
||||
|
||||
// The recordInput function can be called from the emulation thread, it is important that it does not
|
||||
// attempt to alter the state of any Qt widgets from within itself or any functions that it calls (directly and indirectly).
|
||||
// Changing Qt widgets outside of the GUI thread may cause crashes.
|
||||
void RECORDER::recordInput(void)
|
||||
{
|
||||
bool changes_made = false;
|
||||
|
|
|
@ -58,6 +58,7 @@ void TASEDITOR_PROJECT::init()
|
|||
void TASEDITOR_PROJECT::reset()
|
||||
{
|
||||
changed = false;
|
||||
updateCaptionFlag = false;
|
||||
}
|
||||
void TASEDITOR_PROJECT::update()
|
||||
{
|
||||
|
@ -75,6 +76,12 @@ void TASEDITOR_PROJECT::update()
|
|||
// in case user pressed Cancel, postpone saving to next time
|
||||
sheduleNextAutosave();
|
||||
}
|
||||
|
||||
if ( updateCaptionFlag )
|
||||
{
|
||||
updateCaptionFlag = false;
|
||||
tasWin->updateCaption();
|
||||
}
|
||||
}
|
||||
|
||||
bool TASEDITOR_PROJECT::save(const char* differentName, bool inputInBinary, bool saveMarkers, bool saveBookmarks, int saveGreenzone, bool saveHistory, bool savePianoRoll, bool saveSelection)
|
||||
|
@ -381,8 +388,11 @@ void TASEDITOR_PROJECT::setProjectChanged()
|
|||
{
|
||||
if (!changed)
|
||||
{
|
||||
// set updateCaptionFlag to ensure that the window caption is only
|
||||
// updated in the GUI thread. Updating the GUI in the emulation thread
|
||||
// may cause crashes.
|
||||
changed = true;
|
||||
tasWin->updateCaption();
|
||||
updateCaptionFlag = true;
|
||||
sheduleNextAutosave();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,6 +69,7 @@ public:
|
|||
|
||||
private:
|
||||
bool changed;
|
||||
bool updateCaptionFlag;
|
||||
int nextSaveShedule;
|
||||
|
||||
std::string projectFile; // full path
|
||||
|
|
Loading…
Reference in New Issue