diff --git a/aegisub/src/threaded_frame_source.cpp b/aegisub/src/threaded_frame_source.cpp index ffb1d6dc9..b303782ed 100644 --- a/aegisub/src/threaded_frame_source.cpp +++ b/aegisub/src/threaded_frame_source.cpp @@ -131,13 +131,16 @@ std::tr1::shared_ptr ThreadedFrameSource::ProcFrame(int frameNum } void *ThreadedFrameSource::Entry() { - while (!TestDestroy() && run) { + while (!TestDestroy()) { double time; int frameNum; std::auto_ptr newSubs; { wxMutexLocker jobLocker(jobMutex); + if (!run) + return EXIT_SUCCESS; + if (nextTime == -1.) { jobReady.Wait(); continue; @@ -191,9 +194,13 @@ ThreadedFrameSource::ThreadedFrameSource(wxString videoFileName, wxEvtHandler *p Create(); Run(); } + ThreadedFrameSource::~ThreadedFrameSource() { - run = false; - jobReady.Signal(); + { + wxMutexLocker locker(jobMutex); + run = false; + jobReady.Signal(); + } Wait(); }