aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/lldynamictexture.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:45:34 -0500
committerJacek Antonelli2008-08-15 23:45:34 -0500
commitcd17687f01420952712a500107e0f93e7ab8d5f8 (patch)
treece48c2b706f2c1176290e39fb555fbdf6648ce01 /linden/indra/newview/lldynamictexture.cpp
parentSecond Life viewer sources 1.19.0.5 (diff)
downloadmeta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.zip
meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.gz
meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.bz2
meta-impy-cd17687f01420952712a500107e0f93e7ab8d5f8.tar.xz
Second Life viewer sources 1.19.1.0
Diffstat (limited to 'linden/indra/newview/lldynamictexture.cpp')
-rw-r--r--linden/indra/newview/lldynamictexture.cpp27
1 files changed, 18 insertions, 9 deletions
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 @@
32#include "llviewerprecompiledheaders.h" 32#include "llviewerprecompiledheaders.h"
33 33
34#include "lldynamictexture.h" 34#include "lldynamictexture.h"
35#include "linked_lists.h"
36#include "llimagegl.h" 35#include "llimagegl.h"
37#include "llglheaders.h" 36#include "llglheaders.h"
38#include "llviewerwindow.h" 37#include "llviewerwindow.h"
@@ -40,10 +39,13 @@
40#include "llviewercontrol.h" 39#include "llviewercontrol.h"
41#include "llviewerimage.h" 40#include "llviewerimage.h"
42#include "llvertexbuffer.h" 41#include "llvertexbuffer.h"
42#include "llviewerdisplay.h"
43#include "llglimmediate.h"
43 44
45void render_ui_and_swap_if_needed();
44 46
45// static 47// static
46LLLinkedList<LLDynamicTexture> LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ]; 48LLDynamicTexture::instance_list_t LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ];
47S32 LLDynamicTexture::sNumRenders = 0; 49S32 LLDynamicTexture::sNumRenders = 0;
48 50
49//----------------------------------------------------------------------------- 51//-----------------------------------------------------------------------------
@@ -62,7 +64,7 @@ LLDynamicTexture::LLDynamicTexture(S32 width, S32 height, S32 components, EOrder
62 generateGLTexture(); 64 generateGLTexture();
63 65
64 llassert( 0 <= order && order < ORDER_COUNT ); 66 llassert( 0 <= order && order < ORDER_COUNT );
65 LLDynamicTexture::sInstances[ order ].addData(this); 67 LLDynamicTexture::sInstances[ order ].insert(this);
66} 68}
67 69
68//----------------------------------------------------------------------------- 70//-----------------------------------------------------------------------------
@@ -73,7 +75,7 @@ LLDynamicTexture::~LLDynamicTexture()
73 releaseGLTexture(); 75 releaseGLTexture();
74 for( S32 order = 0; order < ORDER_COUNT; order++ ) 76 for( S32 order = 0; order < ORDER_COUNT; order++ )
75 { 77 {
76 LLDynamicTexture::sInstances[order].removeData(this); // will fail in all but one case. 78 LLDynamicTexture::sInstances[order].erase(this); // will fail in all but one case.
77 } 79 }
78} 80}
79 81
@@ -211,20 +213,27 @@ BOOL LLDynamicTexture::updateAllInstances()
211 BOOL result = FALSE; 213 BOOL result = FALSE;
212 for( S32 order = 0; order < ORDER_COUNT; order++ ) 214 for( S32 order = 0; order < ORDER_COUNT; order++ )
213 { 215 {
214 for (LLDynamicTexture *dynamicTexture = LLDynamicTexture::sInstances[order].getFirstData(); 216 for (instance_list_t::iterator iter = LLDynamicTexture::sInstances[order].begin();
215 dynamicTexture; 217 iter != LLDynamicTexture::sInstances[order].end(); ++iter)
216 dynamicTexture = LLDynamicTexture::sInstances[order].getNextData())
217 { 218 {
219 LLDynamicTexture *dynamicTexture = *iter;
218 if (dynamicTexture->needsRender()) 220 if (dynamicTexture->needsRender())
219 { 221 {
222 render_ui_and_swap_if_needed();
223 glClear(GL_DEPTH_BUFFER_BIT);
224 gDisplaySwapBuffers = FALSE;
225
226 LLVertexBuffer::startRender();
227 gGL.start();
228
220 dynamicTexture->preRender(); // Must be called outside of startRender() 229 dynamicTexture->preRender(); // Must be called outside of startRender()
221 230
222 LLVertexBuffer::startRender();
223 if (dynamicTexture->render()) 231 if (dynamicTexture->render())
224 { 232 {
225 result = TRUE; 233 result = TRUE;
226 sNumRenders++; 234 sNumRenders++;
227 } 235 }
236 gGL.stop();
228 LLVertexBuffer::stopRender(); 237 LLVertexBuffer::stopRender();
229 238
230 dynamicTexture->postRender(result); 239 dynamicTexture->postRender(result);