Hallo,
erst mal eine ganz allgemeine Beschreibung meines Problemes, vielleicht kennt jemand diesen Effekt:
Ich erhalte mit JNI nur Callbacks auf Java-Seite, wenn ich Aufrufe nach native (C++) mache, d.h. meine Callbacks funktionieren, aber nur, wenn ich Aufrufe von Java nach C++ mache. Wenn auf C++-Seite bestimmte Ereignisse aufgetreten sind und ich diese nach Java melden möchte, werden die Thread regelrecht blockiert. Erst, wenn ich wieder einen Aufruf von Java nach C++ mache, um z.B. ein Event zu registrieren, kommen auch die Callbacks wieder durch.
Um eine Java Objekt-Referenz zu erhalten benutze ich "NewWeakGlobalRef", damit es von der Garbage Collection abgeraeumt werden kann, wenn es Java nicht mehr referenziert. Wenn die Callback-Aufrufe getaetigt werden sollen existiert das Objekt auch noch, dummerweise kommen sie aber nur durch, wenn ich gleichzeitig einen Aufruf nach C++ mache.
Kennt jemand das Problem
erst mal eine ganz allgemeine Beschreibung meines Problemes, vielleicht kennt jemand diesen Effekt:
Ich erhalte mit JNI nur Callbacks auf Java-Seite, wenn ich Aufrufe nach native (C++) mache, d.h. meine Callbacks funktionieren, aber nur, wenn ich Aufrufe von Java nach C++ mache. Wenn auf C++-Seite bestimmte Ereignisse aufgetreten sind und ich diese nach Java melden möchte, werden die Thread regelrecht blockiert. Erst, wenn ich wieder einen Aufruf von Java nach C++ mache, um z.B. ein Event zu registrieren, kommen auch die Callbacks wieder durch.
Um eine Java Objekt-Referenz zu erhalten benutze ich "NewWeakGlobalRef", damit es von der Garbage Collection abgeraeumt werden kann, wenn es Java nicht mehr referenziert. Wenn die Callback-Aufrufe getaetigt werden sollen existiert das Objekt auch noch, dummerweise kommen sie aber nur durch, wenn ich gleichzeitig einen Aufruf nach C++ mache.
Kennt jemand das Problem