Merge from viewer-beta

meow-7.2.2
prep 2013-02-13 11:30:36 -05:00
commit 11d12f1a99
12 changed files with 270 additions and 1789 deletions

View File

@ -408,3 +408,11 @@ c296133849d1f103c0e2abc41e6599daed00b67b DRTVWR-280
ccf991e02dc2f63fb646324230d54832683f4a9b DRTVWR-286
2d849850558a5a0324b398d1c102d30bcbdfb88f DRTVWR-287
e06898df8644fe567bee94f817d03abc1c380993 3.4.5-beta3
a676b4d6c037b39fe5b8e42cf8839a9303936089 DRTVWR-289
28fa8b944a0c1869636ab00cc400f5aa71f6fa3c DRTVWR-290
7f09bbc28c297f14b67961be7b6575445fa160e8 DRTVWR-291
b23419a2748483c98f3b84b630468a21c88feba5 DRTVWR-292
1567de5700c273b583dac41b64275c223287306e 3.4.5-beta4
1cce8447f8f574673e3f47d6fe584262e6964fe2 DRTVWR-296
0a5d409161ef2a89b28c9a741051dd2dedc707d6 DRTVWR-297
852b69ef0b5fe6b13b69cc2217282cc64de6afab 3.4.5-beta5

View File

@ -1251,6 +1251,7 @@ Whimsy Winx
Whirly Fizzle
STORM-1895
MAINT-873
STORM-1930
Whoops Babii
VWR-631
VWR-1640

View File

@ -71,7 +71,7 @@ VolumeCatcherImpl::VolumeCatcherImpl()
{
mSystemIsVistaOrHigher = isWindowsVistaOrHigher();
if ( mSystemIsVistaOrHigher )
if ( ! mSystemIsVistaOrHigher )
{
HMODULE handle = ::LoadLibrary(L"winmm.dll");
if(handle)

View File

@ -1854,7 +1854,6 @@ if (LINUX)
set(COPY_INPUT_DEPENDENCIES
${VIEWER_BINARY_NAME}
linux-crash-logger
linux-updater
SLPlugin
media_plugin_webkit
media_plugin_gstreamer010

View File

@ -523,6 +523,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
dist_squared = dist_vec_squared(new_pos, target_pos);
LLQuaternion new_rot = nlerp(lerp_amt, old_rot, target_rot);
// FIXME: This can be negative! It is be possible for some rots to 'cancel out' pos or size changes.
dist_squared += (1.f - dot(new_rot, target_rot)) * 10.f;
LLVector3 new_scale = lerp(old_scale, target_scale, lerp_amt);
@ -548,9 +549,12 @@ F32 LLDrawable::updateXform(BOOL undamped)
}
else
{
dist_squared = dist_vec_squared(old_pos, target_pos);
dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f;
dist_squared += dist_vec_squared(old_scale, target_scale);
// The following fixes MAINT-1742 but breaks vehicles similar to MAINT-2275
// dist_squared = dist_vec_squared(old_pos, target_pos);
// The following fixes MAINT-2247 but causes MAINT-2275
//dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f;
//dist_squared += dist_vec_squared(old_scale, target_scale);
}
LLVector3 vec = mCurrentScale-target_scale;

View File

@ -215,17 +215,19 @@ public:
~LLMeshHeaderResponder()
{
if (!mProcessed && !LLApp::isQuitting())
{ //something went wrong, retry
llwarns << "Timeout or service unavailable, retrying." << llendl;
LLMeshRepository::sHTTPRetryCount++;
LLMeshRepoThread::HeaderRequest req(mMeshParams);
LLMutexLock lock(gMeshRepo.mThread->mMutex);
gMeshRepo.mThread->mHeaderReqQ.push(req);
if (!LLApp::isQuitting())
{
if (!mProcessed)
{ //something went wrong, retry
llwarns << "Timeout or service unavailable, retrying." << llendl;
LLMeshRepository::sHTTPRetryCount++;
LLMeshRepoThread::HeaderRequest req(mMeshParams);
LLMutexLock lock(gMeshRepo.mThread->mMutex);
gMeshRepo.mThread->mHeaderReqQ.push(req);
}
LLMeshRepoThread::decActiveHeaderRequests();
}
LLMeshRepoThread::decActiveHeaderRequests();
}
virtual void completedRaw(U32 status, const std::string& reason,
@ -252,13 +254,16 @@ public:
~LLMeshLODResponder()
{
if (!mProcessed && !LLApp::isQuitting())
if (!LLApp::isQuitting())
{
llwarns << "Killed without being processed, retrying." << llendl;
LLMeshRepository::sHTTPRetryCount++;
gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
if (!mProcessed)
{
llwarns << "Killed without being processed, retrying." << llendl;
LLMeshRepository::sHTTPRetryCount++;
gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
}
LLMeshRepoThread::decActiveLODRequests();
}
LLMeshRepoThread::decActiveLODRequests();
}
virtual void completedRaw(U32 status, const std::string& reason,

View File

@ -186,8 +186,11 @@ private:
// Populate the menu with items like "New Skin", "New Pants", etc.
static void populateCreateWearableSubmenus(LLMenuGL* menu)
{
LLView* menu_clothes = gMenuHolder->getChildView("COF.Gear.New_Clothes", FALSE);
LLView* menu_bp = gMenuHolder->getChildView("COF.Geear.New_Body_Parts", FALSE);
// MAINT-2276...these menus are created as dummies because they are not available
// when this function is called. This prevents their parent from popping up later.
//
//LLView* menu_clothes = gMenuHolder->getChildView("COF.Gear.New_Clothes", FALSE);
//LLView* menu_bp = gMenuHolder->getChildView("COF.Geear.New_Body_Parts", FALSE);
for (U8 i = LLWearableType::WT_SHAPE; i != (U8) LLWearableType::WT_COUNT; ++i)
{
@ -200,8 +203,11 @@ private:
p.on_click.function_name = "Wearable.Create";
p.on_click.parameter = LLSD(type_name);
LLView* parent = LLWearableType::getAssetType(type) == LLAssetType::AT_CLOTHING ?
menu_clothes : menu_bp;
//LLView* parent = LLWearableType::getAssetType(type) == LLAssetType::AT_CLOTHING ? menu_clothes : menu_bp;
// This is a work-around for MAINT-2276 wherein the parent toggleable menu does not appear
// It puts everything under one menu, but that menu appears, which is better than not.
//
LLView* parent = menu;
LLUICtrlFactory::create<LLMenuItemCallGL>(p, parent);
}
}

View File

@ -1540,17 +1540,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
// Actually extract the data.
if (parcel)
{
if (sequence_id == SELECTED_PARCEL_SEQ_ID
&& parcel->getLocalID() != INVALID_PARCEL_ID
&& parcel->getLocalID() != local_id)
{
// The parcel has a valid parcel ID but it doesn't match the parcel
// for the data received.
llinfos << "Expecting data for parcel " << parcel->getLocalID() \
<< " but got data for parcel " << local_id << llendl;
return;
}
parcel->init(owner_id,
FALSE, FALSE, FALSE,
claim_date, claim_price_per_meter, rent_price_per_meter,

File diff suppressed because it is too large Load Diff

View File

@ -147,12 +147,12 @@
height="12"
layout="topleft"
left_delta="87"
name="ShadersPrefText3"
name="ShadersPrefText2"
top_delta="0"
width="80">
Mid
</text>
<text
<text
type="string"
length="1"
follows="left|top"
@ -163,8 +163,8 @@
name="ShadersPrefText3"
top_delta="0"
width="80">
High
</text>
High
</text>
<text
type="string"
length="1"

View File

@ -968,7 +968,6 @@ class LinuxManifest(ViewerManifest):
if self.prefix(src="", dst="bin"):
self.path("secondlife-bin","do-not-directly-run-secondlife-bin")
self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin")
self.path("../linux_updater/linux-updater", "linux-updater.bin")
self.path2basename("../llplugin/slplugin", "SLPlugin")
self.path2basename("../viewer_components/updater/scripts/linux", "update_install")
self.end_prefix("bin")
@ -1017,9 +1016,7 @@ class LinuxManifest(ViewerManifest):
else:
installer_name += '_' + self.channel_oneword().upper()
if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
self.run_command("find %(d)r/bin %(d)r/lib -type f \\! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
self.strip_binaries()
# Fix access permissions
self.run_command("""
@ -1054,6 +1051,11 @@ class LinuxManifest(ViewerManifest):
'dst': self.get_dst_prefix(),
'inst': self.build_path_of(installer_name)})
def strip_binaries(self):
if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
class Linux_i686Manifest(LinuxManifest):
def construct(self):
super(Linux_i686Manifest, self).construct()
@ -1139,9 +1141,7 @@ class Linux_i686Manifest(LinuxManifest):
self.path("libvivoxplatform.so")
self.end_prefix("lib")
if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
self.run_command("find %(d)r/bin %(d)r/lib -type f \\! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
self.strip_binaries()
class Linux_x86_64Manifest(LinuxManifest):

View File

@ -1,10 +1,217 @@
#! /bin/bash
INSTALL_DIR=$(cd "$(dirname "$0")/.." ; pwd)
export LD_LIBRARY_PATH="$INSTALL_DIR/lib"
bin/linux-updater.bin --file "$1" --dest "$INSTALL_DIR" --name "Second Life Viewer" --stringsdir "$INSTALL_DIR/skins/default/xui/en" --stringsfile "strings.xml"
if [ $? -ne 0 ]
then echo $3 >> "$2"
# @file update_install
# @author Nat Goodspeed
# @date 2013-01-09
# @brief Update the containing Second Life application bundle to the version in
# the specified tarball.
#
# This bash implementation is derived from the previous linux-updater.bin
# application.
#
# $LicenseInfo:firstyear=2013&license=viewerlgpl$
# Copyright (c) 2013, Linden Research, Inc.
# $/LicenseInfo$
# ****************************************************************************
# script parameters
# ****************************************************************************
tarball="$1" # the file to install
markerfile="$2" # create this file on failure
mandatory="$3" # what to write to markerfile on failure
# ****************************************************************************
# helper functions
# ****************************************************************************
# empty array
cleanups=()
# add a cleanup action to execute on exit
function cleanup {
# wacky bash syntax for appending to array
cleanups[${#cleanups[*]}]="$*"
}
# called implicitly on exit
function onexit {
for action in "${cleanups[@]}"
do # don't quote, support actions consisting of multiple words
$action
done
}
trap 'onexit' EXIT
# write to log file
function log {
# our log file will be open as stderr -- but until we set up that
# redirection, logging to stderr is better than nothing
echo "$*" 1>&2
}
# We display status by leaving one background xmessage process running. This
# is the pid of that process.
statuspid=""
function clear_message {
[ -n "$statuspid" ] && kill $statuspid
statuspid=""
}
# make sure we remove any message box we might have put up
cleanup clear_message
# can we use zenity, or must we fall back to xmessage?
zenpath="$(which zenity)"
if [ -n "$zenpath" ]
then # zenity on PATH and is executable
# display a message box and continue
function status {
# clear any previous message
clear_message
# put up a new zenity box and capture its pid
"$zenpath" --info --title "Second Life Viewer Updater" \
--width=320 --height=120 --text="$*" &
statuspid=$!
}
# display an error box and wait for user
function errorbox {
"$zenpath" --error --title "Second Life Viewer Updater" \
--width=320 --height=120 --text="$*"
}
else # no zenity, use xmessage instead
# display a message box and continue
function status {
# clear any previous message
clear_message
# put up a new xmessage and capture its pid
xmessage -buttons OK:2 -center "$*" &
statuspid=$!
}
# display an error box and wait for user
function errorbox {
xmessage -buttons OK:2 -center "$*"
}
fi
rm -f "$1"
# display an error box and terminate
function fail {
# Log the message
log "$@"
# tell subsequent viewer things went south
echo "$mandatory" > "$markerfile"
# add boilerplate
errorbox "An error occurred while updating Second Life:
$*
Please download the latest viewer from www.secondlife.com."
exit 1
}
# Find a graphical sudo program and define mysudo function. On error, $? is
# nonzero; output is in $err instead of being written to stdout/stderr.
gksudo="$(which gksudo)"
kdesu="$(which kdesu)"
if [ -n "$gksudo" ]
then function mysudo {
# gksudo allows you to specify description
err="$("$gksudo" --description "Second Life Viewer Updater" "$@" 2>&1)"
}
elif [ -n "$kdesu" ]
then function mysudo {
err="$("$kdesu" "$@" 2>&1)"
}
else # couldn't find either one, just try it anyway
function mysudo {
err="$("$@" 2>&1)"
}
fi
# Move directories, using mysudo if we think it necessary. On error, $? is
# nonzero; output is in $err instead of being written to stdout/stderr.
function sudo_mv {
# If we have write permission to both parent directories, shouldn't need
# sudo.
if [ -w "$(dirname "$1")" -a -w "$(dirname "$2")" ]
then err="$(mv "$@" 2>&1)"
else # use available sudo program; mysudo sets $? and $err
mysudo mv "$@"
fi
}
# ****************************************************************************
# main script logic
# ****************************************************************************
mydir="$(dirname "$0")"
# We happen to know that the viewer specifies a marker-file pathname within
# the logs directory.
logsdir="$(dirname "$markerfile")"
logname="$logsdir/updater.log"
# move aside old updater.log; we're about to create a new one
[ -f "$logname" ] && mv "$logname" "$logname.old"
# Set up redirections for this script such that stderr is logged. (But first
# move the previous stderr to file descriptor 3.)
exec 3>&2- 2> "$logname"
# Rather than setting up a special pipeline to timestamp every line of stderr,
# produce header lines into log file indicating timestamp and the arguments
# with which we were invoked.
date 1>&2
log "$0 $*"
# Log every command we execute, along with any stderr it might produce
set -x
status 'Installing Second Life...'
# Creating tempdir under /tmp means it's possible that tempdir is on a
# different filesystem than INSTALL_DIR. One is tempted to create tempdir on a
# path derived from `dirname INSTALL_DIR` -- but it seems modern 'mv' can
# handle moving across filesystems??
tempdir="$(mktemp -d)"
tempinstall="$tempdir/install"
# capture the actual error message, if any
err="$(mkdir -p "$tempinstall" 2>&1)" || fail "$err"
cleanup rm -rf "$tempdir"
# If we already knew the name of the tarball's top-level directory, we could
# just move that when all was said and done. Since we don't, untarring to the
# 'install' subdir with --strip 1 effectively renames that top-level
# directory.
# untar failures tend to be voluminous -- don't even try to capture, just log
tar --strip 1 -xjf "$tarball" -C "$tempinstall" || fail "Untar command failed"
INSTALL_DIR="$(cd "$mydir/.." ; pwd)"
# Considering we're launched from a subdirectory of INSTALL_DIR, would be
# surprising if it did NOT already exist...
if [ -e "$INSTALL_DIR" ]
then backup="$INSTALL_DIR.backup"
backupn=1
while [ -e "$backup" ]
do backup="$INSTALL_DIR.backup.$backupn"
((backupn += 1))
done
# on error, fail with actual error message from sudo_mv: permissions,
# cross-filesystem mv, ...?
sudo_mv "$INSTALL_DIR" "$backup" || fail "$err"
fi
# We unpacked the tarball into tempinstall. Move that.
if ! sudo_mv "$tempinstall" "$INSTALL_DIR"
then # If we failed to move the temp install to INSTALL_DIR, try to restore
# INSTALL_DIR from backup. Save $err because next sudo_mv will trash it!
realerr="$err"
sudo_mv "$backup" "$INSTALL_DIR"
fail "$realerr"
fi
# Removing the tarball here, rather than with a 'cleanup' action, means we
# only remove it if we succeeded.
rm -f "$tarball"
# Launch the updated viewer. Restore original stderr from file descriptor 3,
# though -- otherwise updater.log gets cluttered with the viewer log!
"$INSTALL_DIR/secondlife" 2>&3- &