1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-03 17:19:43 +02:00

Temporary fix for bug #964

This commit is contained in:
Leland Lucius 2015-09-04 01:07:16 -05:00
parent 1061528c6e
commit 49fc3336eb
3 changed files with 22 additions and 3 deletions

View File

@ -983,7 +983,10 @@ AudioIO::~AudioIO()
/* Delete is a "graceful" way to stop the thread. /* Delete is a "graceful" way to stop the thread.
(Kill is the not-graceful way.) */ (Kill is the not-graceful way.) */
wxTheApp->Yield();
// This causes reentrancy issues during application shutdown
// wxTheApp->Yield();
mThread->Delete(); mThread->Delete();
if(mSilentBuf) if(mSilentBuf)

View File

@ -2070,6 +2070,17 @@ void AudacityProject::OnMouseEvent(wxMouseEvent & event)
// and/or attempts to delete objects twice. // and/or attempts to delete objects twice.
void AudacityProject::OnCloseWindow(wxCloseEvent & event) void AudacityProject::OnCloseWindow(wxCloseEvent & event)
{ {
// We are called for the wxEVT_CLOSE_WINDOW, wxEVT_END_SESSION, and
// wxEVT_QUERY_END_SESSION, so we have to protect against multiple
// entries. This is a hack until the whole application termination
// process can be reviewed and reworked. (See bug #964 for ways
// to exercise the bug that instigated this hack.)
if (mIsBeingDeleted)
{
evt.Skip();
return;
}
if (event.CanVeto() && (::wxIsBusy() || mbBusyImporting)) if (event.CanVeto() && (::wxIsBusy() || mbBusyImporting))
{ {
event.Veto(); event.Veto();
@ -2259,10 +2270,10 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
if (gActiveProject == this) { if (gActiveProject == this) {
// Find a new active project // Find a new active project
if (gAudacityProjects.Count() > 0) { if (gAudacityProjects.Count() > 0) {
gActiveProject = gAudacityProjects[0]; SetActiveProject(gAudacityProjects[0]);
} }
else { else {
gActiveProject = NULL; SetActiveProject(NULL);
} }
} }
@ -2286,6 +2297,8 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
} }
Destroy(); Destroy();
mIsBeingDeleted = true;
} }
void AudacityProject::OnOpenAudioFile(wxCommandEvent & event) void AudacityProject::OnOpenAudioFile(wxCommandEvent & event)

View File

@ -671,6 +671,9 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
wxLongLong mLastSelectionAdjustment; wxLongLong mLastSelectionAdjustment;
// See explanation in OnCloseWindow
bool mIsBeingDeleted;
// CommandManager needs to use private methods // CommandManager needs to use private methods
friend class CommandManager; friend class CommandManager;