diff options
author | Richard Linden <none@none> | 2012-01-11 10:21:32 -0800 |
---|---|---|
committer | Richard Linden <none@none> | 2012-01-11 10:21:32 -0800 |
commit | daa96009a20b09b7ab9f84b4562462e410d1fa78 (patch) | |
tree | ec3e4da0ddd1c0631f1ea5ed977bc1e9a5058226 | |
parent | 9cdfecd9e1d9862d9dbd674faa1e28a793540079 (diff) | |
parent | 3169f4a96fd4c62d1390cd53ff2aaa4cb28fb047 (diff) |
Automated merge with ssh://hg.lindenlab.com/richard/viewer-experience
-rw-r--r-- | indra/llui/llview.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 542f57ee5f..004681325f 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -282,9 +282,6 @@ void LLView::moveChildToBackOfTabGroup(LLUICtrl* child) // virtual bool LLView::addChild(LLView* child, S32 tab_group) { - // NOTE: Changed this to not crash in release mode - llassert(mInDraw == false); - if (!child) { return false; @@ -334,10 +331,11 @@ bool LLView::addChildInBack(LLView* child, S32 tab_group) // remove the specified child from the view, and set it's parent to NULL. void LLView::removeChild(LLView* child) { - llassert_always(mInDraw == false); //llassert_always(sDepth == 0); // Avoid re-ordering while drawing; it can cause subtle iterator bugs if (child->mParentView == this) { + // if we are removing an item we are currently iterating over, that would be bad + llassert(child->mInDraw == false); mChildList.remove( child ); child->mParentView = NULL; if (child->isCtrl()) @@ -1086,7 +1084,6 @@ void LLView::draw() void LLView::drawChildren() { - mInDraw = true; if (!mChildList.empty()) { LLView* rootp = LLUI::getRootView(); @@ -1105,7 +1102,10 @@ void LLView::drawChildren() LLUI::pushMatrix(); { LLUI::translate((F32)viewp->getRect().mLeft, (F32)viewp->getRect().mBottom, 0.f); + // flag the fact we are in draw here, in case overridden draw() method attempts to remove this widget + viewp->mInDraw = true; viewp->draw(); + viewp->mInDraw = false; if (sDebugRects) { @@ -1125,7 +1125,6 @@ void LLView::drawChildren() } --sDepth; } - mInDraw = false; } void LLView::dirtyRect() |