Merge remote-tracking branch 'origin/master'

This commit is contained in:
Aleric Inglewood
2011-07-30 23:37:50 +02:00
21 changed files with 111 additions and 192 deletions

View File

@@ -248,8 +248,8 @@ if (DARWIN)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch")
# NOTE: it's critical that the optimization flag is put in front.
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -03 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -03 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELEASESSE2 "${CMAKE_CXX_FLAGS_RELEASESSE2} -O3 -msse2 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")

View File

@@ -35,8 +35,8 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 5;
const S32 LL_VERSION_PATCH = 9;
const S32 LL_VERSION_BUILD = 2;
const S32 LL_VERSION_PATCH = 10;
const S32 LL_VERSION_BUILD = 1;
const char * const LL_CHANNEL = "Singularity";

View File

@@ -246,9 +246,9 @@ BOOL LLFont::loadFace(const std::string& filename, const F32 point_size, const F
FT_Set_Charmap(mFTFace, mFTFace->charmaps[0]);
}
if (!mIsFallback)
if (!mIsFallback || !sOpenGLcrashOnRestart) // because this often crashes under Linux...
{
// Add the default glyph
// Add the empty glyph`5
addGlyph(0, 0);
}
@@ -362,7 +362,7 @@ BOOL LLFont::addGlyphFromFont(const LLFont *fontp, const llwchar wch, const U32
if (mFTFace == NULL)
return FALSE;
llassert(!mIsFallback);
//llassert(!mIsFallback);
fontp->renderGlyph(glyph_index);
S32 width = fontp->mFTFace->glyph->bitmap.width;
S32 height = fontp->mFTFace->glyph->bitmap.rows;
@@ -581,7 +581,7 @@ void LLFont::setSubImageLuminanceAlpha(const U32 x,
{
LLImageRaw *image_raw = mFontBitmapCachep->getImageRaw(bitmap_num);
llassert(!mIsFallback);
//llassert(!mIsFallback);
llassert(image_raw && (image_raw->getComponents() == 2));

View File

@@ -275,7 +275,7 @@ void LLFontGL::destroyAllGL()
else
{
sFontRegistry->destroyGL();
}
}
}
}

View File

@@ -297,7 +297,9 @@ private:
bool mDragOnLeft;
BOOL mButtonsEnabled[BUTTON_COUNT];
protected:
LLButton* mButtons[BUTTON_COUNT];
private:
F32 mButtonScale;
BOOL mAutoFocus;
LLHandle<LLFloater> mSnappedTo;

View File

@@ -453,15 +453,17 @@ const std::string LLLocale::USER_LOCALE("en_US.utf8");
const std::string LLLocale::SYSTEM_LOCALE("C");
#endif
static std::string PrevFailedLocaleString = "";
LLLocale::LLLocale(const std::string& locale_string)
{
mPrevLocaleString = setlocale( LC_ALL, NULL );
char* new_locale_string = setlocale( LC_ALL, locale_string.c_str());
if ( new_locale_string == NULL)
if ( new_locale_string == NULL && PrevFailedLocaleString != locale_string )
{
llwarns << "Failed to set locale " << locale_string.c_str() << llendl;
setlocale(LC_ALL, SYSTEM_LOCALE.c_str());
PrevFailedLocaleString = locale_string;
}
//else
//{

View File

@@ -120,7 +120,7 @@ void LLScriptLSOParse::printRegisters(LLFILE *fp)
else if (gMajorVersion == LSL2_MAJOR_VERSION_TWO)
{
U64 data = get_register_u64(mRawData, (LSCRIPTRegisters)i);
fprintf(fp, "%s: 0x%X%X\n", gLSCRIPTRegisterNames[i], (U32)(data>>32), (U32)(data && 0xFFFFFFFF));
fprintf(fp, "%s: 0x%X%X\n", gLSCRIPTRegisterNames[i], (U32)(data>>32), (U32)(data & 0xFFFFFFFF));
}
}
fprintf(fp, "=============================\n\n");

