Merge Firestorm LGPL

meow-7.2.2
Ansariel 2019-06-22 20:54:01 +02:00
commit 25d83975f4
21 changed files with 180 additions and 63 deletions

View File

@ -590,3 +590,4 @@ a3143db58a0f6b005232bf9018e7fef17ff9ec90 6.1.0-release
82a89165e5929a6c3073d6cd60a543cb395f147b 6.2.0-release
706bdc7e25c6e6b8fb56f4a13fcce2936e70a79c 6.2.1-release
ec09daf1899c1c01c4ba0ba950fae572f2a612a8 6.2.2-release
ab2ec5c5423b277d23fd0511ce50c15123ff2e03 6.2.3-release

View File

@ -1330,6 +1330,7 @@ Sovereign Engineer
STORM-2143
STORM-2148
MAINT-7343
SL-11079
SpacedOut Frye
VWR-34
VWR-45

View File

@ -3046,6 +3046,7 @@ BOOL LLWindowWin32::restoreGamma()
{
if (mCustomGammaSet != FALSE)
{
LL_DEBUGS("Window") << "Restoring gamma" << LL_ENDL;
mCustomGammaSet = FALSE;
return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
}
@ -3059,8 +3060,15 @@ BOOL LLWindowWin32::setGamma(const F32 gamma)
//Get the previous gamma ramp to restore later.
if (mCustomGammaSet == FALSE)
{
if (GetDeviceGammaRamp(mhDC, mPrevGammaRamp) == FALSE)
return FALSE;
if (!gGLManager.mIsIntel) // skip for Intel GPUs (see SL-11341)
{
LL_DEBUGS("Window") << "Getting the previous gamma ramp to restore later" << LL_ENDL;
if(GetDeviceGammaRamp(mhDC, mPrevGammaRamp) == FALSE)
{
LL_WARNS("Window") << "Failed to get the previous gamma ramp" << LL_ENDL;
return FALSE;
}
}
mCustomGammaSet = TRUE;
}

View File

@ -1 +1 @@
6.2.3
6.2.4

View File

@ -919,7 +919,7 @@ BOOL FSFloaterIM::postBuild()
bool isFSSupportGroup = FSData::getInstance()->isFirestormGroup(mSessionID);
childSetVisible("testing_panel", FSData::getInstance()->isTestingGroup(mSessionID));
childSetVisible("support_panel", FSData::getInstance()->isSupportGroup(mSessionID));
childSetVisible("support_panel", isFSSupportGroup);
// <FS:Zi> Viewer version popup
if (isFSSupportGroup)

View File

@ -2992,7 +2992,7 @@ bool LLAgentCamera::isfollowCamLocked()
BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object, LLVector3 position)
{
// Ansariel: Remember the current object point pointed at - we might need it later
// <FS:Ansariel> Remember the current object point pointed at - we might need it later
mPointAtObject = object;
// disallow pointing at attachments and avatars
@ -3000,6 +3000,14 @@ BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object,
static LLCachedControl<bool> private_pointat(gSavedSettings, "PrivatePointAtTarget", false);
if (object && (object->isAttachment() || object->isAvatar() || private_pointat))
{
// <FS:Ansariel> Remove HUD effect if it still exists
if (mPointAt && !mPointAt->isDead())
{
mPointAt->clearPointAtTarget();
mPointAt->markDead();
}
// </FS:Ansariel>
return FALSE;
}
if (!mPointAt || mPointAt->isDead())

View File

@ -6925,6 +6925,37 @@ void handle_attachment_touch(const LLUUID& idItem)
}
// </FS:Ansariel>
// <FS:Zi> Texture Refresh on worn attachments
void handle_attachment_texture_refresh(const LLUUID& idItem)
{
// get the associated worn attachment's UUID
const LLInventoryItem* pItem = gInventory.getItem(idItem);
if ( (!isAgentAvatarValid()) || (!pItem) )
{
return;
}
LLViewerObject* pAttachObj = gAgentAvatarp->getWornAttachment(pItem->getLinkedUUID());
if (!pAttachObj)
return;
// iterate through the list of child prims, call texture refresh on each one of them
LLViewerObject::const_child_list_t& children = pAttachObj->getChildren();
for (LLViewerObject::child_list_t::const_iterator iter = children.begin();
iter != children.end(); iter++)
{
LLViewerObject* child = *iter;
// NULL means, we don't have individual texture faces selected,
// so refresh them all
handle_object_tex_refresh(child, NULL);
}
// texture refresh the root prim, too
handle_object_tex_refresh(pAttachObj, NULL);
}
// </FS:Zi>
// virtual
void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
{
@ -6971,6 +7002,12 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
handle_attachment_touch(mUUID);
}
// </FS:Ansariel>
// <FS:Zi> Texture Refresh on worn attachments
else if ("texture_refresh_attachment" == action)
{
handle_attachment_texture_refresh(mUUID);
}
// </FS:Zi>
else if (isRemoveAction(action))
{
LLAppearanceMgr::instance().removeItemFromAvatar(mUUID);
@ -7161,6 +7198,13 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
if ( ((flags & FIRST_SELECTED_ITEM) == 0) || (!enable_attachment_touch(mUUID)) )
disabled_items.push_back(std::string("Touch Attachment"));
// <FS:Zi> Texture Refresh on worn attachments
if (item->getType() == LLAssetType::AT_OBJECT)
{
items.push_back(std::string("Texture Refresh Attachment"));
}
// </FS:Zi>
items.push_back(std::string("Detach From Yourself"));
// [RLVa:KB] - Checked: 2010-02-27 (RLVa-1.2.0a) | Modified: RLVa-1.2.0a
if ( (rlv_handler_t::isEnabled()) && (!gRlvAttachmentLocks.canDetach(item)) )

View File

@ -3119,6 +3119,67 @@ void destroy_texture(const LLUUID& id) // will be used by the texture refresh f
LLAppViewer::getTextureCache()->removeFromCache(id);
}
void handle_object_tex_refresh(LLViewerObject* object, LLSelectNode* node)
{
U8 te_count = object->getNumTEs();
// map from texture ID to list of faces using it
typedef std::map< LLUUID, std::vector<U8> > map_t;
map_t faces_per_texture;
for (U8 i = 0; i < te_count; ++i)
{
// "node" will be NULL when invoked from inventory menu,
// otherwise it will hold the root node of the selection and we
// need to make sure only to refresh the selected faces
if (node && !node->isTESelected(i)) continue;
LLViewerTexture* img = object->getTEImage(i);
faces_per_texture[img->getID()].push_back(i);
if (object->getTE(i)->getMaterialParams().notNull())
{
LLViewerTexture* norm_img = object->getTENormalMap(i);
faces_per_texture[norm_img->getID()].push_back(i);
LLViewerTexture* spec_img = object->getTESpecularMap(i);
faces_per_texture[spec_img->getID()].push_back(i);
}
}
map_t::iterator it;
for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it)
{
destroy_texture(it->first);
}
// Refresh sculpt texture
if (object->isSculpted())
{
LLSculptParams *sculpt_params = (LLSculptParams *)object->getParameterEntry(LLNetworkData::PARAMS_SCULPT);
if (sculpt_params)
{
LLUUID sculpt_uuid = sculpt_params->getSculptTexture();
LLViewerFetchedTexture* tx = LLViewerTextureManager::getFetchedTexture(sculpt_uuid);
if (tx)
{
S32 num_volumes = tx->getNumVolumes(LLRender::SCULPT_TEX);
const LLViewerTexture::ll_volume_list_t* pVolumeList = tx->getVolumeList(LLRender::SCULPT_TEX);
destroy_texture(sculpt_uuid);
for (S32 idxVolume = 0; idxVolume < num_volumes; ++idxVolume)
{
LLVOVolume* pVolume = pVolumeList->at(idxVolume);
if (pVolume)
{
pVolume->notifyMeshLoaded();
}
}
}
}
}
}
class LLObjectTexRefresh : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@ -3128,61 +3189,7 @@ class LLObjectTexRefresh : public view_listener_t
iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++)
{
LLSelectNode* node = *iter;
U8 te_count = node->getObject()->getNumTEs();
// map from texture ID to list of faces using it
typedef std::map< LLUUID, std::vector<U8> > map_t;
map_t faces_per_texture;
for (U8 i = 0; i < te_count; ++i)
{
if (!node->isTESelected(i)) continue;
LLViewerTexture* img = node->getObject()->getTEImage(i);
faces_per_texture[img->getID()].push_back(i);
if (node->getObject()->getTE(i)->getMaterialParams().notNull())
{
LLViewerTexture* norm_img = node->getObject()->getTENormalMap(i);
faces_per_texture[norm_img->getID()].push_back(i);
LLViewerTexture* spec_img = node->getObject()->getTESpecularMap(i);
faces_per_texture[spec_img->getID()].push_back(i);
}
}
map_t::iterator it;
for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it)
{
destroy_texture(it->first);
}
// Refresh sculpt texture
if (node->getObject()->isSculpted())
{
LLSculptParams *sculpt_params = (LLSculptParams *)node->getObject()->getParameterEntry(LLNetworkData::PARAMS_SCULPT);
if (sculpt_params)
{
LLUUID sculpt_uuid = sculpt_params->getSculptTexture();
LLViewerFetchedTexture* tx = LLViewerTextureManager::getFetchedTexture(sculpt_uuid);
if (tx)
{
S32 num_volumes = tx->getNumVolumes(LLRender::SCULPT_TEX);
const LLViewerTexture::ll_volume_list_t* pVolumeList = tx->getVolumeList(LLRender::SCULPT_TEX);
destroy_texture(sculpt_uuid);
for (S32 idxVolume = 0; idxVolume < num_volumes; ++idxVolume)
{
LLVOVolume* pVolume = pVolumeList->at(idxVolume);
if (pVolume)
{
pVolume->notifyMeshLoaded();
}
}
}
}
}
handle_object_tex_refresh(node->getObject(),node);
}
return true;

