chore(region): short circuit redundant unlock calls

This commit is contained in:
Adam Heinermann 2025-04-20 12:13:05 -07:00 committed by fallenoak
parent 83f22d53a8
commit ff85d9138d

View file

@ -290,26 +290,24 @@ void SRgnCombineRectf(HSRGN handle, RECTF* rect, void* param, int32_t combineMod
HLOCKEDRGN lockedHandle; HLOCKEDRGN lockedHandle;
auto rgn = s_rgntable.Lock(handle, &lockedHandle, 0); auto rgn = s_rgntable.Lock(handle, &lockedHandle, 0);
if (!rgn) return;
if (rgn) { if (combineMode == SRGN_OR || combineMode == SRGN_PARAMONLY) {
if (combineMode == SRGN_OR || combineMode == SRGN_PARAMONLY) { if (!IsNullRect(rect)) {
if (!IsNullRect(rect)) { rgn->sequence++;
rgn->sequence++; AddSourceRect(&rgn->source, rect, param, rgn->sequence, combineMode == SRGN_PARAMONLY ? SF_PARAMONLY : SF_NONE);
AddSourceRect(&rgn->source, rect, param, rgn->sequence, combineMode == SRGN_PARAMONLY ? SF_PARAMONLY : SF_NONE); }
} } else {
} else { if (!IsNullRect(rect)) {
if (!IsNullRect(rect)) { rgn->sequence++;
rgn->sequence++; FragmentSourceRectangles(&rgn->source, 0, rgn->source.Count(), 0, rect, param, rgn->sequence);
FragmentSourceRectangles(&rgn->source, 0, rgn->source.Count(), 0, rect, param, rgn->sequence);
}
ProcessBooleanOperation(&rgn->source, combineMode);
OptimizeSource(&rgn->source);
} }
InvalidateRegion(rgn); ProcessBooleanOperation(&rgn->source, combineMode);
OptimizeSource(&rgn->source);
} }
InvalidateRegion(rgn);
s_rgntable.Unlock(lockedHandle); s_rgntable.Unlock(lockedHandle);
} }
@ -385,11 +383,7 @@ void SRgnGetBoundingRectf(HSRGN handle, RECTF* rect) {
HLOCKEDRGN lockedHandle; HLOCKEDRGN lockedHandle;
auto rgn = s_rgntable.Lock(handle, &lockedHandle, 0); auto rgn = s_rgntable.Lock(handle, &lockedHandle, 0);
if (!rgn) return;
if (!rgn) {
s_rgntable.Unlock(lockedHandle);
return;
}
for (uint32_t i = 0; i < rgn->source.Count(); i++) { for (uint32_t i = 0; i < rgn->source.Count(); i++) {
auto source = &rgn->source[i]; auto source = &rgn->source[i];