Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Jan 1998 17:44:12 -0600 (CST)
From:      Damon Anton Permezel <dap@damon.com>
To:        freebsd-hackers@FreeBSD.ORG
Subject:   Motif question
Message-ID:  <199801062344.RAA09428@damon.com>

next in thread | raw e-mail | index | archive | help
The jdk115 port uses lesstif-0.81.
I am attempting to resolve some issues pertaining to running some AOL
messenger s/w which comes as a Java application.

(BTW: running this with anything but mwm causes the X-server to rapidly bloat
 until all 500meg of swap space is consumed!)

Currently, I'm looking at a SEGV due to a difference in interpretation of
what a "private" data structure should look like.

>From the java:awt_util.c source, it thinks the struct, which hangs off a
vendor specific field in the widget struct
	
    ve = (XmVendorShellExtObject) extData->widget;
    if ((im_info = (XmImInfo *) ve->vendor.im_info) == NULL)
	return NULL;
    else
	return im_info->iclist;

lesstif places a:

	/*
	 * This is a private data structure. A pointer to it is in the
	 * VendorShell Extension object.
	 */
	typedef struct XmICStuff
	{
	    XIC xic;
	    XIM xim;
	    Widget ve, text;		/* Don't know if we need this */
	    struct XmICStuff *next;
	}
	XmICStuff;

in the vendor.im_info.

Java:awt_util.c thinks that it looks like:

	typedef struct {
	    Widget im_widget;
	    XIMStyle input_style;
	    XIC xic;
	    int status_width;
	    int status_height;
	    int preedit_width;
	    int preedit_height;
	    XmICStruct *iclist;
	    XmICStruct *current;
	}   XmImInfo;

It picks up the `iclist', (random garbage) and faults.

Obviously, the java:awt port for FreeBSD based on lesstif-0.81 should be
modified, but I would appreciate if anyone could provide me any pointers
so I could have the faintest idea as to what the hell is going on here.
I really don't want to have to live-and-breathe Motif, but I would like a
glimmer of understanding as to the issues here.

Specifically, the function in java:awt is `awt_util_getIMStatusHeight', which
has a bunch of side effects:

    XtSetArg(args[0], XtNbaseHeight, &base_height);
    XtGetValues(vw, args, 1);
    if (base_height < 0)
	base_height = 0;
    XtSetArg(args[0], XtNbaseHeight, base_height);
    XtSetValues(vw, args, 1);

and returns `height'.

Blech! Motif is already seeping into my brain.  Help!



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801062344.RAA09428>