summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/llconsole.cpp59
-rw-r--r--indra/llui/llconsole.h11
-rw-r--r--indra/llui/llmultisliderctrl.cpp4
-rw-r--r--indra/llui/lltabcontainer.cpp5
4 files changed, 43 insertions, 36 deletions
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 0237c80efa..a4f69e7ac1 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -244,23 +244,6 @@ void LLConsole::draw()
}
}
-void LLConsole::addLine(const std::string& utf8line)
-{
- LLWString wline = utf8str_to_wstring(utf8line);
- addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f));
-}
-
-void LLConsole::addLine(const LLWString& wline)
-{
- addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f));
-}
-
-void LLConsole::addLine(const std::string& utf8line, F32 size, const LLColor4 &color)
-{
- LLWString wline = utf8str_to_wstring(utf8line);
- addLine(wline, size, color);
-}
-
//Generate highlight color segments for this paragraph. Pass in default color of paragraph.
void LLConsole::Paragraph::makeParagraphColorSegments (const LLColor4 &color)
{
@@ -383,21 +366,45 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b
//Pass in the string and the default color for this block of text.
LLConsole::Paragraph::Paragraph (LLWString str, const LLColor4 &color, F32 add_time, const LLFontGL* font, F32 screen_width)
- : mParagraphText(str), mAddTime(add_time), mMaxWidth(-1)
+: mParagraphText(str), mAddTime(add_time), mMaxWidth(-1)
{
makeParagraphColorSegments(color);
updateLines( screen_width, font );
}
-void LLConsole::addLine(const LLWString& wline, F32 size, const LLColor4 &color)
+// called once per frame regardless of console visibility
+// static
+void LLConsole::updateClass()
{
- Paragraph paragraph(wline, color, mTimer.getElapsedTimeF32(), mFont, (F32)getRect().getWidth() );
-
- mParagraphs.push_back ( paragraph );
+ LLInstanceTrackerScopedGuard guard;
+
+ for (instance_iter it = guard.beginInstances(); it != guard.endInstances(); ++it)
+ {
+ it->update();
+ }
+}
+
+void LLConsole::update()
+{
+ {
+ LLMutexLock lock(&mMutex);
+
+ while (!mLines.empty())
+ {
+ mParagraphs.push_back(
+ Paragraph( mLines.front(),
+ LLColor4::white,
+ mTimer.getElapsedTimeF32(),
+ mFont,
+ (F32)getRect().getWidth()));
+ mLines.pop_front();
+ }
+ }
// remove old paragraphs which can't possibly be visible any more. ::draw() will do something similar but more conservative - we do this here because ::draw() isn't guaranteed to ever be called! (i.e. the console isn't visible)
- while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines)))
- {
- mParagraphs.pop_front();
- }
+ while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines)))
+ {
+ mParagraphs.pop_front();
+ }
}
+
diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h
index 4719950f28..f38e2bc9c2 100644
--- a/indra/llui/llconsole.h
+++ b/indra/llui/llconsole.h
@@ -40,7 +40,7 @@
class LLSD;
-class LLConsole : public LLFixedBuffer, public LLUICtrl
+class LLConsole : public LLFixedBuffer, public LLUICtrl, public LLInstanceTracker<LLConsole>
{
public:
typedef enum e_font_size
@@ -68,6 +68,9 @@ protected:
friend class LLUICtrlFactory;
public:
+ // call once per frame to pull data out of LLFixedBuffer
+ static void updateClass();
+
//A paragraph color segment defines the color of text in a line
//of text that was received for console display. It has no
//notion of line wraps, screen position, or the text it contains.
@@ -139,14 +142,12 @@ public:
// -1 = monospace, 0 means small, font size = 1 means big
void setFontSize(S32 size_index);
- void addLine(const std::string& utf8line, F32 size, const LLColor4 &color);
- void addLine(const LLWString& wline, F32 size, const LLColor4 &color);
// Overrides
/*virtual*/ void draw();
- /*virtual*/ void addLine(const std::string& utf8line);
- /*virtual*/ void addLine(const LLWString& line);
private:
+ void update();
+
F32 mLinePersistTime; // Age at which to stop drawing.
F32 mFadeTime; // Age at which to start fading
const LLFontGL* mFont;
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index cb81c39103..50942e55ca 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -331,6 +331,10 @@ void LLMultiSliderCtrl::updateText()
void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)
{
LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());
+ llassert(self);
+ if (!self) // cast failed - wrong type! :O
+ return;
+
if (!ctrl)
return;
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index fe699cfa01..13340e7ded 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -1631,14 +1631,9 @@ void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon)
void LLTabContainer::reshapeTuple(LLTabTuple* tuple)
{
static LLUICachedControl<S32> tab_padding ("UITabPadding", 0);
- static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2);
- static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2);
if (!mIsVertical)
{
- tuple->mButton->setImageOverlayTopPad(image_top_padding);
- tuple->mButton->setImageOverlayBottomPad(image_bottom_padding);
-
// remove current width from total tab strip width
mTotalTabWidth -= tuple->mButton->getRect().getWidth();