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 | 
