On Friday 16 September 2011 02:03:21 pm Mike Swingler wrote:
> On Sep 16, 2011, at 7:44 AM, Kurt Miller wrote:
>
> > On Friday 16 September 2011 03:23:10 am Konstantin Tokarev wrote:
> >
> >> Seems like I've found possible reason for crash: JNA uses
> >> JAWT_MacOSXDrawingSurfaceInfo struct, but we don't provide it. Unmodified
> >> JNA just fails to compile.
> >>
> >> Code fragment from JNA:
> >>
> >> #elif __APPLE__
> >> // WARNING: the view ref is not guaranteed to be stable except during
> >> // component paint (see jni_md.h)
> >> JAWT_MacOSXDrawingSurfaceInfo* mdsi =
> >> (JAWT_MacOSXDrawingSurfaceInfo*)dsi->platformInfo;
> >> if (mdsi != NULL) {
> >> handle = (unsigned long)mdsi->cocoaViewRef;
> >> if (!handle) {
> >> throwByName(env, EIllegalState, "Can't get Cocoa View");
> >> }
> >> }
> >> else {
> >> throwByName(env, EError, "Can't get OS X platform info");
> >> }
> >> #else
> >> JAWT_X11DrawingSurfaceInfo* xdsi =
> >> (JAWT_X11DrawingSurfaceInfo*)dsi->platformInfo;
> >> if (xdsi != NULL) {
> >> handle = xdsi->drawable;
> >> if (!handle) {
> >> throwByName(env, EIllegalState, "Can't get Drawable");
> >> }
> >> }
> >> else {
> >> throwByName(env, EError, "Can't get X11 platform info");
> >> }
> >> #endif
> >
> > Check the Max OS X port for that function. Mac OS X is built on-top
> > of bsd-port, meaning they merge bsd-port changes into their tree from
> > time to time and then add Cocoa based UI on top.
> >
> > I'm thinking that we've not gotten far enough into loading jna to hit
> > that missing function. We're crashing very earily. The code for
> > JNI_OnLoad in jna is here:
> >
> > https://github.com/twall/jna/blob/master/native/dispatch.c
>
> Actually, the macosx-port doesn't have the JAWT API implemented yet, and it
> won't be vending a Cocoa NSView* when we do get around to implementing it. We
> actually won't be providing an pointer to the underlying window or view
> hierarchy, because it could exist in a separate process. Instead, JAWT
> clients will be expected to provide a CoreAnimation layer that they want
> placed on top the AWT component they are covering. We will then take that and
> link it up across processes to form a coherent render tree.
Ah, thanks for the info.
Konstantin, in light of the above info I would just disable the __APPLE__
segement and build using the X11 code.
Regards,
-Kurt