# Conflicts:
#	indra/llimagej2coj/llimagej2coj.cpp
master
Ansariel 2025-09-23 09:58:52 +02:00
commit 312d077884
16 changed files with 110 additions and 66 deletions

2
.gitignore vendored
View File

@ -111,8 +111,10 @@ indra/newview/pilot.xml
# Firestorm additions
indra/newview/exoflickrkeys.h
indra/newview/fsdiscordkey.h
indra/tools/vstool/obj/*/*.cache
my_autobuild.xml
.vscode
.vs
*.srctrlbm
*.srctrldb
*.srctrlprj

View File

@ -557,11 +557,6 @@ public:
}
if (!opj_setup_encoder(encoder, &parameters, image))
{
return false;
}
U32 width_tiles = (rawImageIn.getWidth() >> 6);
U32 height_tiles = (rawImageIn.getHeight() >> 6);
@ -575,6 +570,23 @@ public:
height_tiles = 1;
}
if (width_tiles == 1 || height_tiles == 1)
{
// Images with either dimension less than 32 need less number of resolutions otherwise they error
int min_dim = rawImageIn.getWidth() < rawImageIn.getHeight() ? rawImageIn.getWidth() : rawImageIn.getHeight();
int max_res = 1 + (int)floor(log2(min_dim));
parameters.numresolution = max_res;
}
if (!opj_setup_encoder(encoder, &parameters, image))
{
return false;
}
opj_set_info_handler(encoder, opj_info, this);
opj_set_warning_handler(encoder, opj_warn, this);
opj_set_error_handler(encoder, opj_error, this);
U32 tile_count = width_tiles * height_tiles;
U32 data_size_guess = tile_count * TILE_SIZE;

View File

@ -316,11 +316,7 @@ void LLAccordionCtrl::ctrlShiftVertical(LLView* panel, S32 delta)
//---------------------------------------------------------------------------------
// <FS:ND> If adding a lot of controls rapidly, calling arrange will cost a lot of times, as it's running through n! controls.
// In that case we can avvoid calling arrange over and over and just call it once when finished.
//void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab)
void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab, bool aArrange)
// </FS:ND>
void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab)
{
if (!accordion_tab)
return;
@ -329,14 +325,7 @@ void LLAccordionCtrl::addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab, bool
mAccordionTabs.push_back(accordion_tab);
accordion_tab->setDropDownStateChangedCallback( boost::bind(&LLAccordionCtrl::onCollapseCtrlCloseOpen, this, (S16)(mAccordionTabs.size() - 1)) );
// <FS:ND> If adding a lot of controls rapidly, calling arrange will cost a lot of times, as it's running through n! controls.
// In that case we can avvoid calling arrange over and over and just call it once when finished.
// arrange();
if( aArrange )
arrange();
// </FS:ND>
}
void LLAccordionCtrl::removeCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab)

View File

@ -103,11 +103,7 @@ public:
// Call reshape after changing splitter's size
virtual void reshape(S32 width, S32 height, bool called_from_parent = true);
// <FS:ND> If adding a lot of controls rapidly, calling arrange will cost a lot of times, as it's running through n! controls.
// In that case we can avvoid calling arrange over and over and just call it once when finished.
// void addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab);
void addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab, bool aArrange = true /*Standard is true as to not mess with old code all over the place*/ );
// </FS:ND>
void addCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab);
void removeCollapsibleCtrl(LLAccordionCtrlTab* accordion_tab);
void arrange();

View File

@ -27004,5 +27004,18 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>0</integer>
</map>
<key>FSLargeOutfitsWarningInThisSession</key>
<map>
<key>Comment</key>
<string>Internal; Suppresses the 'too many outfits' warning (does not persist across sessions)</string>
<key>HideFromEditor</key>
<integer>1</integer>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
</map>
</llsd>

View File

