From 799d13269a5cdf29a5d68c15ceac42f0407b5833 Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Mon, 3 Nov 2014 20:05:20 +0200 Subject: MAINT-3585 FIXED Viewer Crashes when attempting to upload image. The bug was fixed, the reasone of crash is following. The Core Flow view contain another GL context and will not care about restoring a previous. I restore context manually. This path also contain a minor changes in another files. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All changes described here. Сhange's for fix current bug. indra/llwindow/llwindow.h indra/llwindow/llwindowheadless.h indra/llwindow/llwindowmacosx.h indra/llwindow/llwindowsdl.h indra/llwindow/llwindowwin32.h indra/newview/lllocalbitmaps.cpp indra/newview/llviewerdisplay.cpp indra/newview/llviewerdisplay.h Twice mUsage initialization (replace to forward initialization). indra/llcharacter/lljointstate.h Looks like condition should be befor memcopy call, otherwise - possible CRASH. indra/llcommon/llmd5.cpp Unused condition and variables. indra/llmath/llsphere.cpp Looks like should be under if otherwise - possible CRASH indra\llprimitive\llmodel.cpp Useless assert's. indra/llrender/llrender.cpp indra/newview/lldaycyclemanager.cpp --- indra/newview/llviewerdisplay.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'indra/newview/llviewerdisplay.cpp') diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 981e4c40aa..dfbb128d3b 100755 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1344,6 +1344,14 @@ void swap() gDisplaySwapBuffers = TRUE; } +void restoreGLContext() +{ + if(gViewerWindow && gViewerWindow->getWindow()) + { + gViewerWindow->getWindow()->restoreGLContext(); + } +} + void renderCoordinateAxes() { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -- cgit v1.3 From 5c255726f4820ea5007ea939a49eba82f8bdbc0b Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Fri, 12 Dec 2014 20:14:09 +0200 Subject: MAINT-3488 FIXED Pose balls are sometimes invisible after standing up until zooming camera closer --- indra/llprimitive/llprimitive.cpp | 5 ++--- indra/newview/llviewerdisplay.cpp | 4 ++-- indra/newview/llvovolume.cpp | 7 ++++--- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'indra/newview/llviewerdisplay.cpp') diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index aa44dc67d5..eb07482227 100755 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -1365,9 +1365,8 @@ S32 LLPrimitive::applyParsedTEMessage(LLTEContents& tec) retval |= setTEBumpShinyFullbright(i, tec.bump[i]); retval |= setTEMediaTexGen(i, tec.media_flags[i]); retval |= setTEGlow(i, (F32)tec.glow[i] / (F32)0xFF); - - retval |= setTEMaterialID(i, tec.material_ids[i]); - + retval |= setTEMaterialID(i, tec.material_ids[i]); + coloru = LLColor4U(tec.colors + 4*i); // Note: This is an optimization to send common colors (1.f, 1.f, 1.f, 1.f) diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index dfbb128d3b..9ef911616e 100755 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -930,8 +930,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (gSavedSettings.getBOOL("RenderDepthPrePass") && LLGLSLShader::sNoFixedFunction) { gGL.setColorMask(false, false); - - U32 types[] = { + + static const U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 008ef792e0..b49543c158 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1742,6 +1742,8 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) } } } + + genBBoxes(FALSE); } // it has its own drawable (it's moved) or it has changed UVs or it has changed xforms from global<->local else @@ -4973,7 +4975,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) facep->clearVertexBuffer(); } } - + if (is_rigged) { if (!drawablep->isState(LLDrawable::RIGGED)) @@ -4989,7 +4991,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) { drawablep->clearState(LLDrawable::RIGGED); } - } } @@ -5464,8 +5465,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFac flexi = flexi || facep->getViewerObject()->getVolume()->isUnique(); } - } } + } if (flexi && buffer_usage && buffer_usage != GL_STREAM_DRAW_ARB) -- cgit v1.3 From 90573badb4fcea3ae771c466e859854547ed7ad5 Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Mon, 30 Mar 2015 20:11:27 +0300 Subject: MAINT-3585 FIXED (Crashes when attempting to upload image.) --- indra/llwindow/llwindow.h | 1 - indra/llwindow/llwindowheadless.cpp | 4 ---- indra/llwindow/llwindowheadless.h | 1 - indra/llwindow/llwindowmacosx.cpp | 2 ++ indra/llwindow/llwindowmacosx.h | 8 ++++---- indra/newview/lllocalbitmaps.cpp | 3 --- indra/newview/llviewerdisplay.cpp | 8 -------- indra/newview/llviewerdisplay.h | 2 -- 8 files changed, 6 insertions(+), 23 deletions(-) (limited to 'indra/newview/llviewerdisplay.cpp') diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index 0aa1fbe905..0a30f4c807 100755 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -122,7 +122,6 @@ public: virtual void gatherInput() = 0; virtual void delayInputProcessing() = 0; virtual void swapBuffers() = 0; - virtual void restoreGLContext() = 0; virtual void bringToFront() = 0; virtual void focusClient() { }; // this may not have meaning or be required on other platforms, therefore, it's not abstract virtual void setOldResize(bool oldresize) { }; diff --git a/indra/llwindow/llwindowheadless.cpp b/indra/llwindow/llwindowheadless.cpp index b6f67c6107..70f473281b 100755 --- a/indra/llwindow/llwindowheadless.cpp +++ b/indra/llwindow/llwindowheadless.cpp @@ -51,7 +51,3 @@ LLWindowHeadless::~LLWindowHeadless() void LLWindowHeadless::swapBuffers() { } - -void LLWindowHeadless::restoreGLContext() -{ -} diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h index 5975ee3410..c692666df1 100755 --- a/indra/llwindow/llwindowheadless.h +++ b/indra/llwindow/llwindowheadless.h @@ -74,7 +74,6 @@ public: /*virtual*/ void gatherInput() {}; /*virtual*/ void delayInputProcessing() {}; /*virtual*/ void swapBuffers(); - /*virtual*/ void restoreGLContext(); // handy coordinate space conversion routines diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 1f577b117e..fc1ea06d10 100755 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -1163,6 +1163,8 @@ void LLWindowMacOSX::beforeDialog() void LLWindowMacOSX::afterDialog() { + //For fix problem with Core Flow view on OSX + restoreGLContext(); } diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 194c9bb27a..9e9bd8ae39 100755 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -87,9 +87,7 @@ public: /*virtual*/ void gatherInput(); /*virtual*/ void delayInputProcessing() {}; /*virtual*/ void swapBuffers(); - /*virtual*/ void restoreGLContext(); - - + // handy coordinate space conversion routines /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to); @@ -157,7 +155,9 @@ protected: //Satisfy MAINT-3135 and MAINT-3288 with a flag. /*virtual */ void setOldResize(bool oldresize) {setResizeMode(oldresize, mGLView); } - + +private: + void restoreGLContext(); protected: // diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index 4a89fc92b4..619140e922 100755 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -844,9 +844,6 @@ bool LLLocalBitmapMgr::addUnit() LLFilePicker& picker = LLFilePicker::instance(); if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE)) { - //For fix problem with Core Flow view on OSX - restoreGLContext(); - sTimer.stopTimer(); std::string filename = picker.getFirstFile(); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 9ef911616e..ea9463da04 100755 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1344,14 +1344,6 @@ void swap() gDisplaySwapBuffers = TRUE; } -void restoreGLContext() -{ - if(gViewerWindow && gViewerWindow->getWindow()) - { - gViewerWindow->getWindow()->restoreGLContext(); - } -} - void renderCoordinateAxes() { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); diff --git a/indra/newview/llviewerdisplay.h b/indra/newview/llviewerdisplay.h index dcc78fe42f..f6467d7f93 100755 --- a/indra/newview/llviewerdisplay.h +++ b/indra/newview/llviewerdisplay.h @@ -34,8 +34,6 @@ void display_cleanup(); void display(BOOL rebuild = TRUE, F32 zoom_factor = 1.f, int subfield = 0, BOOL for_snapshot = FALSE); -void restoreGLContext(); - extern BOOL gDisplaySwapBuffers; extern BOOL gDepthDirty; extern BOOL gTeleportDisplay; -- cgit v1.3