Merge Firestorm LGPL

meow-7.2.2
Ansariel 2019-05-02 16:48:56 +02:00
commit 3443ae7b26
13 changed files with 237 additions and 106 deletions

View File

@ -20,16 +20,16 @@ Available premade firestorm-specific build targets:
RelWithDebInfoFS_open (no KDU, no FMODEX)
To build firestorm:
autobuild build -c ReleaseFS
autobuild build -A64 -c ReleaseFS
Other examples:
autobuild configure -c ReleaseFS # basic configuration step, don't build, just configure
autobuild configure -c ReleaseFS -- --clean # clean the output area first, then configure
autobuild configure -c ReleaseFS -- --chan Private-Yourname # configure with a custom channel
autobuild configure -A64 -c ReleaseFS # basic configuration step, don't build, just configure
autobuild configure -A64 -c ReleaseFS -- --clean # clean the output area first, then configure
autobuild configure -A64 -c ReleaseFS -- --chan Private-Yourname # configure with a custom channel
autobuild build -c ReleaseFS --no-configure # default quick rebuild
autobuild build -c ReleaseFS --no-configure -- --clean # Clean rebuild
autobuild build -c ReleaseFS -- --package # Complete a build and package it into a tarball
autobuild build -A64 -c ReleaseFS --no-configure # default quick rebuild
autobuild build -A64 -c ReleaseFS --no-configure -- --clean # Clean rebuild
autobuild build -A64 -c ReleaseFS -- --package # Complete a build and package it into a tarball
Any of the configure options can also be used (and do the same thing) with the build options.
Typical LL autobuild configure options should also work, as long as they don't duplicate configuration we are
@ -37,9 +37,9 @@ already doing.
Logs:
Look for logs in build-linux-i686/logs
Look for logs in build-linux-x86_64/logs
Output:
Look for output in build-linux-i686/newview/Release
Look for output in build-linux-x86_64/newview/Release

View File

@ -24,10 +24,10 @@
*
*/
// <FS:ND> Disable some warnings on newer GCC versions. (Camd with GCC >= 8.2
// <FS:ND> Disable some warnings on newer GCC versions. (Camd with GCC >= 7.3
#if LL_LINUX
#pragma GCC diagnostic ignored "-Wuninitialized"
#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ ) >= 80200
#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ ) >= 70300
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif
#endif

View File

@ -33,7 +33,10 @@
#include "llpluginmessageclasses.h"
#include "llcontrol.h"
extern LLControlGroup gSavedSettings;
extern LLControlGroup gSavedSettings;
#if LL_DARWIN
extern BOOL gHiDPISupport;
#endif
static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256;
@ -365,11 +368,16 @@ void LLPluginClassMedia::setSizeInternal(void)
mRequestedMediaHeight = nextPowerOf2(mRequestedMediaHeight);
}
if(mRequestedMediaWidth > 2048)
mRequestedMediaWidth = 2048;
#if LL_DARWIN
if (!gHiDPISupport)
#endif
{
if (mRequestedMediaWidth > 2048)
mRequestedMediaWidth = 2048;
if(mRequestedMediaHeight > 2048)
mRequestedMediaHeight = 2048;
if (mRequestedMediaHeight > 2048)
mRequestedMediaHeight = 2048;
}
}
void LLPluginClassMedia::setAutoScale(bool auto_scale)

View File

