aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llstartup.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:54 -0500
committerJacek Antonelli2008-08-15 23:44:54 -0500
commitb2afb8800bb033a04bb3ecdf0363068d56648ef1 (patch)
tree3568129b5bbddb47cd39d622b4137a8fbff4abaf /linden/indra/newview/llstartup.cpp
parentSecond Life viewer sources 1.14.0.1 (diff)
downloadmeta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.zip
meta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.tar.gz
meta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.tar.bz2
meta-impy-b2afb8800bb033a04bb3ecdf0363068d56648ef1.tar.xz
Second Life viewer sources 1.15.0.2
Diffstat (limited to '')
-rw-r--r--linden/indra/newview/llstartup.cpp153
1 files changed, 71 insertions, 82 deletions
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 2fe1190..585f769 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -4,6 +4,7 @@
4 * 4 *
5 * Copyright (c) 2004-2007, Linden Research, Inc. 5 * Copyright (c) 2004-2007, Linden Research, Inc.
6 * 6 *
7 * Second Life Viewer Source Code
7 * The source code in this file ("Source Code") is provided by Linden Lab 8 * The source code in this file ("Source Code") is provided by Linden Lab
8 * to you under the terms of the GNU General Public License, version 2.0 9 * to you under the terms of the GNU General Public License, version 2.0
9 * ("GPL"), unless you have obtained a separate licensing agreement 10 * ("GPL"), unless you have obtained a separate licensing agreement
@@ -54,6 +55,7 @@
54#include "llloginflags.h" 55#include "llloginflags.h"
55#include "llmd5.h" 56#include "llmd5.h"
56#include "llmemorystream.h" 57#include "llmemorystream.h"
58#include "llmessageconfig.h"
57#include "llregionhandle.h" 59#include "llregionhandle.h"
58#include "llsd.h" 60#include "llsd.h"
59#include "llsdserialize.h" 61#include "llsdserialize.h"
@@ -86,7 +88,6 @@
86#include "llfloatergesture.h" 88#include "llfloatergesture.h"
87#include "llfloaterland.h" 89#include "llfloaterland.h"
88#include "llfloatertopobjects.h" 90#include "llfloatertopobjects.h"
89#include "llfloaterrate.h"
90#include "llfloatertos.h" 91#include "llfloatertos.h"
91#include "llfloaterworldmap.h" 92#include "llfloaterworldmap.h"
92#include "llframestats.h" 93#include "llframestats.h"
@@ -127,6 +128,7 @@
127#include "llviewerassetstorage.h" 128#include "llviewerassetstorage.h"
128#include "llviewercamera.h" 129#include "llviewercamera.h"
129#include "llviewerdisplay.h" 130#include "llviewerdisplay.h"
131#include "llviewergenericmessage.h"
130#include "llviewergesture.h" 132#include "llviewergesture.h"
131#include "llviewerimagelist.h" 133#include "llviewerimagelist.h"
132#include "llviewermenu.h" 134#include "llviewermenu.h"
@@ -147,8 +149,8 @@
147#include "viewer.h" 149#include "viewer.h"
148#include "llmediaengine.h" 150#include "llmediaengine.h"
149#include "llfasttimerview.h" 151#include "llfasttimerview.h"
152#include "llfloatermap.h"
150#include "llweb.h" 153#include "llweb.h"
151#include "llfloaterhtml.h"
152 154
153#if LL_LIBXUL_ENABLED 155#if LL_LIBXUL_ENABLED
154#include "llmozlib.h" 156#include "llmozlib.h"
@@ -233,7 +235,7 @@ void callback_choose_gender(S32 option, void* userdata);
233void init_start_screen(S32 location_id); 235void init_start_screen(S32 location_id);
234void release_start_screen(); 236void release_start_screen();
235void process_connect_to_userserver(LLMessageSystem* msg, void**); 237void process_connect_to_userserver(LLMessageSystem* msg, void**);
236 238void reset_login();
237 239
238// 240//
239// exported functionality 241// exported functionality
@@ -347,13 +349,16 @@ BOOL idle_startup()
347 { 349 {
348 gViewerWindow->alertXml("DisplaySetToSafe"); 350 gViewerWindow->alertXml("DisplaySetToSafe");
349 } 351 }
350 else if (gSavedSettings.getS32("LastFeatureVersion") < gFeatureManagerp->getVersion()) 352 else if ((gSavedSettings.getS32("LastFeatureVersion") < gFeatureManagerp->getVersion()) &&
353 (gSavedSettings.getS32("LastFeatureVersion") != 0))
351 { 354 {
352 if (gSavedSettings.getS32("LastFeatureVersion") != 0) 355 gViewerWindow->alertXml("DisplaySetToRecommended");
353 { 356 }
354 gViewerWindow->alertXml("DisplaySetToRecommended"); 357 else if (!gViewerWindow->getInitAlert().empty())
355 } 358 {
359 gViewerWindow->alertXml(gViewerWindow->getInitAlert());
356 } 360 }
361
357 gSavedSettings.setS32("LastFeatureVersion", gFeatureManagerp->getVersion()); 362 gSavedSettings.setS32("LastFeatureVersion", gFeatureManagerp->getVersion());
358 363
359 LLString xml_file = LLUI::locateSkin("xui_version.xml"); 364 LLString xml_file = LLUI::locateSkin("xui_version.xml");
@@ -414,6 +419,7 @@ BOOL idle_startup()
414 port = gSavedSettings.getU32("ConnectionPort"); 419 port = gSavedSettings.getU32("ConnectionPort");
415 } 420 }
416 421
422 LLMessageConfig::initClass("viewer", gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, ""));
417 if(!start_messaging_system( 423 if(!start_messaging_system(
418 message_template_path, 424 message_template_path,
419 port, 425 port,
@@ -522,12 +528,11 @@ BOOL idle_startup()
522 // the locale to protect it, as exotic/non-C locales 528 // the locale to protect it, as exotic/non-C locales
523 // causes our code lots of general critical weirdness 529 // causes our code lots of general critical weirdness
524 // and crashness. (SL-35450) 530 // and crashness. (SL-35450)
525 char *saved_locale = setlocale(LC_ALL, NULL); 531 std::string saved_locale = setlocale(LC_ALL, NULL);
526#endif // LL_LINUX 532#endif // LL_LINUX
527 LLMozLib::getInstance()->init( profileBaseDir, gDirUtilp->getExpandedFilename( LL_PATH_MOZILLA_PROFILE, "" ) ); 533 LLMozLib::getInstance()->init( profileBaseDir, gDirUtilp->getExpandedFilename( LL_PATH_MOZILLA_PROFILE, "" ) );
528#if LL_LINUX 534#if LL_LINUX
529 if (saved_locale) 535 setlocale(LC_ALL, saved_locale.c_str() );
530 setlocale(LC_ALL, saved_locale);
531#endif // LL_LINUX 536#endif // LL_LINUX
532 537
533 std::ostringstream codec; 538 std::ostringstream codec;
@@ -768,7 +773,7 @@ BOOL idle_startup()
768 if (gUserServerChoice == USERSERVER_OTHER) 773 if (gUserServerChoice == USERSERVER_OTHER)
769 { 774 {
770 gUserServer.setHostByName( server_label.c_str() ); 775 gUserServer.setHostByName( server_label.c_str() );
771 snprintf(gUserServerName, MAX_STRING, "%s", server_label.c_str()); /* Flawfinder: ignore */ 776 snprintf(gUserServerName, MAX_STRING, "%s", server_label.c_str()); /* Flawfinder: ignore */
772 } 777 }
773 } 778 }
774 779
@@ -875,7 +880,7 @@ BOOL idle_startup()
875 args["[HOST_NAME]"] = host_name; 880 args["[HOST_NAME]"] = host_name;
876 881
877 gViewerWindow->alertXml("UnableToConnect", args, login_alert_done ); 882 gViewerWindow->alertXml("UnableToConnect", args, login_alert_done );
878 gStartupState = STATE_LOGIN_SHOW; 883 reset_login();
879 return FALSE; 884 return FALSE;
880 } 885 }
881 break; 886 break;
@@ -912,7 +917,7 @@ BOOL idle_startup()
912 login_alert_status, NULL); 917 login_alert_status, NULL);
913 918
914 // Back up to login screen 919 // Back up to login screen
915 gStartupState = STATE_LOGIN_SHOW; 920 reset_login();
916 gViewerStats->incStat(LLViewerStats::ST_LOGIN_TIMEOUT_COUNT); 921 gViewerStats->incStat(LLViewerStats::ST_LOGIN_TIMEOUT_COUNT);
917 } 922 }
918 ms_sleep(1); 923 ms_sleep(1);
@@ -928,7 +933,7 @@ BOOL idle_startup()
928 933
929 gViewerWindow->alertXml("PleaseSelectServer", args, login_alert_done ); 934 gViewerWindow->alertXml("PleaseSelectServer", args, login_alert_done );
930 935
931 gStartupState = STATE_LOGIN_SHOW; 936 reset_login();
932 return FALSE; 937 return FALSE;
933 } 938 }
934 939
@@ -958,16 +963,7 @@ BOOL idle_startup()
958 } 963 }
959 964
960 llinfos << "Verifying message template..." << llendl; 965 llinfos << "Verifying message template..." << llendl;
961 966 LLMessageSystem::sendSecureMessageTemplateChecksum(mt_host);
962 // register with the message system so it knows we're
963 // expecting this message
964 LLMessageSystem* msg = gMessageSystem;
965 msg->setHandlerFuncFast(_PREHASH_TemplateChecksumReply, null_message_callback, NULL);
966 msg->newMessageFast(_PREHASH_SecuredTemplateChecksumRequest);
967 msg->nextBlockFast(_PREHASH_TokenBlock);
968 lldebugs << "random token: " << gTemplateToken << llendl;
969 msg->addUUIDFast(_PREHASH_Token, gTemplateToken);
970 msg->sendReliable(mt_host);
971 967
972 timeout.reset(); 968 timeout.reset();
973 gStartupState++; 969 gStartupState++;
@@ -976,40 +972,16 @@ BOOL idle_startup()
976 972
977 if (STATE_MESSAGE_TEMPLATE_WAIT == gStartupState) 973 if (STATE_MESSAGE_TEMPLATE_WAIT == gStartupState)
978 { 974 {
979 U32 remote_template_checksum = 0;
980
981 U8 major_version = 0;
982 U8 minor_version = 0;
983 U8 patch_version = 0;
984 U8 server_version = 0;
985 U32 flags = 0x0;
986
987 LLMessageSystem* msg = gMessageSystem; 975 LLMessageSystem* msg = gMessageSystem;
988 while (msg->checkMessages(gFrameCount)) 976 while (msg->checkAllMessages(gFrameCount, gServicePump))
989 { 977 {
990 if (msg->isMessageFast(_PREHASH_TemplateChecksumReply)) 978 if (msg->isTemplateConfirmed())
991 { 979 {
992 LLUUID token;
993 msg->getUUID("TokenBlock", "Token", token);
994 if(token != gTemplateToken)
995 {
996 llwarns << "Incorrect token in template checksum reply: "
997 << token << llendl;
998 return do_normal_idle;
999 }
1000 msg->getU32("DataBlock", "Checksum", remote_template_checksum);
1001 msg->getU8 ("DataBlock", "MajorVersion", major_version);
1002 msg->getU8 ("DataBlock", "MinorVersion", minor_version);
1003 msg->getU8 ("DataBlock", "PatchVersion", patch_version);
1004 msg->getU8 ("DataBlock", "ServerVersion", server_version);
1005 msg->getU32("DataBlock", "Flags", flags);
1006
1007 BOOL update_available = FALSE; 980 BOOL update_available = FALSE;
1008 BOOL mandatory = FALSE; 981 BOOL mandatory = FALSE;
1009 982
1010 if (remote_template_checksum != msg->mMessageFileChecksum) 983 if (!LLMessageSystem::doesTemplateMatch())
1011 { 984 {
1012 llinfos << "Message template out of sync" << llendl;
1013 // Mandatory update -- message template checksum doesn't match 985 // Mandatory update -- message template checksum doesn't match
1014 update_available = TRUE; 986 update_available = TRUE;
1015 mandatory = TRUE; 987 mandatory = TRUE;
@@ -1029,6 +1001,7 @@ BOOL idle_startup()
1029 quit = TRUE; 1001 quit = TRUE;
1030 } 1002 }
1031 } 1003 }
1004
1032 // Bail out and clean up circuit 1005 // Bail out and clean up circuit
1033 if (quit) 1006 if (quit)
1034 { 1007 {
@@ -1039,7 +1012,6 @@ BOOL idle_startup()
1039 } 1012 }
1040 1013
1041 // If we get here, we've got a compatible message template 1014 // If we get here, we've got a compatible message template
1042
1043 if (!mandatory) 1015 if (!mandatory)
1044 { 1016 {
1045 llinfos << "Message template is current!" << llendl; 1017 llinfos << "Message template is current!" << llendl;
@@ -1076,7 +1048,7 @@ BOOL idle_startup()
1076 NULL); 1048 NULL);
1077 1049
1078 // Back up to login screen 1050 // Back up to login screen
1079 gStartupState = STATE_LOGIN_SHOW; 1051 reset_login();
1080 gViewerStats->incStat(LLViewerStats::ST_LOGIN_TIMEOUT_COUNT); 1052 gViewerStats->incStat(LLViewerStats::ST_LOGIN_TIMEOUT_COUNT);
1081 } 1053 }
1082 else 1054 else
@@ -1206,7 +1178,7 @@ BOOL idle_startup()
1206 } 1178 }
1207 // Process messages to keep from dropping circuit. 1179 // Process messages to keep from dropping circuit.
1208 LLMessageSystem* msg = gMessageSystem; 1180 LLMessageSystem* msg = gMessageSystem;
1209 while (msg->checkMessages(gFrameCount)) 1181 while (msg->checkAllMessages(gFrameCount, gServicePump))
1210 { 1182 {
1211 } 1183 }
1212 msg->processAcks(); 1184 msg->processAcks();
@@ -1231,7 +1203,7 @@ BOOL idle_startup()
1231 } 1203 }
1232 // Process messages to keep from dropping circuit. 1204 // Process messages to keep from dropping circuit.
1233 LLMessageSystem* msg = gMessageSystem; 1205 LLMessageSystem* msg = gMessageSystem;
1234 while (msg->checkMessages(gFrameCount)) 1206 while (msg->checkAllMessages(gFrameCount, gServicePump))
1235 { 1207 {
1236 } 1208 }
1237 msg->processAcks(); 1209 msg->processAcks();
@@ -1622,7 +1594,7 @@ BOOL idle_startup()
1622 LLStringBase<char>::format_map_t args; 1594 LLStringBase<char>::format_map_t args;
1623 args["[ERROR_MESSAGE]"] = emsg.str(); 1595 args["[ERROR_MESSAGE]"] = emsg.str();
1624 gViewerWindow->alertXml("ErrorMessage", args, login_alert_done); 1596 gViewerWindow->alertXml("ErrorMessage", args, login_alert_done);
1625 gStartupState = STATE_LOGIN_SHOW; 1597 reset_login();
1626 gAutoLogin = FALSE; 1598 gAutoLogin = FALSE;
1627 show_connect_box = TRUE; 1599 show_connect_box = TRUE;
1628 } 1600 }
@@ -1639,7 +1611,7 @@ BOOL idle_startup()
1639 LLStringBase<char>::format_map_t args; 1611 LLStringBase<char>::format_map_t args;
1640 args["[ERROR_MESSAGE]"] = emsg.str(); 1612 args["[ERROR_MESSAGE]"] = emsg.str();
1641 gViewerWindow->alertXml("ErrorMessage", args, login_alert_done); 1613 gViewerWindow->alertXml("ErrorMessage", args, login_alert_done);
1642 gStartupState = STATE_LOGIN_SHOW; 1614 reset_login();
1643 gAutoLogin = FALSE; 1615 gAutoLogin = FALSE;
1644 show_connect_box = TRUE; 1616 show_connect_box = TRUE;
1645 } 1617 }
@@ -1937,7 +1909,7 @@ BOOL idle_startup()
1937 ++gStartupState; 1909 ++gStartupState;
1938 } 1910 }
1939 LLMessageSystem* msg = gMessageSystem; 1911 LLMessageSystem* msg = gMessageSystem;
1940 while (msg->checkMessages(gFrameCount)) 1912 while (msg->checkAllMessages(gFrameCount, gServicePump))
1941 { 1913 {
1942 } 1914 }
1943 msg->processAcks(); 1915 msg->processAcks();
@@ -1956,8 +1928,7 @@ BOOL idle_startup()
1956 LLMessageSystem* msg = gMessageSystem; 1928 LLMessageSystem* msg = gMessageSystem;
1957 msg->setHandlerFuncFast( 1929 msg->setHandlerFuncFast(
1958 _PREHASH_AgentMovementComplete, 1930 _PREHASH_AgentMovementComplete,
1959 process_agent_movement_complete, 1931 process_agent_movement_complete);
1960 NULL);
1961 LLViewerRegion* regionp = gAgent.getRegion(); 1932 LLViewerRegion* regionp = gAgent.getRegion();
1962 if(!gRunLocal && regionp) 1933 if(!gRunLocal && regionp)
1963 { 1934 {
@@ -1994,9 +1965,9 @@ BOOL idle_startup()
1994 if (STATE_AGENT_WAIT == gStartupState) 1965 if (STATE_AGENT_WAIT == gStartupState)
1995 { 1966 {
1996 LLMessageSystem* msg = gMessageSystem; 1967 LLMessageSystem* msg = gMessageSystem;
1997 while (msg->checkMessages(gFrameCount)) 1968 while (msg->checkAllMessages(gFrameCount, gServicePump))
1998 { 1969 {
1999 if (msg->isMessageFast(_PREHASH_AgentMovementComplete)) 1970 if (gAgentMovementCompleted)
2000 { 1971 {
2001 gStartupState++; 1972 gStartupState++;
2002 // Sometimes we have more than one message in the 1973 // Sometimes we have more than one message in the
@@ -2794,7 +2765,7 @@ void on_userserver_name_resolved( BOOL success, const LLString& host_name, U32 i
2794 LLStringBase<char>::format_map_t args; 2765 LLStringBase<char>::format_map_t args;
2795 args["[HOST_NAME]"] = host_name; 2766 args["[HOST_NAME]"] = host_name;
2796 gViewerWindow->alertXml("SetByHostFail", args, login_alert_done ); 2767 gViewerWindow->alertXml("SetByHostFail", args, login_alert_done );
2797 gStartupState = STATE_LOGIN_SHOW; 2768 reset_login();
2798 } 2769 }
2799} 2770}
2800 2771
@@ -2896,7 +2867,7 @@ void update_dialog_callback(S32 option, void *userdata)
2896 { 2867 {
2897 app_force_quit(); 2868 app_force_quit();
2898 // Bump them back to the login screen. 2869 // Bump them back to the login screen.
2899 //gStartupState = STATE_LOGIN_SHOW; 2870 //reset_login();
2900 } 2871 }
2901 else 2872 else
2902 { 2873 {
@@ -2904,7 +2875,21 @@ void update_dialog_callback(S32 option, void *userdata)
2904 } 2875 }
2905 return; 2876 return;
2906 } 2877 }
2907 2878
2879 LLSD query_map = LLSD::emptyMap();
2880 // *TODO place os string in a global constant
2881#if LL_WINDOWS
2882 query_map["os"] = "win";
2883#elif LL_DARWIN
2884 query_map["os"] = "mac";
2885#elif LL_LINUX
2886 query_map["os"] = "lnx";
2887#endif
2888 query_map["userserver"] = gUserServerName;
2889 query_map["channel"] = gChannelName;
2890 // *TODO constantize this guy
2891 LLURI update_url = LLURI::buildHTTP("secondlife.com", 80, "update.php", query_map);
2892
2908#if LL_WINDOWS 2893#if LL_WINDOWS
2909 char ip[MAX_STRING]; /* Flawfinder: ignore */ 2894 char ip[MAX_STRING]; /* Flawfinder: ignore */
2910 2895
@@ -2936,9 +2921,6 @@ void update_dialog_callback(S32 option, void *userdata)
2936 } 2921 }
2937 u32_to_ip_string(gUserServer.getAddress(), ip); 2922 u32_to_ip_string(gUserServer.getAddress(), ip);
2938 2923
2939 std::ostringstream params;
2940 params << "-userserver " << gUserServerName;
2941
2942 // if a sim name was passed in via command line parameter (typically through a SLURL) 2924 // if a sim name was passed in via command line parameter (typically through a SLURL)
2943 if ( LLURLSimString::sInstance.mSimString.length() ) 2925 if ( LLURLSimString::sInstance.mSimString.length() )
2944 { 2926 {
@@ -2946,6 +2928,8 @@ void update_dialog_callback(S32 option, void *userdata)
2946 gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString ); 2928 gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
2947 }; 2929 };
2948 2930
2931 std::ostringstream params;
2932 params << "-url \"" << update_url.asString() << "\"";
2949 if (gHideLinks) 2933 if (gHideLinks)
2950 { 2934 {
2951 // Figure out the program name. 2935 // Figure out the program name.
@@ -2966,7 +2950,8 @@ void update_dialog_callback(S32 option, void *userdata)
2966 program_name = "SecondLife"; 2950 program_name = "SecondLife";
2967 } 2951 }
2968 2952
2969 params << " -silent -name \"" << gSecondLife << "\" -program \"" << program_name << "\""; 2953 params << " -silent -name \"" << gSecondLife << "\"";
2954 params << " -program \"" << program_name << "\"";
2970 } 2955 }
2971 2956
2972 llinfos << "Calling updater: " << update_exe_path << " " << params.str() << llendl; 2957 llinfos << "Calling updater: " << update_exe_path << " " << params.str() << llendl;
@@ -2984,12 +2969,12 @@ void update_dialog_callback(S32 option, void *userdata)
2984 // record the location to start at next time 2969 // record the location to start at next time
2985 gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString ); 2970 gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
2986 }; 2971 };
2987 2972
2988 update_exe_path = "'"; 2973 update_exe_path = "'";
2989 update_exe_path += gDirUtilp->getAppRODataDir(); 2974 update_exe_path += gDirUtilp->getAppRODataDir();
2990 update_exe_path += "/AutoUpdater.app/Contents/MacOS/AutoUpdater' -userserver "; 2975 update_exe_path += "/AutoUpdater.app/Contents/MacOS/AutoUpdater' -url \"";
2991 update_exe_path += gUserServerName; 2976 update_exe_path += update_url.asString();
2992 update_exe_path += " -name \""; 2977 update_exe_path += "\" -name \"";
2993 update_exe_path += gSecondLife; 2978 update_exe_path += gSecondLife;
2994 update_exe_path += "\" &"; 2979 update_exe_path += "\" &";
2995 2980
@@ -3024,7 +3009,7 @@ void use_circuit_callback(void**, S32 result)
3024 llinfos << "Backing up to login screen!" << llendl; 3009 llinfos << "Backing up to login screen!" << llendl;
3025 gViewerWindow->alertXml("LoginPacketNeverReceived", 3010 gViewerWindow->alertXml("LoginPacketNeverReceived",
3026 login_alert_status, NULL); 3011 login_alert_status, NULL);
3027 gStartupState = STATE_LOGIN_SHOW; 3012 reset_login();
3028 } 3013 }
3029 else 3014 else
3030 { 3015 {
@@ -3117,8 +3102,9 @@ void register_viewer_callbacks(LLMessageSystem* msg)
3117 LLPanelAvatar::processAvatarInterestsReply); 3102 LLPanelAvatar::processAvatarInterestsReply);
3118 msg->setHandlerFunc("AvatarGroupsReply", 3103 msg->setHandlerFunc("AvatarGroupsReply",
3119 LLPanelAvatar::processAvatarGroupsReply); 3104 LLPanelAvatar::processAvatarGroupsReply);
3120 msg->setHandlerFuncFast(_PREHASH_AvatarStatisticsReply, 3105 // ratings deprecated
3121 LLPanelAvatar::processAvatarStatisticsReply); 3106 //msg->setHandlerFuncFast(_PREHASH_AvatarStatisticsReply,
3107 // LLPanelAvatar::processAvatarStatisticsReply);
3122 msg->setHandlerFunc("AvatarNotesReply", 3108 msg->setHandlerFunc("AvatarNotesReply",
3123 LLPanelAvatar::processAvatarNotesReply); 3109 LLPanelAvatar::processAvatarNotesReply);
3124 msg->setHandlerFunc("AvatarPicksReply", 3110 msg->setHandlerFunc("AvatarPicksReply",
@@ -3137,8 +3123,9 @@ void register_viewer_callbacks(LLMessageSystem* msg)
3137 msg->setHandlerFuncFast(_PREHASH_GroupProfileReply, 3123 msg->setHandlerFuncFast(_PREHASH_GroupProfileReply,
3138 LLGroupMgr::processGroupPropertiesReply); 3124 LLGroupMgr::processGroupPropertiesReply);
3139 3125
3140 msg->setHandlerFuncFast(_PREHASH_ReputationIndividualReply, 3126 // ratings deprecated
3141 LLFloaterRate::processReputationIndividualReply); 3127 // msg->setHandlerFuncFast(_PREHASH_ReputationIndividualReply,
3128 // LLFloaterRate::processReputationIndividualReply);
3142 3129
3143 msg->setHandlerFuncFast(_PREHASH_AgentWearablesUpdate, 3130 msg->setHandlerFuncFast(_PREHASH_AgentWearablesUpdate,
3144 LLAgent::processAgentInitialWearablesUpdate ); 3131 LLAgent::processAgentInitialWearablesUpdate );
@@ -3146,9 +3133,6 @@ void register_viewer_callbacks(LLMessageSystem* msg)
3146 msg->setHandlerFunc("ScriptControlChange", 3133 msg->setHandlerFunc("ScriptControlChange",
3147 LLAgent::processScriptControlChange ); 3134 LLAgent::processScriptControlChange );
3148 3135
3149 msg->setHandlerFuncFast(_PREHASH_GestureUpdate,
3150 LLViewerGestureList::processGestureUpdate);
3151
3152 msg->setHandlerFuncFast(_PREHASH_ViewerEffect, LLHUDManager::processViewerEffect); 3136 msg->setHandlerFuncFast(_PREHASH_ViewerEffect, LLHUDManager::processViewerEffect);
3153 3137
3154 msg->setHandlerFuncFast(_PREHASH_GrantGodlikePowers, process_grant_godlike_powers); 3138 msg->setHandlerFuncFast(_PREHASH_GrantGodlikePowers, process_grant_godlike_powers);
@@ -3945,4 +3929,9 @@ bool LLStartUp::canGoFullscreen()
3945 return gStartupState >= STATE_WORLD_INIT; 3929 return gStartupState >= STATE_WORLD_INIT;
3946} 3930}
3947 3931
3932void reset_login()
3933{
3934 gStartupState = STATE_LOGIN_SHOW;
3948 3935
3936 // do cleanup here of in-world UI?
3937}