From a4f93740d137f70a6d3e8c8a7d2221b464eb3d26 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 27 Jul 2004 09:04:56 +0000 Subject: [PATCH] Fixed double thread start problem. --- src/osgPlugins/mpeg/MpegImageStream.cpp | 3 +-- src/osgPlugins/mpeg/MpegImageStream.h | 7 ++++++- src/osgPlugins/mpeg/ReaderWriterMPEG.cpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/osgPlugins/mpeg/MpegImageStream.cpp b/src/osgPlugins/mpeg/MpegImageStream.cpp index c47e8d33d..4149d70c2 100644 --- a/src/osgPlugins/mpeg/MpegImageStream.cpp +++ b/src/osgPlugins/mpeg/MpegImageStream.cpp @@ -57,8 +57,6 @@ MpegImageStream::MpegImageStream(const char* fileName) : ImageStream() if (fileName) setFileName(fileName); - - startThread(); } @@ -269,6 +267,7 @@ void MpegImageStream::run() 0, 0, _s, _t, _s, _t, MPEG3_RGB888, str); + dirty(); //Image(); ++frameNumber; diff --git a/src/osgPlugins/mpeg/MpegImageStream.h b/src/osgPlugins/mpeg/MpegImageStream.h index c3bf584cf..b6fc5867d 100644 --- a/src/osgPlugins/mpeg/MpegImageStream.h +++ b/src/osgPlugins/mpeg/MpegImageStream.h @@ -52,7 +52,12 @@ namespace osg { virtual const char* className() const { return "MpegImageStream"; } /// Start or continue stream. - virtual void play() { setCmd(THREAD_START); } + virtual void play() + { + if (!isRunning()) start(); + + setCmd(THREAD_START); + } /// Pause stream at current position. virtual void pause() { setCmd(THREAD_STOP); } diff --git a/src/osgPlugins/mpeg/ReaderWriterMPEG.cpp b/src/osgPlugins/mpeg/ReaderWriterMPEG.cpp index e8db9ce3d..8f1a5b427 100644 --- a/src/osgPlugins/mpeg/ReaderWriterMPEG.cpp +++ b/src/osgPlugins/mpeg/ReaderWriterMPEG.cpp @@ -30,7 +30,7 @@ class ReaderWriterMPEG : public osgDB::ReaderWriter if (fileName.empty()) return ReadResult::FILE_NOT_FOUND; osg::MpegImageStream* mpeg = new osg::MpegImageStream(fileName.c_str()); - mpeg->start(); + mpeg->play(); return mpeg; }