From cd17687f01420952712a500107e0f93e7ab8d5f8 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:45:34 -0500 Subject: Second Life viewer sources 1.19.1.0 --- linden/indra/newview/lldynamictexture.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'linden/indra/newview/lldynamictexture.cpp') diff --git a/linden/indra/newview/lldynamictexture.cpp b/linden/indra/newview/lldynamictexture.cpp index aba87e2..4a47855 100644 --- a/linden/indra/newview/lldynamictexture.cpp +++ b/linden/indra/newview/lldynamictexture.cpp @@ -32,7 +32,6 @@ #include "llviewerprecompiledheaders.h" #include "lldynamictexture.h" -#include "linked_lists.h" #include "llimagegl.h" #include "llglheaders.h" #include "llviewerwindow.h" @@ -40,10 +39,13 @@ #include "llviewercontrol.h" #include "llviewerimage.h" #include "llvertexbuffer.h" +#include "llviewerdisplay.h" +#include "llglimmediate.h" +void render_ui_and_swap_if_needed(); // static -LLLinkedList LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ]; +LLDynamicTexture::instance_list_t LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ]; S32 LLDynamicTexture::sNumRenders = 0; //----------------------------------------------------------------------------- @@ -62,7 +64,7 @@ LLDynamicTexture::LLDynamicTexture(S32 width, S32 height, S32 components, EOrder generateGLTexture(); llassert( 0 <= order && order < ORDER_COUNT ); - LLDynamicTexture::sInstances[ order ].addData(this); + LLDynamicTexture::sInstances[ order ].insert(this); } //----------------------------------------------------------------------------- @@ -73,7 +75,7 @@ LLDynamicTexture::~LLDynamicTexture() releaseGLTexture(); for( S32 order = 0; order < ORDER_COUNT; order++ ) { - LLDynamicTexture::sInstances[order].removeData(this); // will fail in all but one case. + LLDynamicTexture::sInstances[order].erase(this); // will fail in all but one case. } } @@ -211,20 +213,27 @@ BOOL LLDynamicTexture::updateAllInstances() BOOL result = FALSE; for( S32 order = 0; order < ORDER_COUNT; order++ ) { - for (LLDynamicTexture *dynamicTexture = LLDynamicTexture::sInstances[order].getFirstData(); - dynamicTexture; - dynamicTexture = LLDynamicTexture::sInstances[order].getNextData()) + for (instance_list_t::iterator iter = LLDynamicTexture::sInstances[order].begin(); + iter != LLDynamicTexture::sInstances[order].end(); ++iter) { + LLDynamicTexture *dynamicTexture = *iter; if (dynamicTexture->needsRender()) - { + { + render_ui_and_swap_if_needed(); + glClear(GL_DEPTH_BUFFER_BIT); + gDisplaySwapBuffers = FALSE; + + LLVertexBuffer::startRender(); + gGL.start(); + dynamicTexture->preRender(); // Must be called outside of startRender() - LLVertexBuffer::startRender(); if (dynamicTexture->render()) { result = TRUE; sNumRenders++; } + gGL.stop(); LLVertexBuffer::stopRender(); dynamicTexture->postRender(result); -- cgit v1.1