diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2024-04-09 00:05:05 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2024-04-09 15:29:46 +0300 | 
| commit | 7947ce355964752d8385f11e2abdc4ca405c7e65 (patch) | |
| tree | 8d29a4788491a62922b553f46d0b0383b809b096 | |
| parent | 9567393f803dfb0c786b8e917e41c8f4b8b22af7 (diff) | |
triage#162 "Away" status is removed even by a random hover
instead of having a 10 second delay to 'confirm' activity
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llviewerjoystick.cpp | 27 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 20 | 
4 files changed, 52 insertions, 14 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9b9b29cd74..84a89251a4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -91,7 +91,7 @@        <key>Type</key>        <string>S32</string>        <key>Value</key> -      <real>300.0</real> +      <real>300</real>      </map>      <key>AckCollectTime</key>      <map> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a1fecdb981..5002846262 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -454,11 +454,20 @@ void idle_afk_check()  {  	// check idle timers  	F32 current_idle = gAwayTriggerTimer.getElapsedTimeF32(); -	F32 afk_timeout  = gSavedSettings.getS32("AFKTimeout"); -	if (afk_timeout && (current_idle > afk_timeout) && ! gAgent.getAFK()) +	LLCachedControl<S32> afk_timeout(gSavedSettings, "AFKTimeout", 300); +	if (afk_timeout() && (current_idle > afk_timeout()))  	{ -		LL_INFOS("IdleAway") << "Idle more than " << afk_timeout << " seconds: automatically changing to Away status" << LL_ENDL; -		gAgent.setAFK(); +        if (!gAgent.getAFK()) +        { +            LL_INFOS("IdleAway") << "Idle more than " << afk_timeout << " seconds: automatically changing to Away status" << LL_ENDL; +            gAgent.setAFK(); +        } +        else +        { +            // Refresh timer so that random one click or hover won't clear the status. +            // But expanding the window still should lift afk status +            gAwayTimer.reset(); +        }  	}  } diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp index e35cb26ce1..2bcec1ecee 100644 --- a/indra/newview/llviewerjoystick.cpp +++ b/indra/newview/llviewerjoystick.cpp @@ -806,6 +806,10 @@ void LLViewerJoystick::moveObjects(bool reset)  		{  			gAgent.clearAFK();  		} +        else +        { +            gAwayTriggerTimer.reset(); +        }  		if (sDelta[0] || sDelta[1] || sDelta[2])  		{ @@ -980,6 +984,10 @@ void LLViewerJoystick::moveAvatar(bool reset)  		{  			gAgent.clearAFK();  		} +        else +        { +            gAwayTriggerTimer.reset(); +        }  		setCameraNeedsUpdate(true);  	} @@ -1192,10 +1200,17 @@ void LLViewerJoystick::moveFlycam(bool reset)  	}  	// Clear AFK state if moved beyond the deadzone -	if (!is_zero && gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME) -	{ -		gAgent.clearAFK(); -	} +    if (!is_zero) +    { +        if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME) +        { +            gAgent.clearAFK(); +        } +        else +        { +            gAwayTriggerTimer.reset(); +        } +    }  	sFlycamPosition += LLVector3(sDelta) * sFlycamRotation; @@ -1256,6 +1271,10 @@ bool LLViewerJoystick::toggleFlycam()  	{  		gAgent.clearAFK();  	} +    else +    { +        gAwayTriggerTimer.reset(); +    }  	mOverrideCamera = !mOverrideCamera;  	if (mOverrideCamera) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 37e64dfc17..4a8edfcf89 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1425,11 +1425,17 @@ void LLViewerWindow::handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask  	mWindow->showCursorFromMouseMove(); -	if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME -		&& !gDisconnected) -	{ -		gAgent.clearAFK(); -	} +    if (!gDisconnected) +    { +        if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME) +        { +            gAgent.clearAFK(); +        } +        else +        { +            gAwayTriggerTimer.reset(); +        } +    }  }  void LLViewerWindow::handleMouseDragged(LLWindow *window,  LLCoordGL pos, MASK mask) @@ -1545,6 +1551,10 @@ BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key,  MASK mask, BOOL repeated)  	{  		gAgent.clearAFK();  	} +    else +    { +        gAwayTriggerTimer.reset(); +    }  	// *NOTE: We want to interpret KEY_RETURN later when it arrives as  	// a Unicode char, not as a keydown.  Otherwise when client frame | 
