diff options
-rw-r--r-- | OpenCSG-Reset-Hack.patch | 94 |
1 files changed, 47 insertions, 47 deletions
diff --git a/OpenCSG-Reset-Hack.patch b/OpenCSG-Reset-Hack.patch index 4968707..493a11b 100644 --- a/OpenCSG-Reset-Hack.patch +++ b/OpenCSG-Reset-Hack.patch @@ -33,50 +33,50 @@ index e02dd83..4f978d5 100644 --- a/src/offscreenBuffer.cpp +++ b/src/offscreenBuffer.cpp @@ -22,19 +22,41 @@ - #include "offscreenBuffer.h"
- #include "frameBufferObject.h"
- #include "pBufferTexture.h"
-+#include "channelManager.h"
-+
-+static bool reset_f = false;
-+static bool reset_p = false;
-
- namespace OpenCSG {
-
-+ void reset()
-+ {
-+ reset_f = true;
-+ reset_p = true;
-+ OpenCSG::ChannelManager::gOffscreenBuffer = NULL;
-+ }
-+
- namespace OpenGL {
-
- OffscreenBuffer* getOffscreenBuffer(bool fbo) {
-- static FrameBufferObject* f = new FrameBufferObject;
-- static PBufferTexture* p = new PBufferTexture;
--
-- if (fbo)
-- return f;
-- else
-+ static FrameBufferObject* f = NULL;
-+ static PBufferTexture* p = NULL;
-+
-+ if (fbo) {
-+ if (reset_f || f == NULL) {
-+ delete f;
-+ f = new FrameBufferObject;
-+ reset_f = false;
-+ }
-+ return f;
-+ } else {
-+ if (reset_p || p == NULL) {
-+ delete p;
-+ p = new PBufferTexture;
-+ reset_p = false;
-+ }
- return p;
-+ }
- }
-
- } // namespace OpenGL
+ #include "offscreenBuffer.h" + #include "frameBufferObject.h" + #include "pBufferTexture.h" ++#include "channelManager.h" ++ ++static bool reset_f = false; ++static bool reset_p = false; + + namespace OpenCSG { + ++ void reset() ++ { ++ reset_f = true; ++ reset_p = true; ++ OpenCSG::ChannelManager::gOffscreenBuffer = NULL; ++ } ++ + namespace OpenGL { + + OffscreenBuffer* getOffscreenBuffer(bool fbo) { +- static FrameBufferObject* f = new FrameBufferObject; +- static PBufferTexture* p = new PBufferTexture; +- +- if (fbo) +- return f; +- else ++ static FrameBufferObject* f = NULL; ++ static PBufferTexture* p = NULL; ++ ++ if (fbo) { ++ if (reset_f || f == NULL) { ++ delete f; ++ f = new FrameBufferObject; ++ reset_f = false; ++ } ++ return f; ++ } else { ++ if (reset_p || p == NULL) { ++ delete p; ++ p = new PBufferTexture; ++ reset_p = false; ++ } + return p; ++ } + } + + } // namespace OpenGL |