From ff85d9138d81cc94dad99645ce7922bfd8ed924e Mon Sep 17 00:00:00 2001 From: Adam Heinermann Date: Sun, 20 Apr 2025 12:13:05 -0700 Subject: [PATCH] chore(region): short circuit redundant unlock calls --- storm/Region.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/storm/Region.cpp b/storm/Region.cpp index e3d25dc..3bab710 100644 --- a/storm/Region.cpp +++ b/storm/Region.cpp @@ -290,26 +290,24 @@ void SRgnCombineRectf(HSRGN handle, RECTF* rect, void* param, int32_t combineMod HLOCKEDRGN lockedHandle; auto rgn = s_rgntable.Lock(handle, &lockedHandle, 0); + if (!rgn) return; - if (rgn) { - if (combineMode == SRGN_OR || combineMode == SRGN_PARAMONLY) { - if (!IsNullRect(rect)) { - rgn->sequence++; - AddSourceRect(&rgn->source, rect, param, rgn->sequence, combineMode == SRGN_PARAMONLY ? SF_PARAMONLY : SF_NONE); - } - } else { - if (!IsNullRect(rect)) { - rgn->sequence++; - FragmentSourceRectangles(&rgn->source, 0, rgn->source.Count(), 0, rect, param, rgn->sequence); - } - - ProcessBooleanOperation(&rgn->source, combineMode); - OptimizeSource(&rgn->source); + if (combineMode == SRGN_OR || combineMode == SRGN_PARAMONLY) { + if (!IsNullRect(rect)) { + rgn->sequence++; + AddSourceRect(&rgn->source, rect, param, rgn->sequence, combineMode == SRGN_PARAMONLY ? SF_PARAMONLY : SF_NONE); + } + } else { + if (!IsNullRect(rect)) { + rgn->sequence++; + FragmentSourceRectangles(&rgn->source, 0, rgn->source.Count(), 0, rect, param, rgn->sequence); } - InvalidateRegion(rgn); + ProcessBooleanOperation(&rgn->source, combineMode); + OptimizeSource(&rgn->source); } + InvalidateRegion(rgn); s_rgntable.Unlock(lockedHandle); } @@ -385,11 +383,7 @@ void SRgnGetBoundingRectf(HSRGN handle, RECTF* rect) { HLOCKEDRGN lockedHandle; auto rgn = s_rgntable.Lock(handle, &lockedHandle, 0); - - if (!rgn) { - s_rgntable.Unlock(lockedHandle); - return; - } + if (!rgn) return; for (uint32_t i = 0; i < rgn->source.Count(); i++) { auto source = &rgn->source[i];