svn merge -r76807:77355 svn+ssh://svn.lindenlab.com/svn/linden/branches/Branch_1-18-6-Viewer --> release
Pick up fixes made to 1.18.6 Viewer, including: * DEV-8584 Replace "Second Life" with Channel name in viewer crash log reports * DEV-8384 Connect button doesn't enable * DEV-8408 Unable to edit First/last name and password fields in viewer login * DEV-8423 VWR-3948: Underlayers no longer removable by pie menu in Windlight, release candidates * DEV-8557 Crash on login page when using Logitech LCD Keyboard * DEV-8507 Crash reporter has no default server to send to when crashing before agent connect * DEV-8531 viewer_manifest.py broken for 64-bit builds * DEV-8286 German Translation of the "Release Keys" tab is incorrect * DEV-7419 Unable to set 'Group Access' for land that is also 'Public Access' (Was VWR-3667) * DEV-6851 Integrate html error page with clientmaster
parent
dc2684fa1d
commit
e7a8acadc4
|
|
@ -265,6 +265,7 @@ Seg Baphomet
|
|||
VWR-1585
|
||||
VWR-1586
|
||||
VWR-3206
|
||||
VWR-2488
|
||||
SignpostMarv Martin
|
||||
VWR-153
|
||||
VWR-154
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
const S32 LL_VERSION_MAJOR = 1;
|
||||
const S32 LL_VERSION_MINOR = 18;
|
||||
const S32 LL_VERSION_PATCH = 6;
|
||||
const S32 LL_VERSION_BUILD = 3;
|
||||
const S32 LL_VERSION_BUILD = 4;
|
||||
|
||||
const char * const LL_CHANNEL = "Second Life Release";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/**
|
||||
* @file llcrashlogger.cpp
|
||||
* @brief Crash logger implementation
|
||||
*
|
||||
|
|
@ -144,9 +144,18 @@ void LLCrashLogger::gatherFiles()
|
|||
mCrashHost = "https://";
|
||||
mCrashHost += mDebugLog["CurrentSimHost"].asString();
|
||||
mCrashHost += ":12043/crash/report";
|
||||
mAltCrashHost = "https://";
|
||||
mAltCrashHost += mDebugLog["GridUtilHost"].asString();
|
||||
mAltCrashHost += ":12043/crash/report";
|
||||
// Use login servers as the alternate, since they are already load balanced and have a known name
|
||||
// First, check to see if we have a valid grid name. If not, use agni.
|
||||
mAltCrashHost = "https://login.";
|
||||
if(mDebugLog["GridName"].asString() != "")
|
||||
{
|
||||
mAltCrashHost += mDebugLog["GridName"].asString();
|
||||
}
|
||||
else
|
||||
{
|
||||
mAltCrashHost += "agni";
|
||||
}
|
||||
mAltCrashHost += ".lindenlab.com:12043/crash/report";
|
||||
|
||||
mCrashInfo["DebugLog"] = mDebugLog;
|
||||
mFileMap["StatsLog"] = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stats.log");
|
||||
|
|
@ -230,9 +239,6 @@ bool LLCrashLogger::sendCrashLogs()
|
|||
updateApplication("Sending logs...");
|
||||
}
|
||||
|
||||
//util.* servers no longer have a public interface, so there's no alternate server anymore.
|
||||
//leaving this in if we decide we need another alternate server for crash report receiving.
|
||||
/*
|
||||
if(!gSent)
|
||||
{
|
||||
gBreak = false;
|
||||
|
|
@ -243,7 +249,7 @@ bool LLCrashLogger::sendCrashLogs()
|
|||
updateApplication("Sending logs to Alternate Server...");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
mSentCrashLogs = gSent;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
|
||||
CFBundleName = "Second Life";
|
||||
CFBundleShortVersionString = "Second Life version 1.18.6.3";
|
||||
CFBundleGetInfoString = "Second Life version 1.18.6.3, Copyright 2004-2007 Linden Research, Inc.";
|
||||
CFBundleShortVersionString = "Second Life version 1.18.6.4";
|
||||
CFBundleGetInfoString = "Second Life version 1.18.6.4, Copyright 2004-2007 Linden Research, Inc.";
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.18.6.3</string>
|
||||
<string>1.18.6.4</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
|
|
|||
|
|
@ -2501,7 +2501,7 @@ void LLAppViewer::writeSystemInfo()
|
|||
{
|
||||
gDebugInfo["SLLog"] = LLError::logFileName();
|
||||
|
||||
gDebugInfo["ClientInfo"]["Name"] = gSecondLife;
|
||||
gDebugInfo["ClientInfo"]["Name"] = gChannelName;
|
||||
gDebugInfo["ClientInfo"]["MajorVersion"] = LL_VERSION_MAJOR;
|
||||
gDebugInfo["ClientInfo"]["MinorVersion"] = LL_VERSION_MINOR;
|
||||
gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH;
|
||||
|
|
|
|||
|
|
@ -2536,7 +2536,7 @@ LLPanelLandAccess::LLPanelLandAccess(LLParcelSelectionHandle& parcel)
|
|||
|
||||
BOOL LLPanelLandAccess::postBuild()
|
||||
{
|
||||
childSetCommitCallback("public_access", onCommitAny, this);
|
||||
childSetCommitCallback("public_access", onCommitPublicAccess, this);
|
||||
childSetCommitCallback("limit_payment", onCommitAny, this);
|
||||
childSetCommitCallback("limit_age_verified", onCommitAny, this);
|
||||
childSetCommitCallback("GroupCheck", onCommitAny, this);
|
||||
|
|
@ -2580,7 +2580,7 @@ void LLPanelLandAccess::refresh()
|
|||
{
|
||||
BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST);
|
||||
BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
|
||||
BOOL public_access = !use_access_list;
|
||||
BOOL public_access = !use_access_list && !use_group;
|
||||
|
||||
childSetValue("public_access", public_access );
|
||||
childSetValue("GroupCheck", use_group );
|
||||
|
|
@ -2767,6 +2767,7 @@ void LLPanelLandAccess::refresh_ui()
|
|||
{
|
||||
childSetToolTip("Only Allow", LLString());
|
||||
}
|
||||
childSetEnabled("GroupCheck", FALSE);
|
||||
childSetEnabled("PassCheck", FALSE);
|
||||
childSetEnabled("pass_combo", FALSE);
|
||||
childSetEnabled("AccessList", FALSE);
|
||||
|
|
@ -2775,6 +2776,11 @@ void LLPanelLandAccess::refresh_ui()
|
|||
{
|
||||
childSetEnabled("limit_payment", FALSE);
|
||||
childSetEnabled("limit_age_verified", FALSE);
|
||||
char group_name[MAX_STRING]; /*Flawfinder: ignore*/
|
||||
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
|
||||
{
|
||||
childSetEnabled("GroupCheck", can_manage_allowed);
|
||||
}
|
||||
BOOL group_access = childGetValue("GroupCheck").asBoolean();
|
||||
BOOL sell_passes = childGetValue("PassCheck").asBoolean();
|
||||
childSetEnabled("PassCheck", can_manage_allowed);
|
||||
|
|
@ -2785,13 +2791,6 @@ void LLPanelLandAccess::refresh_ui()
|
|||
childSetEnabled("HoursSpin", can_manage_allowed);
|
||||
}
|
||||
}
|
||||
|
||||
char group_name[MAX_STRING]; /*Flawfinder: ignore*/
|
||||
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
|
||||
{
|
||||
childSetEnabled("GroupCheck", can_manage_allowed);
|
||||
}
|
||||
|
||||
childSetEnabled("AccessList", can_manage_allowed);
|
||||
S32 allowed_list_count = parcel->mAccessList.size();
|
||||
childSetEnabled("add_allowed", can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
|
||||
|
|
@ -2827,6 +2826,29 @@ void LLPanelLandAccess::draw()
|
|||
LLPanel::draw();
|
||||
}
|
||||
|
||||
// static
|
||||
void LLPanelLandAccess::onCommitPublicAccess(LLUICtrl *ctrl, void *userdata)
|
||||
{
|
||||
LLPanelLandAccess *self = (LLPanelLandAccess *)userdata;
|
||||
LLParcel* parcel = self->mParcel->getParcel();
|
||||
if (!parcel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If we disabled public access, enable group access by default (if applicable)
|
||||
BOOL public_access = self->childGetValue("public_access").asBoolean();
|
||||
if (public_access == FALSE)
|
||||
{
|
||||
char group_name[MAX_STRING]; /*Flawfinder: ignore*/
|
||||
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
|
||||
{
|
||||
self->childSetValue("GroupCheck", public_access ? FALSE : TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
onCommitAny(ctrl, userdata);
|
||||
}
|
||||
|
||||
// static
|
||||
void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
|
||||
|
|
@ -2841,7 +2863,6 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
|
|||
|
||||
// Extract data from UI
|
||||
BOOL public_access = self->childGetValue("public_access").asBoolean();
|
||||
|
||||
BOOL use_access_group = self->childGetValue("GroupCheck").asBoolean();
|
||||
if (use_access_group)
|
||||
{
|
||||
|
|
@ -2859,6 +2880,7 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
|
|||
if (public_access)
|
||||
{
|
||||
use_access_list = FALSE;
|
||||
use_access_group = FALSE;
|
||||
limit_payment = self->childGetValue("limit_payment").asBoolean();
|
||||
limit_age_verified = self->childGetValue("limit_age_verified").asBoolean();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -395,6 +395,7 @@ public:
|
|||
void refreshNames();
|
||||
virtual void draw();
|
||||
|
||||
static void onCommitPublicAccess(LLUICtrl* ctrl, void *userdata);
|
||||
static void onCommitAny(LLUICtrl* ctrl, void *userdata);
|
||||
static void onClickAddAccess(void*);
|
||||
static void callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* userdata);
|
||||
|
|
|
|||
|
|
@ -85,6 +85,25 @@ const S32 MAX_PASSWORD = 16;
|
|||
LLPanelLogin *LLPanelLogin::sInstance = NULL;
|
||||
|
||||
|
||||
class LLLoginRefreshHandler : public LLCommandHandler
|
||||
{
|
||||
public:
|
||||
LLLoginRefreshHandler() : LLCommandHandler("login_refresh") { }
|
||||
bool handle(const LLSD& tokens, const LLSD& queryMap)
|
||||
{
|
||||
#if LL_LIBXUL_ENABLED
|
||||
if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP)
|
||||
{
|
||||
LLPanelLogin::loadLoginPage();
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
LLLoginRefreshHandler gLoginRefreshHandler;
|
||||
|
||||
|
||||
//parses the input url and returns true if afterwards
|
||||
//a web-login-key, firstname and lastname is set
|
||||
bool LLLoginHandler::parseDirectLogin(std::string url)
|
||||
|
|
|
|||
|
|
@ -777,9 +777,6 @@ BOOL idle_startup()
|
|||
gSavedSettings.setString("FirstName", firstname);
|
||||
gSavedSettings.setString("LastName", lastname);
|
||||
|
||||
|
||||
|
||||
|
||||
llinfos << "Attempting login as: " << firstname << " " << lastname << llendl;
|
||||
gDebugInfo["LoginName"] = firstname + " " + lastname;
|
||||
}
|
||||
|
|
@ -899,7 +896,7 @@ BOOL idle_startup()
|
|||
if(STATE_LOGIN_AUTH_INIT == LLStartUp::getStartupState())
|
||||
{
|
||||
//#define LL_MINIMIAL_REQUESTED_OPTIONS
|
||||
gDebugInfo["GridUtilHost"] = gGridInfo[gGridChoice].mName;
|
||||
gDebugInfo["GridName"] = gGridInfo[gGridChoice].mLabel;
|
||||
|
||||
lldebugs << "STATE_LOGIN_AUTH_INIT" << llendl;
|
||||
if (!gUserAuthp)
|
||||
|
|
@ -1486,6 +1483,7 @@ BOOL idle_startup()
|
|||
|
||||
// Finish agent initialization. (Requires gSavedSettings, builds camera)
|
||||
gAgent.init();
|
||||
set_underclothes_menu_options();
|
||||
|
||||
// Since we connected, save off the settings so the user doesn't have to
|
||||
// type the name/password again if we crash.
|
||||
|
|
|
|||
|
|
@ -607,6 +607,21 @@ void initialize_menus();
|
|||
//
|
||||
// Break up groups of more than 6 items with separators
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void set_underclothes_menu_options()
|
||||
{
|
||||
if (gMenuHolder && gAgent.isTeen())
|
||||
{
|
||||
gMenuHolder->getChildByName("Self Underpants", TRUE)->setVisible(FALSE);
|
||||
gMenuHolder->getChildByName("Self Undershirt", TRUE)->setVisible(FALSE);
|
||||
}
|
||||
if (gMenuBarView && gAgent.isTeen())
|
||||
{
|
||||
gMenuBarView->getChildByName("Menu Underpants", TRUE)->setVisible(FALSE);
|
||||
gMenuBarView->getChildByName("Menu Undershirt", TRUE)->setVisible(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
void init_menus()
|
||||
{
|
||||
S32 top = gViewerWindow->getRootView()->getRect().getHeight();
|
||||
|
|
@ -643,12 +658,6 @@ void init_menus()
|
|||
gDetachScreenPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Detach HUD", true);
|
||||
gDetachPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Detach", true);
|
||||
|
||||
if (gAgent.isTeen())
|
||||
{
|
||||
gMenuHolder->getChildByName("Self Underpants", TRUE)->setVisible(FALSE);
|
||||
gMenuHolder->getChildByName("Self Undershirt", TRUE)->setVisible(FALSE);
|
||||
}
|
||||
|
||||
gPieAvatar = gUICtrlFactory->buildPieMenu("menu_pie_avatar.xml", gMenuHolder);
|
||||
|
||||
gPieObject = gUICtrlFactory->buildPieMenu("menu_pie_object.xml", gMenuHolder);
|
||||
|
|
@ -710,12 +719,6 @@ void init_menus()
|
|||
gAttachSubMenu = gMenuBarView->getChildMenuByName("Attach Object", TRUE);
|
||||
gDetachSubMenu = gMenuBarView->getChildMenuByName("Detach Object", TRUE);
|
||||
|
||||
if (gAgent.isTeen())
|
||||
{
|
||||
gMenuBarView->getChildByName("Menu Underpants", TRUE)->setVisible(FALSE);
|
||||
gMenuBarView->getChildByName("Menu Undershirt", TRUE)->setVisible(FALSE);
|
||||
}
|
||||
|
||||
// TomY TODO convert these two
|
||||
LLMenuGL*menu;
|
||||
|
||||
|
|
@ -763,6 +766,8 @@ void init_menus()
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void init_landmark_menu(LLMenuGL* menu)
|
||||
{
|
||||
if (!menu) return;
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ BOOL enable_god_liaison(void* user_data);
|
|||
BOOL enable_god_customer_service(void* user_data);
|
||||
BOOL enable_god_basic(void* user_data);
|
||||
void handle_show_newest_map(void*);
|
||||
void set_underclothes_menu_options();
|
||||
|
||||
void exchange_callingcard(const LLUUID& dest_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -409,7 +409,7 @@ class DarwinManifest(ViewerManifest):
|
|||
# make sure we don't have stale files laying about
|
||||
self.remove(sparsename, finalname)
|
||||
|
||||
self.run_command('hdiutil create "%(sparse)s" -volname "%(channel)s" -fs HFS+ -type SPARSE -megabytes 300' % {
|
||||
self.run_command('hdiutil create "%(sparse)s" -volname "%(channel)s" -fs HFS+ -type SPARSE -megabytes 300 -layout SPUD' % {
|
||||
'sparse':sparsename,
|
||||
'channel':channel_standin})
|
||||
|
||||
|
|
@ -523,13 +523,14 @@ class Linux_x86_64Manifest(LinuxManifest):
|
|||
super(Linux_x86_64Manifest, self).construct()
|
||||
self.path("secondlife-x86_64-bin-stripped","bin/do-not-directly-run-secondlife-bin")
|
||||
self.path("../linux_crash_logger/linux-crash-logger-x86_64-bin-stripped","linux-crash-logger.bin")
|
||||
# TODO: I get the sense that this isn't fully fleshed out
|
||||
if self.prefix("../../libraries/x86_64-linux/lib_release_client", "lib"):
|
||||
self.path("libkdu_v42R.so")
|
||||
self.path("libxmlrpc.so.0")
|
||||
# self.path("libllkdu.so", "../bin/libllkdu.so") # llkdu goes in bin for some reason
|
||||
self.end_prefix("lib")
|
||||
self.path("linux_tools/launch_url.sh","launch_url.sh")
|
||||
if self.prefix("res-sdl"):
|
||||
self.path("*")
|
||||
# recurse
|
||||
self.end_prefix("res-sdl")
|
||||
|
||||
self.path("featuretable_linux.txt")
|
||||
self.path("secondlife-i686.supp")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(srctree=viewer_dir, dsttree=os.path.join(viewer_dir, "packaged"))
|
||||
|
|
|
|||
Loading…
Reference in New Issue