itself inside the context of wxEvtHandler::ProcessPendingEvents which
still needs itself to be valid because it accesses it's m_eventsLocker.
NOTE: This code is no longer used on trunk and hopefully soon won't be
used in 2.8 either, but at least it doesn't crash now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49219
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#endif //ndef WX_PRECOMP
#include "wx/unix/execute.h"
#include "wx/stdpaths.h"
+#include "wx/app.h"
#include "wx/apptrait.h"
#include "wx/thread.h"
#include "wx/process.h"
{
Disconnect(-1, wxEVT_END_PROCESS, wxProcessEventHandler(wxProcessTerminationEventHandler::OnTerminate));
wxHandleProcessTermination(m_data);
- delete this;
+
+ // NOTE: We don't use this to delay destruction until the next idle run but rather to
+ // avoid killing ourselves while our caller (which is our wxEvtHandler superclass
+ // ProcessPendingEvents) still needs our m_eventsLocker to be valid.
+ // Since we're in the GUI library we can guarantee that ScheduleForDestroy is using
+ // the GUI implementation which delays destruction and not the base implementation
+ // which does it immediately.
+ wxTheApp->GetTraits()->ScheduleForDestroy(this);
}
wxEndProcessData* m_data;