mirror of
https://github.com/thunderbrewhq/squall.git
synced 2026-02-04 08:59:07 +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;
|
||||
auto rgn = s_rgntable.Lock(origHandle, &origlockedhandle, 0);
|
||||
|
||||
if (rgn) {
|
||||
HLOCKEDRGN newlockedhandle;
|
||||
auto newrgn = s_rgntable.NewLock(handle, &newlockedhandle);
|
||||
|
||||
*newrgn = *rgn;
|
||||
|
||||
s_rgntable.Unlock(newlockedhandle);
|
||||
s_rgntable.Unlock(origlockedhandle);
|
||||
if (!rgn) {
|
||||
return;
|
||||
}
|
||||
|
||||
#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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue