diff --git a/doc/building_windows.md b/doc/building_windows.md
index 7ae61cdf5e..1e366b643f 100644
--- a/doc/building_windows.md
+++ b/doc/building_windows.md
@@ -134,8 +134,6 @@ cd \firestorm
git clone https://github.com/FirestormViewer/phoenix-firestorm.git
```
-This can take a bit, it's a rather large download.
-
## Prepare third party libraries
Most third party libraries needed to build the viewer will be automatically downloaded for you and installed into the build directory within your source tree during compilation. Some need to be manually prepared and are not normally required when using an open source configuration (ReleaseFS_open).
diff --git a/fsutils/download_list.py b/fsutils/download_list.py
index 95f65f9ef1..81628ed71f 100644
--- a/fsutils/download_list.py
+++ b/fsutils/download_list.py
@@ -360,10 +360,10 @@ def update_fs_version_mgr(build_info, config):
continue
payload = {
- "viewer_channel": channel,
+ "viewer_channel": build_type,
"grid_type": grid,
"operating_system": os_name,
- "build_type": build_type.lower(),
+ "build_type": build_variant,
"viewer_version": version,
"build_number": int(build_number),
"download_link": download_link,
diff --git a/indra/newview/app_settings/key_bindings.xml b/indra/newview/app_settings/key_bindings.xml
index 9a1e8e753b..94585916b9 100644
--- a/indra/newview/app_settings/key_bindings.xml
+++ b/indra/newview/app_settings/key_bindings.xml
@@ -35,6 +35,10 @@
+
+
+
+
@@ -121,6 +125,11 @@
+
+
+
+
+
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index d3f54fb72c..39af3f997c 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -171,7 +171,7 @@ static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
return succeeded;
}
-void setupBreadpad()
+void setupBreakpad()
{
std::string build_data_fname(gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "build_data.json"));
gCrashLogger = gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "linux-crash-logger.bin");
@@ -183,7 +183,7 @@ void setupBreadpad()
return;
}
- boost::json::error_code ec;
+ boost::system::error_code ec;
boost::json::value build_data = boost::json::parse(inf, ec);
if(ec.failed())
{
@@ -232,7 +232,7 @@ bool LLAppViewerLinux::init()
gCrashBehavior = "ask";
else
gCrashBehavior = "send";
- setupBreadpad();
+ setupBreakpad();
}
#endif
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index 7bd5206453..e5038dfd13 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -611,10 +611,15 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, bool texture, bool batch_textur
}
}
}
-
+ // FIRE-34518 bugsplat access violation - place guard on unchecked mVertexBuffer access
+ if (params.mVertexBuffer == nullptr)
+ {
+ LL_WARNS() << "LLRenderPass::pushBatch: params.mVertexBuffer is nullptr. drawRange skipped." << LL_ENDL;
+ return;
+ }
+ //
params.mVertexBuffer->setBuffer();
params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset);
-
if (tex_setup)
{
gGL.matrixMode(LLRender::MM_TEXTURE0);
diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp
index 666ab4f5d0..215714efed 100644
--- a/indra/newview/llkeyconflict.cpp
+++ b/indra/newview/llkeyconflict.cpp
@@ -813,6 +813,10 @@ void LLKeyConflictHandler::generatePlaceholders(ESourceMode load_mode)
registerTemporaryControl("pan_out");
registerTemporaryControl("spin_around_ccw");
registerTemporaryControl("spin_around_cw");
+// Camera roll key bindings
+ registerTemporaryControl("roll_left");
+ registerTemporaryControl("roll_right");
+//
// control_table_contents_editing.xml
registerTemporaryControl("edit_avatar_spin_ccw");
diff --git a/indra/newview/llviewerinput.cpp b/indra/newview/llviewerinput.cpp
index 198e02db66..9fef4a6272 100644
--- a/indra/newview/llviewerinput.cpp
+++ b/indra/newview/llviewerinput.cpp
@@ -586,6 +586,24 @@ bool camera_pan_out( EKeystate s )
return true;
}
+// Camera roll key bindings
+bool camera_roll_left( EKeystate s )
+{
+ if( KEYSTATE_UP == s ) return true;
+ gAgentCamera.unlockView();
+ gAgentCamera.setRollLeftKey(get_orbit_rate());
+ return true;
+}
+
+bool camera_roll_right( EKeystate s )
+{
+ if( KEYSTATE_UP == s ) return true;
+ gAgentCamera.unlockView();
+ gAgentCamera.setRollRightKey(get_orbit_rate());
+ return true;
+}
+//
+
bool camera_move_forward_fast( EKeystate s )
{
if( KEYSTATE_UP == s ) return true;
@@ -1040,6 +1058,10 @@ REGISTER_KEYBOARD_ACTION("pan_left", camera_pan_left);
REGISTER_KEYBOARD_ACTION("pan_right", camera_pan_right);
REGISTER_KEYBOARD_ACTION("pan_in", camera_pan_in);
REGISTER_KEYBOARD_ACTION("pan_out", camera_pan_out);
+// Camera roll key bindings
+REGISTER_KEYBOARD_ACTION("roll_left", camera_roll_left);
+REGISTER_KEYBOARD_ACTION("roll_right", camera_roll_right);
+//
REGISTER_KEYBOARD_ACTION("move_forward_fast", camera_move_forward_fast);
REGISTER_KEYBOARD_ACTION("move_backward_fast", camera_move_backward_fast);
REGISTER_KEYBOARD_ACTION("edit_avatar_spin_ccw", edit_avatar_spin_ccw);
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 9db4dc5f3f..e534f3e651 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -116,16 +116,10 @@ bool LLPanelWearableOutfitItem::postBuild()
LLPanelWearableListItem::postBuild();
- //if(mShowWidgets) // Make Add/Remove buttons work
+ if(mShowWidgets)
{
- // Make Add/Remove buttons work
- //addWidgetToRightSide(mAddWearableBtn);
- //addWidgetToRightSide(mAddWearableBtn);
- LLViewerInventoryItem* inv_item = getItem();
- mShowWidgets &= (inv_item->getType() != LLAssetType::AT_BODYPART);
- addWidgetToRightSide(mAddWearableBtn, mShowWidgets);
- addWidgetToRightSide(mAddWearableBtn, mShowWidgets);
- //
+ addWidgetToRightSide(mAddWearableBtn);
+ addWidgetToRightSide(mRemoveWearableBtn);
mAddWearableBtn->setClickedCallback(boost::bind(&LLPanelWearableOutfitItem::onAddWearable, this));
mRemoveWearableBtn->setClickedCallback(boost::bind(&LLPanelWearableOutfitItem::onRemoveWearable, this));
@@ -192,7 +186,6 @@ LLPanelWearableOutfitItem::LLPanelWearableOutfitItem(LLViewerInventoryItem* item
: LLPanelWearableListItem(item, params)
, mWornIndicationEnabled(worn_indication_enabled)
, mShowWidgets(show_widgets)
-, mIsWorn(false) // Make Add/Remove buttons work
{
if(mShowWidgets)
{
@@ -217,8 +210,6 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name,
// an inventory observer upon link in COF beind added or removed so actual
// worn status of a linked item may still remain unchanged.
bool is_worn = LLAppearanceMgr::instance().isLinkedInCOF(mInventoryItemUUID);
- // Make Add/Remove buttons work
- mIsWorn = is_worn;
// Better attachment list
//if (mWornIndicationEnabled && is_worn)
//{
@@ -261,13 +252,10 @@ void LLPanelWearableOutfitItem::updateItem(const std::string& name,
{
setShowWidget(mAddWearableBtn, !is_worn);
- // Make Add/Remove buttons work
- //// Body parts can't be removed, only replaced
- //LLViewerInventoryItem* inv_item = getItem();
- //bool show_remove = is_worn && inv_item && (inv_item->getType() != LLAssetType::AT_BODYPART);
- //setShowWidget("remove_wearable", show_remove);
- setShowWidget(mRemoveWearableBtn, is_worn);
- //
+ // Body parts can't be removed, only replaced
+ LLViewerInventoryItem* inv_item = getItem();
+ bool show_remove = is_worn && inv_item && (inv_item->getType() != LLAssetType::AT_BODYPART);
+ setShowWidget(mRemoveWearableBtn, show_remove);
if(mHovered)
{
@@ -555,7 +543,7 @@ FSPanelCOFWearableOutfitListItem::FSPanelCOFWearableOutfitListItem(LLViewerInven
bool show_widgets,
const FSPanelCOFWearableOutfitListItem::Params& params)
: LLPanelWearableOutfitItem(item, worn_indication_enabled, params, show_widgets)
-, mWeightCtrl(NULL)
+, mWeightCtrl(nullptr)
{
LLTextBox::Params weight_params = params.item_weight;
applyXUILayout(weight_params, this);
@@ -576,7 +564,8 @@ bool FSPanelCOFWearableOutfitListItem::postBuild()
// Reserve space for 'delete' button event if it is invisible.
setRightWidgetsWidth(mWeightCtrl->getRect().getWidth() + 5);
- setWidgetsVisible(true);
+ mWeightCtrl->setVisible(true);
+
reshapeWidgets();
return true;
@@ -597,19 +586,7 @@ void FSPanelCOFWearableOutfitListItem::updateItemWeight(U32 item_weight)
void FSPanelCOFWearableOutfitListItem::updateItem(const std::string& name, EItemState item_state)
{
LLPanelWearableOutfitItem::updateItem(name, item_state);
-
- setShowWidget("add_wearable", false);
- setShowWidget("remove_wearable", mShowWidgets && mIsWorn && mHovered);
- setWidgetsVisible(true);
- reshapeWidgets();
-}
-
-//virtual
-void FSPanelCOFWearableOutfitListItem::onMouseEnter(S32 x, S32 y, MASK mask)
-{
- LLPanelInventoryListItemBase::onMouseEnter(x, y, mask);
- setShowWidget("remove_wearable", mShowWidgets && mIsWorn);
- setWidgetsVisible(true);
+ mWeightCtrl->setVisible(true);
reshapeWidgets();
}
@@ -617,8 +594,8 @@ void FSPanelCOFWearableOutfitListItem::onMouseEnter(S32 x, S32 y, MASK mask)
void FSPanelCOFWearableOutfitListItem::onMouseLeave(S32 x, S32 y, MASK mask)
{
LLPanelInventoryListItemBase::onMouseLeave(x, y, mask);
- setShowWidget("remove_wearable", false);
- setWidgetsVisible(true);
+ setWidgetsVisible(false);
+ mWeightCtrl->setVisible(true); // setWidgetsVisible sets this invisible - make it visible again
reshapeWidgets();
}
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index f22f44b40d..36d9685500 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -107,11 +107,7 @@ private:
LLButton* mAddWearableBtn = nullptr;
LLButton* mRemoveWearableBtn = nullptr;
bool mWornIndicationEnabled;
- // Make Add/Remove buttons work
-protected:
bool mShowWidgets;
- bool mIsWorn;
- //
};
class LLPanelDeletableWearableListItem : public LLPanelWearableListItem
@@ -259,7 +255,6 @@ public:
/*virtual*/ void updateItem(const std::string& name, EItemState item_state = IS_DEFAULT);
- /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
protected:
diff --git a/indra/newview/skins/default/xui/de/control_table_contents_camera.xml b/indra/newview/skins/default/xui/de/control_table_contents_camera.xml
index 984a6aa87e..2e756448da 100644
--- a/indra/newview/skins/default/xui/de/control_table_contents_camera.xml
+++ b/indra/newview/skins/default/xui/de/control_table_contents_camera.xml
@@ -51,6 +51,12 @@
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
index 74e8b9e5f9..e4f6309e34 100644
--- a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
+++ b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml
@@ -175,6 +175,30 @@
tool_tip="Camera spin around clockwise"
value="Clockwise" />
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/widgets/cof_wearable_list_item.xml b/indra/newview/skins/default/xui/en/widgets/cof_wearable_list_item.xml
index c8bcdced25..55c000b5b4 100644
--- a/indra/newview/skins/default/xui/en/widgets/cof_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/cof_wearable_list_item.xml
@@ -59,6 +59,7 @@
width="70" />
+
+
+
+
+ Éléments à envoyer : [COUNT]
+
+
+
+
+ Par défaut, une ou plusieurs textures seront mises à l'échelle à 2048px.
+
+
+
+
+
+
+
+ Coût : [COST]L$
+
+
+
+
+
+
+
+
+Comment les textures envoyées sont mises à l'échelle :
+https://wiki.secondlife.com/wiki/Limits#All_Viewers
+
+
+
+
diff --git a/indra/newview/skins/default/xui/fr/floater_gltf_asset_editor.xml b/indra/newview/skins/default/xui/fr/floater_gltf_asset_editor.xml
new file mode 100644
index 0000000000..74b1d7e318
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_gltf_asset_editor.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+ Position (m)
+
+
+
+ Taille (m)
+
+
+
+ Rotation (°)
+
+
+
+
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/fr/floater_region_restart_schedule.xml b/indra/newview/skins/default/xui/fr/floater_region_restart_schedule.xml
new file mode 100644
index 0000000000..8f1fe4dfea
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_region_restart_schedule.xml
@@ -0,0 +1,39 @@
+
+
+
+ Redémarrer la région ces jours-ci :
+
+
+
+
+
+
+
+
+
+ Di
+
+
+ Lu
+
+
+ Ma
+
+
+ Me
+
+
+ Je
+
+
+ Ve
+
+
+ Sa
+
+
+ à
+
+
+
+
diff --git a/indra/newview/skins/default/xui/fr/floater_settings_color.xml b/indra/newview/skins/default/xui/fr/floater_settings_color.xml
new file mode 100644
index 0000000000..e8ad5e3875
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_settings_color.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+ Nom de la couleur
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index b9d40ce747..c22aaa2796 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -148,7 +148,8 @@
(richiede riavvio)
-
+
+
Max livello qualità texture:
diff --git a/indra/newview/skins/default/xui/pl/control_table_contents_camera.xml b/indra/newview/skins/default/xui/pl/control_table_contents_camera.xml
index 95a2e0acee..5432b2635b 100644
--- a/indra/newview/skins/default/xui/pl/control_table_contents_camera.xml
+++ b/indra/newview/skins/default/xui/pl/control_table_contents_camera.xml
@@ -51,6 +51,12 @@
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_upload.xml b/indra/newview/skins/default/xui/pl/floater_bulk_upload.xml
new file mode 100644
index 0000000000..3d19afaa7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/floater_bulk_upload.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+ Elementy do przesłania: [COUNT]
+
+
+
+
+ Domyślnie jedna lub więcej tekstur zostanie przeskalowanych do 2048px.
+
+
+
+
+
+
+
+ Koszt: [COST]L$
+
+
+
+
+
+
+
+
+Jak skalowane są przesyłane tekstury:
+https://wiki.secondlife.com/wiki/Limits#All_Viewers
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/floater_gltf_asset_editor.xml b/indra/newview/skins/default/xui/pl/floater_gltf_asset_editor.xml
new file mode 100644
index 0000000000..28f4d0b52a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/floater_gltf_asset_editor.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+ Pozycja (m)
+
+
+
+ Rozmiar (m)
+
+
+
+ Obrót (°)
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/floater_region_restart_schedule.xml b/indra/newview/skins/default/xui/pl/floater_region_restart_schedule.xml
new file mode 100644
index 0000000000..0fe894707a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/floater_region_restart_schedule.xml
@@ -0,0 +1,39 @@
+
+
+
+ Restartuj region w tych dniach:
+
+
+
+
+
+
+
+
+
+ Nd
+
+
+ Pn
+
+
+ Wt
+
+
+ Śr
+
+
+ Cz
+
+
+ Pt
+
+
+ So
+
+
+ o
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/floater_settings_color.xml b/indra/newview/skins/default/xui/pl/floater_settings_color.xml
new file mode 100644
index 0000000000..4e784f72d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/pl/floater_settings_color.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+ Nazwa koloru
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
index d2da6466e4..c16d99f4b2 100644
--- a/indra/newview/skins/default/xui/pl/menu_login.xml
+++ b/indra/newview/skins/default/xui/pl/menu_login.xml
@@ -24,6 +24,7 @@