View File

@ -38,6 +38,7 @@ class LLView;
class LLParcelSelection;
class LLObjectSelection;
class LLSelectNode;
class LLViewerObject;
// [RLVa:KB] - Checked: RLVa-2.0.0
void set_use_wireframe(bool useWireframe);
@ -103,6 +104,7 @@ void handle_object_build(void*);
void handle_object_touch();
bool enable_object_open();
void handle_object_open();
void handle_object_tex_refresh(LLViewerObject* object, LLSelectNode* node);
bool visible_take_object();
bool tools_visible_take_object();

View File

@ -71,5 +71,18 @@ void SanityCheck::onSanity(LLControlVariable* controlp)
args["SANITY_MESSAGE"] = LLTrans::getString(checkType, map);
args["SANITY_COMMENT"] = controlp->getSanityComment();
args["CURRENT_VALUE"] = controlp->getValue().asString();
LLNotificationsUtil::add("SanityCheck", args);
LLNotificationsUtil::add("SanityCheck", args, LLSD(), boost::bind(SanityCheck::onFixIt, _1, _2, controlp));
}
void SanityCheck::onFixIt(const LLSD& notification, const LLSD& response, LLControlVariable* controlp)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option == 0) // Fix it
{
if (controlp)
{
controlp->resetToDefault(true);
return;
}
}
}

