diff options
author | Benoit Bolsee <benoit.bolsee@online.be> | 2014-12-05 01:49:15 +0300 |
---|---|---|
committer | Benoit Bolsee <benoit.bolsee@online.be> | 2014-12-05 01:55:53 +0300 |
commit | cf7bdb42ac7c270ae9711d30bfb9db623111b0c8 (patch) | |
tree | 914d00f7e63560d4129884e6e14a6b44f91af4e3 /source/gameengine/VideoTexture | |
parent | 226eb53bc7f6d0aa1769b6c889d3b15d1f4944b5 (diff) |
BGE VideoTexture: refresh() on ImageFFmpeg should have no effect.
ImageFFmpeg objects will not refresh properly because the image
file is closed immediately after creation. Therefore refresh()
should have no effect on them.
This was causing problems with ImageMix using ImageFFmpeg as
sources: refreshing the ImageMix object is required to update
the mix but it has the side effect of refreshing the underlying
sources, hence the need to skip refresh on fixed images.
Diffstat (limited to 'source/gameengine/VideoTexture')
-rw-r--r-- | source/gameengine/VideoTexture/VideoFFmpeg.cpp | 7 | ||||
-rw-r--r-- | source/gameengine/VideoTexture/VideoFFmpeg.h | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/source/gameengine/VideoTexture/VideoFFmpeg.cpp b/source/gameengine/VideoTexture/VideoFFmpeg.cpp index edf3c58bcbe..db76ba5822a 100644 --- a/source/gameengine/VideoTexture/VideoFFmpeg.cpp +++ b/source/gameengine/VideoTexture/VideoFFmpeg.cpp @@ -86,6 +86,13 @@ VideoFFmpeg::~VideoFFmpeg () { } +void VideoFFmpeg::refresh(void) +{ + // a fixed image will not refresh because it is loaded only once at creation + if (m_isImage) + return; + m_avail = false; +} // release components bool VideoFFmpeg::release() diff --git a/source/gameengine/VideoTexture/VideoFFmpeg.h b/source/gameengine/VideoTexture/VideoFFmpeg.h index 4a948fe61de..4834a7cef6d 100644 --- a/source/gameengine/VideoTexture/VideoFFmpeg.h +++ b/source/gameengine/VideoTexture/VideoFFmpeg.h @@ -85,7 +85,8 @@ public: /// release video source virtual bool release (void); - + /// overwrite base refresh to handle fixed image + virtual void refresh(void); /// play video virtual bool play (void); /// pause video |