mirror of
https://github.com/thunderbrewhq/squall.git
synced 2026-02-04 00:49:08 +00:00
fix(region): add compile time check to avoid SRgnDuplicate deadlock
This commit is contained in:
parent
6c4f7e9d66
commit
ae1bd8f92c
1 changed files with 15 additions and 8 deletions
|
|
@ -471,15 +471,22 @@ void SRgnDuplicate(HSRGN origHandle, HSRGN* handle, uint32_t reserved) {
|
||||||
HLOCKEDRGN origlockedhandle;
|
HLOCKEDRGN origlockedhandle;
|
||||||
auto rgn = s_rgntable.Lock(origHandle, &origlockedhandle, 0);
|
auto rgn = s_rgntable.Lock(origHandle, &origlockedhandle, 0);
|
||||||
|
|
||||||
if (rgn) {
|
if (!rgn) {
|
||||||
HLOCKEDRGN newlockedhandle;
|
return;
|
||||||
auto newrgn = s_rgntable.NewLock(handle, &newlockedhandle);
|
|
||||||
|
|
||||||
*newrgn = *rgn;
|
|
||||||
|
|
||||||
s_rgntable.Unlock(newlockedhandle);
|
|
||||||
s_rgntable.Unlock(origlockedhandle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(WHOA_STORM_C_CRIT_SECT_RECURSIVE)
|
||||||
|
HLOCKEDRGN newlockedhandle;
|
||||||
|
|
||||||
|
auto newrgn = s_rgntable.NewLock(handle, &newlockedhandle);
|
||||||
|
*newrgn = *rgn;
|
||||||
|
s_rgntable.Unlock(newlockedhandle);
|
||||||
|
#else
|
||||||
|
auto newrgn = s_rgntable.New(handle);
|
||||||
|
*newrgn = *rgn;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
s_rgntable.Unlock(origlockedhandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SRgnGetBoundingRectf(HSRGN handle, RECTF* rect) {
|
void SRgnGetBoundingRectf(HSRGN handle, RECTF* rect) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue