Alchemerge

Applies the following alchemy patches:
28fe46209ea5: Don't spam setPaused in fmod studio audio stream code
eb12ff41434a: Fix single click to walk triggering on huds
31955a7826b9: Fix double click to walk being triggered by huds and touchable objects
Fix double click to walk triggering while sitting and flying
Fix double click to walk behavior being inconsistent with single click to walk
Fix double click teleport being affected by transparent objects
Properly fixes MAINT-957

Compile stuff updates:
Adds VCRedist to package, should fix failure to launch reported by Nomade Zhao.
Updates package_description to better suit Singularity
Turns secondlife-bin in places to singularity-bin

Updates the following libraries:
Curl (7.47.0), gperftools (0.0.2), openssl (1.0.2f), SLVoice on Linux64,
This commit is contained in:
Lirusaito
2016-02-25 21:13:13 -05:00
parent d15ac7640c
commit 79965fade1
7 changed files with 286 additions and 133 deletions

View File

@@ -108,7 +108,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
mMouseDownX = x;
mMouseDownY = y;
//left mouse down always picks transparent
//left mouse down always picks transparent (but see handleMouseUp)
mPick = gViewerWindow->pickImmediate(x, y, TRUE);
mPick.mKeyMask = mask;
@@ -605,6 +605,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
if (handleMediaHover(mHoverPick))
{
// cursor set by media object
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
}
else if (!mMouseOutsideSlop
&& mMouseButtonDown
@@ -640,6 +641,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
{
ECursorType cursor = cursorFromObject(click_action_object);
gViewerWindow->setCursor(cursor);
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
}
// [RLVa:KB] - Checked: 2010-03-11 (RLVa-1.2.0e) | Added: RLVa-1.1.0l
else if ( (object) && (rlv_handler_t::isEnabled()) && (!gRlvHandler.canTouch(object)) )
@@ -652,22 +654,23 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|| (parent && !parent->isAvatar() && parent->flagUsePhysics()))
{
gViewerWindow->setCursor(UI_CURSOR_TOOLGRAB);
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
}
else if ( (object && object->flagHandleTouch())
|| (parent && parent->flagHandleTouch()))
{
gViewerWindow->setCursor(UI_CURSOR_HAND);
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
}
else
{
gViewerWindow->setCursor(UI_CURSOR_ARROW);
LL_DEBUGS("UserInput") << "hover handled by LLToolPie (inactive)" << LL_ENDL;
}
}
if(!object)
{
//gViewerWindow->setCursor(UI_CURSOR_ARROW);
// We need to clear media hover flag
LLViewerMediaFocus::getInstance()->clearHover();
}
@@ -693,29 +696,51 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
&& gAgentAvatarp
&& !gAgentAvatarp->isSitting()
&& !mBlockClickToWalk // another behavior hasn't cancelled click to walk
&& !mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick
&& (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land
|| mPick.mObjectID.notNull())) // or on an object
)
{
// handle special cases of steering picks
LLViewerObject* avatar_object = mPick.getObject();
// We may be doing click to walk, but we don't want to use a target on
// a transparent object because the user thought they were clicking on
// whatever they were seeing through it, so recompute what was clicked on
// ignoring transparent objects
LLPickInfo savedPick = mPick;
mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY,
FALSE /* ignore transparent *//*,
FALSE*/ /* ignore particles */); // Singu TODO: Particle picking
// get pointer to avatar
while (avatar_object && !avatar_object->isAvatar())
{
avatar_object = (LLViewerObject*)avatar_object->getParent();
LLViewerObject* objp = mPick.getObject();
bool is_in_world = mPick.mObjectID.notNull() && objp && !objp->isHUDAttachment(); // We clicked on a non-hud object
bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND; // or on land
bool pos_non_zero = !mPick.mPosGlobal.isExactlyZero(); // valid coordinates for pick
if (pos_non_zero && (is_land || is_in_world))
{
// get pointer to avatar
while (objp && !objp->isAvatar())
{
objp = (LLViewerObject*) objp->getParent();
}
if (objp && ((LLVOAvatar*) objp)->isSelf())
{
const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
// pretend we picked some point a bit in front of avatar
mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
}
gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
walkToClickedLocation();
//LLFirstUse::notMoving(false);
return TRUE;
}
if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
{
const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
// pretend we picked some point a bit in front of avatar
mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
}
gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
walkToClickedLocation();
return TRUE;
else
{
LL_DEBUGS("maint5901") << "walk target was "
<< (mPick.mPosGlobal.isExactlyZero() ? "zero" : "not zero")
<< ", pick type was " << (mPick.mPickType == LLPickInfo::PICK_LAND ? "land" : "not land")
<< ", pick object was " << mPick.mObjectID
<< LL_ENDL;
// we didn't click to walk, so restore the original target
mPick = savedPick;
}
}
gViewerWindow->setCursor(UI_CURSOR_ARROW);
if (hasMouseCapture())
@@ -754,17 +779,22 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
return TRUE;
}
if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
{
if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
(mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
{
walkToClickedLocation();
return TRUE;
}
}
else if (gSavedSettings.getBOOL("DoubleClickTeleport"))
bool dbl_click_autoplt = gSavedSettings.getBOOL("DoubleClickAutoPilot");
bool dbl_click_teleport = gSavedSettings.getBOOL("DoubleClickTeleport");
if (dbl_click_autoplt || dbl_click_teleport)
{
// Save the original pick
LLPickInfo savedPick = mPick;
// We may be doing double click to walk or a double click teleport, but
// we don't want to use a target on a transparent object because the user
// thought they were clicking on whatever they were seeing through it, so
// recompute what was clicked on ignoring transparent objects
mPick = gViewerWindow->pickImmediate(savedPick.mMousePt.mX, savedPick.mMousePt.mY,
FALSE /* ignore transparent *//*,
FALSE*/ /* ignore particles */); // Singu TODO: Particle picking
LLViewerObject* objp = mPick.getObject();
LLViewerObject* parentp = objp ? objp->getRootEdit() : NULL;
@@ -772,15 +802,43 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND;
bool pos_non_zero = !mPick.mPosGlobal.isExactlyZero();
bool has_touch_handler = (objp && objp->flagHandleTouch()) || (parentp && parentp->flagHandleTouch());
bool has_click_action = final_click_action(objp);
if (pos_non_zero && (is_land || (is_in_world && !has_touch_handler && !has_click_action)))
bool no_click_action = final_click_action(objp) == CLICK_ACTION_NONE;
if (pos_non_zero && (is_land || (is_in_world && !has_touch_handler && no_click_action)))
{
LLVector3d pos = mPick.mPosGlobal;
pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot();
gAgent.teleportViaLocationLookAt(pos);
return TRUE;
if (dbl_click_autoplt
&& !gAgent.getFlying() // don't auto-navigate while flying until that works
&& isAgentAvatarValid()
&& !gAgentAvatarp->isSitting()
)
{
// get pointer to avatar
while (objp && !objp->isAvatar())
{
objp = (LLViewerObject*) objp->getParent();
}
if (objp && ((LLVOAvatar*) objp)->isSelf())
{
const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
// pretend we picked some point a bit in front of avatar
mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
}
gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
walkToClickedLocation();
//LLFirstUse::notMoving(false);
return TRUE;
}
else if (dbl_click_teleport)
{
LLVector3d pos = mPick.mPosGlobal;
pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot();
gAgent.teleportViaLocationLookAt(pos);
return TRUE;
}
}
// restore the original pick for any other purpose
mPick = savedPick;
}
return FALSE;
@@ -1271,12 +1329,10 @@ BOOL LLToolPie::handleRightClickPick()
void LLToolPie::showVisualContextMenuEffect()
{
// <edit>
if (gSavedSettings.getBOOL("DisablePointAtAndBeam"))
{
return;
}
// </edit>
// VEFFECT: ShowPie
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_SPHERE, TRUE);
@@ -1322,6 +1378,7 @@ bool intersect_ray_with_sphere( const LLVector3& ray_pt, const LLVector3& ray_di
void LLToolPie::startCameraSteering()
{
//LLFirstUse::notMoving(false);
mMouseOutsideSlop = true;
mBlockClickToWalk = true;
@@ -1429,7 +1486,7 @@ void LLToolPie::steerCameraWithMouse(S32 x, S32 y)
{
old_yaw_angle = F_PI_BY_TWO + asinf(pick_distance_from_rotation_center / camera_distance_from_rotation_center);
if (mouse_ray * rotation_frame.getLeftAxis() < 0.f)
if (old_mouse_ray * rotation_frame.getLeftAxis() < 0.f)
{
old_yaw_angle *= -1.f;
}