From 679ce37046c3c68b97e56fb70ea7b316e9dba3ad Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sun, 2 Jul 2023 00:12:58 +0200 Subject: GlueGen JavaCallback: Native callback: Check ObjectRef validity and synchronize (MonitorEnter/Exit) with same Object of Java impl. -> thread safe --- src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java') diff --git a/src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java b/src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java index 1737ba1..6a93973 100644 --- a/src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java +++ b/src/java/com/jogamp/gluegen/JavaMethodBindingEmitter.java @@ -421,7 +421,7 @@ public class JavaMethodBindingEmitter extends FunctionEmitter { if (needComma) { unit.emit(", "); } - unit.emit("String callbackSignature, long[/*1*/] nativeUserParam"); + unit.emit("String callbackSignature, Object lockObj, long[/*1*/] nativeUserParam"); ++numEmitted; } return numEmitted; @@ -1095,10 +1095,12 @@ public class JavaMethodBindingEmitter extends FunctionEmitter { ++numArgsEmitted; } if( null != javaCallback ) { + final String lowIfaceName = CodeGenUtils.decapitalizeString( getInterfaceName() ); + final String lockInstanceName = lowIfaceName+"Lock"; if (needComma) { unit.emit(", "); } - unit.emit("\"" + javaCallback.cbMethodSignature + "\", nativeUserParam"); + unit.emit("\"" + javaCallback.cbMethodSignature + "\", "+lockInstanceName+", nativeUserParam"); ++numArgsEmitted; } return numArgsEmitted; -- cgit v1.2.3