View File

@ -35,6 +35,7 @@ public:
void init();
static void onSanity(LLControlVariable* controlp);
static void onFixIt(const LLSD& notification, const LLSD& response, LLControlVariable* controlp);
};
#endif // SANITYCHECK_H

View File

@ -110,6 +110,7 @@
<menu_item_call label="Berühren" name="Touch Attachment"/>
<menu_item_call label="In Gesamtansicht anzeigen" name="Show in Main Panel"/>
<menu_item_call label="Hinzufügen" name="Wearable Add"/>
<menu_item_call label="Texturen aktualisieren" name="Texture Refresh Attachment"/>
<menu_item_call label="Ausziehen" name="Take Off"/>
<menu_item_call label="In Marktplatz-Auflistungen kopieren" name="Marketplace Copy"/>
<menu_item_call label="In Marktplatz-Auflistungen verschieben" name="Marketplace Move"/>

View File

@ -4854,6 +4854,14 @@ Grund: [SANITY_COMMENT]
Aktueller Wert: [CURRENT_VALUE]
<form name="form">
<button
index="0"
name="OK"
text="Beheben"/>
<button
index="1"
name="Cancel"
text="Beibehalten"/>
<ignore name="ignore"
text="Eine Einstellung hat die Prüfung auf einen sinnvollen Wert nicht bestanden."/>
</form>

View File

@ -108,7 +108,7 @@
<button name="BeamColor_new" label="Erstellen" tool_tip="Eine neue Farbeinstellung erstellen."/>
<button name="BeamColor_refresh" label="Aktualisieren" tool_tip="Aktualisiert die Liste mit Farbeinstellungen."/>
<slider name="FSMaxBeamsPerSecond" label="Updates/Sek:" tool_tip="Definiert wie viele Updates pro Sekunden gesendet werden sollen. [Standard: 40]"/>
<check_box label="Auswahlstrahl aktivieren" name="SLPartBeam"/>
<check_box label="Auswahlstrahl aktivieren" name="SLPartBeam" tool_tip="Das Deaktivieren dieser Einstellung verhindert die lokale Darstellung von Auswahlstrahlen. Das Senden der Auswahlinformationen an andere Avatare wird hierdurch nicht verhinden. Um keine Auswahlinformationen zu übertragen, können Sie diese unter Einstellungen -&gt; Privatsphäre -&gt; Kamerafokus -&gt; Eigene Bearbeitungsauswahl nicht an andere senden deaktivieren"/>
<check_box label="Auswahlinformationen an Chat senden" name="FSParticleChat" tool_tip="Sendet Informationen über die Auswahl (Start/Stop sowie globale Position) an Chat-Kanal 9000."/>
<combo_box name="FSBeamShape_combo" tool_tip="Erlaubt die Auswahl der Form für den Auswahlstrahl."/>

View File

