diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7cefb59c6..07fac7459 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -15140,6 +15140,17 @@ This should be as low as possible, but too low may break functionality
Value
0
+ UseTypingBubbles
+
+ Comment
+ Show typing indicator in avatar nametags
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseDebugMenus
Comment
diff --git a/indra/newview/ascentprefschat.cpp b/indra/newview/ascentprefschat.cpp
index 599ab0c66..f24724279 100644
--- a/indra/newview/ascentprefschat.cpp
+++ b/indra/newview/ascentprefschat.cpp
@@ -329,6 +329,7 @@ void LLPrefsAscentChat::refreshValues()
mHideTypingNotification = gSavedSettings.getBOOL("AscentHideTypingNotification");
mShowGroupNameInChatIM = gSavedSettings.getBOOL("OptionShowGroupNameInChatIM");
mShowDisplayNameChanges = gSavedSettings.getBOOL("ShowDisplayNameChanges");
+ mUseTypingBubbles = gSavedSettings.getBOOL("UseTypingBubbles");
mPlayTypingSound = gSavedSettings.getBOOL("PlayTypingSound");
mHideNotificationsInChat = gSavedSettings.getBOOL("HideNotificationsInChat");
mEnableMUPose = gSavedSettings.getBOOL("AscentAllowMUpose");
@@ -545,6 +546,7 @@ void LLPrefsAscentChat::cancel()
gSavedSettings.setBOOL("AscentHideTypingNotification", mHideTypingNotification);
gSavedSettings.setBOOL("OptionShowGroupNameInChatIM", mShowGroupNameInChatIM);
gSavedSettings.setBOOL("ShowDisplayNameChanges", mShowDisplayNameChanges);
+ gSavedSettings.setBOOL("UseTypingBubbles", mUseTypingBubbles);
gSavedSettings.setBOOL("PlayTypingSound", mPlayTypingSound);
gSavedSettings.setBOOL("HideNotificationsInChat", mHideNotificationsInChat);
gSavedSettings.setBOOL("AscentAllowMUpose", mEnableMUPose);
diff --git a/indra/newview/ascentprefschat.h b/indra/newview/ascentprefschat.h
index 291645b42..04fa1a69c 100644
--- a/indra/newview/ascentprefschat.h
+++ b/indra/newview/ascentprefschat.h
@@ -66,6 +66,7 @@ protected:
BOOL mHideTypingNotification;
BOOL mShowGroupNameInChatIM;
bool mShowDisplayNameChanges;
+ bool mUseTypingBubbles;
BOOL mPlayTypingSound;
BOOL mHideNotificationsInChat;
BOOL mEnableMUPose;
diff --git a/indra/newview/linux_tools/client-readme-voice.txt b/indra/newview/linux_tools/client-readme-voice.txt
index 23a42f484..aa04a5704 100644
--- a/indra/newview/linux_tools/client-readme-voice.txt
+++ b/indra/newview/linux_tools/client-readme-voice.txt
@@ -4,14 +4,20 @@ Second Life - Linux Voice Support README
WHAT IS IT?
-=-=-=-=-=-
-Linux Voice Support is a new feature in testing which allows users
-of the Linux Second Life client to participate in voice-chat with other
-residents and groups inside Second Life, with an appropriate
-headset/microphone.
+Linux Voice Support is a feature in testing which allows users of the Linux
+Second Life client to participate in voice-chat with other residents and
+groups inside Second Life, with an appropriate headset/microphone.
Linux Voice Support is currently EXPERIMENTAL and is known to still
have some compatibility issues.
+SINGULARITY MULTI-VOICE
+-=-=-=-=-=-=-=-=-=-=-=-
+Singularity multi-voice is an experimental feature that allows you to run multiple
+SLVoice daemons at the same time, in order to do this, the debug setting VoiceMultiInstance
+must be TRUE, this allows multiple instances of the viewer to run concurrently and
+each connect to voice.
+
REQUIREMENTS
-=-=-=-=-=-=
@@ -29,6 +35,13 @@ systems:
* Fedora Core 6 with (unknown) audio chipset
* Ubuntu 8.04 (Hardy) with (unknown) audio chipset
+TESTING YOUR SETTINGS
+-=-=-=-=-=-=-=-=-=-=-
+
+* The Second Life region 'Voice Echo Canyon' is a great place for testing
+your hardware settings and quality - it will 'echo' your voice back to you
+when you speak.
+
KNOWN PROBLEMS
-=-=-=-=-=-=-=
@@ -41,12 +54,12 @@ TROUBLESHOOTING
PROBLEM 1: I don't see a white dot over the head of my avatar or other
Voice-using avatars.
SOLUTION:
-a. Ensure that 'Enable voice chat' is enabled in the Voice Chat
- preferences window and that you are in a voice-enabled area (you
- will see a blue headphone icon in the SL menu-bar).
+a. Ensure that 'Enable voice chat' is enabled in the 'Voice Chat' section of the
+ Preferences window, and that you are in a voice-enabled area
+ (you will see a blue headphone icon in the SL menu-bar).
b. If the above does not help, exit Second Life and ensure that any
remaining 'SLVoice' processes (as reported by 'ps', 'top' or similar)
- are killed.
+ are killed before restarting.
PROBLEM 2: I have a white dot over my head but I never see (or hear!) anyone
except myself listed in the Active Speakers dialog when I'm sure that other
@@ -65,12 +78,13 @@ c. Update to the latest version of ALSA manually. For a guide, see the
PROBLEM 3: I can hear other people, but they cannot hear me.
SOLUTION:
-a. Ensure that you have the 'Talk' button activated while you are trying to
- speak.
+a. Ensure that you have the 'Talk' button (at the bottom of the Second Life
+ window)activated while you are trying to speak.
b. Ensure that your microphone jack is inserted into the correct socket of your
sound card, where appropriate.
-c. Use your system mixer-setting program or the 'alsamixer' program to ensure
- that microphone input is set as the active input source and is not muted.
+c. Use your system mixer-setting program (such as the PulseAudio 'volume
+ control' applet or the ALSA 'alsamixer' program) to ensure that microphone
+ input is set as the active input source and is not muted.
d. Verify that audio input works in other applications, i.e. Audacity
PROBLEM 4: Other people just hear bursts of loud noise when I speak.
diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt
index 99c973f7e..f9f60c833 100644
--- a/indra/newview/linux_tools/client-readme.txt
+++ b/indra/newview/linux_tools/client-readme.txt
@@ -15,7 +15,7 @@ Life itself - please see .
5.3. Blank window after minimizing it
5.4. Audio
5.5. 'Alt' key for camera controls doesn't work
- 5.6. In-world streaming movie/music playback
+ 5.6. In-world streaming movie, music and Flash playback
6. Advanced Troubleshooting
6.1. Audio
6.2. OpenGL
@@ -75,10 +75,11 @@ Life Linux client is very similar to that for Windows, as detailed at:
3. INSTALLING & RUNNING
-=-=-=-=-=-=-=-=-=-=-=-
-The Second Life Linux client entirely runs out of the directory you have
-unpacked it into - no installation step is required.
+The Singularity Linux client can entirely run from the directory you have
+unpacked it into - no installation step is required. If you wish to
+perform a separate installation step anyway, you may run './install.sh'
-Run ./secondlife from the installation directory to start Second Life.
+Run ./singularity from the installation directory to start Singularity.
For in-world MOVIE and MUSIC PLAYBACK, you will need (32-bit) GStreamer 0.10
installed on your system. This is optional - it is not required for general
@@ -168,12 +169,15 @@ SOLUTION:- Some window managers eat the Alt key for their own purposes; you
example, the 'Windows' key!) which will allow the Alt key to function
properly with mouse actions in Second Life and other applications.
-PROBLEM 6:- In-world movie and/or music playback doesn't work for me.
+PROBLEM 6:- In-world movie, music, or Flash playback doesn't work for me.
SOLUTION:- You need to have a working installation of GStreamer 0.10; this
is usually an optional package for most versions of Linux. If you have
installed GStreamer 0.10 and you can play some music/movies but not others
then you need to install a wider selection of GStreamer plugins, either
- from your vendor or an appropriate third party.
+ from your vendor (i.e. the 'Ugly' plugins) or an appropriate third party.
+ For Flash playback, you need to have Flash 10 installed for your normal
+ web browser (for example, Firefox). PulseAudio is required for Flash
+ volume control / muting to fully function inside Second Life.
6. ADVANCED TROUBLESHOOTING
diff --git a/indra/newview/linux_tools/install.sh b/indra/newview/linux_tools/install.sh
new file mode 100644
index 000000000..86d020671
--- /dev/null
+++ b/indra/newview/linux_tools/install.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# Install Singularity Viewer. This script can install the viewer both
+# system-wide and for an individual user.
+
+VT102_STYLE_NORMAL='\E[0m'
+VT102_COLOR_RED='\E[31m'
+
+SCRIPTSRC=`readlink -f "$0" || echo "$0"`
+RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
+tarball_path=${RUN_PATH}
+
+function prompt()
+{
+ local prompt=$1
+ local input
+
+ echo -n "$prompt"
+
+ while read input; do
+ case $input in
+ [Yy]* )
+ return 1
+ ;;
+ [Nn]* )
+ return 0
+ ;;
+ * )
+ echo "Please enter yes or no."
+ echo -n "$prompt"
+ esac
+ done
+}
+
+function die()
+{
+ warn $1
+ exit 1
+}
+
+function warn()
+{
+ echo -n -e $VT102_COLOR_RED
+ echo $1
+ echo -n -e $VT102_STYLE_NORMAL
+}
+
+function homedir_install()
+{
+ warn "You are not running as a privileged user, so you will only be able"
+ warn "to install Singularity Viewer in your home directory. If you"
+ warn "would like to install Singularity Viewer system-wide, please run"
+ warn "this script as the root user, or with the 'sudo' command."
+ echo
+
+ prompt "Proceed with the installation? [Y/N]: "
+ if [[ $? == 0 ]]; then
+ exit 0
+ fi
+
+ install_to_prefix "$HOME/.singularity-install"
+ $HOME/.singularity-install/refresh_desktop_app_entry.sh
+}
+
+function root_install()
+{
+ local default_prefix="/opt/singularity-install"
+
+ echo -n "Enter the desired installation directory [${default_prefix}]: ";
+ read
+ if [[ "$REPLY" = "" ]] ; then
+ local install_prefix=$default_prefix
+ else
+ local install_prefix=$REPLY
+ fi
+
+ install_to_prefix "$install_prefix"
+
+ mkdir -p /usr/local/share/applications
+ ${install_prefix}/refresh_desktop_app_entry.sh
+}
+
+function install_to_prefix()
+{
+ test -e "$1" && backup_previous_installation "$1"
+ mkdir -p "$1" || die "Failed to create installation directory!"
+
+ echo " - Installing to $1"
+
+ cp -a "${tarball_path}"/* "$1/" || die "Failed to complete the installation!"
+}
+
+function backup_previous_installation()
+{
+ local backup_dir="$1".backup-$(date -I)
+ echo " - Backing up previous installation to $backup_dir"
+
+ mv "$1" "$backup_dir" || die "Failed to create backup of existing installation!"
+}
+
+
+if [ "$UID" == "0" ]; then
+ root_install
+else
+ homedir_install
+fi
diff --git a/indra/newview/linux_tools/refresh_desktop_app_entry.sh b/indra/newview/linux_tools/refresh_desktop_app_entry.sh
new file mode 100644
index 000000000..9412c840c
--- /dev/null
+++ b/indra/newview/linux_tools/refresh_desktop_app_entry.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+SCRIPTSRC=`readlink -f "$0" || echo "$0"`
+RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
+
+install_prefix=${RUN_PATH}
+
+function install_desktop_entry()
+{
+ local installation_prefix="$1"
+ local desktop_entries_dir="$2"
+
+ local desktop_entry="\
+[Desktop Entry]\n\
+Name=Singularity\n\
+Comment=Client for Online Virtual Worlds, such as Second Life\n\
+Exec=${installation_prefix}/singularity\n\
+Icon=${installation_prefix}/singularity_icon.png\n\
+Terminal=false\n\
+Type=Application\n\
+Categories=Application;Network;\n\
+StartupNotify=true\n\
+X-Desktop-File-Install-Version=3.0"
+
+ echo " - Installing menu entries in ${desktop_entries_dir}"
+ mkdir -vp "${desktop_entries_dir}"
+ echo -e $desktop_entry > "${desktop_entries_dir}/singularity-viewer.desktop" || "Failed to install application menu!"
+}
+
+if [ "$UID" == "0" ]; then
+ # system-wide
+ install_desktop_entry "$install_prefix" /usr/local/share/applications
+else
+ # user-specific
+ install_desktop_entry "$install_prefix" "$HOME/.local/share/applications"
+fi
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index e406e3c71..ff7fc48ae 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -4,10 +4,10 @@
## These options are for self-assisted troubleshooting during this beta
## testing phase; you should not usually need to touch them.
-## - Avoids using any OpenAL audio driver.
-#export LL_BAD_OPENAL_DRIVER=x
## - Avoids using any FMOD Ex audio driver.
#export LL_BAD_FMODEX_DRIVER=x
+## - Avoids using any OpenAL audio driver.
+#export LL_BAD_OPENAL_DRIVER=x
## - Avoids using any FMOD audio driver.
#export LL_BAD_FMOD_DRIVER=x
@@ -20,7 +20,6 @@
## - Avoids using the FMOD or FMOD Ex ESD audio driver.
#export LL_BAD_FMOD_ESD=x
-
## - Avoids the optional OpenGL extensions which have proven most problematic
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but
## may also cause CRASHES and hangs on some unstable combinations of drivers
@@ -109,6 +108,10 @@ cd "${RUN_PATH}"
# Re-register the secondlife:// protocol handler every launch, for now.
./register_secondlifeprotocol.sh
+
+# Re-register the application with the desktop system every launch, for now.
+./refresh_desktop_app_entry.sh
+
## Before we mess with LD_LIBRARY_PATH, save the old one to restore for
## subprocesses that care.
export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
@@ -147,16 +150,11 @@ fi
export SL_CMD='$LL_WRAPPER bin/$VIEWER_BINARY'
export SL_OPT="`cat gridargs.dat` $@"
-# Run the program
+# Run the program.
eval ${SL_ENV} ${SL_CMD} ${SL_OPT} || LL_RUN_ERR=runerr
# Handle any resulting errors
-if [ -n "$LL_RUN_ERR" ]; then
- LL_RUN_ERR_MSG=""
- if [ "$LL_RUN_ERR" = "runerr" ]; then
- # generic error running the binary
- echo '*** Bad shutdown. ***'
-
-
- fi
+if [ -n "$LL_RUN_ERR" = "runerr" ]; then
+ # generic error running the binary
+ echo '*** Bad shutdown. ***'
fi
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 77a0558f1..de8da30e6 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -3,10 +3,9 @@
* @brief Processes responses received for asset upload requests.
*
* $LicenseInfo:firstyear=2007&license=viewergpl$
- *
+ * Second Life Viewer Source Code
* Copyright (c) 2007-2009, Linden Research, Inc.
*
- * Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
@@ -53,7 +52,6 @@
#include "llviewerobject.h"
#include "llviewercontrol.h"
#include "llviewerobjectlist.h"
-#include "llviewermenufile.h"
#include "llviewertexlayer.h"
#include "llviewerwindow.h"
#include "lltrans.h"
@@ -255,6 +253,7 @@ void LLAssetUploadResponder::result(const LLSD& content)
lldebugs << "LLAssetUploadResponder::result from capabilities" << llendl;
std::string state = content["state"];
+
if (state == "upload")
{
uploadUpload(content);
@@ -343,6 +342,7 @@ void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reaso
//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE);
}
+
//virtual
void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content)
{
@@ -351,6 +351,7 @@ void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content)
(*mCallBack)(false, mUserData);
}
LLAssetUploadResponder::uploadFailure(content);
+
//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], FALSE);
}
@@ -397,10 +398,14 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
// continue uploading for bulk uploads
- if (!gUploadQueue.empty())
+ /* Singu Note: sUploadQueue was never getting populated, anywhere! Therefore, this entire block never was reached.
+ ** I have condensed it to here in the hopes it may one day see use. Apparently, it came in with Siana's prep work
+ ** for mesh upload (697dd7e9298282590f8cf858a58335f70302532b), but we never needed it.
+ static std::deque sUploadQueue;
+ if (!sUploadQueue.empty())
{
- std::string next_file = gUploadQueue.front();
- gUploadQueue.pop_front();
+ std::string next_file = sUploadQueue.front();
+ sUploadQueue.pop_front();
if (next_file.empty()) return;
std::string name = gDirUtilp->getBaseFileName(next_file, true);
@@ -448,6 +453,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
expected_upload_cost,
userdata);
}
+ */
}
LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data,
@@ -698,6 +704,7 @@ void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content)
}
}
+
/////////////////////////////////////////////////////
// LLNewAgentInventoryVariablePriceResponder::Impl //
/////////////////////////////////////////////////////
@@ -1165,3 +1172,4 @@ void LLNewAgentInventoryVariablePriceResponder::showConfirmationDialog(
boost::intrusive_ptr(this)));
}
}
+
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 7eb89b582..a111d95de 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -3,10 +3,9 @@
* @brief "File" menu in the main menu bar.
*
* $LicenseInfo:firstyear=2002&license=viewergpl$
- *
+ * Second Life Viewer Source Code
* Copyright (c) 2002-2009, Linden Research, Inc.
*
- * Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
@@ -63,11 +62,9 @@
#include "lltrans.h"
#include "llfloaterbuycurrency.h"
//
-#include "llselectmgr.h"
+#include "floaterlocalassetbrowse.h"
#include "llassettype.h"
#include "llinventorytype.h"
-#include "llbvhloader.h"
-#include "lllocalinventory.h"
//
// linden libraries
@@ -89,12 +86,9 @@
#include
#include "hippogridmanager.h"
-#include "importtracker.h"
using namespace LLOldEvents;
-std::deque gUploadQueue;
-
typedef LLMemberListener view_listener_t;
@@ -502,6 +496,15 @@ class LLFileMinimizeAllWindows : public view_listener_t
return true;
}
};
+
+class LLFileLocalAssetBrowser : public view_listener_t
+{
+ bool handleEvent(LLPointer, const LLSD&)
+ {
+ FloaterLocalAssetBrowser::show(0);
+ return true;
+ }
+};
//
class LLFileSavePreview : public view_listener_t
@@ -600,20 +603,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
}
};
-class LLFileLogOut : public view_listener_t
-{
- bool handleEvent(LLPointer event, const LLSD& userdata)
- {
- std::string command(gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() + gDirUtilp->getExecutableFilename());
- gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
- gViewerWindow->getWindow()->ShellEx(command);
- gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
- LLAppViewer::instance()->userQuit();
- gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
- return true;
- }
-};
-
class LLFileQuit : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
@@ -696,7 +685,7 @@ void upload_new_resource(const std::string& src_filename, std::string name,
"No file extension for the file: '%s'\nPlease make sure the file has a correct file extension",
short_name.c_str());
args["FILE"] = short_name;
- upload_error(error_message, "NofileExtension", filename, args);
+ upload_error(error_message, "NoFileExtension", filename, args);
return;
}
else if (codec == IMG_CODEC_J2C)
@@ -992,16 +981,10 @@ void temp_upload_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
perms->setMaskEveryone(PERM_ALL);
perms->setMaskGroup(PERM_ALL);
perms->setMaskNext(PERM_ALL);
-
- LLUUID destination = gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE);
- BOOL bUseSystemInventory = (gSavedSettings.getBOOL("AscentUseSystemFolder") && gSavedSettings.getBOOL("AscentSystemTemporary"));
- if (bUseSystemInventory)
- {
- destination = gSystemFolderAssets;
- }
+
LLViewerInventoryItem* item = new LLViewerInventoryItem(
item_id,
- destination,
+ gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE),
*perms,
uuid,
(LLAssetType::EType)data->mAssetInfo.mType,
@@ -1011,16 +994,10 @@ void temp_upload_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
LLSaleInfo::DEFAULT,
0,
time_corrected());
- if (bUseSystemInventory)
- {
- LLLocalInventory::addItem(item);
- }
- else
- {
- item->updateServer(TRUE);
- gInventory.updateItem(item);
- gInventory.notifyObservers();
- }
+
+ item->updateServer(TRUE);
+ gInventory.updateItem(item);
+ gInventory.notifyObservers();
}
else
{
@@ -1129,40 +1106,44 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
data = NULL;
}
-static LLAssetID upload_new_resource_prep(const LLTransactionID& tid,
- LLAssetType::EType asset_type,
- LLInventoryType::EType& inventory_type,
- std::string& name,
- const std::string& display_name,
- std::string& description)
+static LLAssetID upload_new_resource_prep(
+ const LLTransactionID& tid,
+ LLAssetType::EType asset_type,
+ LLInventoryType::EType& inventory_type,
+ std::string& name,
+ const std::string& display_name,
+ std::string& description)
{
LLAssetID uuid = generate_asset_id_for_new_upload(tid);
increase_new_upload_stats(asset_type);
- assign_defaults_and_show_upload_message(asset_type,
- inventory_type,
- name,
- display_name,
- description);
+ assign_defaults_and_show_upload_message(
+ asset_type,
+ inventory_type,
+ name,
+ display_name,
+ description);
return uuid;
}
-LLSD generate_new_resource_upload_capability_body(LLAssetType::EType asset_type,
- const std::string& name,
- const std::string& desc,
- LLFolderType::EType destination_folder_type,
- LLInventoryType::EType inv_type,
- U32 next_owner_perms,
- U32 group_perms,
- U32 everyone_perms)
+LLSD generate_new_resource_upload_capability_body(
+ LLAssetType::EType asset_type,
+ const std::string& name,
+ const std::string& desc,
+ LLFolderType::EType destination_folder_type,
+ LLInventoryType::EType inv_type,
+ U32 next_owner_perms,
+ U32 group_perms,
+ U32 everyone_perms)
{
LLSD body;
- body["folder_id"] = gInventory.findCategoryUUIDForType(destination_folder_type == LLFolderType::FT_NONE ?
- LLFolderType::assetTypeToFolderType(asset_type) :
- destination_folder_type);
+ body["folder_id"] = gInventory.findCategoryUUIDForType(
+ destination_folder_type == LLFolderType::FT_NONE ?
+ LLFolderType::assetTypeToFolderType(asset_type) :
+ destination_folder_type);
body["asset_type"] = LLAssetType::lookup(asset_type);
body["inventory_type"] = LLInventoryType::lookup(inv_type);
@@ -1175,28 +1156,36 @@ LLSD generate_new_resource_upload_capability_body(LLAssetType::EType asset_type,
return body;
}
-bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_type,
- std::string name,
- std::string desc, S32 compression_info,
- LLFolderType::EType destination_folder_type,
- LLInventoryType::EType inv_type,
- U32 next_owner_perms,
- U32 group_perms,
- U32 everyone_perms,
- const std::string& display_name,
- LLAssetStorage::LLStoreAssetCallback callback,
- S32 expected_upload_cost,
- void *userdata,
- void (*callback2)(bool, void*))
+bool upload_new_resource(
+ const LLTransactionID &tid,
+ LLAssetType::EType asset_type,
+ std::string name,
+ std::string desc,
+ S32 compression_info,
+ LLFolderType::EType destination_folder_type,
+ LLInventoryType::EType inv_type,
+ U32 next_owner_perms,
+ U32 group_perms,
+ U32 everyone_perms,
+ const std::string& display_name,
+ LLAssetStorage::LLStoreAssetCallback callback,
+ S32 expected_upload_cost,
+ void *userdata,
+ void (*callback2)(bool, void*))
{
if(gDisconnected)
{
return false;
}
-
- LLAssetID uuid = upload_new_resource_prep(tid, asset_type, inv_type,
- name, display_name, desc);
+ LLAssetID uuid =
+ upload_new_resource_prep(
+ tid,
+ asset_type,
+ inv_type,
+ name,
+ display_name,
+ desc);
llinfos << "*** Uploading: "
<< "\nType: " << LLAssetType::lookup(asset_type)
<< "\nUUID: " << uuid
@@ -1216,6 +1205,7 @@ bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
//
{
llinfos << "New Agent Inventory via capability" << llendl;
+
LLSD body;
body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type);
body["asset_type"] = LLAssetType::lookup(asset_type);
@@ -1227,8 +1217,15 @@ bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
body["everyone_mask"] = LLSD::Integer(everyone_perms);
body["expected_upload_cost"] = LLSD::Integer(expected_upload_cost);
- LLHTTPClient::post(url, body,
- new LLNewAgentInventoryResponder(body, uuid, asset_type, callback2, userdata));
+ LLHTTPClient::post(
+ url,
+ body,
+ new LLNewAgentInventoryResponder(
+ body,
+ uuid,
+ asset_type,
+ callback2,
+ userdata));
}
else
{
@@ -1274,12 +1271,14 @@ bool upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
{
asset_callback = callback;
}
- gAssetStorage->storeAssetData(data->mAssetInfo.mTransactionID, data->mAssetInfo.mType,
- asset_callback,
- (void*)data,
- temporary,
- TRUE,
- temporary);
+ gAssetStorage->storeAssetData(
+ data->mAssetInfo.mTransactionID,
+ data->mAssetInfo.mType,
+ asset_callback,
+ (void*)data,
+ temporary,
+ TRUE,
+ temporary);
}
// Return true when a call to a callback function will follow.
@@ -1330,6 +1329,7 @@ void assign_defaults_and_show_upload_message(LLAssetType::EType asset_type,
}
LLStringUtil::stripNonprintable(name);
LLStringUtil::stripNonprintable(description);
+
if (name.empty())
{
name = "(No Name)";
@@ -1345,6 +1345,7 @@ void assign_defaults_and_show_upload_message(LLAssetType::EType asset_type,
LLUploadDialog::modalUploadDialog(upload_message);
}
+
void init_menu_file()
{
(new LLFileUploadImage())->registerListener(gMenuHolder, "File.UploadImage");
@@ -1358,13 +1359,13 @@ void init_menu_file()
(new LLFileEnableCloseAllWindows())->registerListener(gMenuHolder, "File.EnableCloseAllWindows");
//
(new LLFileMinimizeAllWindows())->registerListener(gMenuHolder, "File.MinimizeAllWindows");
+ (new LLFileLocalAssetBrowser())->registerListener(gMenuHolder, "File.LocalAssetBrowser");
//
(new LLFileSavePreview())->registerListener(gMenuHolder, "File.SavePreview");
(new LLFileSavePreviewPNG())->registerListener(gMenuHolder, "File.SavePreviewPNG");
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");
- (new LLFileLogOut())->registerListener(gMenuHolder, "File.LogOut");
(new LLFileEnableUpload())->registerListener(gMenuHolder, "File.EnableUpload");
(new LLFileEnableUploadModel())->registerListener(gMenuHolder, "File.EnableUploadModel");
diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h
index 426a5a4bf..65ff1a425 100644
--- a/indra/newview/llviewermenufile.h
+++ b/indra/newview/llviewermenufile.h
@@ -48,8 +48,6 @@ class NewResourceItemCallback : public LLInventoryCallback
class LLTransactionID;
-extern std::deque gUploadQueue;
-
void init_menu_file();
void upload_new_resource(const std::string& src_filename,
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1044f1f59..843c9ad81 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2830,14 +2830,17 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
static const LLCachedControl NAME_SHOW_TIME("RenderNameShowTime",10); // seconds
static const LLCachedControl FADE_DURATION("RenderNameFadeDuration",1); // seconds
static const LLCachedControl use_chat_bubbles("UseChatBubbles",false);
+ static const LLCachedControl use_typing_bubbles("UseTypingBubbles");
static const LLCachedControl render_name_hide_self("RenderNameHideSelf",false);
static const LLCachedControl allow_nameplate_override ("CCSAllowNameplateOverride", true);
-// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.0b
+// [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-0.2.0b
bool fRlvShowNames = gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES);
// [/RLVa:KB]
BOOL visible_avatar = isVisible() || mNeedsAnimUpdate;
BOOL visible_chat = use_chat_bubbles && (mChats.size() || mTyping);
+ bool visible_typing = use_typing_bubbles && mTyping;
BOOL render_name = visible_chat ||
+ visible_typing ||
(visible_avatar &&
// [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-1.0.0h
( (!fRlvShowNames) || (RlvSettings::getShowNameTags()) ) &&
@@ -2871,6 +2874,11 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
mVisibleChat = visible_chat;
new_name = TRUE;
}
+ if (visible_typing != mVisibleTyping)
+ {
+ mVisibleTyping = visible_typing;
+ new_name = true;
+ }
// [RLVa:KB] - Checked: 2010-04-04 (RLVa-1.2.2a) | Added: RLVa-0.2.0b
if (fRlvShowNames)
@@ -2895,7 +2903,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
if (mAppAngle > 5.f)
{
const F32 START_FADE_TIME = NAME_SHOW_TIME - FADE_DURATION;
- if (!visible_chat && sRenderName == RENDER_NAME_FADE && time_visible > START_FADE_TIME)
+ if (!visible_chat && !visible_typing && sRenderName == RENDER_NAME_FADE && time_visible > START_FADE_TIME)
{
alpha = 1.f - (time_visible - START_FADE_TIME) / FADE_DURATION;
}
@@ -3271,7 +3279,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
new_name = TRUE;
}
- if (mVisibleChat)
+ if (mVisibleChat || mVisibleTyping)
{
mNameText->setFont(LLFontGL::getFontSansSerif());
mNameText->setTextAlignment(LLHUDNameTag::ALIGN_TEXT_LEFT);
@@ -3281,6 +3289,8 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
mNameText->clearString();
LLColor4 new_chat = gColors.getColor( "AvatarNameColor" );
+ if (mVisibleChat)
+ {
LLColor4 normal_chat = lerp(new_chat, LLColor4(0.8f, 0.8f, 0.8f, 1.f), 0.7f);
LLColor4 old_chat = lerp(normal_chat, LLColor4(0.6f, 0.6f, 0.6f, 1.f), 0.7f);
if (mTyping && mChats.size() >= MAX_BUBBLE_CHAT_UTTERANCES)
@@ -3320,6 +3330,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
mNameText->addLine(chat_iter->mText, old_chat, style);
}
}
+ }
mNameText->setVisibleOffScreen(TRUE);
if (mTyping)
@@ -3351,7 +3362,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
void LLVOAvatar::addNameTagLine(const std::string& line, const LLColor4& color, S32 style, const LLFontGL* font)
{
llassert(mNameText);
- if (mVisibleChat)
+ if (mVisibleChat || mVisibleTyping)
{
mNameText->addLabel(line);
}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index b4f8f12f0..90d9bcd62 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -814,6 +814,7 @@ public:
void stopTyping() { mTyping = FALSE; mIdleTimer.reset();}
private:
BOOL mVisibleChat;
+ bool mVisibleTyping;
//--------------------------------------------------------------------
// Lip synch morphs
diff --git a/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/indra/newview/skins/default/xui/en-us/menu_viewer.xml
index 4cf1dd66d..988513a4b 100644
--- a/indra/newview/skins/default/xui/en-us/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en-us/menu_viewer.xml
@@ -37,6 +37,9 @@
+
+
+
@@ -44,6 +47,9 @@
+
+
+
diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml
index d2bb0c5a5..b1910f032 100644
--- a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml
+++ b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_chat.xml
@@ -24,6 +24,7 @@
+
Show links on chatting object names in chat history for:
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index c8d33a2e4..21e7d6395 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -8,6 +8,7 @@
+
@@ -15,6 +16,7 @@
+
@@ -240,4 +242,4 @@
-
\ No newline at end of file
+
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml
index c9fe2c813..9ef71a46c 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_chat.xml
@@ -11,6 +11,7 @@
+
Active un lien qui montre le nom du propriétaire dans l'historique du chat pour :
Aucun objet
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_system.xml b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_system.xml
index 506c5b591..a63cf082c 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_system.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_system.xml
@@ -71,6 +71,7 @@
+
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_network.xml b/indra/newview/skins/default/xui/fr/panel_preferences_network.xml
index 4fa83170c..fd167c580 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_network.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_network.xml
@@ -3,37 +3,31 @@
Bande passante max:
kbps (kilobits par seconde)
Bande passante de la texture:
- kbps (kilobits par seconde)
-
- kbps (kilobits par seconde)
+
+ kbps (kilobits par seconde)
Utiliser HTTP pour:
-
Taille du cache:
Mo
-
+
Emplacement du cache:
-
-
- Proxy Http:
+
+
- aucun
+ Aucun
Socks
Web
- Hôte Socks 5:
-
-
+ Hôte Socks 5 :
+
Authentification:
- aucune
- Nom/Mot de passe
+ Aucune
+ Nom/Mot de passe
Nom:
-
Mot de Passe:
-
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 356de18bf..dd324ae00 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1,35 +1,36 @@
-#!/usr/bin/python
-# @file viewer_manifest.py
-# @author Ryan Williams
-# @brief Description of all installer viewer files, and methods for packaging
-# them into installers for all supported platforms.
-#
-# $LicenseInfo:firstyear=2006&license=viewergpl$
-#
-# Copyright (c) 2006-2009, Linden Research, Inc.
-#
-# Second Life Viewer Source Code
-# The source code in this file ("Source Code") is provided by Linden Lab
-# to you under the terms of the GNU General Public License, version 2.0
-# ("GPL"), unless you have obtained a separate licensing agreement
-# ("Other License"), formally executed by you and Linden Lab. Terms of
-# the GPL can be found in doc/GPL-license.txt in this distribution, or
-# online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
-#
-# There are special exceptions to the terms and conditions of the GPL as
-# it is applied to this Source Code. View the full text of the exception
-# in the file doc/FLOSS-exception.txt in this software distribution, or
-# online at
-# http://secondlifegrid.net/programs/open_source/licensing/flossexception
-#
-# By copying, modifying or distributing this software, you acknowledge
-# that you have read and understood your obligations described above,
-# and agree to abide by those obligations.
-#
-# ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
-# WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
-# COMPLETENESS OR PERFORMANCE.
-# $/LicenseInfo$
+#!/usr/bin/env python
+"""\
+@file viewer_manifest.py
+@author Ryan Williams
+@brief Description of all installer viewer files, and methods for packaging
+ them into installers for all supported platforms.
+
+$LicenseInfo:firstyear=2006&license=viewergpl$
+Second Life Viewer Source Code
+Copyright (c) 2006-2009, Linden Research, Inc.
+
+The source code in this file ("Source Code") is provided by Linden Lab
+to you under the terms of the GNU General Public License, version 2.0
+("GPL"), unless you have obtained a separate licensing agreement
+("Other License"), formally executed by you and Linden Lab. Terms of
+the GPL can be found in doc/GPL-license.txt in this distribution, or
+online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+
+There are special exceptions to the terms and conditions of the GPL as
+it is applied to this Source Code. View the full text of the exception
+in the file doc/FLOSS-exception.txt in this software distribution, or
+online at
+http://secondlifegrid.net/programs/open_source/licensing/flossexception
+
+By copying, modifying or distributing this software, you acknowledge
+that you have read and understood your obligations described above,
+and agree to abide by those obligations.
+
+ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+COMPLETENESS OR PERFORMANCE.
+$/LicenseInfo$
+"""
import sys
import os.path
import re
@@ -56,10 +57,13 @@ class ViewerManifest(LLManifest):
# include the entire shaders directory recursively
self.path("shaders")
+
# ... and the entire windlight directory
self.path("windlight")
+
# ... and the hunspell dictionaries
self.path("dictionaries")
+
self.end_prefix("app_settings")
if self.prefix(src="character"):
@@ -104,6 +108,7 @@ class ViewerManifest(LLManifest):
self.path("*/*/*.html")
self.path("*/*/*.gif")
self.end_prefix("*/html")
+
self.end_prefix("skins")
# Files in the newview/ directory
@@ -359,6 +364,7 @@ class WindowsManifest(ViewerManifest):
result += 'File ' + pkg_file + '\n'
else:
result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n'
+
# at the end of a delete, just rmdir all the directories
if not install:
deleted_file_dirs = [os.path.dirname(pair[1].replace(self.get_dst_prefix()+os.path.sep,'')) for pair in self.file_list]
@@ -695,6 +701,9 @@ class LinuxManifest(ViewerManifest):
self.path("wrapper.sh",self.wrapper_name())
self.path("handle_secondlifeprotocol.sh")
self.path("register_secondlifeprotocol.sh")
+ self.path("refresh_desktop_app_entry.sh")
+ self.path("launch_url.sh")
+ self.path("install.sh")
self.end_prefix("linux_tools")
# Create an appropriate gridargs.dat for this package, denoting required grid.
@@ -707,7 +716,6 @@ class LinuxManifest(ViewerManifest):
self.path("secondlife-bin","bin/"+self.binary_name())
self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin")
- self.path("linux_tools/launch_url.sh","launch_url.sh")
self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin")
if self.prefix("res-sdl"):
self.path("*")