From: Marc-Aurel Zent <mzent@codeweavers.com> Also relaxes memory order when appropiate. --- dlls/winemac.drv/cocoa_event.m | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dlls/winemac.drv/cocoa_event.m b/dlls/winemac.drv/cocoa_event.m index 7c86fc1d5ff..d3fc4e8f22c 100644 --- a/dlls/winemac.drv/cocoa_event.m +++ b/dlls/winemac.drv/cocoa_event.m @@ -21,7 +21,6 @@ #include <sys/types.h> #include <sys/event.h> #include <sys/time.h> -#include <libkern/OSAtomic.h> #include "macdrv_cocoa.h" #import "cocoa_event.h" @@ -277,7 +276,7 @@ - (MacDrvEvent*) getEventMatchingMask:(macdrv_event_mask)mask [events removeObjectAtIndex:index]; if (event->event->deliver == INT_MAX || - OSAtomicDecrement32Barrier(&event->event->deliver) >= 0) + __atomic_sub_fetch(&event->event->deliver, 1, __ATOMIC_RELAXED) >= 0) { ret = event; break; @@ -647,7 +646,7 @@ int macdrv_copy_event_from_queue(macdrv_event_queue queue, */ macdrv_event* macdrv_retain_event(macdrv_event *event) { - OSAtomicIncrement32Barrier(&event->refs); + __atomic_add_fetch(&event->refs, 1, __ATOMIC_RELAXED); return event; } @@ -662,8 +661,9 @@ void macdrv_release_event(macdrv_event *event) { @autoreleasepool { - if (OSAtomicDecrement32Barrier(&event->refs) <= 0) + if (__atomic_sub_fetch(&event->refs, 1, __ATOMIC_RELEASE) <= 0) { + __atomic_thread_fence(__ATOMIC_ACQUIRE); switch (event->type) { case IM_SET_TEXT: @@ -706,7 +706,7 @@ void macdrv_release_event(macdrv_event *event) */ macdrv_query* macdrv_retain_query(macdrv_query *query) { - OSAtomicIncrement32Barrier(&query->refs); + __atomic_add_fetch(&query->refs, 1, __ATOMIC_RELAXED); return query; } @@ -715,8 +715,9 @@ void macdrv_release_event(macdrv_event *event) */ void macdrv_release_query(macdrv_query *query) { - if (OSAtomicDecrement32Barrier(&query->refs) <= 0) + if (__atomic_sub_fetch(&query->refs, 1, __ATOMIC_RELEASE) <= 0) { + __atomic_thread_fence(__ATOMIC_ACQUIRE); switch (query->type) { case QUERY_DRAG_DROP_ENTER: -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10463