From dca2bd43fe0fca6fcc1dc6b90c7cd74b2946ea24 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Wed, 15 Sep 2010 22:10:42 +0000 Subject: [PATCH] Rearrange ThreadedFrameSource::Entry to allow the use of wxMutexLocker Originally committed to SVN as r4788. --- aegisub/src/threaded_frame_source.cpp | 34 +++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/aegisub/src/threaded_frame_source.cpp b/aegisub/src/threaded_frame_source.cpp index 17368e713..e1bf1de61 100644 --- a/aegisub/src/threaded_frame_source.cpp +++ b/aegisub/src/threaded_frame_source.cpp @@ -115,22 +115,26 @@ AegiVideoFrame const& ThreadedFrameSource::ProcFrame(int frameNum, double time, void *ThreadedFrameSource::Entry() { while (!TestDestroy() && run) { - jobMutex.Lock(); - if (nextSubs.get()) { - wxMutexLocker locker(fileMutex); - subs = nextSubs; - singleFrame = -1; - } - if (nextTime == -1.) { - jobReady.Wait(); - jobMutex.Unlock(); - continue; - } + double time; + int frameNum; + { + wxMutexLocker jobLocker(jobMutex); - double time = nextTime; - int frameNum = nextFrame; - nextTime = -1.; - jobMutex.Unlock(); + if (nextTime == -1.) { + jobReady.Wait(); + continue; + } + + if (nextSubs.get()) { + wxMutexLocker fileLocker(fileMutex); + subs = nextSubs; + singleFrame = -1; + } + + time = nextTime; + frameNum = nextFrame; + nextTime = -1.; + } try { AegiVideoFrame const& frame = ProcFrame(frameNum, time);