@ -647,15 +647,10 @@ void renderFace(LLDrawable* drawable, LLFace *face)
LLVOVolume* vobj = drawable->getVOVolume();
if (vobj)
{
LLVertexBuffer::unbind();
gGL.pushMatrix();
gGL.multMatrix((F32*)vobj->getRelativeXform().mMatrix);
LLVolume* volume = NULL;
if (drawable->isState(LLDrawable::RIGGED))
{
vobj->updateRiggedVolume();
volume = vobj->getRiggedVolume();
}
else
@ -670,44 +665,11 @@ void renderFace(LLDrawable* drawable, LLFace *face)
//LLVertexBuffer::drawElements(LLRender::TRIANGLES, vol_face.mPositions, NULL, vol_face.mNumIndices, vol_face.mIndices);
LLVertexBuffer::drawElements(LLRender::TRIANGLES, vol_face.mNumVertices, vol_face.mPositions, NULL, vol_face.mNumIndices, vol_face.mIndices);
}
gGL.popMatrix();
}
}
void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wireframe_selection, bool bRenderHiddenSelections)
void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wireframe_selection, bool bRenderHiddenSelections, bool shader)
{
//Need to because crash on ATI 3800 (and similar cards) MAINT-5018
LLGLDisable multisample(LLPipeline::RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
if (shader)
{
gDebugProgram.bind();
}
gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
BOOL is_hud_object = mVObjp->isHUDAttachment();
if (mDrawablep->isActive())
{
gGL.loadMatrix(gGLModelView);
gGL.multMatrix((F32*)mVObjp->getRenderMatrix().mMatrix);
}
else if (!is_hud_object)
{
gGL.loadIdentity();
gGL.multMatrix(gGLModelView);
LLVector3 trans = mVObjp->getRegion()->getOriginAgent();
gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
}
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
if (bRenderHiddenSelections)
{
gGL.blendFunc(LLRender::BF_SOURCE_COLOR, LLRender::BF_ONE);
@ -763,15 +725,6 @@ void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wirefram
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
renderFace(mDrawablep, this);
}
glLineWidth(1.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
gGL.popMatrix();
if (shader)
{
shader->bind();
}
}
/* removed in lieu of raycast uv detection

View File

@ -202,7 +202,7 @@ public:
void renderSelectedUV();
void renderSelected(LLViewerTexture *image, const LLColor4 &color);
void renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wireframe_selection, bool bRenderHiddenSelections);
void renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wireframe_selection, bool bRenderHiddenSelections, bool shader);
F32 getKey() const { return mDistance; }

View File

@ -217,6 +217,20 @@ S32 LLMachineID::init()
// Get the value of the Name property
hr = pclsObj->Get(L"SerialNumber", 0, &vtProp, 0, 0);
// <FS:ND> On some systems it can happen that the serial is either unset or does not return a string.
// In that case try to get the next enumator and try again.
// Without this condition the viewer will crash. With it at worst the affected system will use 0*16 as the machineid.
if( FAILED(hr) || !vtProp.bstrVal || vtProp.vt != VT_BSTR )
{
std::stringstream strHr;
strHr << std::hex << hr;
LL_WARNS() << "pclsObj->Get(L'SerialNumber') failed with hr" << strHr.str().c_str() << " and vtProp.vt = " << (U32)vtProp.vt << LL_ENDL;
pclsObj->Release();
continue;
}
// </FS:ND>
LL_INFOS("AppInit") << " Serial Number : " << vtProp.bstrVal << LL_ENDL;
// use characters in the returned Serial Number to create a byte array of size len
BSTR serialNumber ( vtProp.bstrVal);

View File

@ -197,7 +197,7 @@ LLSelectMgr::LLSelectMgr()
sHighlightThickness = gSavedSettings.getF32("SelectionHighlightThickness");
sHighlightUScale = gSavedSettings.getF32("SelectionHighlightUScale");
sHighlightVScale = gSavedSettings.getF32("SelectionHighlightVScale");
sHighlightAlpha = gSavedSettings.getF32("SelectionHighlightAlpha");
sHighlightAlpha = gSavedSettings.getF32("SelectionHighlightAlpha") * 2;
sHighlightAlphaTest = gSavedSettings.getF32("SelectionHighlightAlphaTest");
sHighlightUAnim = gSavedSettings.getF32("SelectionHighlightUAnim");
sHighlightVAnim = gSavedSettings.getF32("SelectionHighlightVAnim");
@ -6062,6 +6062,9 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
bool wireframe_selection = (gFloaterTools && gFloaterTools->getVisible()) || LLSelectMgr::sRenderHiddenSelections;
F32 fogCfx = (F32)llclamp((LLSelectMgr::getInstance()->getSelectionCenterGlobal() - gAgentCamera.getCameraPositionGlobal()).magVec() / (LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal().magVec() * 4), 0.0, 1.0);
static LLColor4 sParentColor = LLColor4(sSilhouetteParentColor[VRED], sSilhouetteParentColor[VGREEN], sSilhouetteParentColor[VBLUE], LLSelectMgr::sHighlightAlpha);
static LLColor4 sChildColor = LLColor4(sSilhouetteChildColor[VRED], sSilhouetteChildColor[VGREEN], sSilhouetteChildColor[VBLUE], LLSelectMgr::sHighlightAlpha);
LLUUID focus_item_id = LLViewerMediaFocus::getInstance()->getFocusedObjectID();
// <FS:Ansariel> Improve selection silhouette rendering speed by Drake Arconis
//for (S32 pass = 0; pass < 2; pass++)
@ -6070,33 +6073,84 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
iter != mSelectedObjects->end(); iter++)
{
LLSelectNode* node = *iter;
if (getTEMode() && !node->hasSelectedTE())
continue;
LLViewerObject* objectp = node->getObject();
if (!objectp)
continue;
if(getTEMode() && !node->hasSelectedTE())
continue;
if (objectp->mDrawable
&& objectp->mDrawable->getVOVolume()
&& objectp->mDrawable->getVOVolume()->isMesh())
{
//Need to because crash on ATI 3800 (and similar cards) MAINT-5018
LLGLDisable multisample(LLPipeline::RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
if (shader)
{
gDebugProgram.bind();
}
gGL.matrixMode(LLRender::MM_MODELVIEW);
gGL.pushMatrix();
BOOL is_hud_object = objectp->isHUDAttachment();
if (objectp->mDrawable->isActive())
{
gGL.loadMatrix(gGLModelView);
gGL.multMatrix((F32*)objectp->getRenderMatrix().mMatrix);
}
else if (!is_hud_object)
{
gGL.loadIdentity();
gGL.multMatrix(gGLModelView);
LLVector3 trans = objectp->getRegion()->getOriginAgent();
gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
}
LLColor4 hlColor = objectp->isRootEdit() ? sParentColor : sChildColor;
bool bRenderHidenSelection = node->isTransient() ? false : LLSelectMgr::sRenderHiddenSelections;
LLVOVolume* vobj = objectp->mDrawable->getVOVolume();
if (vobj)
{
LLVertexBuffer::unbind();
gGL.pushMatrix();
gGL.multMatrix((F32*)vobj->getRelativeXform().mMatrix);
if (objectp->mDrawable->isState(LLDrawable::RIGGED))
{
vobj->updateRiggedVolume();
}
}
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
S32 num_tes = llmin((S32)objectp->getNumTEs(), (S32)objectp->getNumFaces()); // avatars have TEs but no faces
for (S32 te = 0; te < num_tes; ++te)
{
if (!getTEMode())
if (node->isTESelected(te))
{
objectp->mDrawable->getFace(te)->renderOneWireframe(
LLColor4(sSilhouetteParentColor[VRED], sSilhouetteParentColor[VGREEN], sSilhouetteParentColor[VBLUE], LLSelectMgr::sHighlightAlpha * 2)
, fogCfx, wireframe_selection, node->isTransient() ? FALSE : LLSelectMgr::sRenderHiddenSelections);
}
else if(node->isTESelected(te))
{
objectp->mDrawable->getFace(te)->renderOneWireframe(
LLColor4(sSilhouetteParentColor[VRED], sSilhouetteParentColor[VGREEN], sSilhouetteParentColor[VBLUE], LLSelectMgr::sHighlightAlpha * 2)
, fogCfx, wireframe_selection, node->isTransient() ? FALSE : LLSelectMgr::sRenderHiddenSelections);
objectp->mDrawable->getFace(te)->renderOneWireframe(hlColor, fogCfx, wireframe_selection, bRenderHidenSelection, nullptr != shader);
}
}
gGL.popMatrix();
gGL.popMatrix();
glLineWidth(1.f);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
if (shader)
{
shader->bind();
}
}
else
{
@ -6671,7 +6725,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &aColor)
gGL.texCoord2fv(tc[0].mV);
gGL.vertex3fv( v[0].mV );
gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2);
gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha);
gGL.texCoord2fv( tc[1].mV );
gGL.vertex3fv( v[1].mV );
@ -6681,7 +6735,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &aColor)
gGL.vertex3fv( v[2].mV );
gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2);
gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha);
gGL.texCoord2fv( tc[1].mV );
gGL.vertex3fv( v[1].mV );

View File

@ -1,5 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floaterland" title="O działce">
<floater.string name="Hours">
[HOURS] godz.
</floater.string>
<floater.string name="Hour">
godz.
</floater.string>
<floater.string name="Minutes">
[MINUTES] min.
</floater.string>
@ -12,6 +18,9 @@
<floater.string name="Remaining">
pozostało
</floater.string>
<floater.string name="Always">
Zawsze
</floater.string>
<tab_container name="landtab">
<panel label="Ogólne" name="land_general_panel">
<panel.string name="new users only">
@ -431,10 +440,13 @@ teksturę:
<button label="Usuń" label_selected="Usuń" name="remove_allowed"/>
</panel>
<panel name="Banned_layout_panel">
<text label="Zawsze banuj" name="BanCheck">
Zawsze banuj ([COUNT]/[MAX])
<text label="Banuj" name="BanCheck">
Zbanowani ([COUNT]/[MAX])
</text>
<name_list name="BannedList" tool_tip="([LISTED] na liście, [MAX] maksimum)"/>
<name_list name="BannedList" tool_tip="([LISTED] na liście, [MAX] maksimum)">
<columns label="Imię" name="name" />
<columns label="Czas" name="duration" />
</name_list>
<button label="Dodaj" name="add_banned"/>
<button label="Usuń" label_selected="Usuń" name="remove_banned"/>
</panel>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="ban_duration" title="Czas trwania bana" width="220">
<text name="duration_textbox" width="110">
Czas trwania bana:
</text>
<radio_group name="ban_duration_radio">
<radio_item label="Na zawsze" name="always_radio" />
<radio_item label="Tymczasowo" name="temporary_radio" />
</radio_group>
<text name="hours_textbox">
godzin.
</text>
<button label="Anuluj" name="cancel_btn" />
</floater>

View File

@ -1502,6 +1502,30 @@ Zamień teksturę [TEXTURE_NUM] na 24-bitową teksturę o wymiarze 1024x1024 lub
<notification name="ProblemAddingEstateManagerBanned">
Nie możesz dodać zbanowanego rezydenta do listy zarządców Majątku.
</notification>
<notification name="ProblemBanningEstateManager">
Nie można dodać zarządcy Majątku [AGENT] do listy zbanowanych.
</notification>
<notification name="GroupIsAlreadyInList">
&lt;nolink&gt;[GROUP]&lt;/nolink&gt; już jest na liście dostępu grup.
</notification>
<notification name="AgentIsAlreadyInList">
[AGENT] już jest na Twojej liście: [LIST_TYPE].
</notification>
<notification name="AgentsAreAlreadyInList">
[AGENT] już są na Twojej liście: [LIST_TYPE].
</notification>
<notification name="AgentWasAddedToList">
[AGENT] został/a dodany/a do listy: [LIST_TYPE] w: [ESTATE].
</notification>
<notification name="AgentsWereAddedToList">
[AGENT] zostali dodani do listy: [LIST_TYPE] w: [ESTATE].
</notification>
<notification name="AgentWasRemovedFromList">
[AGENT] został/a usunięty/a z listy: [LIST_TYPE] w: [ESTATE].
</notification>
<notification name="AgentsWereRemovedFromList">
[AGENT] zostali usunięci z listy: [LIST_TYPE] w: [ESTATE].
</notification>
<notification name="CanNotChangeAppearanceUntilLoaded">
Nie możesz zmienić wyglądu podczas ładowania ubrań i kształtu.
</notification>

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel label="Dostęp" name="Access">
<tab_container name="tabs">
<panel label="Zarządcy majątku" name="estate_managers_panel">
<text name="estate_manager_label">
Zarządcy majątku:
</text>
<name_list name="estate_manager_name_list">
<columns label="Imię" name="name" />
</name_list>
<button label="Dodaj..." name="add_estate_manager_btn" />
<button label="Usuń..." name="remove_estate_manager_btn" />
</panel>
<panel label="Dozwoleni" name="allowed_panel">
<panel name="allowed_search_panel">
<filter_editor label="Szukaj wśród dozwolonych" name="allowed_search_input" />
<button label="Kopiuj" name="copy_allowed_list_btn" />
</panel>
<text name="allow_resident_label">
Zawsze zezwalaj:
</text>
<name_list name="allowed_avatar_name_list">
<columns label="Imię" name="name" />
</name_list>
<button label="Dodaj..." name="add_allowed_avatar_btn" />
<button label="Usuń..." name="remove_allowed_avatar_btn" />
</panel>
<panel label="Dozwolone grupy" name="allowed_groups_panel">
<panel name="allowed_group_search_panel">
<filter_editor label="Szukaj wśród dozwolonych grup" name="allowed_group_search_input" />
<button label="Kopiuj" name="copy_allowed_group_list_btn" />
</panel>
<text name="allow_group_label">
Zawsze zezwalaj grupom:
</text>
<name_list name="allowed_group_name_list">
<columns label="Nazwa" name="name" />
</name_list>
<button label="Dodaj..." name="add_allowed_group_btn" />
<button label="Usuń..." name="remove_allowed_group_btn" />
</panel>
<panel label="Zbanowani" name="banned_panel">
<panel name="banned_search_panel">
<filter_editor label="Szukaj wśród zbanowanych" name="banned_search_input" />
<button label="Kopiuj" name="copy_banned_list_btn" />
</panel>
<text name="ban_resident_label">
Zawsze banuj:
</text>
<name_list name="banned_avatar_name_list">
<columns label="Imię" name="name" />
<columns label="Ostatnie logowanie" name="last_login_date" />
<columns label="Zbanowano" name="ban_date" />
<columns label="Przez" name="bannedby" />
</name_list>
<button label="Dodaj..." name="add_banned_avatar_btn" />
<button label="Usuń..." name="remove_banned_avatar_btn" />
</panel>
</tab_container>
</panel>

View File

@ -16,35 +16,15 @@
(brak danych)
</text>
<radio_group name="externally_visible_radio">
<radio_item label="Zezwól na osoby i grupy wybrane poniżej" name="estate_restricted_access" />
<radio_item label="Zezwól tylko na osoby i grupy z karty Dostęp" name="estate_restricted_access" />
<radio_item label="Dostęp publiczny" name="estate_public_access" />
</radio_group>
<check_box label="Osoba musi mieć 18+ lat" name="limit_age_verified" tool_tip="Zbanuj Rezydetów, którzy mają mniej niż 18 lat. Odwiedź [SUPPORT_SITE], aby uzyskać więcej informacji." />
<check_box label="Musi mieć dane płatnicze w systemie LL" name="limit_payment" tool_tip="Zbanuj Rezydentów niezarejestrowanych w systemie płatniczym Linden Lab. Odwiedź [SUPPORT_SITE], aby uzyskać więcej informacji." />
<check_box label="Właściciele działek mogą być bardziej restrykcyjni" name="parcel_access_override" />
<check_box label="Rozmowy głosowe" name="voice_chat_check" left="308" />
<check_box label="Rozmowy głosowe" name="voice_chat_check" />
<check_box label="Teleportacja bezpośrednia" name="allow_direct_teleport" />
<button label="Zastosuj" name="apply_btn" />
<text name="estate_manager_label">
Zarządcy Majątku:
</text>
<text name="allow_resident_label">
Zawsze zezwalaj:
</text>
<button label="Dodaj..." name="add_estate_manager_btn" />
<button label="Usuń..." name="remove_estate_manager_btn" />
<button label="Dodaj..." name="add_allowed_avatar_btn" />
<button label="Usuń..." name="remove_allowed_avatar_btn" />
<text name="allow_group_label">
Zawsze zezwalaj grupom:
</text>
<text name="ban_resident_label">
Zawsze banuj:
</text>
<button label="Dodaj..." name="add_allowed_group_btn" />
<button label="Usuń..." name="remove_allowed_group_btn" />
<button label="Dodaj..." name="add_banned_avatar_btn" />
<button label="Usuń..." name="remove_banned_avatar_btn" />
<button label="Wyślij wiadomość do Majątku..." name="message_estate_btn" />
<button label="Wyrzuć Rezydenta z Majątku..." name="kick_user_from_estate_btn" />
</panel>

View File

@ -2328,6 +2328,18 @@ Jeśli ciągle otrzymujesz tą wiadomość, to skontaktuj się z pomocą technic
<string name="RegionInfoListTypeBannedAgents">
zawsze zbanowani rezydenci
</string>
<string name="RegionInfoAllEstates">
wszystkie majątki
</string>
<string name="RegionInfoManagedEstates">
zarządzane majątki
</string>
<string name="RegionInfoThisEstate">
ten majątek
</string>
<string name="AndNMore">
i [EXTRA_COUNT] więcej
</string>
<string name="ScriptLimitsParcelScriptMemory">
Pamięć skryptów działki
</string>