Pull and merge viewer-development
commit
716e2ea3b1
11
.hgtags
11
.hgtags
|
|
@ -368,3 +368,14 @@ f4481df42f9a4a92bf475a80f0c51d1a4bbdfd59 DRTVWR-246
|
|||
39c5204b6e800983a41ccac8ad6dc993120197c6 DRTVWR-247
|
||||
7c7d57d393e8ae7b61623279de06eb4a62ccae6a DRTVWR-249
|
||||
f72b50ef168c159d6e79e97aa2bcafaf8577ab99 DRTVWR-230
|
||||
b418be80903520c492e1173f3afbc4021cad5d07 DRTVWR-255
|
||||
965b9a35e260c0f53be1a25f0db7abc8a67eaf47 DRTVWR-252
|
||||
bb10adc4f76cf0067fca7075146f00cdc0740e9d DRTVWR-251
|
||||
ab0aa2f6ba22b52fed30a2337197f589156edc75 DRTVWR-253
|
||||
48382ec79741671d19ce4cc3e8cd59e9a521e4a7 DRTVWR-254
|
||||
937ec902bb9a1cbceff17bd89e3923352b0a5fbc DRTVWR-256
|
||||
44e764a6ac9e672a4f3bce821a4b6a218590c374 DRTVWR-258
|
||||
c23d734065ed593b2413385aecd8366d8e0ee96b DRTVWR-257
|
||||
452ce96d4046dc05a3ecaecc203e2cc8ddd72e76 DRTVWR-259
|
||||
5cba5f39d0a81d659f24ebc4b5efd025a39e3db1 3.4.3-release
|
||||
9aa1aa9f1fe13c194695a0b8f0af298296241dc2 DRTVWR-260
|
||||
|
|
|
|||
|
|
@ -21,13 +21,8 @@ email_status_this_is_os = true
|
|||
# Limit extent of codeticket updates to revisions after...
|
||||
codeticket_since = 3.3.0-release
|
||||
|
||||
clean_on_success = false
|
||||
run_tests = false
|
||||
build_Darwin_Debug = false
|
||||
build_Darwin_RelWithDebInfo = false
|
||||
|
||||
# ========================================
|
||||
# Viewer Development --
|
||||
# Viewer Development
|
||||
# ========================================
|
||||
|
||||
# Report changes since...
|
||||
|
|
|
|||
|
|
@ -201,19 +201,13 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
|
|||
endif(TEST_DEBUG)
|
||||
ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})
|
||||
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}")
|
||||
if (WINDOWS)
|
||||
set_target_properties(INTEGRATION_TEST_${testname}
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS"
|
||||
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
|
||||
LINK_FLAGS_RELEASE ""
|
||||
)
|
||||
endif(WINDOWS)
|
||||
|
||||
if(STANDALONE)
|
||||
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")
|
||||
endif(STANDALONE)
|
||||
|
||||
# The following was copied to llcorehttp/CMakeLists.txt's texture_load target.
|
||||
# Any changes made here should be replicated there.
|
||||
if (WINDOWS)
|
||||
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname}
|
||||
PROPERTIES
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ if (LL_TESTS)
|
|||
# The following come from LLAddBuildTest.cmake's INTEGRATION_TEST_xxxx target.
|
||||
set_target_properties(http_texture_load
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc"
|
||||
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS ${TCMALLOC_LINK_FLAGS}"
|
||||
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
|
||||
LINK_FLAGS_RELEASE ""
|
||||
)
|
||||
|
|
|
|||
|
|
@ -111,7 +111,15 @@ const int HTTP_TRACE_MIN = HTTP_TRACE_OFF;
|
|||
const int HTTP_TRACE_MAX = HTTP_TRACE_CURL_BODIES;
|
||||
|
||||
// Request retry limits
|
||||
const int HTTP_RETRY_COUNT_DEFAULT = 5;
|
||||
//
|
||||
// At a minimum, retries need to extend past any throttling
|
||||
// window we're expecting from central services. In the case
|
||||
// of Linden services running through the caps routers, there's
|
||||
// a five-second or so window for throttling with some spillover.
|
||||
// We want to span a few windows to allow transport to slow
|
||||
// after onset of the throttles and then recover without a final
|
||||
// failure. Other systems may need other constants.
|
||||
const int HTTP_RETRY_COUNT_DEFAULT = 8;
|
||||
const int HTTP_RETRY_COUNT_MIN = 0;
|
||||
const int HTTP_RETRY_COUNT_MAX = 100;
|
||||
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ public:
|
|||
//
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
LLCore::HttpStatus status;
|
||||
bool do_random(false);
|
||||
bool do_verbose(false);
|
||||
|
||||
|
|
@ -215,6 +216,9 @@ int main(int argc, char** argv)
|
|||
// Initialization
|
||||
init_curl();
|
||||
LLCore::HttpRequest::createService();
|
||||
LLCore::HttpRequest::setPolicyClassOption(LLCore::HttpRequest::DEFAULT_POLICY_ID,
|
||||
LLCore::HttpRequest::CP_CONNECTION_LIMIT,
|
||||
concurrency_limit);
|
||||
LLCore::HttpRequest::startThread();
|
||||
|
||||
// Get service point
|
||||
|
|
@ -228,7 +232,7 @@ int main(int argc, char** argv)
|
|||
ws.loadTextureUuids(uuids);
|
||||
ws.mRandomRange = do_random;
|
||||
ws.mVerbose = do_verbose;
|
||||
ws.mMaxConcurrency = concurrency_limit;
|
||||
ws.mMaxConcurrency = 100;
|
||||
|
||||
if (! ws.mTextures.size())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2663,8 +2663,9 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
|
|||
if (sortpat)
|
||||
{
|
||||
// Sort the list of system fonts from most-to-least-desirable.
|
||||
FcResult result;
|
||||
fs = FcFontSort(NULL, sortpat, elide_unicode_coverage,
|
||||
NULL, NULL);
|
||||
NULL, &result);
|
||||
FcPatternDestroy(sortpat);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,11 +70,11 @@ ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 5 1 1 4.1
|
|||
ATI ASUS EAH62xx .*ATI.*ASUS.*EAH62.* 2 1 0 0
|
||||
ATI ASUS EAH63xx .*ATI.*ASUS.*EAH63.* 2 1 0 0
|
||||
ATI ASUS EAH64xx .*ATI.*ASUS.*EAH64.* 2 1 0 0
|
||||
ATI ASUS EAH65xx .*ATI.*ASUS.*EAH65.* 2 1 0 0
|
||||
ATI ASUS EAH66xx .*ATI.*ASUS.*EAH66.* 3 1 0 0
|
||||
ATI ASUS EAH65xx .*ATI.*ASUS.*EAH65.* 2 1 0 4.1
|
||||
ATI ASUS EAH66xx .*ATI.*ASUS.*EAH66.* 3 1 0 4.1
|
||||
ATI ASUS EAH67xx .*ATI.*ASUS.*EAH67.* 3 1 0 0
|
||||
ATI ASUS EAH68xx .*ATI.*ASUS.*EAH68.* 5 1 0 0
|
||||
ATI ASUS EAH69xx .*ATI.*ASUS.*EAH69.* 5 1 0 0
|
||||
ATI ASUS EAH68xx .*ATI.*ASUS.*EAH68.* 5 1 0 4
|
||||
ATI ASUS EAH69xx .*ATI.*ASUS.*EAH69.* 5 1 0 4.1
|
||||
ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 2 1 1 2.1
|
||||
ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 0 0
|
||||
ATI Radeon X19xx .*ATI.*(Radeon|Diamond) X19.* ?.* 2 1 1 2.1
|
||||
|
|
@ -108,13 +108,22 @@ ATI Radeon HD 65xx .*ATI.*AMD Radeon.* HD [67]5..[MG] 2 1 1 4.2
|
|||
ATI Radeon HD 66xx .*ATI.*AMD Radeon.* HD [67]6..[MG] 3 1 1 4.2
|
||||
ATI Radeon HD 7100 .*ATI.*AMD Radeon.* HD 71.* 2 1 0 0
|
||||
ATI Radeon HD 7200 .*ATI.*AMD Radeon.* HD 72.* 2 1 0 0
|
||||
ATI Radeon HD 7300 .*ATI.*AMD Radeon.* HD 73.* 2 1 0 0
|
||||
ATI Radeon HD 7400 .*ATI.*AMD Radeon.* HD 74.* 2 1 0 0
|
||||
ATI Radeon HD 7300 .*ATI.*AMD Radeon.* HD 73.* 2 1 0 4.2
|
||||
ATI Radeon HD 7400 .*ATI.*AMD Radeon.* HD 74.* 2 1 0 4.2
|
||||
ATI Radeon HD 7500 .*ATI.*AMD Radeon.* HD 75.* 3 1 1 4.2
|
||||
ATI Radeon HD 7600 .*ATI.*AMD Radeon.* HD 76.* 3 1 0 0
|
||||
ATI Radeon HD 7600 .*ATI.*AMD Radeon.* HD 76.* 3 1 0 4.2
|
||||
ATI Radeon HD 7700 .*ATI.*AMD Radeon.* HD 77.* 4 1 1 4.2
|
||||
ATI Radeon HD 7800 .*ATI.*AMD Radeon.* HD 78.* 5 1 1 4.2
|
||||
ATI Radeon HD 7900 .*ATI.*AMD Radeon.* HD 79.* 5 1 1 4.2
|
||||
ATI ASUS HD7100 .*ATI.*ASUS.* HD71.* 2 1 0 0
|
||||
ATI ASUS HD7200 .*ATI.*ASUS.* HD72.* 2 1 0 0
|
||||
ATI ASUS HD7300 .*ATI.*ASUS.* HD73.* 2 1 0 0
|
||||
ATI ASUS HD7400 .*ATI.*ASUS.* HD74.* 2 1 0 0
|
||||
ATI ASUS HD7500 .*ATI.*ASUS.* HD75.* 3 1 1 4.2
|
||||
ATI ASUS HD7600 .*ATI.*ASUS.* HD76.* 3 1 0 0
|
||||
ATI ASUS HD7700 .*ATI.*ASUS.* HD77.* 4 1 1 4.2
|
||||
ATI ASUS HD7800 .*ATI.*ASUS.* HD78.* 5 1 1 4.2
|
||||
ATI ASUS HD7900 .*ATI.*ASUS.* HD79.* 5 1 1 4.2
|
||||
ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.. 1 1 1 3.3
|
||||
ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 1 1.3
|
||||
ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 0 0
|
||||
|
|
@ -167,6 +176,7 @@ ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1 1 4
|
|||
ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 2 1 0 0
|
||||
ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1 1 3.3
|
||||
ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1 0 0
|
||||
ATI HD3700 .*ATI.* HD37.. 3 1 0 3.3
|
||||
ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1 1 4
|
||||
ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1 0 0
|
||||
ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1 1 4
|
||||
|
|
@ -176,8 +186,10 @@ ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 2 1 1 3.3
|
|||
ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1 1 4
|
||||
ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1 1 3.3
|
||||
ATI Radeon HD 4800 .*ATI.*Radeon HD *48.. 3 1 1 4
|
||||
ATI ASUS EAH5400 .*ATI.*ASUS EAH54.. 3 1 1 4.2
|
||||
ATI Radeon HD 5400 .*ATI.*Radeon HD *54.. 3 1 1 4.2
|
||||
ATI Radeon HD 5500 .*ATI.*Radeon HD *55.. 3 1 1 4.2
|
||||
ATI ASUS EAH5500 .*ATI.*ASUS EAH55.. 3 1 1 4.2
|
||||
ATI Radeon HD 5600 .*ATI.*Radeon HD *56.. 3 1 1 4.2
|
||||
ATI Radeon HD 5700 .*ATI.*Radeon HD *57.. 3 1 1 4.2
|
||||
ATI Radeon HD 5800 .*ATI.*Radeon HD *58.. 4 1 1 4.2
|
||||
|
|
@ -270,7 +282,7 @@ ATI FirePro 5000 .*ATI.*FirePro V5.* 3 1 0 0
|
|||
ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1 0 0
|
||||
ATI FirePro M .*ATI.*FirePro M.* 3 1 1 4.2
|
||||
ATI R300 (9700) .*R300.* 0 1 1 2.1
|
||||
ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1 0 0
|
||||
ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1 0 4.2
|
||||
Intel X3100 .*Intel.*X3100.* 1 1 1 2.1
|
||||
Intel GMA 3600 .*Intel.* 3600.* 0 1 1 3
|
||||
Intel 830M .*Intel.*830M 0 0 0 0
|
||||
|
|
@ -293,9 +305,9 @@ Intel Brookdale .*Intel.*Brookdale.* 0 0 1 1.3
|
|||
Intel Cantiga .*Intel.*Cantiga.* 0 0 1 2
|
||||
Intel Eaglelake .*Intel.*Eaglelake.* 1 1 1 2
|
||||
Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 1 1 1 2.1
|
||||
Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 0
|
||||
Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 4
|
||||
Intel HD Graphics 3000 .*Intel.*HD Graphics 3.* 3 1 1 3.1
|
||||
Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 3.3
|
||||
Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 4
|
||||
Intel HD2000 .*Intel.*HD2000.* 2 1 0 0
|
||||
Intel HD3000 .*Intel.*HD3000.* 3 1 0 0
|
||||
Intel HD Graphics .*Intel.*HD Graphics.* 2 1 1 4
|
||||
|
|
@ -341,8 +353,8 @@ NVIDIA GT 325M .*NVIDIA .*GT *32*M.* 3 1 1 3.3
|
|||
NVIDIA GT 330M .*NVIDIA .*GT *33*M.* 3 1 1 3.3
|
||||
NVIDIA GT 340M .*NVIDIA .*GT *34*M.* 4 1 1 3.3
|
||||
NVIDIA GTS 350M .*NVIDIA .*GTS *35*M.* 4 1 1 3.3
|
||||
NVIDIA GTS 360M .*NVIDIA .*GTS *36*M.* 5 1 1 3.3
|
||||
NVIDIA 405M .*NVIDIA .* 40*M.* 2 1 0 0
|
||||
NVIDIA GTS 360M .*NVIDIA .*GTS *360M.* 5 1 1 3.3
|
||||
NVIDIA 405M .*NVIDIA .* 40*M.* 2 1 0 4.2
|
||||
NVIDIA 410M .*NVIDIA .* 41*M.* 3 1 0 0
|
||||
NVIDIA GT 415M .*NVIDIA .*GT *41*M.* 3 1 1 4.2
|
||||
NVIDIA GT 420M .*NVIDIA .*GT *42*M.* 3 1 1 4.2
|
||||
|
|
@ -369,47 +381,51 @@ NVIDIA GTX 670M .*NVIDIA .*GTX *67*M.* 5 1 1 4.2
|
|||
NVIDIA GTX 680M .*NVIDIA .*GTX *68*M.* 5 1 0 0
|
||||
NVIDIA GTX 690M .*NVIDIA .*GTX *69*M.* 5 1 0 0
|
||||
NVIDIA G100 .*NVIDIA .*G10.* 3 1 1 4.2
|
||||
NVIDIA GT 120 .*NVIDIA .*GT *12.* 2 1 0 0
|
||||
NVIDIA GT 130 .*NVIDIA .*GT *13.* 2 1 0 0
|
||||
NVIDIA GT 120 .*NVIDIA .*GT *12.* 2 1 0 3
|
||||
NVIDIA GT 130 .*NVIDIA .*GT *13.* 2 1 0 3.3
|
||||
NVIDIA GTS 150 .*NVIDIA .*GTS *15.* 2 1 0 0
|
||||
NVIDIA 205 .*NVIDIA .*GeForce 205.* 2 1 1 3.3
|
||||
NVIDIA 200 .*NVIDIA .*GeForce 20.* 2 1 1 3.3
|
||||
NVIDIA G200 .*NVIDIA .*GeForce G20.* 2 1 1 3.3
|
||||
NVIDIA G210 .*NVIDIA .*GeForce G210.* 3 1 1 3.3
|
||||
NVIDIA 210 .*NVIDIA .*GeForce 210.* 3 1 1 3.3
|
||||
NVIDIA GT 220 .*NVIDIA .*GT *22.* 2 1 1 3.3
|
||||
NVIDIA GT 230 .*NVIDIA .*GT *23.* 2 1 1 3.3
|
||||
NVIDIA GT 240 .*NVIDIA .*GT *24.* 4 1 1 3.3
|
||||
NVIDIA GTS 240 .*NVIDIA .*GTS *24.* 4 1 1 3.3
|
||||
NVIDIA GTS 250 .*NVIDIA .*GTS *25.* 4 1 1 3.3
|
||||
NVIDIA GTX 260 .*NVIDIA .*GTX *26.* 4 1 1 3.3
|
||||
NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 4 1 0 0
|
||||
NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 4 1 0 3.3
|
||||
NVIDIA GTX 280 .*NVIDIA .*GTX *28.* 4 1 1 3.3
|
||||
NVIDIA GTX 290 .*NVIDIA .*GTX *29.* 5 1 0 0
|
||||
NVIDIA GTX 290 .*NVIDIA .*GTX *29.* 5 1 0 3.3
|
||||
NVIDIA 310 .*NVIDIA .*GeForce 310.* 3 1 1 3.3
|
||||
NVIDIA 315 .*NVIDIA .*GeForce 315.* 3 1 1 3.3
|
||||
NVIDIA GT 320 .*NVIDIA .*GT *32.* 3 1 0 0
|
||||
NVIDIA GT 330 .*NVIDIA .*GT *33.* 3 1 0 0
|
||||
NVIDIA GT 320 .*NVIDIA .*GT *32.* 3 1 0 3.3
|
||||
NVIDIA GT 330 .*NVIDIA .*GT *33.* 3 1 0 3.3
|
||||
NVIDIA GT 340 .*NVIDIA .*GT *34.* 3 1 0 0
|
||||
NVIDIA 405 .*NVIDIA .* 405.* 3 1 0 0
|
||||
NVIDIA 405 .*NVIDIA .* 405.* 3 1 0 3.3
|
||||
NVIDIA GT 420 .*NVIDIA .*GT *42.* 3 1 1 4.2
|
||||
NVIDIA GT 430 .*NVIDIA .*GT *43.* 3 1 1 4.1
|
||||
NVIDIA GT 440 .*NVIDIA .*GT *44.* 4 1 0 0
|
||||
NVIDIA GT 430 .*NVIDIA .*GT *43.* 3 1 1 4.2
|
||||
NVIDIA GT 440 .*NVIDIA .*GT *44.* 4 1 0 4.2
|
||||
NVIDIA GTS 450 .*NVIDIA .*GTS *45.* 4 1 1 4.2
|
||||
NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 5 1 1 4.2
|
||||
NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 5 1 1 4.3
|
||||
NVIDIA GTX 470 .*NVIDIA .*GTX *47.* 5 1 1 4.2
|
||||
NVIDIA GTX 480 .*NVIDIA .*GTX *48.* 5 1 1 4.2
|
||||
NVIDIA 510 .*NVIDIA .* 510.* 3 1 0 0
|
||||
NVIDIA GT 520 .*NVIDIA .*GT *52.* 3 1 1 4.2
|
||||
NVIDIA GT 530 .*NVIDIA .*GT *53.* 3 1 1 4.2
|
||||
NVIDIA GT 540 .*NVIDIA .*GT *54.* 3 1 1 4.2
|
||||
NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 5 1 1 4.2
|
||||
NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 5 1 1 4.3
|
||||
NVIDIA GTX 560 .*NVIDIA .*GTX *56.* 5 1 1 4.2
|
||||
NVIDIA GTX 570 .*NVIDIA .*GTX *57.* 5 1 1 4.2
|
||||
NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 5 1 1 4.2
|
||||
NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 5 1 1 4.3
|
||||
NVIDIA GTX 590 .*NVIDIA .*GTX *59.* 5 1 1 4.2
|
||||
NVIDIA GT 610 .*NVIDIA .*GT *61.* 3 1 1 4.2
|
||||
NVIDIA GT 620 .*NVIDIA .*GT *62.* 3 1 0 0
|
||||
NVIDIA GT 630 .*NVIDIA .*GT *63.* 3 1 0 0
|
||||
NVIDIA GT 640 .*NVIDIA .*GT *64.* 3 1 0 0
|
||||
NVIDIA GT 620 .*NVIDIA .*GT *62.* 3 1 0 4.2
|
||||
NVIDIA GT 630 .*NVIDIA .*GT *63.* 3 1 0 4.2
|
||||
NVIDIA GT 640 .*NVIDIA .*GT *64.* 3 1 0 4.3
|
||||
NVIDIA GT 650 .*NVIDIA .*GT *65.* 3 1 1 4.2
|
||||
NVIDIA GTX 660 .*NVIDIA .*GTX *66.* 5 1 0 0
|
||||
NVIDIA GTX 650 .*NVIDIA .*GTX *65.* 3 1 1 4.2
|
||||
NVIDIA GTX 660 .*NVIDIA .*GTX *66.* 5 1 0 4.3
|
||||
NVIDIA GTX 670 .*NVIDIA .*GTX *67.* 5 1 1 4.2
|
||||
NVIDIA GTX 680 .*NVIDIA .*GTX *68.* 5 1 1 4.2
|
||||
NVIDIA GTX 690 .*NVIDIA .*GTX *69.* 5 1 1 4.2
|
||||
|
|
@ -443,8 +459,8 @@ NVIDIA GeForce 7600 .*NVIDIA .*GeForce 76.* 2 1 1 2.1
|
|||
NVIDIA GeForce 7800 .*NVIDIA .*GeForce 78.* 2 1 1 2.1
|
||||
NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 3 1 1 2.1
|
||||
NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1 0 0
|
||||
NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1 0 0
|
||||
NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 0
|
||||
NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1 0 3.3
|
||||
NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 2.1
|
||||
NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 3 1 1 3.3
|
||||
NVIDIA GeForce 8400M .*NVIDIA .*GeForce 8400M.* 1 1 1 3.3
|
||||
NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1 1 3.3
|
||||
|
|
@ -456,9 +472,9 @@ NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1 0 0
|
|||
NVIDIA GeForce 8800M .*NVIDIA .*GeForce 8800M.* 2 1 1 3.3
|
||||
NVIDIA GeForce 8800 .*NVIDIA .*GeForce 88.* 3 1 1 3.3
|
||||
NVIDIA GeForce 9100M .*NVIDIA .*GeForce 9100M.* 0 1 0 0
|
||||
NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 0
|
||||
NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1 0 0
|
||||
NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 0
|
||||
NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 3.3
|
||||
NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1 0 3.1
|
||||
NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 3.3
|
||||
NVIDIA GeForce 9300M .*NVIDIA .*GeForce 9300M.* 1 1 1 3.3
|
||||
NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 1 1 1 3.3
|
||||
NVIDIA GeForce 9400M .*NVIDIA .*GeForce 9400M.* 2 1 1 3.3
|
||||
|
|
@ -471,7 +487,7 @@ NVIDIA GeForce 9700M .*NVIDIA .*GeForce 9700M.* 0 1 1 3.3
|
|||
NVIDIA GeForce 9800M .*NVIDIA .*GeForce 9800M.* 2 1 1 3.3
|
||||
NVIDIA GeForce 9800 .*NVIDIA .*GeForce 98.* 3 1 1 3.3
|
||||
NVIDIA GeForce FX 5100 .*NVIDIA .*GeForce FX 51.* 0 1 0 0
|
||||
NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 0
|
||||
NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 2.1
|
||||
NVIDIA GeForce FX 5300 .*NVIDIA .*GeForce FX 53.* 0 1 0 0
|
||||
NVIDIA GeForce FX 5500 .*NVIDIA .*GeForce FX 55.* 0 1 1 2.1
|
||||
NVIDIA GeForce FX 5600 .*NVIDIA .*GeForce FX 56.* 1 1 1 2.1
|
||||
|
|
@ -506,7 +522,7 @@ NVIDIA D9M .*NVIDIA .*D9M.* 1 1 0 0
|
|||
NVIDIA G94 .*NVIDIA .*G94.* 3 1 0 0
|
||||
NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 0 0
|
||||
NVIDIA ION 2 .*NVIDIA .*ION 2.* 2 1 0 0
|
||||
NVIDIA ION .*NVIDIA Corporation.*ION.* 2 1 1 0
|
||||
NVIDIA ION .*NVIDIA Corporation.*ION.* 2 1 1 3.3
|
||||
NVIDIA NB8M .*NVIDIA .*NB8M.* 1 1 0 0
|
||||
NVIDIA NB8P .*NVIDIA .*NB8P.* 2 1 0 0
|
||||
NVIDIA NB9E .*NVIDIA .*NB9E.* 3 1 0 0
|
||||
|
|
@ -514,7 +530,7 @@ NVIDIA NB9M .*NVIDIA .*NB9M.* 1 1 0 0
|
|||
NVIDIA NB9P .*NVIDIA .*NB9P.* 2 1 0 0
|
||||
NVIDIA N10 .*NVIDIA .*N10.* 1 1 0 0
|
||||
NVIDIA GeForce PCX .*GeForce PCX.* 0 1 0 0
|
||||
NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 0 0
|
||||
NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 0 3
|
||||
NVIDIA NV17 .*NVIDIA .*NV17.* 0 1 0 0
|
||||
NVIDIA NV34 .*NVIDIA .*NV34.* 0 1 0 0
|
||||
NVIDIA NV35 .*NVIDIA .*NV35.* 0 1 0 0
|
||||
|
|
@ -522,7 +538,7 @@ NVIDIA NV36 .*NVIDIA .*NV36.* 1 1 0 0
|
|||
NVIDIA NV41 .*NVIDIA .*NV41.* 1 1 0 0
|
||||
NVIDIA NV43 .*NVIDIA .*NV43.* 1 1 0 0
|
||||
NVIDIA NV44 .*NVIDIA .*NV44.* 1 1 0 0
|
||||
NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 0
|
||||
NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 3.3
|
||||
NVIDIA MCP51 .*NVIDIA .*MCP51.* 1 1 0 0
|
||||
NVIDIA MCP61 .*NVIDIA .*MCP61.* 1 1 0 0
|
||||
NVIDIA MCP67 .*NVIDIA .*MCP67.* 1 1 0 0
|
||||
|
|
@ -533,40 +549,40 @@ NVIDIA MCP78 .*NVIDIA .*MCP78.* 1 1 0 0
|
|||
NVIDIA MCP79 .*NVIDIA .*MCP79.* 1 1 0 0
|
||||
NVIDIA MCP7A .*NVIDIA .*MCP7A.* 1 1 0 0
|
||||
NVIDIA Quadro2 .*Quadro2.* 0 1 0 0
|
||||
NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 0 0
|
||||
NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1 0 0
|
||||
NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 0 4.2
|
||||
NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1 0 4.2
|
||||
NVIDIA Quadro 3000M .*Quadro.*3000M.* 3 1 0 0
|
||||
NVIDIA Quadro 4000M .*Quadro.*4000M.* 3 1 0 0
|
||||
NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 0 0
|
||||
NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 0 4.2
|
||||
NVIDIA Quadro 50x0 M .*Quadro.*50.0.* 3 1 0 0
|
||||
NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1 0 0
|
||||
NVIDIA Quadro 400 .*Quadro.*400.* 2 1 0 0
|
||||
NVIDIA Quadro 600 .*Quadro.*600.* 2 1 0 0
|
||||
NVIDIA Quadro 400 .*Quadro.*400.* 2 1 0 3.3
|
||||
NVIDIA Quadro 600 .*Quadro.*600.* 2 1 0 3.3
|
||||
NVIDIA Quadro4 .*Quadro4.* 0 1 0 0
|
||||
NVIDIA Quadro DCC .*Quadro DCC.* 0 1 0 0
|
||||
NVIDIA Quadro CX .*Quadro.*CX.* 3 1 0 0
|
||||
NVIDIA Quadro FX 770M .*Quadro.*FX *770M.* 2 1 0 0
|
||||
NVIDIA Quadro FX 1500M .*Quadro.*FX *1500M.* 1 1 0 0
|
||||
NVIDIA Quadro FX 1500M .*Quadro.*FX *1500M.* 1 1 0 2.1
|
||||
NVIDIA Quadro FX 1600M .*Quadro.*FX *1600M.* 2 1 0 0
|
||||
NVIDIA Quadro FX 2500M .*Quadro.*FX *2500M.* 2 1 0 0
|
||||
NVIDIA Quadro FX 2700M .*Quadro.*FX *2700M.* 3 1 0 0
|
||||
NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 0 0
|
||||
NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 0 3.3
|
||||
NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 0 2.1
|
||||
NVIDIA Quadro FX 3600 .*Quadro.*FX *3600.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 0 3.3
|
||||
NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 0 3.2
|
||||
NVIDIA Quadro FX 4500 .*Quadro.*FX *45.* 3 1 0 0
|
||||
NVIDIA Quadro FX 880M .*Quadro.*FX *880M.* 3 1 0 0
|
||||
NVIDIA Quadro FX 880M .*Quadro.*FX *880M.* 3 1 0 3.3
|
||||
NVIDIA Quadro FX 4800 .*NVIDIA .*Quadro *FX *4800.* 3 1 0 0
|
||||
NVIDIA Quadro FX .*Quadro FX.* 1 1 0 0
|
||||
NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 1 2.1
|
||||
NVIDIA Quadro FX .*Quadro FX.* 1 1 0 3.3
|
||||
NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 1 3.3
|
||||
NVIDIA Quadro NVS 300M .*NVIDIA .*NVS *300M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 320M .*NVIDIA .*NVS *320M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 2100M .*NVIDIA .*NVS *2100M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 3100M .*NVIDIA .*NVS *3100M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 0 4.1
|
||||
NVIDIA Quadro NVS 5100M .*NVIDIA .*NVS *5100M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 0 0
|
||||
NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 0 3.2
|
||||
NVIDIA Corporation N12P .*NVIDIA .*N12P.* 1 1 1 4.1
|
||||
NVIDIA Corporation N11M .*NVIDIA .*N11M.* 2 1 0 0
|
||||
NVIDIA RIVA TNT .*RIVA TNT.* 0 0 0 0
|
||||
|
|
@ -580,5 +596,3 @@ Apple Generic Apple.*Generic.* 0 0 0 0
|
|||
Apple Software Renderer Apple.*Software Renderer.* 0 0 0 0
|
||||
Humper Humper.* 0 1 1 2.1
|
||||
PowerVR SGX545 .*PowerVR SGX.* 1 1 1 3
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -458,7 +458,9 @@ void LLFeatureManager::parseGPUTable(std::string filename)
|
|||
json << "{'label' : '" << label << "',\n" <<
|
||||
"'regexp' : '" << expr << "',\n" <<
|
||||
"'class' : '" << cls << "',\n" <<
|
||||
"'supported' : '" << supported << "'\n},\n";
|
||||
"'supported' : '" << supported << "',\n" <<
|
||||
"'stats_based' : " << stats_based << ",\n" <<
|
||||
"'gl_version' : " << expected_gl_version << "\n},\n";
|
||||
#endif
|
||||
|
||||
for (U32 i = 0; i < expr.length(); i++) /*Flawfinder: ignore*/
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) :
|
|||
mPendingRoleMemberRequest(FALSE),
|
||||
mAccessTime(0.0f)
|
||||
{
|
||||
mMemberVersion.generate();
|
||||
}
|
||||
|
||||
void LLGroupMgrGroupData::setAccessed()
|
||||
|
|
@ -318,14 +319,14 @@ void LLGroupMgrGroupData::setRoleData(const LLUUID& role_id, LLRoleData role_dat
|
|||
role_data.mChangeType = RC_UPDATE_DATA;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
role_data.mChangeType = RC_UPDATE_POWERS;
|
||||
}
|
||||
|
||||
mRoleChanges[role_id] = role_data;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
llwarns << "Change being made to non-existant role " << role_id << llendl;
|
||||
}
|
||||
}
|
||||
|
|
@ -424,6 +425,7 @@ void LLGroupMgrGroupData::removeMemberData()
|
|||
}
|
||||
mMembers.clear();
|
||||
mMemberDataComplete = FALSE;
|
||||
mMemberVersion.generate();
|
||||
}
|
||||
|
||||
void LLGroupMgrGroupData::removeRoleData()
|
||||
|
|
@ -945,6 +947,8 @@ void LLGroupMgr::processGroupMembersReply(LLMessageSystem* msg, void** data)
|
|||
}
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
|
||||
if (group_datap->mMembers.size() == (U32)group_datap->mMemberCount)
|
||||
{
|
||||
group_datap->mMemberDataComplete = TRUE;
|
||||
|
|
@ -1771,8 +1775,6 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
|
|||
bool start_message = true;
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
|
||||
|
||||
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||
if (!group_datap) return;
|
||||
|
||||
|
|
@ -1833,6 +1835,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
|
|||
{
|
||||
gAgent.sendReliableMessage();
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1990,6 +1994,8 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content)
|
|||
group_datap->mMembers[member_id] = data;
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
|
||||
// Technically, we have this data, but to prevent completely overhauling
|
||||
// this entire system (it would be nice, but I don't have the time),
|
||||
// I'm going to be dumb and just call services I most likely don't need
|
||||
|
|
|
|||
|
|
@ -236,6 +236,8 @@ public:
|
|||
F32 getAccessTime() const { return mAccessTime; }
|
||||
void setAccessed();
|
||||
|
||||
const LLUUID& getMemberVersion() const { return mMemberVersion; }
|
||||
|
||||
public:
|
||||
typedef std::map<LLUUID,LLGroupMemberData*> member_list_t;
|
||||
typedef std::map<LLUUID,LLGroupRoleData*> role_list_t;
|
||||
|
|
@ -284,6 +286,9 @@ private:
|
|||
|
||||
BOOL mPendingRoleMemberRequest;
|
||||
F32 mAccessTime;
|
||||
|
||||
// Generate a new ID every time mMembers
|
||||
LLUUID mMemberVersion;
|
||||
};
|
||||
|
||||
struct LLRoleAction
|
||||
|
|
|
|||
|
|
@ -670,7 +670,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||
{
|
||||
mMemberProgress = gdatap->mMembers.begin();
|
||||
mPendingMemberUpdate = TRUE;
|
||||
mUdpateSessionID.generate();
|
||||
|
||||
sSDTime = 0.0f;
|
||||
sElementTime = 0.0f;
|
||||
|
|
@ -730,7 +729,7 @@ void LLPanelGroupGeneral::updateMembers()
|
|||
// If name is not cached, onNameCache() should be called when it is cached and add this member to list.
|
||||
LLAvatarNameCache::get(mMemberProgress->first,
|
||||
boost::bind(&LLPanelGroupGeneral::onNameCache,
|
||||
this, mUdpateSessionID, member, _1, _2));
|
||||
this, gdatap->getMemberVersion(), member, _2));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -768,11 +767,15 @@ void LLPanelGroupGeneral::addMember(LLGroupMemberData* member)
|
|||
}
|
||||
}
|
||||
|
||||
void LLPanelGroupGeneral::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name)
|
||||
void LLPanelGroupGeneral::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name)
|
||||
{
|
||||
if (!member
|
||||
|| update_id != mUdpateSessionID)
|
||||
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
|
||||
|
||||
if (!gdatap
|
||||
|| !gdatap->isMemberDataComplete()
|
||||
|| gdatap->getMemberVersion() != update_id)
|
||||
{
|
||||
// Stale data
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public:
|
|||
|
||||
virtual void setupCtrls (LLPanel* parent);
|
||||
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name);
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name);
|
||||
private:
|
||||
void reset();
|
||||
|
||||
|
|
@ -90,7 +90,6 @@ private:
|
|||
BOOL mChanged;
|
||||
BOOL mFirstUse;
|
||||
std::string mIncompleteMemberDataStr;
|
||||
LLUUID mUdpateSessionID;
|
||||
|
||||
// Group information (include any updates in updateChanged)
|
||||
LLLineEditor *mGroupNameEditor;
|
||||
|
|
|
|||
|
|
@ -745,7 +745,6 @@ LLPanelGroupMembersSubTab::LLPanelGroupMembersSubTab()
|
|||
mHasMatch(FALSE),
|
||||
mNumOwnerAdditions(0)
|
||||
{
|
||||
mUdpateSessionID = LLUUID::null;
|
||||
}
|
||||
|
||||
LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab()
|
||||
|
|
@ -1427,13 +1426,20 @@ U64 LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges(const LLUUID& ag
|
|||
return GP_NO_POWERS;
|
||||
}
|
||||
|
||||
LLGroupMemberData* member_data = gdatap->mMembers[agent_id];
|
||||
if ( !member_data )
|
||||
LLGroupMgrGroupData::member_list_t::iterator iter = gdatap->mMembers.find(agent_id);
|
||||
if ( iter == gdatap->mMembers.end() )
|
||||
{
|
||||
llwarns << "LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges() -- No member data for member with UUID " << agent_id << llendl;
|
||||
return GP_NO_POWERS;
|
||||
}
|
||||
|
||||
LLGroupMemberData* member_data = (*iter).second;
|
||||
if (!member_data)
|
||||
{
|
||||
llwarns << "LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges() -- Null member data for member with UUID " << agent_id << llendl;
|
||||
return GP_NO_POWERS;
|
||||
}
|
||||
|
||||
//see if there are unsaved role changes for this agent
|
||||
role_change_data_map_t* role_change_datap = NULL;
|
||||
member_role_changes_map_t::iterator member = mMemberRoleChangeData.find(agent_id);
|
||||
|
|
@ -1548,10 +1554,6 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)
|
|||
mMemberProgress = gdatap->mMembers.begin();
|
||||
mPendingMemberUpdate = TRUE;
|
||||
mHasMatch = FALSE;
|
||||
// Generate unique ID for current updateMembers()- see onNameCache for details.
|
||||
// Using unique UUID is perhaps an overkill but this way we are perfectly safe
|
||||
// from coincidences.
|
||||
mUdpateSessionID.generate();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1579,14 +1581,14 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)
|
|||
}
|
||||
}
|
||||
|
||||
void LLPanelGroupMembersSubTab::addMemberToList(LLUUID id, LLGroupMemberData* data)
|
||||
void LLPanelGroupMembersSubTab::addMemberToList(LLGroupMemberData* data)
|
||||
{
|
||||
if (!data) return;
|
||||
LLUIString donated = getString("donation_area");
|
||||
donated.setArg("[AREA]", llformat("%d", data->getContribution()));
|
||||
|
||||
LLNameListCtrl::NameItem item_params;
|
||||
item_params.value = id;
|
||||
item_params.value = data->getID();
|
||||
|
||||
item_params.columns.add().column("name").font.name("SANSSERIF_SMALL").style("NORMAL");
|
||||
|
||||
|
|
@ -1600,17 +1602,12 @@ void LLPanelGroupMembersSubTab::addMemberToList(LLUUID id, LLGroupMemberData* da
|
|||
mHasMatch = TRUE;
|
||||
}
|
||||
|
||||
void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name)
|
||||
void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name)
|
||||
{
|
||||
// Update ID is used to determine whether member whose id is passed
|
||||
// into onNameCache() was passed after current or previous user-initiated update.
|
||||
// This is needed to avoid probable duplication of members in list after changing filter
|
||||
// or adding of members of another group if gets for their names were called on
|
||||
// previous update. If this id is from get() called from older update,
|
||||
// we do nothing.
|
||||
if (mUdpateSessionID != update_id) return;
|
||||
|
||||
if (!member)
|
||||
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
|
||||
if (!gdatap
|
||||
|| gdatap->getMemberVersion() != update_id
|
||||
|| !member)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -1618,7 +1615,7 @@ void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, LLGroupMemb
|
|||
// trying to avoid unnecessary hash lookups
|
||||
if (matchesSearchFilter(av_name.getLegacyName()))
|
||||
{
|
||||
addMemberToList(id, member);
|
||||
addMemberToList(member);
|
||||
if(!mMembersList->getEnabled())
|
||||
{
|
||||
mMembersList->setEnabled(TRUE);
|
||||
|
|
@ -1672,14 +1669,14 @@ void LLPanelGroupMembersSubTab::updateMembers()
|
|||
{
|
||||
if (matchesSearchFilter(av_name.getLegacyName()))
|
||||
{
|
||||
addMemberToList(mMemberProgress->first, mMemberProgress->second);
|
||||
addMemberToList(mMemberProgress->second);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If name is not cached, onNameCache() should be called when it is cached and add this member to list.
|
||||
LLAvatarNameCache::get(mMemberProgress->first, boost::bind(&LLPanelGroupMembersSubTab::onNameCache,
|
||||
this, mUdpateSessionID, mMemberProgress->second, _1, _2));
|
||||
this, gdatap->getMemberVersion(), mMemberProgress->second, _2));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -187,8 +187,8 @@ public:
|
|||
|
||||
virtual void setGroupID(const LLUUID& id);
|
||||
|
||||
void addMemberToList(LLUUID id, LLGroupMemberData* data);
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name);
|
||||
void addMemberToList(LLGroupMemberData* data);
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name);
|
||||
|
||||
protected:
|
||||
typedef std::map<LLUUID, LLRoleMemberChangeType> role_change_data_map_t;
|
||||
|
|
@ -210,9 +210,6 @@ protected:
|
|||
BOOL mPendingMemberUpdate;
|
||||
BOOL mHasMatch;
|
||||
|
||||
// This id is generated after each user initiated member list update(opening Roles or changing filter)
|
||||
LLUUID mUdpateSessionID;
|
||||
|
||||
member_role_changes_map_t mMemberRoleChangeData;
|
||||
U32 mNumOwnerAdditions;
|
||||
|
||||
|
|
|
|||
|
|
@ -4274,12 +4274,12 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
|
||||
if (!reset_deferred)
|
||||
{
|
||||
// if image cropping or need to enlarge the scene, compute a scale_factor
|
||||
F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ;
|
||||
snapshot_width = (S32)(ratio * image_width) ;
|
||||
snapshot_height = (S32)(ratio * image_height) ;
|
||||
scale_factor = llmax(1.0f, 1.0f / ratio) ;
|
||||
}
|
||||
// if image cropping or need to enlarge the scene, compute a scale_factor
|
||||
F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ;
|
||||
snapshot_width = (S32)(ratio * image_width) ;
|
||||
snapshot_height = (S32)(ratio * image_height) ;
|
||||
scale_factor = llmax(1.0f, 1.0f / ratio) ;
|
||||
}
|
||||
}
|
||||
|
||||
if (show_ui && scale_factor > 1.f)
|
||||
|
|
@ -4481,7 +4481,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
{
|
||||
send_agent_resume();
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -797,7 +797,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
|||
gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
|
||||
}
|
||||
|
||||
bool ret = doAllocateScreenBuffer(resX, resY);
|
||||
eFBOStatus ret = doAllocateScreenBuffer(resX, resY);
|
||||
|
||||
if (save_settings)
|
||||
{
|
||||
|
|
@ -806,24 +806,35 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
|||
gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
|
||||
}
|
||||
|
||||
return ret;
|
||||
if (ret == FBO_FAILURE)
|
||||
{ //FAILSAFE: screen buffer allocation failed, disable deferred rendering if it's enabled
|
||||
//NOTE: if the session closes successfully after this call, deferred rendering will be
|
||||
// disabled on future sessions
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
gSavedSettings.setBOOL("RenderDeferred", FALSE);
|
||||
LLPipeline::refreshCachedSettings();
|
||||
}
|
||||
}
|
||||
|
||||
return ret == FBO_SUCCESS_FULLRES;
|
||||
}
|
||||
|
||||
|
||||
bool LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
|
||||
LLPipeline::eFBOStatus LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
|
||||
{
|
||||
//try to allocate screen buffers at requested resolution and samples
|
||||
// try to allocate screen buffers at requested resolution and samples
|
||||
// - on failure, shrink number of samples and try again
|
||||
// - if not multisampled, shrink resolution and try again (favor X resolution over Y)
|
||||
// Make sure to call "releaseScreenBuffers" after each failure to cleanup the partially loaded state
|
||||
|
||||
U32 samples = RenderFSAASamples;
|
||||
|
||||
bool ret = true;
|
||||
eFBOStatus ret = FBO_SUCCESS_FULLRES;
|
||||
if (!allocateScreenBuffer(resX, resY, samples))
|
||||
{
|
||||
//failed to allocate at requested specification, return false
|
||||
ret = false;
|
||||
ret = FBO_FAILURE;
|
||||
|
||||
releaseScreenBuffers();
|
||||
//reduce number of samples
|
||||
|
|
@ -832,7 +843,7 @@ bool LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
|
|||
samples /= 2;
|
||||
if (allocateScreenBuffer(resX, resY, samples))
|
||||
{ //success
|
||||
return ret;
|
||||
return FBO_SUCCESS_LOWRES;
|
||||
}
|
||||
releaseScreenBuffers();
|
||||
}
|
||||
|
|
@ -845,14 +856,14 @@ bool LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
|
|||
resY /= 2;
|
||||
if (allocateScreenBuffer(resX, resY, samples))
|
||||
{
|
||||
return ret;
|
||||
return FBO_SUCCESS_LOWRES;
|
||||
}
|
||||
releaseScreenBuffers();
|
||||
|
||||
resX /= 2;
|
||||
if (allocateScreenBuffer(resX, resY, samples))
|
||||
{
|
||||
return ret;
|
||||
return FBO_SUCCESS_LOWRES;
|
||||
}
|
||||
releaseScreenBuffers();
|
||||
}
|
||||
|
|
@ -934,7 +945,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
}
|
||||
}
|
||||
|
||||
U32 width = (U32)(resX*scale);
|
||||
U32 width = (U32) (resX*scale);
|
||||
U32 height = width;
|
||||
|
||||
if (shadow_detail > 1)
|
||||
|
|
|
|||
|
|
@ -122,9 +122,16 @@ public:
|
|||
//allocate the largest screen buffer possible up to resX, resY
|
||||
//returns true if full size buffer allocated, false if some other size is allocated
|
||||
bool allocateScreenBuffer(U32 resX, U32 resY);
|
||||
|
||||
typedef enum {
|
||||
FBO_SUCCESS_FULLRES = 0,
|
||||
FBO_SUCCESS_LOWRES,
|
||||
FBO_FAILURE
|
||||
} eFBOStatus;
|
||||
|
||||
private:
|
||||
//implementation of above, wrapped for easy error handling
|
||||
bool doAllocateScreenBuffer(U32 resX, U32 resY);
|
||||
eFBOStatus doAllocateScreenBuffer(U32 resX, U32 resY);
|
||||
public:
|
||||
|
||||
//attempt to allocate screen buffers at resX, resY
|
||||
|
|
|
|||
Loading…
Reference in New Issue