summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaohong Bao <bao@lindenlab.com>2013-11-22 15:46:50 -0700
committerXiaohong Bao <bao@lindenlab.com>2013-11-22 15:46:50 -0700
commit0954d4f5d563740d0425fb9e8d118a95a34bd283 (patch)
tree9e3e0693377f23ce32d5d65b1a6ee70d7c6db7e0
parentfbd0d85e547ccef688fb0a5dcfbb8a442de25f45 (diff)
fix for SH-4632: Water over land doesn't render when teleporting to the same place twice with location toolbar
-rwxr-xr-xindra/newview/llviewermessage.cpp2
-rwxr-xr-xindra/newview/pipeline.cpp16
-rwxr-xr-xindra/newview/pipeline.h2
3 files changed, 18 insertions, 2 deletions
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index bf1e915d5d..c5126ea78a 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3917,6 +3917,8 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
// Teleport is finished; it can't be cancelled now.
gViewerWindow->setProgressCancelButtonVisible(FALSE);
+ gPipeline.doResetVertexBuffers(true);
+
// Do teleport effect for where you're leaving
// VEFFECT: TeleportStart
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index c2c981893a..c4fa80f0a2 100755
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7385,12 +7385,26 @@ void LLPipeline::resetVertexBuffers()
static LLTrace::BlockTimerStatHandle FTM_RESET_VB("Reset VB");
-void LLPipeline::doResetVertexBuffers()
+void LLPipeline::doResetVertexBuffers(bool forced)
{
if (!mResetVertexBuffers)
{
return;
}
+ if(!forced && LLSpatialPartition::sTeleportRequested)
+ {
+ if(gAgent.getTeleportState() != LLAgent::TELEPORT_NONE)
+ {
+ return; //wait for teleporting to finish
+ }
+ else
+ {
+ //teleporting aborted
+ LLSpatialPartition::sTeleportRequested = FALSE;
+ mResetVertexBuffers = false;
+ return;
+ }
+ }
LL_RECORD_BLOCK_TIME(FTM_RESET_VB);
mResetVertexBuffers = false;
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 469c7b329e..9e29ebd2a8 100755
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -101,7 +101,7 @@ public:
void destroyGL();
void restoreGL();
void resetVertexBuffers();
- void doResetVertexBuffers();
+ void doResetVertexBuffers(bool forced = false);
void resizeScreenTexture();
void releaseGLBuffers();
void releaseLUTBuffers();