Browse Source

Make VideoStream::isPlaying return false when EOS has been reached

Before it would return the playing status of the FrameSync, but a DeltaSync doesn't stop at the end of the video, now it returns the least of the FrameSync and the EOS condition
Bart van Strien 9 years ago
parent
commit
f53e0026ab

+ 2 - 2
src/modules/video/VideoStream.cpp

@@ -52,12 +52,12 @@ void VideoStream::seek(double offset)
 	frameSync->seek(offset);
 	frameSync->seek(offset);
 }
 }
 
 
-double VideoStream::tell()
+double VideoStream::tell() const
 {
 {
 	return frameSync->tell();
 	return frameSync->tell();
 }
 }
 
 
-bool VideoStream::isPlaying()
+bool VideoStream::isPlaying() const
 {
 {
 	return frameSync->isPlaying();
 	return frameSync->isPlaying();
 }
 }

+ 2 - 2
src/modules/video/VideoStream.h

@@ -44,8 +44,8 @@ public:
 	virtual void play();
 	virtual void play();
 	virtual void pause();
 	virtual void pause();
 	virtual void seek(double offset);
 	virtual void seek(double offset);
-	virtual double tell();
-	virtual bool isPlaying();
+	virtual double tell() const;
+	virtual bool isPlaying() const;
 
 
 	class FrameSync;
 	class FrameSync;
 	class DeltaSync;
 	class DeltaSync;

+ 5 - 0
src/modules/video/theora/VideoStream.cpp

@@ -120,6 +120,11 @@ size_t VideoStream::getSize() const
 	return sizeof(Frame);
 	return sizeof(Frame);
 }
 }
 
 
+bool VideoStream::isPlaying() const
+{
+	return frameSync->isPlaying() && !eos;
+}
+
 void VideoStream::readPage()
 void VideoStream::readPage()
 {
 {
 	char *syncBuffer = nullptr;
 	char *syncBuffer = nullptr;

+ 2 - 0
src/modules/video/theora/VideoStream.h

@@ -56,6 +56,8 @@ public:
 	const std::string &getFilename() const;
 	const std::string &getFilename() const;
 	void setSync(FrameSync *frameSync);
 	void setSync(FrameSync *frameSync);
 
 
+	bool isPlaying() const;
+
 	void threadedFillBackBuffer(double dt);
 	void threadedFillBackBuffer(double dt);
 
 
 private:
 private: