summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgtags2
-rw-r--r--doc/contributions.txt5
-rw-r--r--indra/llmessage/llcurl.cpp5
-rwxr-xr-xindra/newview/llagentpilot.cpp6
-rwxr-xr-xindra/newview/llappviewer.cpp15
-rw-r--r--indra/newview/llnamelistctrl.cpp24
-rw-r--r--indra/newview/llselectmgr.cpp12
-rw-r--r--indra/newview/llviewermedia.cpp2
-rw-r--r--indra/newview/llvoavatar.cpp10
-rwxr-xr-xindra/newview/pipeline.cpp28
10 files changed, 67 insertions, 42 deletions
diff --git a/.hgtags b/.hgtags
index 48aa4d2ad3..1087bc7208 100644
--- a/.hgtags
+++ b/.hgtags
@@ -69,3 +69,5 @@ db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2
54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2
b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3
b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3
+b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-release
+b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-31_2.5.0-release
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 1b08b91baf..a71ee88166 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -396,10 +396,7 @@ Jonathan Yap
STORM-869
VWR-17801
VWR-24347
- STORM-844
- STORM-643
- STORM-960
- STORM-953
+ STORM-975
Kage Pixel
VWR-11
Ken March
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index 2b9bfff536..b0f68df2e8 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -1199,10 +1199,7 @@ void LLCurl::cleanupClass()
Easy::sFreeHandles.clear();
- if (!Easy::sActiveHandles.empty())
- {
- llerrs << "CURL easy handles not cleaned up on shutdown!" << llendl;
- }
+ llassert(Easy::sActiveHandles.empty());
}
const unsigned int LLCurl::MAX_REDIRECTS = 5;
diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp
index f96db0a5df..734c502fcf 100755
--- a/indra/newview/llagentpilot.cpp
+++ b/indra/newview/llagentpilot.cpp
@@ -35,7 +35,6 @@
#include "llappviewer.h"
#include "llviewercontrol.h"
#include "llviewercamera.h"
-#include "llviewerjoystick.h"
#include "llsdserialize.h"
#include "llsdutil_math.h"
@@ -259,11 +258,6 @@ void LLAgentPilot::startPlayback()
if (mActions.count())
{
llinfos << "Starting playback, moving to waypoint 0" << llendl;
- if (getOverrideCamera() &&
- !LLViewerJoystick::getInstance()->getOverrideCamera())
- {
- LLViewerJoystick::getInstance()->toggleFlycam();
- }
gAgent.startAutoPilotGlobal(mActions[0].mTarget);
moveCamera();
mStarted = FALSE;
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0118d2dfc1..add0e72ce2 100755
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4220,16 +4220,13 @@ void LLAppViewer::idle()
LLWorld::getInstance()->updateParticles();
}
- if (LLViewerJoystick::getInstance()->getOverrideCamera())
+ if (gAgentPilot.isPlaying() && gAgentPilot.getOverrideCamera())
+ {
+ gAgentPilot.moveCamera();
+ }
+ else if (LLViewerJoystick::getInstance()->getOverrideCamera())
{
- if (gAgentPilot.isPlaying() && gAgentPilot.getOverrideCamera())
- {
- gAgentPilot.moveCamera();
- }
- else
- {
- LLViewerJoystick::getInstance()->moveFlycam();
- }
+ LLViewerJoystick::getInstance()->moveFlycam();
}
else
{
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 38100aa6c5..afceb58ccf 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -143,6 +143,30 @@ void LLNameListCtrl::mouseOverHighlightNthItem( S32 target_index )
S32 cur_index = getHighlightedItemInx();
if (cur_index != target_index)
{
+ bool is_mouse_over_name_cell = false;
+
+ S32 mouse_x, mouse_y;
+ LLUI::getMousePositionLocal(this, &mouse_x, &mouse_y);
+
+ S32 column_index = getColumnIndexFromOffset(mouse_x);
+ LLScrollListItem* hit_item = hitItem(mouse_x, mouse_y);
+ if (hit_item && column_index == mNameColumnIndex)
+ {
+ // Get the name cell which is currently under the mouse pointer.
+ LLScrollListCell* hit_cell = hit_item->getColumn(column_index);
+ if (hit_cell)
+ {
+ is_mouse_over_name_cell = getCellRect(cur_index, column_index).pointInRect(mouse_x, mouse_y);
+ }
+ }
+
+ // If the tool tip is visible and the mouse is over the currently highlighted item's name cell,
+ // we should not reset the highlighted item index i.e. set mHighlightedItem = -1
+ // and should not increase the width of the text inside the cell because it may
+ // overlap the tool tip icon.
+ if (LLToolTipMgr::getInstance()->toolTipVisible() && is_mouse_over_name_cell)
+ return;
+
if(0 <= cur_index && cur_index < (S32)getItemList().size())
{
LLScrollListItem* item = getItemList()[cur_index];
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 746ba274ed..93c9131424 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -5492,7 +5492,12 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
BOOL is_hud_object = objectp->isHUDAttachment();
- if (!is_hud_object)
+ if (drawable->isActive())
+ {
+ glLoadMatrixd(gGLModelView);
+ glMultMatrixf((F32*) objectp->getRenderMatrix().mMatrix);
+ }
+ else if (!is_hud_object)
{
glLoadIdentity();
glMultMatrixd(gGLModelView);
@@ -5500,11 +5505,6 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
}
- if (drawable->isActive())
- {
- glMultMatrixf((F32*) objectp->getRenderMatrix().mMatrix);
- }
-
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
if (LLSelectMgr::sRenderHiddenSelections) // && gFloaterTools && gFloaterTools->getVisible())
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index fcd9141269..a8d5c9776c 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -53,7 +53,7 @@
#include "llwebsharing.h" // For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!
#include "llfilepicker.h"
#include "llnotifications.h"
-#include "lldir_win32.h"
+#include "lldir.h"
#include "llevent.h" // LLSimpleListener
#include "llnotificationsutil.h"
#include "lluuid.h"
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index a257703b24..0771e72bdc 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3335,13 +3335,21 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
if (visible && !isSelf() && !mIsDummy && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter)
{
+ const LLVector4a* ext = mDrawable->getSpatialExtents();
+ LLVector4a size;
+ size.setSub(ext[1],ext[0]);
+ F32 mag = size.getLength3().getF32()*0.5f;
+
F32 impostor_area = 256.f*512.f*(8.125f - LLVOAvatar::sLODFactor*8.f);
if (LLMuteList::getInstance()->isMuted(getID()))
{ // muted avatars update at 16 hz
mUpdatePeriod = 16;
}
- else if (mVisibilityRank <= LLVOAvatar::sMaxVisible)
+ else if (mVisibilityRank <= LLVOAvatar::sMaxVisible ||
+ mDrawable->mDistanceWRTCamera < 1.f + mag)
{ //first 25% of max visible avatars are not impostored
+ //also, don't impostor avatars whose bounding box may be penetrating the
+ //impostor camera near clip plane
mUpdatePeriod = 1;
}
else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 69173d26f4..b0aa50bc57 100755
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -9352,10 +9352,10 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
glMatrixMode(GL_PROJECTION);
glPushMatrix();
- //glh::matrix4f ortho = gl_ortho(-tdim.mV[0], tdim.mV[0], -tdim.mV[1], tdim.mV[1], 1.0, 256.0);
+
F32 distance = (pos-camera.getOrigin()).length();
F32 fov = atanf(tdim.mV[1]/distance)*2.f*RAD_TO_DEG;
- F32 aspect = tdim.mV[0]/tdim.mV[1]; //128.f/256.f;
+ F32 aspect = tdim.mV[0]/tdim.mV[1];
glh::matrix4f persp = gl_perspective(fov, aspect, 1.f, 256.f);
glh_set_current_projection(persp);
glLoadMatrixf(persp.m);
@@ -9374,7 +9374,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
gGL.setColorMask(true, true);
glStencilMask(0xFFFFFFFF);
glClearStencil(0);
-
+
// get the number of pixels per angle
F32 pa = gViewerWindow->getWindowHeightRaw() / (RAD_TO_DEG * viewer_camera->getView());
@@ -9424,9 +9424,6 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
glStencilFunc(GL_EQUAL, 1, 0xFFFFFF);
{ //create alpha mask based on stencil buffer (grey out if muted)
- LLVector3 left = camera.getLeftAxis()*tdim.mV[0]*2.f;
- LLVector3 up = camera.getUpAxis()*tdim.mV[1]*2.f;
-
if (LLPipeline::sRenderDeferred)
{
GLuint buff = GL_COLOR_ATTACHMENT0_EXT;
@@ -9449,16 +9446,25 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
LLGLDepthTest depth(GL_FALSE, GL_FALSE);
- gGL.color4f(1,1,1,1);
+ gGL.flush();
+
+ glPushMatrix();
+ glLoadIdentity();
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
gGL.color4ub(64,64,64,255);
gGL.begin(LLRender::QUADS);
- gGL.vertex3fv((pos+left-up).mV);
- gGL.vertex3fv((pos-left-up).mV);
- gGL.vertex3fv((pos-left+up).mV);
- gGL.vertex3fv((pos+left+up).mV);
+ gGL.vertex2f(-1, -1);
+ gGL.vertex2f(1, -1);
+ gGL.vertex2f(1, 1);
+ gGL.vertex2f(-1, 1);
gGL.end();
gGL.flush();
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
gGL.setSceneBlendType(LLRender::BT_ALPHA);
}