From fe900763d7260cb6276ce3c6c3dacec94bd1212f Mon Sep 17 00:00:00 2001 From: XenHat <commits@xenh.at> Date: Sun, 18 Jul 2021 18:48:17 -0400 Subject: [PATCH] Fix crashed caused by setting RenderResolutionMultiplier too low --- indra/newview/llviewercontrol.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 5c1554d4bb8..12739856b82 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -487,8 +487,14 @@ static bool handleRenderDebugPipelineChanged(const LLSD& newvalue) return true; } -static bool handleRenderResolutionDivisorChanged(const LLSD&) +static bool validateRenderResolutionDivisor(const LLSD& newvalue) { + return (newvalue.asReal() > 0.01f); +} + +static bool handleRenderResolutionDivisorChanged(const LLSD& newvalue) +{ + LLPipeline::RenderResolutionMultiplier = llmin((F32)newvalue.asReal(), 0.01f); gResizeScreenTexture = TRUE; return true; } @@ -692,6 +698,7 @@ void settings_setup_listeners() gSavedSettings.getControl("RenderDeferredNoise")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderDebugGL")->getSignal()->connect(boost::bind(&handleRenderDebugGLChanged, _2)); gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2)); + gSavedSettings.getControl("RenderResolutionDivisor")->getValidateSignal()->connect(boost::bind(&validateRenderResolutionDivisor, _2)); gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2)); // [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 gSavedSettings.getControl("RenderResolutionMultiplier")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2)); -- GitLab