View File

@@ -28,7 +28,7 @@
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<string>U32</string>
<key>Value</key>
<integer>30</integer>
</map>

View File

@@ -61,7 +61,7 @@
<key>Global</key>
<map>
<key>Name</key>
<string>settings.xml</string>
<string>settings_singularity.xml</string>
<key>NameFromSetting</key>
<string>ClientSettingsFile</string>
</map>
@@ -81,7 +81,7 @@
<key>PerAccount</key>
<map>
<key>Name</key>
<string>settings_per_account.xml</string>
<string>settings_sg_per_account.xml</string>
</map>
</map>
</map>

View File

@@ -365,17 +365,6 @@
<string>This is an autoresponse!</string>
</map>
</map>
<key>AscentInstantMessageAnnounceIncoming</key>
<map>
<key>Comment</key>
<string>Open a new IM tab when another person begins typing to you and announce that they are doing so.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>MoyMiniMapCustomColor</key>
<map>
<key>Comment</key>
@@ -392,131 +381,6 @@
<real>1.0</real>
</array>
</map>
<!-- Ascent Account-Specific (If active) -->
<key>AscentFriendColor</key>
<map>
<key>Comment</key>
<string>Color of chat messages from other residents</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>1.0</real>
<real>1.0</real>
<real>0.0</real>
<real>1.0</real>
</array>
</map>
<key>AscentLindenColor</key>
<map>
<key>Comment</key>
<string>Color of chat messages from other residents</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>0.0</real>
<real>0.0</real>
<real>1.0</real>
<real>1.0</real>
</array>
</map>
<key>AscentMutedColor</key>
<map>
<key>Comment</key>
<string>Color of chat messages from other residents</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>0.7</real>
<real>0.7</real>
<real>0.7</real>
<real>1.0</real>
</array>
</map>
<key>AscentEstateOwnerColor</key>
<map>
<key>Comment</key>
<string>Color of chat messages from other residents</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>1.0</real>
<real>0.6</real>
<real>1.0</real>
<real>1.0</real>
</array>
</map>
<key>AscentUseCustomTag</key>
<map>
<key>Comment</key>
<string>Show a custom local tag.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>AscentCustomTagColor</key>
<map>
<key>Comment</key>
<string>Color of custom local tag.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>0.5</real>
<real>1.0</real>
<real>0.25</real>
<real>1.0</real>
</array>
</map>
<key>AscentCustomTagLabel</key>
<map>
<key>Comment</key>
<string>Label for the custom local tag</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>Custom</string>
</map>
<key>AscentReportClientIndex</key>
<map>
<key>Comment</key>
<string>Show your own tag</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>AscentReportClientUUID</key>
<map>
<key>Comment</key>
<string>Broadcasted Client Key</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string>f25263b7-6167-4f34-a4ef-af65213b2e39</string>
</map>
<!-- Ascent Account-Specific (Always) -->
<!-- General additions -->
<key>rkeastInventoryPreviousCount</key>

View File

@@ -68,6 +68,13 @@ if [ "$GTK_IM_MODULE" = "scim" ]; then
export GTK_IM_MODULE=xim
fi
# Work around for a crash bug when restarting OpenGL after a change in the
# graphic settings (anti-aliasing, VBO, FSAA, full screen mode, UI scale).
# When you enable this work around, you can change the settings without
# crashing, but you will have to restart the viewer after changing them
# because the display still gets corrupted.
export LL_OPENGL_RESTART_CRASH_BUG=x
## - Automatically work around the ATI mouse cursor crash bug:
## (this workaround is disabled as most fglrx users do not see the bug)
#if lsmod | grep fglrx &>/dev/null ; then

View File

