diff options
author | Silenio Quarti <silenio> | 2009-06-03 19:08:57 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2009-06-03 19:08:57 +0000 |
commit | b8a551181a182eae1ce380ca8b10dbe2b68d3d2c (patch) | |
tree | 7e8a4ceb47c6c0ad9a141790f5993e0741df88be | |
parent | 968cfd4347dd638a67216dabd8bd1b7f5a0edeef (diff) | |
download | eclipse.platform.swt-b8a551181a182eae1ce380ca8b10dbe2b68d3d2c.tar.gz eclipse.platform.swt-b8a551181a182eae1ce380ca8b10dbe2b68d3d2c.tar.xz eclipse.platform.swt-b8a551181a182eae1ce380ca8b10dbe2b68d3d2c.zip |
277713 - Crash (probably opening dialog with progress reporting in it)
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak | 2 | ||||
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/common/library/callback.c | 13 |
2 files changed, 12 insertions, 3 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak b/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak index 6d1055b173..4c5d8a5027 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak @@ -31,7 +31,7 @@ AWT_OBJECTS = swt_awt.o #NATIVE_STATS = -DNATIVE_STATS #SWT_DEBUG = -g -CFLAGS = -c -xobjective-c -Wall $(ARCHS) -DSWT_VERSION=$(SWT_VERSION) $(NATIVE_STATS) $(SWT_DEBUG) -DUSE_ASSEMBLER -DCOCOA \ +CFLAGS = -c -xobjective-c -Wall $(ARCHS) -DSWT_VERSION=$(SWT_VERSION) $(NATIVE_STATS) $(SWT_DEBUG) -DUSE_ASSEMBLER -DCOCOA -DATOMIC \ -I /System/Library/Frameworks/JavaVM.framework/Headers \ -I /System/Library/Frameworks/Cocoa.framework/Headers LFLAGS = -bundle $(ARCHS) -framework JavaVM -framework Cocoa -framework WebKit diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/library/callback.c b/bundles/org.eclipse.swt/Eclipse SWT/common/library/callback.c index 28a021fe8b..25e66053d2 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/library/callback.c +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/library/callback.c @@ -31,6 +31,15 @@ static jint JNI_VERSION = 0; static int counter = 0; #endif +#ifdef ATOMIC +#include <libkern/OSAtomic.h> +#define ATOMIC_INC(value) OSAtomicIncrement32(&value); +#define ATOMIC_DEC(value) OSAtomicDecrement32(&value); +#else +#define ATOMIC_INC(value) value++; +#define ATOMIC_DEC(value) value--; +#endif + jintLong callback(int index, ...); #ifdef USE_ASSEMBLER @@ -682,7 +691,7 @@ jintLong callback(int index, ...) } /* Call into the VM. */ - callbackEntryCount++; + ATOMIC_INC(callbackEntryCount); va_start(vl, index); if (isArrayBased) { int i; @@ -714,7 +723,7 @@ jintLong callback(int index, ...) } } va_end(vl); - callbackEntryCount--; + ATOMIC_DEC(callbackEntryCount); done: /* If an exception has occurred in Java, return the error result. */ |