summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorruslantproductengine <ruslantproductengine@lindenlab.com>2014-11-03 20:05:20 +0200
committerruslantproductengine <ruslantproductengine@lindenlab.com>2014-11-03 20:05:20 +0200
commit799d13269a5cdf29a5d68c15ceac42f0407b5833 (patch)
treeae1f17a27c9d1d02f302d2b5c73ed0aea25e8371 /indra/newview
parentf3d73d9e724e9ae1062bf109b6764d43ccba3114 (diff)
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. 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
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/lldaycyclemanager.cpp2
-rwxr-xr-xindra/newview/lllocalbitmaps.cpp5
-rwxr-xr-xindra/newview/llviewerdisplay.cpp8
-rwxr-xr-xindra/newview/llviewerdisplay.h2
4 files changed, 16 insertions, 1 deletions
diff --git a/indra/newview/lldaycyclemanager.cpp b/indra/newview/lldaycyclemanager.cpp
index 131675310e..803e2b2fb2 100755
--- a/indra/newview/lldaycyclemanager.cpp
+++ b/indra/newview/lldaycyclemanager.cpp
@@ -207,7 +207,7 @@ bool LLDayCycleManager::addPreset(const std::string& name, const LLSD& data)
{
if (name.empty())
{
- llassert(name.empty());
+ //llassert(name.empty());
return false;
}
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 897ee8429a..4a89fc92b4 100755
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -64,6 +64,8 @@
#include "llimagedimensionsinfo.h"
#include "llviewercontrol.h"
#include "lltrans.h"
+#include "llviewerdisplay.h"
+
/*=======================================*/
/* Formal declarations, constants, etc. */
/*=======================================*/
@@ -842,6 +844,9 @@ 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 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);
diff --git a/indra/newview/llviewerdisplay.h b/indra/newview/llviewerdisplay.h
index f6467d7f93..dcc78fe42f 100755
--- a/indra/newview/llviewerdisplay.h
+++ b/indra/newview/llviewerdisplay.h
@@ -34,6 +34,8 @@ 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;