@ -220,11 +220,7 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id)
// *TODO: LLUICtrlFactory::defaultBuilder does not use "display_children" from xml. Should be investigated.
tab->setDisplayChildren(false);
// <FS:ND> Calling this when there's a lot of outfits causes horrible perfomance and disconnects, due to arrange eating so many cpu cycles.
//mAccordion->addCollapsibleCtrl(tab);
mAccordion->addCollapsibleCtrl(tab, false);
// </FS:ND>
mAccordion->addCollapsibleCtrl(tab);
// Start observing the new outfit category.
LLWearableItemsList* list = tab->getChild<LLWearableItemsList>("wearable_items_list");
@ -1120,8 +1116,21 @@ void LLOutfitListBase::refreshList(const LLUUID& category_id)
}
// <FS:ND> FIRE-6958/VWR-2862; Handle large amounts of outfits, write a least a warning into the logs.
if (mRefreshListState.Added.size() > 128)
LL_WARNS() << "Large amount of outfits found: " << mRefreshListState.Added.size() << " this may cause hangs and disconnects" << LL_ENDL;
S32 currentOutfitsAmount = (S32)mRefreshListState.Added.size();
constexpr S32 maxSuggestedOutfits = 200;
if (currentOutfitsAmount > maxSuggestedOutfits)
{
LL_WARNS() << "Large amount of outfits found: " << currentOutfitsAmount << " this may cause hangs and disconnects" << LL_ENDL;
static LLCachedControl<bool> fsLargeOutfitsWarningInThisSession(gSavedSettings, "FSLargeOutfitsWarningInThisSession");
if (!fsLargeOutfitsWarningInThisSession)
{
gSavedSettings.setBOOL("FSLargeOutfitsWarningInThisSession", true);
LLSD args;
args["AMOUNT"] = currentOutfitsAmount;
args["MAX"] = maxSuggestedOutfits;
LLNotificationsUtil::add("FSLargeOutfitsWarningInThisSession", args);
}
}
// </FS:ND>
// <FS:Ansariel> FIRE-12939: Add outfit count to outfits list
@ -1157,7 +1166,18 @@ void LLOutfitListBase::onIdleRefreshList()
return;
}
const F64 MAX_TIME = 0.05f;
// <FS:PP> Scale MAX_TIME with FPS to avoid overloading the viewer with function calls at low frame rates
// const F64 MAX_TIME = 0.05f;
F64 MAX_TIME = 0.05f;
constexpr F64 min_time = 0.001f;
constexpr F64 threshold_fps = 30.0;
const auto current_fps = LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS, 1);
if (current_fps < threshold_fps)
{
MAX_TIME = min_time + (current_fps / threshold_fps) * (MAX_TIME - min_time);
}
// </FS:PP>
F64 curent_time = LLTimer::getTotalSeconds();
const F64 end_time = curent_time + MAX_TIME;
@ -1174,9 +1194,6 @@ void LLOutfitListBase::onIdleRefreshList()
mRefreshListState.Added.clear();
mRefreshListState.AddedIterator = mRefreshListState.Added.end();
// <FS:ND> We called mAccordion->addCollapsibleCtrl with false as second paramter and did not let it arrange itself each time. Do this here after all is said and done.
arrange();
// Handle removed tabs.
while (mRefreshListState.RemovedIterator < mRefreshListState.Removed.end())
{

View File

@ -29,6 +29,7 @@
<panel_camera_item name="front_view" tool_tip="前面ビューにします。"/>
<panel_camera_item name="group_view" tool_tip="サイドビューにします。"/>
<panel_camera_item name="rear_view" tool_tip="後方ビューにします。"/>
<panel_camera_item name="tpp_view" tool_tip="三人称ビューにします。"/>
<panel_camera_item name="object_view" tool_tip="オブジェクトビューにします。"/>
<panel_camera_item name="mouselook_view" tool_tip="マウスルックビューにします。"/>
<panel_camera_item name="reset_view" tool_tip="視野をリセットします。"/>

View File

@ -5900,6 +5900,10 @@ https://wiki.firestormviewer.org/antivirus_whitelisting
Bestehende Pose „[POSE_NAME]“ überschreiben?
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Okay"/>
</notification>
<notification name="FSLargeOutfitsWarningInThisSession">
Eine große Anzahl an Outfits wurde erkannt: [AMOUNT]. Dies kann zu einem Blockieren des Viewers oder zu Verbindungsabbrüchen führen. Ziehen Sie eine Reduzierung der Outfits für eine bessere Performance in Betracht (unter [MAX]).
<usetemplate ignoretext="Warnung bei zu vielen Outfits" name="okignore" yestext="OK" />
</notification>
<notification name="PrimfeedLoginRequestFailed">
Login-Anfrage wurde von Primfeed abgelehnt.
</notification>

View File

@ -14775,6 +14775,18 @@ https://wiki.firestormviewer.org/antivirus_whitelisting
yestext="Okay"/>
</notification>
<notification
icon="notifytip.tga"
name="FSLargeOutfitsWarningInThisSession"
type="alertmodal">
<unique/>
A large number of outfits were detected: [AMOUNT]. This may cause viewer hangs or disconnects. Consider reducing the number of outfits for better performance (below [MAX]).
<usetemplate
ignoretext="Outfit count warning"
name="okignore"
yestext="OK" />
</notification>
<notification
icon="alertmodal.tga"
name="PrimfeedLoginRequestFailed"

View File

@ -5,10 +5,11 @@
表示:
</text>
<check_box label="シーン内の光源のバウンディングボックス" name="lights_bounding_boxes"/>
<check_box label="リージョンのコーナー" name="fsregioncornerbeacons"/>
<check_box label="ビーコン" name="beacons"/>
<check_box label="ハイライト" name="highlights"/>
<check_box label="ビーコン情報をビューアウィンドウに載せる" name="FSRenderBeaconText"/>
<text name="beacon_width_label" tool_tip="ビーコンの幅">
<text name="beacon_width_label" tool_tip="ビーコンの幅を設定します。">
幅:
</text>
<text name="label_objects">

View File

@ -19,9 +19,10 @@
<panel_camera_item name="front_view" tool_tip="前面ビューにします。"/>
<panel_camera_item name="group_view" tool_tip="サイドビューにします。"/>
<panel_camera_item name="rear_view" tool_tip="後方ビューにします。"/>
<panel_camera_item name="tpp_view" tool_tip="三人称ビューにします。"/>
<panel_camera_item name="object_view" tool_tip="オブジェクトビューにします。"/>
<panel_camera_item name="mouselook_view" tool_tip="マウスルックビューにします。"/>
<panel_camera_item name="reset_view" tool_tip="視野をリセットします。"/>
<panel_camera_item name="reset_view" tool_tip="ビューをリセットします。"/>
</panel>
<panel name="zoom">
<layout_stack name="camera_view_layout_stack">

View File

@ -39,31 +39,14 @@
</layout_stack>
</panel>
<panel name="buttons_view">
<panel_camera_item name="front_view" tool_tip="前方ビュー">
<panel_camera_item.text name="front_view_text">
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="group_view" tool_tip="側方ビュー">
<panel_camera_item.text name="group_view_text">
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="rear_view" tool_tip="後方ビュー">
<panel_camera_item.text name="rear_view_text">
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="front_view" tool_tip="前方ビューにします。"/>
<panel_camera_item name="group_view" tool_tip="サイドビューにします。"/>
<panel_camera_item name="rear_view" tool_tip="後方ビューにします。"/>
<panel_camera_item name="tpp_view" tool_tip="三人称ビューにします。"/>
</panel>
<panel name="buttons">
<panel_camera_item name="object_view" tool_tip="オブジェクトビュー">
<panel_camera_item.text name="object_view_text">
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="mouselook_view" tool_tip="マウスルックビュー">
<panel_camera_item.text name="mouselook_view_text">
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="reset_view" tool_tip="ビューをリセットします。">
<panel_camera_item.text name="reset_view_text">
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="object_view" tool_tip="オブジェクトビューにします。"/>
<panel_camera_item name="mouselook_view" tool_tip="マウスルックビューにします。"/>
<panel_camera_item name="reset_view" tool_tip="ビューをリセットします。"/>
</panel>
</floater>

View File

@ -22,17 +22,22 @@
<panel name="preset_views_list">
<panel_camera_item name="front_view">
<panel_camera_item.text name="front_view_text">
ビュー
ビュー
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="group_view">
<panel_camera_item.text name="side_view_text">
側面ビュー
サイドビュー
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="rear_view">
<panel_camera_item.text name="rear_view_text">
背面ビュー
後方ビュー
</panel_camera_item.text>
</panel_camera_item>
<panel_camera_item name="tpp_view">
<panel_camera_item.text name="tpp_view_text">
三人称ビュー
</panel_camera_item.text>
</panel_camera_item>
<combo_box name="preset_combo">

View File

@ -58,6 +58,7 @@
<check_box label="画面上でアバターが後ろ向きに歩くのを許可する。(SLの仕様により、ローカルでのみ有効)" name="FSDisableTurningAroundWhenWalkingBackwards" tool_tip="ここにチェックを入れると、後ろ向きに歩き出したアバターが、あなたの画面上ではそのまま後ろ向きに歩くように見えるようになります。この設定はあなたのビューアでの見せ方だけに影響しており、実際にアバターがそのような動きをしているわけではありません。動き出した時にその方向に振り返るのはセカンドライフ・ビューアのデフォルトの動きです。アバターがAOを使用しているときに、この動きをオーバーライドし、強制的にアバターを進行方向に振り返らせる可能性があります。"/>
<check_box label="選択したオブジェクトにアバターを向ける" name="FSTurnAvatarToSelectedObject" tool_tip="現在選択しているオブジェクトの方を向くようにアバターを回転させます。"/>
<slider label="アバターが振り向く速度" name="av_turn_spd" tool_tip="アバターが回転に反応する速度を変更します。最大回転速度の推定パーセンテージとして0100を指定します。0がデフォルトです。値が高いと、動きがぎくしゃくします。"/>
<check_box label="近隣のリージョンへの接続を無効にする(重要:ツールチップ参照)" name="FSDisableNeighbourRegionConnections" tool_tip="現在いるリージョンのみを表示/読み込みます。これにより、パフォーマンスとネットワークの安定性が向上しますが、徒歩または乗り物でのリージョンを横断するときの信頼性が低下し、手動でのテレポートが必要になる場合があります。"/>
<text name="Region_Crossing_Movement_Label">
リージョンを越える移動の予告:
</text>

View File

@ -5583,7 +5583,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
<!-- Mouse button names end -->
<!-- llviewerwindow -->
<string name="BeaconParticle">
パーティクル源ビーコン(青)を表示しています。
パーティクル源ビーコン(青)を表示しています。
</string>
<string name="BeaconPhysical">
物理的オブジェクトのビーコン(緑)を表示しています。
@ -5597,6 +5597,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
<string name="BeaconSound">
サウンドビーコン(黄)を表示しています。
</string>
<string name="BeaconRegionCorners">
リージョンのコーナー(黄)を表示しています。
</string>
<string name="BeaconMedia">
メディアビーコン(白)を表示しています。
</string>

View File

@ -5518,6 +5518,10 @@ https://wiki.firestormviewer.org/antivirus_whitelisting
Nadpisać istniejącą pozę “[POSE_NAME]”?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK" />
</notification>
<notification name="FSLargeOutfitsWarningInThisSession">
Została wykryta duża liczba strojów: [AMOUNT]. Może to powodować zawieszanie się lub rozłączanie przeglądarki. Rozważ zmniejszenie liczby strojów dla lepszej wydajności (poniżej [MAX]).
<usetemplate ignoretext="Ostrzeżenie o liczbie strojów" name="okignore" />
</notification>
<notification name="PrimfeedLoginRequestFailed">
Żądanie logowania odrzucone przez Primfeed.
</notification>