@ -855,6 +855,14 @@
function="Inventory.DoToSelected"
parameter="touch" />
</menu_item_call>
<menu_item_call
label="Texture Refresh"
layout="topleft"
name="Texture Refresh Attachment">
<menu_item_call.on_click
function="Inventory.DoToSelected"
parameter="texture_refresh_attachment" />
</menu_item_call>
<menu_item_call
label="Take Off"
layout="topleft"

View File

@ -10449,6 +10449,14 @@ Reason: [SANITY_COMMENT]
Current setting: [CURRENT_VALUE]
<form name="form">
<button
index="0"
name="OK"
text="Fix it"/>
<button
index="1"
name="Cancel"
text="Keep it"/>
<ignore name="ignore"
text="A settings control has failed the sanity check."/>
</form>

View File

@ -685,6 +685,7 @@
left="15"
name="SLPartBeam"
width="250"
tool_tip="Disabling this setting will prevent selection beams from being rendered locally. It does not prevent selection beams being sent to other avatars. If you do not wish to show your selection, you can disable that via Preferences -&gt; Privacy -&gt; LookAt -&gt; Don't send my selection target hints."
control_name="ShowSelectionBeam" />
<check_box

View File

@ -45,6 +45,9 @@
<layout_panel name="support_panel">
<check_box label="Dodawaj wersję" name="FSSupportGroupChatPrefix_toggle" tool_tip="Dodaje aktualną wersję przeglądarki oraz informację o skórce przed wiadomościami wysyłanymi przez Ciebie w tej grupie, co będzie pomagać członkom załogi wsparcia w prawidłowym diagnozowaniu Twoich problemów i poprawi dokładność odpowiedzi na Twoje pytania"/>
</layout_panel>
<layout_panel name="testing_panel">
<check_box label="Dodawaj kompilację" name="FSSupportGroupChatPrefixTesting_toggle" tool_tip="Dodaje aktualną kompilację przeglądarki oraz informację o skórce przed wiadomościami wysyłanymi przez Ciebie w tej grupie, co będzie pomagać członkom załogi wsparcia w prawidłowym diagnozowaniu Twoich problemów i poprawi dokładność odpowiedzi na Twoje pytania (to oddzielne od grup wsparcia)" />
</layout_panel>
</layout_stack>
<layout_stack name="chat_stack">
<layout_panel name="panel_im_control_lp">

View File

@ -108,6 +108,7 @@
<menu label="Dołącz do HUD-a" name="Attach To HUD"/>
<menu_item_call label="Edytuj" name="Wearable Edit"/>
<menu_item_call label="Dotknij" name="Touch Attachment"/>
<menu_item_call label="Odśwież tekstury" name="Texture Refresh Attachment" />
<menu_item_call label="Zdejmij" name="Take Off"/>
<menu_item_call label="Odłącz od siebie" name="Detach From Yourself"/>
<menu_item_call label="Kopiuj do rzeczy Marketplace" name="Marketplace Copy"/>

View File

@ -3911,6 +3911,8 @@ Powód: [SANITY_COMMENT]
Obecne ustawienie: [CURRENT_VALUE]
<form name="form">
<button name="OK" text="Napraw"/>
<button name="Cancel" text="Zostaw"/>
<ignore name="ignore" text="Jakieś ustawienie nie przeszło kontroli spójności."/>
</form>
</notification>

View File

@ -96,7 +96,7 @@
<button name="BeamColor_new" label="Utwórz nowe" tool_tip="Utwórz nowe Ustawienie" />
<button name="BeamColor_refresh" label="Odśwież listę" tool_tip="Odśwież listę Ustawień" />
<slider name="FSMaxBeamsPerSecond" label="Aktualizacje/sek:" tool_tip="Ile aktualizacji wiązki wysyłać w ciągu sekundy. Domyślnie 40" />
<check_box label="Włącz wiązkę wyboru" name="SLPartBeam" />
<check_box label="Włącz wiązkę wyboru" name="SLPartBeam" tool_tip="Wyłączenie tego ustawienia spowoduje, że wiązki wyboru nie będą renderowane lokalnie. Nie zapobiega to wysyłaniu wiązek wyboru do innych awatarów. Jeśli nie chcesz pokazywać swojego wyboru, to możesz temu zapobiec w Ustawienia -&gt; Prywatność -&gt; Śledzenie spojrzeń -&gt; Nie pokazuj innym celów moich wskazań." />
<check_box label="Wysyłaj dane selekcji na czat" name="FSParticleChat" tool_tip="Wysyła dane selekcji (rozpoczęcie jej lub zakończenie plus pozycję globalną) na kanał czatu 9000" />
<combo_box name="FSBeamShape_combo" tool_tip="Wybierz kształt wiązki cząsteczek" />
<button name="delete_beam" label="Usuń" tool_tip="Usuń tą wiązkę" />