From 3c7dfa389d82ae5135cde7509a5bc37c0a422223 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 6 Jul 2004 15:10:33 +0000 Subject: [PATCH] Added mutex to image stream thread to serialize calls to Quicktime. --- src/osgPlugins/quicktime/QuicktimeImageStream.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/osgPlugins/quicktime/QuicktimeImageStream.cpp b/src/osgPlugins/quicktime/QuicktimeImageStream.cpp index f87c77dac..5551842c2 100644 --- a/src/osgPlugins/quicktime/QuicktimeImageStream.cpp +++ b/src/osgPlugins/quicktime/QuicktimeImageStream.cpp @@ -129,6 +129,8 @@ void QuicktimeImageStream::load(std::string fileName) void QuicktimeImageStream::run() { + static OpenThreads::Mutex s_qtMutex; + bool playing = false; bool done = false; OSErr err; @@ -140,6 +142,9 @@ void QuicktimeImageStream::run() // osg::notify(osg::ALWAYS) << "movietime: " << _data->getMovieTime() << " state " << getCmd() << std::endl; // Handle commands ThreadCommand cmd = getCmd(); + + s_qtMutex.lock(); + if (cmd != THREAD_IDLE) { switch (cmd) { case THREAD_START: // Start or continue stream @@ -175,6 +180,9 @@ void QuicktimeImageStream::run() MoviesTask(_data->getMovie(),0); float currentTime = _data->getMovieTime(); + + s_qtMutex.unlock(); + if (_lastUpdate!= currentTime) { dirty(); _lastUpdate = currentTime;