summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
Diffstat (limited to 'video')
-rw-r--r--video/out/w32_common.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/video/out/w32_common.c b/video/out/w32_common.c
index 57e4a4a2f9..d2671fef15 100644
--- a/video/out/w32_common.c
+++ b/video/out/w32_common.c
@@ -37,6 +37,7 @@
#include "osdep/io.h"
#include "osdep/threads.h"
#include "osdep/w32_keyboard.h"
+#include "osdep/atomics.h"
#include "misc/dispatch.h"
#include "misc/rendezvous.h"
#include "talloc.h"
@@ -111,7 +112,7 @@ struct vo_w32_state {
typedef struct tagDropTarget {
IDropTarget iface;
- ULONG refCnt;
+ atomic_int refCnt;
DWORD lastEffect;
IDataObject* dataObj;
struct vo_w32_state *w32;
@@ -148,13 +149,13 @@ static HRESULT STDMETHODCALLTYPE DropTarget_QueryInterface(IDropTarget* This,
static ULONG STDMETHODCALLTYPE DropTarget_AddRef(IDropTarget* This)
{
DropTarget* t = (DropTarget*)This;
- return ++(t->refCnt);
+ return atomic_fetch_add(&t->refCnt, 1) + 1;
}
static ULONG STDMETHODCALLTYPE DropTarget_Release(IDropTarget* This)
{
DropTarget* t = (DropTarget*)This;
- ULONG cRef = --(t->refCnt);
+ ULONG cRef = atomic_fetch_add(&t->refCnt, -1) - 1;
if (cRef == 0) {
DropTarget_Destroy(t);
@@ -295,7 +296,7 @@ static void DropTarget_Init(DropTarget* This, struct vo_w32_state *w32)
};
This->iface.lpVtbl = vtbl;
- This->refCnt = 0;
+ atomic_store(&This->refCnt, 0);
This->lastEffect = 0;
This->dataObj = NULL;
This->w32 = w32;