From 6308743fd2c9fde30277c7c63aeeacd8facd9419 Mon Sep 17 00:00:00 2001 From: Drake Arconis Date: Fri, 8 Feb 2019 19:26:28 -0800 Subject: [PATCH 1/9] Fix issue where gamma was being corrupted on windows with night light enabled --- indra/llwindow/llwindowwin32.cpp | 24 ++++++++++++++++++++---- indra/llwindow/llwindowwin32.h | 5 +++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 504c1589b0..27787a51a8 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -425,6 +425,9 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, mKeyVirtualKey = 0; mhDC = NULL; mhRC = NULL; + memset(mCurrentGammaRamp, 0, sizeof(mCurrentGammaRamp)); + memset(mPrevGammaRamp, 0, sizeof(mPrevGammaRamp)); + mCustomGammaSet = FALSE; if (!SystemParametersInfo(SPI_GETMOUSEVANISH, 0, &mMouseVanish, 0)) { @@ -2989,13 +2992,26 @@ F32 LLWindowWin32::getGamma() BOOL LLWindowWin32::restoreGamma() { - return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); + if (mCustomGammaSet != FALSE) + { + mCustomGammaSet = FALSE; + return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); + } + return TRUE; } BOOL LLWindowWin32::setGamma(const F32 gamma) { mCurrentGamma = gamma; + //Get the previous gamma ramp to restore later. + if (mCustomGammaSet == FALSE) + { + if (GetDeviceGammaRamp(mhDC, mPrevGammaRamp) == FALSE) + return FALSE; + mCustomGammaSet = TRUE; + } + LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL; for ( int i = 0; i < 256; ++i ) @@ -3007,9 +3023,9 @@ BOOL LLWindowWin32::setGamma(const F32 gamma) if ( value > 0xffff ) value = 0xffff; - mCurrentGammaRamp [ 0 * 256 + i ] = - mCurrentGammaRamp [ 1 * 256 + i ] = - mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value; + mCurrentGammaRamp[0][i] = + mCurrentGammaRamp[1][i] = + mCurrentGammaRamp[2][i] = (WORD) value; }; return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp ); diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index d72623a6f4..9cd16eb993 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -184,8 +184,9 @@ protected: F32 mCurrentGamma; U32 mFSAASamples; - WORD mPrevGammaRamp[256*3]; - WORD mCurrentGammaRamp[256*3]; + WORD mPrevGammaRamp[3][256]; + WORD mCurrentGammaRamp[3][256]; + BOOL mCustomGammaSet; LPWSTR mIconResource; BOOL mMousePositionModified; From b996c95f32e9fa27206c4ed7ca20853c80c5e297 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Tue, 28 May 2019 23:52:23 +0300 Subject: [PATCH 2/9] SL-11079 Updated contributions.txt --- doc/contributions.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index a73bd10295..466dffded7 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -1323,6 +1323,7 @@ Sovereign Engineer STORM-2143 STORM-2148 MAINT-7343 + SL-11079 SpacedOut Frye VWR-34 VWR-45 From 9212c1f33e6790c50957c4c46b8e1a386990aef9 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Tue, 4 Jun 2019 00:03:03 +0300 Subject: [PATCH 3/9] SL-11341 Skip storing the previous gamma value on Intel GPUs + more logging --- indra/llwindow/llwindowwin32.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 27787a51a8..97cd31de81 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2994,6 +2994,7 @@ BOOL LLWindowWin32::restoreGamma() { if (mCustomGammaSet != FALSE) { + LL_DEBUGS("Window") << "Restoring gamma" << LL_ENDL; mCustomGammaSet = FALSE; return SetDeviceGammaRamp(mhDC, mPrevGammaRamp); } @@ -3007,8 +3008,15 @@ BOOL LLWindowWin32::setGamma(const F32 gamma) //Get the previous gamma ramp to restore later. if (mCustomGammaSet == FALSE) { - if (GetDeviceGammaRamp(mhDC, mPrevGammaRamp) == FALSE) - return FALSE; + if (!gGLManager.mIsIntel) // skip for Intel GPUs (see SL-11341) + { + LL_DEBUGS("Window") << "Getting the previous gamma ramp to restore later" << LL_ENDL; + if(GetDeviceGammaRamp(mhDC, mPrevGammaRamp) == FALSE) + { + LL_WARNS("Window") << "Failed to get the previous gamma ramp" << LL_ENDL; + return FALSE; + } + } mCustomGammaSet = TRUE; } From 2c2bdcf34866e881e12144e6e52579a8b4d81c52 Mon Sep 17 00:00:00 2001 From: Anchor Date: Mon, 10 Jun 2019 15:56:44 -0700 Subject: [PATCH 4/9] [DRTVWR-476] - fix compiler errors 32 bit windows build --- indra/llcommon/tests/lleventdispatcher_test.cpp | 4 ++-- indra/llimage/llimagejpeg.cpp | 1 - indra/llmessage/llproxy.cpp | 4 ++-- indra/llprimitive/llmodel.cpp | 2 +- indra/llui/llaccordionctrl.cpp | 2 +- indra/llvfs/lldir.cpp | 2 +- indra/newview/llpaneleditwearable.cpp | 6 +++--- indra/newview/llvovolume.cpp | 2 +- 8 files changed, 11 insertions(+), 12 deletions(-) diff --git a/indra/llcommon/tests/lleventdispatcher_test.cpp b/indra/llcommon/tests/lleventdispatcher_test.cpp index 5a4df81bf1..00fa597217 100644 --- a/indra/llcommon/tests/lleventdispatcher_test.cpp +++ b/indra/llcommon/tests/lleventdispatcher_test.cpp @@ -435,7 +435,7 @@ namespace tut std::vector binary; for (size_t ix = 0, h = 0xaa; ix < 6; ++ix, h += 0x11) { - binary.push_back(h); + binary.push_back((U8)h); } // Full defaults arrays. We actually don't care what the LLUUID or // LLDate values are, as long as they're different from the @@ -1182,7 +1182,7 @@ namespace tut std::vector binary; for (size_t h(0x01), i(0); i < 5; h+= 0x22, ++i) { - binary.push_back(h); + binary.push_back((U8)h); } LLSD args(LLSDMap("a", LLSDArray(true)(17)(3.14)(123.456)("char*")) ("b", LLSDArray("string") diff --git a/indra/llimage/llimagejpeg.cpp b/indra/llimage/llimagejpeg.cpp index 3b1b060c02..8c89b8a705 100644 --- a/indra/llimage/llimagejpeg.cpp +++ b/indra/llimage/llimagejpeg.cpp @@ -386,7 +386,6 @@ boolean LLImageJPEG::encodeEmptyOutputBuffer( j_compress_ptr cinfo ) { self->setLastError("Out of memory in LLImageJPEG::encodeEmptyOutputBuffer( j_compress_ptr cinfo )"); LLTHROW(LLContinueError("Out of memory in LLImageJPEG::encodeEmptyOutputBuffer( j_compress_ptr cinfo )")); - return false; } memcpy( new_buffer, self->mOutputBuffer, self->mOutputBufferSize ); /* Flawfinder: ignore */ delete[] self->mOutputBuffer; diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp index 5730a36267..fd27438949 100644 --- a/indra/llmessage/llproxy.cpp +++ b/indra/llmessage/llproxy.cpp @@ -115,9 +115,9 @@ S32 LLProxy::proxyHandshake(LLHost proxy) U32 request_size = socks_username.size() + socks_password.size() + 3; char * password_auth = new char[request_size]; password_auth[0] = 0x01; - password_auth[1] = socks_username.size(); + password_auth[1] = (char)(socks_username.size()); memcpy(&password_auth[2], socks_username.c_str(), socks_username.size()); - password_auth[socks_username.size() + 2] = socks_password.size(); + password_auth[socks_username.size() + 2] = (char)(socks_password.size()); memcpy(&password_auth[socks_username.size() + 3], socks_password.c_str(), socks_password.size()); authmethod_password_reply_t password_reply; diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 37548e3fe3..a2d9b4cd9b 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -1579,7 +1579,7 @@ void LLModel::Decomposition::fromLLSD(LLSD& decomp) range = max-min; - U16 count = position.size()/6; + U16 count = (U16)(position.size()/6); for (U32 j = 0; j < count; ++j) { diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 623f570cef..edcbc3fbb7 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -338,7 +338,7 @@ void LLAccordionCtrl::addCollapsibleCtrl(LLView* view) addChild(accordion_tab); mAccordionTabs.push_back(accordion_tab); - accordion_tab->setDropDownStateChangedCallback( boost::bind(&LLAccordionCtrl::onCollapseCtrlCloseOpen, this, mAccordionTabs.size() - 1) ); + accordion_tab->setDropDownStateChangedCallback( boost::bind(&LLAccordionCtrl::onCollapseCtrlCloseOpen, this, (S16)(mAccordionTabs.size() - 1)) ); arrange(); } diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 18836e54b0..e85331bdc3 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -1090,7 +1090,7 @@ LLDir::SepOff LLDir::needSep(const std::string& path, const std::string& name) c { // But if BOTH path and name bring a separator, we need not add one. // Moreover, we should actually skip the leading separator of 'name'. - return SepOff(false, seplen); + return SepOff(false, (unsigned short)seplen); } // Here we know that either path_ends_sep or name_starts_sep is true -- // but not both. So don't add a separator, and don't skip any characters: diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 3a8378f8df..72c28bfe60 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -761,7 +761,7 @@ BOOL LLPanelEditWearable::postBuild() LL_WARNS() << "could not get wearable dictionary entry for wearable of type: " << type << LL_ENDL; continue; } - U8 num_subparts = wearable_entry->mSubparts.size(); + U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); for (U8 index = 0; index < num_subparts; ++index) { @@ -1164,7 +1164,7 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO updatePanelPickerControls(type); // clear and rebuild visual param list - U8 num_subparts = wearable_entry->mSubparts.size(); + U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); for (U8 index = 0; index < num_subparts; ++index) { @@ -1355,7 +1355,7 @@ void LLPanelEditWearable::updateScrollingPanelUI() const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type); llassert(wearable_entry); if (!wearable_entry) return; - U8 num_subparts = wearable_entry->mSubparts.size(); + U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); LLScrollingPanelParam::sUpdateDelayFrames = 0; for (U8 index = 0; index < num_subparts; ++index) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 3793d6b9b2..1530ea68da 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2062,7 +2062,7 @@ void LLVOVolume::setNumTEs(const U8 num_tes) } else if(old_num_tes > num_tes && mMediaImplList.size() > num_tes) //old faces removed { - U8 end = mMediaImplList.size() ; + U8 end = (U8)(mMediaImplList.size()) ; for(U8 i = num_tes; i < end ; i++) { removeMediaImpl(i) ; From 2baff8e016e4cccf61b1f1ed756f6712e1ca7345 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 20 Jun 2019 14:18:41 -0400 Subject: [PATCH 5/9] Added tag 6.2.3-release for changeset ab2ec5c5423b --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index d440a39e8e..c5d9c8f7f5 100755 --- a/.hgtags +++ b/.hgtags @@ -549,3 +549,4 @@ a3143db58a0f6b005232bf9018e7fef17ff9ec90 6.1.0-release 82a89165e5929a6c3073d6cd60a543cb395f147b 6.2.0-release 706bdc7e25c6e6b8fb56f4a13fcce2936e70a79c 6.2.1-release ec09daf1899c1c01c4ba0ba950fae572f2a612a8 6.2.2-release +ab2ec5c5423b277d23fd0511ce50c15123ff2e03 6.2.3-release From 6f95100f7e33e6cd6e5bc462b1577c3a45fd964c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 20 Jun 2019 14:18:42 -0400 Subject: [PATCH 6/9] increment viewer version to 6.2.4 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index bee9433817..42cc526d6c 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.2.3 +6.2.4 From 7a417c94054199b6b2057efabb05725187c85c13 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 26 Jun 2019 11:23:33 -0400 Subject: [PATCH 7/9] DRTVWR-476: Add LLCOREHTTP_TESTS CMake var, OFF by default on Mac. Hopefully this is temporary until we solve the problem of crashy llcorehttp test executable on Mac. --- indra/llcorehttp/CMakeLists.txt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt index 7b6b2224ef..494f6642e0 100644 --- a/indra/llcorehttp/CMakeLists.txt +++ b/indra/llcorehttp/CMakeLists.txt @@ -101,12 +101,20 @@ target_link_libraries( ) # tests -if (LL_TESTS) +if (DARWIN) + # 2019-06-26: this test executable crashes on Mac trying to initialize std::atomic?! + set(LLCOREHTTP_TESTS_DFT OFF) +else () + set(LLCOREHTTP_TESTS_DFT ON) +endif () +set(LLCOREHTTP_TESTS ${LLCOREHTTP_TESTS_DFT} CACHE BOOL + "Build and run llcorehttp integration tests specifically") +if (LL_TESTS AND LLCOREHTTP_TESTS) SET(llcorehttp_TEST_SOURCE_FILES tests/test_allocator.cpp ) - set(llcorehttp_TEST_HEADER_FILS + set(llcorehttp_TEST_HEADER_FILES tests/test_httpstatus.hpp tests/test_refcounted.hpp tests/test_httpoperation.hpp @@ -232,5 +240,4 @@ endif (DARWIN) target_link_libraries(http_texture_load ${example_libs}) -endif (LL_TESTS) - +endif (LL_TESTS AND LLCOREHTTP_TESTS) From a94e28949935cef145cc08f8111a26e4da82babd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 26 Jun 2019 15:04:16 -0400 Subject: [PATCH 8/9] DRTVWR-476: On Mac, copy libhunspell-1.3.0.dylib for test programs. --- indra/cmake/Copy3rdPartyLibs.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 1a94ccd0be..d929608fab 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -190,6 +190,7 @@ elseif(DARWIN) libexception_handler.dylib ${EXPAT_COPY} libGLOD.dylib + libhunspell-1.3.0.dylib libndofdev.dylib libnghttp2.dylib libnghttp2.14.dylib From 8053bceaa0ccd6128536375c21cc3e9e19429efa Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 26 Jun 2019 15:08:50 -0400 Subject: [PATCH 9/9] DRTVWR-476: Pass Obj-C++ switch needed for BugsplatMac on Xcode 10.2. --- indra/newview/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 766dc5226c..c18b2c9a95 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1381,8 +1381,12 @@ if (DARWIN) PROPERTIES COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # BugsplatMac is a module, imported with @import. That language feature - # demands these switches. - COMPILE_FLAGS "-fmodules -fcxx-modules" + # demands these -f switches. + # Xcode 10.2 requires that Objective-C++ headers declare nullability of + # pointer variables. As of 2019-06-26, the BugsplatMac version we're using + # does not yet do so in its own header files. This -W flag prevents fatal + # warnings. + COMPILE_FLAGS "-fmodules -fcxx-modules -Wno-nullability-completeness" ) find_library(AGL_LIBRARY AGL)