Merge branch 'DRTVWR-588-maint-W' of https://github.com/secondlife/viewer

# Conflicts:
#	indra/newview/llfloaterimnearbychathandler.cpp
#	indra/newview/llpanelprofilepicks.cpp
master
Ansariel 2023-08-14 18:16:29 +02:00
commit 269d8f0554
8 changed files with 24 additions and 17 deletions

View File

@ -104,7 +104,6 @@ BOOL LLApp::sLogInSignal = FALSE;
// Keeps track of application status
LLScalarCond<LLApp::EAppStatus> LLApp::sStatus{LLApp::APP_STATUS_STOPPED};
LLAppErrorHandler LLApp::sErrorHandler = NULL;
BOOL LLApp::sErrorThreadRunning = FALSE;
LLApp::LLApp()
@ -793,13 +792,8 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)
return;
}
// Flag status to ERROR, so thread_error does its work.
// Flag status to ERROR
LLApp::setError();
// Block in the signal handler until somebody says that we're done.
while (LLApp::sErrorThreadRunning && !LLApp::isStopped())
{
ms_sleep(10);
}
if (LLApp::sLogInSignal)
{

View File

@ -291,7 +291,6 @@ protected:
static void setStatus(EAppStatus status); // Use this to change the application status.
static LLScalarCond<EAppStatus> sStatus; // Reflects current application status
static BOOL sErrorThreadRunning; // Set while the error thread is running
static BOOL sDisableCrashlogger; // Let the OS handle crashes for us.
std::wstring mCrashReportPipeStr; //Name of pipe to use for crash reporting.

View File

@ -21,11 +21,12 @@
#include "llevents.h"
#include "stringize.h"
LL::ThreadPool::ThreadPool(const std::string& name, size_t threads, size_t capacity):
LL::ThreadPool::ThreadPool(const std::string& name, size_t threads, size_t capacity, bool auto_shutdown):
super(name),
mQueue(name, capacity),
mName("ThreadPool:" + name),
mThreadCount(threads)
mThreadCount(threads),
mAutomaticShutdown(auto_shutdown)
{}
void LL::ThreadPool::start()
@ -39,6 +40,13 @@ void LL::ThreadPool::start()
run(tname);
});
}
// Some threads might need to run longer than LLEventPumps
if (!mAutomaticShutdown)
{
return;
}
// Listen on "LLApp", and when the app is shutting down, close the queue
// and join the workers.
LLEventPumps::instance().obtain("LLApp").listen(

View File

@ -31,7 +31,7 @@ namespace LL
* Pass ThreadPool a string name. This can be used to look up the
* relevant WorkQueue.
*/
ThreadPool(const std::string& name, size_t threads=1, size_t capacity=1024);
ThreadPool(const std::string& name, size_t threads=1, size_t capacity=1024, bool auto_shutdown = true);
virtual ~ThreadPool();
/**
@ -66,6 +66,7 @@ namespace LL
std::string mName;
size_t mThreadCount;
std::vector<std::pair<std::string, std::thread>> mThreads;
bool mAutomaticShutdown;
};
} // namespace LL

View File

@ -832,6 +832,7 @@ void LLWindowWin32::close()
// Is window is already closed?
if (!mWindowHandle)
{
mWindowThread->close();
return;
}
@ -4717,7 +4718,7 @@ void LLWindowWin32::getWindowChrome( U32 &aChromeW, U32 &aChromeH )
#endif // LL_WINDOWS
inline LLWindowWin32::LLWindowWin32Thread::LLWindowWin32Thread()
: ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE)
: ThreadPool("Window Thread", 1, MAX_QUEUE_SIZE, false)
{
ThreadPool::start();
}

View File

@ -619,6 +619,8 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg,
static LLCachedControl<bool> FSllOwnerSayToScriptDebugWindow(gSavedPerAccountSettings, "FSllOwnerSayToScriptDebugWindow");
if (chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG || (chat_msg.mChatType == CHAT_TYPE_OWNER && FSllOwnerSayToScriptDebugWindow))
{
if (LLFloater::isQuitRequested()) return;
// <FS:Kadah> [FSllOwnerSayToScriptDebugWindow] Show llOwnerSays in the script debug window instead of local chat
// if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE && chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG)

View File

@ -594,9 +594,7 @@ void LLPanelProfilePick::setAvatarId(const LLUUID& avatar_id)
mPickName->setEnabled(TRUE);
mPickDescription->setEnabled(TRUE);
// <FS:Zi> Make sure the "Set Location" button is only visible when viewing own picks
// mSetCurrentLocationButton->setVisible(TRUE);
childSetVisible("set_to_curr_location_btn_lp", true);
// </FS:Zi>
}
else
{
@ -613,7 +611,7 @@ BOOL LLPanelProfilePick::postBuild()
mSaveButton = getChild<LLButton>("save_changes_btn");
mCreateButton = getChild<LLButton>("create_changes_btn");
mCancelButton = getChild<LLButton>("cancel_changes_btn");
mSetCurrentLocationButton = getChild<LLButton>("set_to_curr_location_btn");
mSetCurrentLocationButton = getChild<LLButton>("set_to_curr_location_btn"); // <FS:Ansariel> Keep set location button
mSnapshotCtrl = getChild<LLTextureCtrl>("pick_snapshot");
mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelProfilePick::onSnapshotChanged, this));
@ -624,7 +622,7 @@ BOOL LLPanelProfilePick::postBuild()
mSaveButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSave, this));
mCreateButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSave, this));
mCancelButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickCancel, this));
mSetCurrentLocationButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSetLocation, this));
mSetCurrentLocationButton->setCommitCallback(boost::bind(&LLPanelProfilePick::onClickSetLocation, this)); // <FS:Ansariel> Keep set location button
mPickName->setKeystrokeCallback(boost::bind(&LLPanelProfilePick::onPickChanged, this, _1), NULL);
mPickName->setEnabled(FALSE);
@ -786,6 +784,7 @@ BOOL LLPanelProfilePick::isDirty() const
return FALSE;
}
// <FS:Ansariel> Keep set location button
void LLPanelProfilePick::onClickSetLocation()
{
// Save location for later use.
@ -811,6 +810,7 @@ void LLPanelProfilePick::onClickSetLocation()
mLocationChanged = true;
enableSaveButton(TRUE);
}
// </FS:Ansariel>
void LLPanelProfilePick::onClickSave()
{

View File

@ -208,10 +208,12 @@ protected:
*/
void resetDirty() override;
// <FS:Ansariel> Keep set location button
/**
* Callback for "Set Location" button click
*/
void onClickSetLocation();
// <FS:Ansariel>
/**
* Callback for "Save" and "Create" button click
@ -235,7 +237,7 @@ protected:
LLTextureCtrl* mSnapshotCtrl;
LLLineEditor* mPickName;
LLTextEditor* mPickDescription;
LLButton* mSetCurrentLocationButton;
LLButton* mSetCurrentLocationButton; // <FS:Ansariel> Keep set location button
LLButton* mSaveButton;
LLButton* mCreateButton;
LLButton* mCancelButton;