@@ -75,8 +75,9 @@ LLDebugView::LLDebugView(const std::string& name, const LLRect &rect)
mFrameStatView->setVisible(FALSE); // start invisible
addChild(mFrameStatView);
r.set(25, rect.getHeight() - 50, (S32) (gViewerWindow->getVirtualWindowRect().getWidth() * 0.75f),
(S32) (gViewerWindow->getVirtualWindowRect().getHeight() * 0.75f));
r.setLeftTopAndSize(25, rect.getHeight() - 50,
(S32) (gViewerWindow->getVirtualWindowRect().getWidth() * 0.75f),
(S32) (gViewerWindow->getVirtualWindowRect().getHeight() * 0.75f));
mFastTimerView = new LLFastTimerView("fast timers", r);
mFastTimerView->setFollowsTop();
mFastTimerView->setFollowsLeft();

View File

@@ -233,7 +233,7 @@ static const int FTV_DISPLAY_NUM = LL_ARRAY_SIZE(ft_display_table);
S32 ft_display_idx[FTV_DISPLAY_NUM]; // line of table entry for display purposes (for collapse)
LLFastTimerView::LLFastTimerView(const std::string& name, const LLRect& rect)
: LLFloater(name, rect, std::string("Fast Timers"))
: LLFloater(name, rect, std::string(), FALSE, 1, 1, FALSE, FALSE, TRUE)
{
setVisible(FALSE);
mDisplayMode = 0;
@@ -320,6 +320,15 @@ S32 LLFastTimerView::getLegendIndex(S32 y)
BOOL LLFastTimerView::handleMouseDown(S32 x, S32 y, MASK mask)
{
{
S32 local_x = x - mButtons[BUTTON_CLOSE]->getRect().mLeft;
S32 local_y = y - mButtons[BUTTON_CLOSE]->getRect().mBottom;
if (mButtons[BUTTON_CLOSE]->getVisible() &&
mButtons[BUTTON_CLOSE]->pointInView(local_x, local_y))
{
return LLFloater::handleMouseDown(x, y, mask);
}
}
if (x < mBarRect.mLeft)
{
S32 legend_index = getLegendIndex(y);
@@ -381,6 +390,15 @@ BOOL LLFastTimerView::handleMouseDown(S32 x, S32 y, MASK mask)
BOOL LLFastTimerView::handleMouseUp(S32 x, S32 y, MASK mask)
{
{
S32 local_x = x - mButtons[BUTTON_CLOSE]->getRect().mLeft;
S32 local_y = y - mButtons[BUTTON_CLOSE]->getRect().mBottom;
if (mButtons[BUTTON_CLOSE]->getVisible() &&
mButtons[BUTTON_CLOSE]->pointInView(local_x, local_y))
{
return LLFloater::handleMouseUp(x, y, mask);
}
}
return FALSE;
}
@@ -429,6 +447,18 @@ BOOL LLFastTimerView::handleScrollWheel(S32 x, S32 y, S32 clicks)
return TRUE;
}
void LLFastTimerView::onClose(bool app_quitting)
{
if (app_quitting)
{
LLFloater::close(app_quitting);
}
else
{
setVisible(FALSE);
}
}
void LLFastTimerView::draw()
{
LLFastTimer t(LLFastTimer::FTM_RENDER_TIMER);
@@ -442,8 +472,9 @@ void LLFastTimerView::draw()
S32 height = (S32) (gViewerWindow->getVirtualWindowRect().getHeight()*0.75f);
S32 width = (S32) (gViewerWindow->getVirtualWindowRect().getWidth() * 0.75f);
// HACK: casting away const. Should use setRect or some helper function instead.
const_cast<LLRect&>(getRect()).setLeftTopAndSize(getRect().mLeft, getRect().mTop, width, height);
LLRect new_rect;
new_rect.setLeftTopAndSize(getRect().mLeft, getRect().mTop, width, height);
setRect(new_rect);
S32 left, top, right, bottom;
S32 x, y, barw, barh, dx, dy;
@@ -591,11 +622,14 @@ void LLFastTimerView::draw()
left = x; right = x + texth;
top = y; bottom = y - texth;
S32 scale_offset = 0;
if (i == mHoverIndex)
if (y > 3 * texth)
{
scale_offset = llfloor(sinf(mHighlightTimer.getElapsedTimeF32() * 6.f) * 2.f);
if (i == mHoverIndex)
{
scale_offset = llfloor(sinf(mHighlightTimer.getElapsedTimeF32() * 6.f) * 2.f);
}
gl_rect_2d(left - scale_offset, top + scale_offset, right + scale_offset, bottom - scale_offset, *ft_display_table[i].color);
}
gl_rect_2d(left - scale_offset, top + scale_offset, right + scale_offset, bottom - scale_offset, *ft_display_table[i].color);
int tidx = ft_display_table[i].timer;
F32 ms = 0;
@@ -625,7 +659,7 @@ void LLFastTimerView::draw()
dx = (texth+4) + level*8;
LLColor4 color = disabled > 1 ? LLColor4::grey : LLColor4::white;
if (level > 0)
if (level > 0 && y > 3 * texth)
{
S32 line_start_y = (top + bottom) / 2;
S32 line_end_y = line_start_y + ((texth + 2) * (display_line[i] - display_line[parent])) - (texth / 2);
@@ -647,13 +681,16 @@ void LLFastTimerView::draw()
next_parent = ft_display_table[next_parent].parent;
}
if (is_child_of_hover_item)
if (y > 3 * texth)
{
LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, color, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::BOLD);
}
else
{
LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, color, LLFontGL::LEFT, LLFontGL::TOP);
if (is_child_of_hover_item)
{
LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, color, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::BOLD);
}
else
{
LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, color, LLFontGL::LEFT, LLFontGL::TOP);
}
}
y -= (texth + 2);
@@ -661,6 +698,11 @@ void LLFastTimerView::draw()
if (textw > legendwidth)
legendwidth = textw;
}
if (y <= 3 * texth)
{
LLFontGL::getFontMonospace()->renderUTF8("<list truncated>", 0, 3 * texth, 2 * texth, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::BOLD);
}
for (S32 i=cur_line; i<FTV_DISPLAY_NUM; i++)
{
ft_display_idx[i] = -1;

View File

@@ -47,6 +47,7 @@ public:
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
virtual void onClose(bool app_quitting);
virtual void draw();
S32 getLegendIndex(S32 y);

View File

@@ -179,7 +179,7 @@ void LLPanelLandInfo::refresh()
childSetEnabled("button abandon land",owner_release || manager_releaseable || gAgent.isGodlike());
// only mainland sims are subdividable by owner
if (regionp->getRegionFlags() && REGION_FLAGS_ALLOW_PARCEL_CHANGES)
if (regionp->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES)
{
childSetEnabled("button subdivide land",owner_divide || manager_divideable || gAgent.isGodlike());
}

View File

@@ -607,7 +607,7 @@ void LLPanelLogin::giveFocus()
if( sInstance )
{
// Grab focus and move cursor to first blank input field
std::string first = sInstance->childGetText("name_combo");
std::string first = sInstance->getChild<LLComboBox>("name_combo")->getTextEntry();
std::string pass = sInstance->childGetText("password_edit");
BOOL have_first = !first.empty();
@@ -712,6 +712,7 @@ void LLPanelLogin::setFields(const LLSavedLoginEntry& entry, bool takeFocus)
std::string fullname = nameJoin(entry.getFirstName(), entry.getLastName());
LLComboBox* login_combo = sInstance->getChild<LLComboBox>("name_combo");
login_combo->setTextEntry(fullname);
login_combo->resetTextDirty();
//sInstance->childSetText("name_combo", fullname);
std::string grid = entry.getGrid();
@@ -1237,16 +1238,10 @@ void LLPanelLogin::onLoginComboLostFocus(LLFocusableElement* fe, void*)
if (sInstance)
{
LLComboBox* combo = sInstance->getChild<LLComboBox>("name_combo");
if(fe == combo)
if(fe == combo && combo->isTextDirty())
{
if (combo->isTextDirty())
{
clearPassword();
}
else
{
onSelectLoginEntry(combo, NULL);
}
clearPassword();
combo->resetTextDirty();
}
}
}

View File

@@ -479,8 +479,8 @@ static bool sgConnectionThrottle() {
LLMutexLock lock(&mutex);
const U32 THROTTLE_TIMESTEPS_PER_SECOND = 10;
static const LLCachedControl<U32> max_connections_per_second("HTTPRequestRate", 30);
S32 max_connections = max_connections_per_second/THROTTLE_TIMESTEPS_PER_SECOND;
const S32 timestep = USEC_PER_SEC/THROTTLE_TIMESTEPS_PER_SECOND;
U32 max_connections = max_connections_per_second/THROTTLE_TIMESTEPS_PER_SECOND;
const U32 timestep = USEC_PER_SEC/THROTTLE_TIMESTEPS_PER_SECOND;
U64 now = LLTimer::getTotalTime();
std::deque<U64> timestamps;
while(!timestamps.empty() && (timestamps[0]<=now-timestep)) {

View File

@@ -690,7 +690,7 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi
{
// FIXME: figure out how to really discover the type for these schemes
// We use "data" internally for a text/html url for loading the login screen
if(initializeMedia("text/html"))
if(initializeMedia("text/html") && (plugin = getMediaPlugin()))
{
plugin->loadURI( url );
}
@@ -698,7 +698,7 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi
else
{
// This catches 'rtsp://' urls
if(initializeMedia(scheme))
if(initializeMedia(scheme) && (plugin = getMediaPlugin()))
{
plugin->loadURI( url );
}

View File

@@ -4445,7 +4445,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
//rescale fonts
initFonts(scale_factor);
LLHUDText::reshape();
}
}
}
S32 output_buffer_offset_y = 0;
@@ -4608,7 +4608,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
gPipeline.resetDrawOrders();
}
if (high_res)
if (high_res && (show_ui || !hide_hud))
{
send_agent_resume();
}

View File

@@ -526,24 +526,29 @@ void LLVOVolume::updateTextureVirtualSize()
vsize = face->getTextureVirtualSize();
if (isAttachment())
{
// Rez attachments faster and at full details !
if (permYouOwner())
{
// Our attachments must really rez fast and fully:
// we shouldn't have to zoom on them to get the textures
// fully loaded !
imagep->setBoostLevel(LLViewerTexture::BOOST_HUD);
imagep->dontDiscard();
imagep->setBoostLevel(LLViewerTexture::BOOST_HIGH);
}
}
}
mPixelArea = llmax(mPixelArea, face->getPixelArea());
if (face->mTextureMatrix != NULL)
{
// Animating textures also rez badly in Snowglobe because the
// actual displayed area is only a fraction (corresponding to one
// frame) of the animating texture. Let's fix that here:
if (mTextureAnimp && mTextureAnimp->mScaleS > 0.0f && mTextureAnimp->mScaleT > 0.0f)
{
// Adjust to take into account the actual frame size which is only a
// portion of the animating texture
vsize = vsize / mTextureAnimp->mScaleS / mTextureAnimp->mScaleT;
}
if ((vsize < MIN_TEX_ANIM_SIZE && old_size > MIN_TEX_ANIM_SIZE) ||
(vsize > MIN_TEX_ANIM_SIZE && old_size < MIN_TEX_ANIM_SIZE))
(vsize > MIN_TEX_ANIM_SIZE && old_size < MIN_TEX_ANIM_SIZE))
{
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD, FALSE);
}

View File

@@ -403,9 +403,9 @@
<key>darwin</key>
<map>
<key>md5sum</key>
<string>694173293a483c01472a30cc7d895c5a</string>
<string>a9ab0e2910e1a8fe06a2a42ffdc8b7da</string>
<key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.1.5-darwin-20080812.tar.bz2</uri>
<uri>https://github.com/siana-osx/SingularityViewer/downloads/freetype-2.4.4-darwin-20110705.tar.bz2</uri>
</map>
<key>linux</key>
<map>