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$ + + + +