From 07635d22f567cd0aeb9addf5ac22b02fa1da0e6c Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 22 Oct 2019 17:17:12 +0300 Subject: SL-12173 Crash on setShape --- indra/newview/llviewerwindow.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index a7601fc30c..f3de5f03cd 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1994,6 +1994,11 @@ void LLViewerWindow::initBase() LLPanel* panel_holder = main_view->getChild("toolbar_view_holder"); // Load the toolbar view from file gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance()); + if (!gToolBarView) + { + LL_ERRS() << "Failed to initialize viewer: Viewer couldn't process file panel_toolbar_view.xml, " + << "if this problem happens again, please validate your installation." << LL_ENDL; + } gToolBarView->setShape(panel_holder->getLocalRect()); // Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI()) gToolBarView->setVisible(FALSE); -- cgit v1.2.3 From 39dc22d1adddb85a8b5edd5a30ad7750e9f19142 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 24 Oct 2019 18:47:47 +0300 Subject: SL-12185 [mac] crash when typing letters while viewer is loading --- indra/newview/llviewerwindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index f3de5f03cd..1e2b2c37d0 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2884,7 +2884,8 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) // If "Pressing letter keys starts local chat" option is selected, we are not in mouselook, // no view has keyboard focus, this is a printable character key (and no modifier key is // pressed except shift), then give focus to nearby chat (STORM-560) - if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() && + if ( LLStartUp::getStartupState() >= STATE_STARTED && + gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() && !keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) ) { // Initialize nearby chat if it's missing -- cgit v1.2.3 From fd2f138ec75c092ae2a4b29127fa4c6aca50cf0e Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Fri, 24 Apr 2020 15:31:51 -0700 Subject: DRTVWR-510 Cleanup: Fix copy-pasta typo of camera matrices --- indra/newview/llviewerwindow.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index f64dfcf0d4..aaba8dfa5c 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -709,32 +709,32 @@ public: } if (gSavedSettings.getBOOL("DebugShowRenderMatrices")) { - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLProjection[12], gGLProjection[13], gGLProjection[14], gGLProjection[15])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[12], gGLProjection[13], gGLProjection[14], gGLProjection[15])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLProjection[8], gGLProjection[9], gGLProjection[10], gGLProjection[11])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[8], gGLProjection[9], gGLProjection[10], gGLProjection[11])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLProjection[4], gGLProjection[5], gGLProjection[6], gGLProjection[7])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[4], gGLProjection[5], gGLProjection[6], gGLProjection[7])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLProjection[0], gGLProjection[1], gGLProjection[2], gGLProjection[3])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[0], gGLProjection[1], gGLProjection[2], gGLProjection[3])); ypos += y_inc; addText(xpos, ypos, "Projection Matrix"); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLModelView[12], gGLModelView[13], gGLModelView[14], gGLModelView[15])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[12], gGLModelView[13], gGLModelView[14], gGLModelView[15])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLModelView[8], gGLModelView[9], gGLModelView[10], gGLModelView[11])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[8], gGLModelView[9], gGLModelView[10], gGLModelView[11])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLModelView[4], gGLModelView[5], gGLModelView[6], gGLModelView[7])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[4], gGLModelView[5], gGLModelView[6], gGLModelView[7])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f .%4f %.4f %.4f", gGLModelView[0], gGLModelView[1], gGLModelView[2], gGLModelView[3])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[0], gGLModelView[1], gGLModelView[2], gGLModelView[3])); ypos += y_inc; addText(xpos, ypos, "View Matrix"); -- cgit v1.2.3 From f4da8cd3738b8dafecad3ab4f8c1d03fafdfd37e Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Mon, 27 Apr 2020 15:27:31 -0700 Subject: DRTVWR-510 Cleanup: Remove (redundant) last columns from Debug Camera matrices as they are static. --- indra/newview/llviewerwindow.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index aaba8dfa5c..7364454b45 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -709,32 +709,33 @@ public: } if (gSavedSettings.getBOOL("DebugShowRenderMatrices")) { - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[12], gGLProjection[13], gGLProjection[14], gGLProjection[15])); + // Projection last column is always <0,0,-1,0> + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[12], gGLProjection[13], gGLProjection[14])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[8], gGLProjection[9], gGLProjection[10], gGLProjection[11])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[8], gGLProjection[9], gGLProjection[10])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[4], gGLProjection[5], gGLProjection[6], gGLProjection[7])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[4], gGLProjection[5], gGLProjection[6])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLProjection[0], gGLProjection[1], gGLProjection[2], gGLProjection[3])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[0], gGLProjection[1], gGLProjection[2])); ypos += y_inc; addText(xpos, ypos, "Projection Matrix"); ypos += y_inc; - - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[12], gGLModelView[13], gGLModelView[14], gGLModelView[15])); + // View last column is always <0,0,0,1> + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[12], gGLModelView[13], gGLModelView[14])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[8], gGLModelView[9], gGLModelView[10], gGLModelView[11])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[8], gGLModelView[9], gGLModelView[10])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[4], gGLModelView[5], gGLModelView[6], gGLModelView[7])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[4], gGLModelView[5], gGLModelView[6])); ypos += y_inc; - addText(xpos, ypos, llformat("%.4f %.4f %.4f %.4f", gGLModelView[0], gGLModelView[1], gGLModelView[2], gGLModelView[3])); + addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[0], gGLModelView[1], gGLModelView[2])); ypos += y_inc; addText(xpos, ypos, "View Matrix"); -- cgit v1.2.3 From c2c11a67ff594d0163f9fed9d178b1fbb6f8f25b Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Tue, 28 Apr 2020 17:19:59 -0700 Subject: DRTVWR-510 Cleanup: Align camera matrices columns for consistent placement to improve readability --- indra/newview/llviewerwindow.cpp | 97 ++++++++++++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 23 deletions(-) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 7364454b45..77cccf1c3b 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -311,6 +311,66 @@ RecordToChatConsole::RecordToChatConsole(): mRecorder->showMultiline(true); } +//////////////////////////////////////////////////////////////////////////// +// +// Print Utility +// + +// Convert a normalized float (-1.0 <= x <= +1.0) to a fixed 1.4 format string: +// +// s#.#### +// +// Where: +// s sign character; space if x is positiv, minus if negative +// # decimal digits +// +// This is similar to printf("%+.4f") except positive numbers are NOT cluttered with a leading '+' sign. +void normalized_float_to_string(const float x, char *out_str) +{ + static const unsigned char DECIMAL_BCD2[] = + { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99 + }; + + int neg = (x < 0); + int rem = neg + ? (int)(x * -10000.) + : (int)(x * 10000.); + + int d10 = rem % 100; rem /= 100; + int d32 = rem % 100; rem /= 100; + + out_str[7] = 0; + out_str[6] = '0' + ((DECIMAL_BCD2[ d10 ] >> 0) & 0xF); + out_str[5] = '0' + ((DECIMAL_BCD2[ d10 ] >> 4) & 0xF); + out_str[4] = '0' + ((DECIMAL_BCD2[ d32 ] >> 0) & 0xF); + out_str[3] = '0' + ((DECIMAL_BCD2[ d32 ] >> 4) & 0xF); + out_str[2] = '.'; + out_str[1] = '0' + (rem & 1); + out_str[0] = " -"[neg]; // Could always show '+' for positive but this clutters up the common case +} + +// normalized float +#define MATRIX_ROW_N32_TO_STR( matrix_row, i ) \ + normalized_float_to_string( matrix_row[i+0], x_str ); \ + normalized_float_to_string( matrix_row[i+1], y_str ); \ + normalized_float_to_string( matrix_row[i+2], z_str ); + +// regular float +#define MATRIX_ROW_F32_TO_STR( matrix_row, i ) \ + sprintf(x_str, "%-9.2f", matrix_row[i+0] ); \ + sprintf(y_str, "%-9.2f", matrix_row[i+1] ); \ + sprintf(z_str, "%-9.2f", matrix_row[i+2] ); + //////////////////////////////////////////////////////////////////////////// // // LLDebugText @@ -709,34 +769,25 @@ public: } if (gSavedSettings.getBOOL("DebugShowRenderMatrices")) { - // Projection last column is always <0,0,-1,0> - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[12], gGLProjection[13], gGLProjection[14])); - ypos += y_inc; + char x_str[16]; + char y_str[16]; + char z_str[16]; - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[8], gGLProjection[9], gGLProjection[10])); - ypos += y_inc; - - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[4], gGLProjection[5], gGLProjection[6])); - ypos += y_inc; - - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLProjection[0], gGLProjection[1], gGLProjection[2])); - ypos += y_inc; + // Projection last column is always <0,0,-1,0> + // Projection last row is <0,0,x> + MATRIX_ROW_N32_TO_STR(gGLProjection, 12); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLProjection, 8); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLProjection, 4); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLProjection, 0); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; addText(xpos, ypos, "Projection Matrix"); ypos += y_inc; - // View last column is always <0,0,0,1> - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[12], gGLModelView[13], gGLModelView[14])); - ypos += y_inc; - - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[8], gGLModelView[9], gGLModelView[10])); - ypos += y_inc; - - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[4], gGLModelView[5], gGLModelView[6])); - ypos += y_inc; - - addText(xpos, ypos, llformat("%.4f %.4f %.4f", gGLModelView[0], gGLModelView[1], gGLModelView[2])); - ypos += y_inc; + // View last column is always <0,0,0,1> + MATRIX_ROW_F32_TO_STR(gGLModelView, 12); addText(xpos, ypos, llformat("%s ""%s ""%s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLModelView, 8); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLModelView, 4); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLModelView, 0); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; addText(xpos, ypos, "View Matrix"); ypos += y_inc; -- cgit v1.2.3 From 2665cd65dd7f04db432002b0d5e1d83ba9cde222 Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Tue, 28 Apr 2020 17:21:16 -0700 Subject: DRTVWR-510 Cleanup: Add dark background under camera matrice for contrast when against a white background --- indra/newview/llviewerwindow.cpp | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 77cccf1c3b..fb4db23c26 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -393,7 +393,11 @@ private: typedef std::vector line_list_t; line_list_t mLineList; LLColor4 mTextColor; - + + LLColor4 mBackColor; + LLRect mBackRectCamera1; + LLRect mBackRectCamera2; + void addText(S32 x, S32 y, const std::string &text) { mLineList.push_back(Line(text, x, y)); @@ -429,11 +433,22 @@ public: mTextColor = LLColor4( 0.86f, 0.86f, 0.86f, 1.f ); // Draw stuff growing up from right lower corner of screen - S32 xpos = mWindow->getWorldViewWidthScaled() - 400; + S32 x_right = mWindow->getWorldViewWidthScaled(); + S32 xpos = x_right - 400; xpos = llmax(xpos, 0); S32 ypos = 64; const S32 y_inc = 20; + // Camera matrix text is hard to see again a white background + // Add a dark background underneath the matrices for readability (contrast) + mBackRectCamera1.mLeft = xpos; + mBackRectCamera1.mRight = x_right; + mBackRectCamera1.mTop = -1; + mBackRectCamera1.mBottom = -1; + mBackRectCamera2 = mBackRectCamera1; + + mBackColor = LLUIColorTable::instance().getColor( "MenuDefaultBgColor" ); + clearText(); if (gSavedSettings.getBOOL("DebugShowTime")) @@ -775,10 +790,11 @@ public: // Projection last column is always <0,0,-1,0> // Projection last row is <0,0,x> + mBackRectCamera1.mBottom = ypos - y_inc; MATRIX_ROW_N32_TO_STR(gGLProjection, 12); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; MATRIX_ROW_N32_TO_STR(gGLProjection, 8); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; - MATRIX_ROW_N32_TO_STR(gGLProjection, 4); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; - MATRIX_ROW_N32_TO_STR(gGLProjection, 0); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLProjection, 4); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; mBackRectCamera1.mTop = ypos; + MATRIX_ROW_N32_TO_STR(gGLProjection, 0); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; mBackRectCamera2.mBottom = ypos; addText(xpos, ypos, "Projection Matrix"); ypos += y_inc; @@ -786,7 +802,7 @@ public: // View last column is always <0,0,0,1> MATRIX_ROW_F32_TO_STR(gGLModelView, 12); addText(xpos, ypos, llformat("%s ""%s ""%s", x_str, y_str, z_str)); ypos += y_inc; MATRIX_ROW_N32_TO_STR(gGLModelView, 8); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; - MATRIX_ROW_N32_TO_STR(gGLModelView, 4); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; + MATRIX_ROW_N32_TO_STR(gGLModelView, 4); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; mBackRectCamera2.mTop = ypos; MATRIX_ROW_N32_TO_STR(gGLModelView, 0); addText(xpos, ypos, llformat("%s %s %s", x_str, y_str, z_str)); ypos += y_inc; addText(xpos, ypos, "View Matrix"); @@ -929,6 +945,18 @@ public: void draw() { LL_RECORD_BLOCK_TIME(FTM_DISPLAY_DEBUG_TEXT); + + // Camera matrix text is hard to see again a white background + // Add a dark background underneath the matrices for readability (contrast) + if (mBackRectCamera1.mTop >= 0) + { + mBackColor.setAlpha( 0.75f ); + gl_rect_2d(mBackRectCamera1, mBackColor, true); + + mBackColor.setAlpha( 0.66f ); + gl_rect_2d(mBackRectCamera2, mBackColor, true); + } + for (line_list_t::iterator iter = mLineList.begin(); iter != mLineList.end(); ++iter) { -- cgit v1.2.3 From 7449f4b6d770be9d56ee5fa3d20b6b59d816719c Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Tue, 28 Apr 2020 17:23:09 -0700 Subject: DRTVWR-510 Cleanup: Remove useless redundant debug lines clear; updateDebugText() is always called before drawDebugText() which already clears the debug text lines --- indra/newview/llviewerwindow.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'indra/newview/llviewerwindow.cpp') diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index fb4db23c26..e4b5c02a56 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -965,7 +965,6 @@ public: LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE); } - mLineList.clear(); } }; -- cgit v1.2.3