Rob Lahaye pointed me to these addresses.
The CVS version of LessTif seems to have problems with the CVS
version of OpenDX, in our new implementation of _XmMapKeyEvents().
I wrote to you about implementing that in LessTif earlier.
Please read the messages attached, I am not completely sure
whether the way in which OpenDX calls _XmMapKeyEvents() is correct.
I've indicated a fix as well.
After that fix, there is still a problem, Rob indicates that this
may be LessTif related. The argument is that OpenDX-CVS works with
LessTif 0.93.18 but not with LessTif-CVS. (I'm inclined to
believe that.)
Do you have more insights ?
Also is my idea about the _XmMapKeyEvents() call right - that your
call is mistaken ?
Thanks,
Danny
--
Danny Backx ([EMAIL PROTECTED] [EMAIL PROTECTED])
Home page : http://users.skynet.be/danny.backx
Projects: LessTif (http://www.lesstif.org)
Oleo (http://www.gnu.org/software/oleo/oleo.html)
--- Begin Message ---
I have the CVS version of OpenDX working now, and I can reproduce.
However, is the OpenDX code correct ?
It is passing this to _XmMapKeyEvents :
KeySym keysym = 0;
KeySym *keysym_list;
count = _XmMapKeyEvents(accelerator, &type_list, &keysym_list, ...
Shouldn't keysym_list either point to allocated memory or be initialised to 0 ?
I'd expect something like this :
KeySym *keysym_list = XtCalloc(10, sizeof(KeySym));
or
KeySym *keysym_list = NULL;
(In the latter case I could detect inside LessTif and allocate memory
for this, but I'm not sure whether I should do this as I have no description
of what _XmMapKeyEvents() should do in this case. Currently I'm not
detecting it so the second suggestion would crash with LessTif.)
I made the first of my suggested changes above, and now I get a crash
further along. I stopped gdb around the previously guilty lines, and
printed some stuff :
(gdb) break 2040
Breakpoint 2 at 0x40170328: file MapEvent.c, line 2040.
(gdb) c
Continuing.
Breakpoint 2, _XmMapKeyEvents (str=0x842ce10 "Ctrl<Key>S", eventType=0xbffff114,
keysym=0xbffff110, modifiers=0xbffff10c) at MapEvent.c:2040
2040 (*keysym)[i] = e->event.eventCode;
(gdb) p i
$1 = 0
(gdb) s
2041 (*modifiers)[i] = e->event.modifiers;
(gdb) s
2042 i++;
(gdb) p *keysym
$2 = (KeySym *) 0x8473940
(gdb) p *keysym[0]
$3 = 83
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x080b2c86 in EditorWindow::doSelectedNodesDefaultAction ()
(gdb) q
This may still be a LessTif problem, but I cannot tell without
further investigation. Rob, do you have insights ?
Danny
Alexander Mai wrote:
>
> On Thu, 11 Apr 2002 21:05:08 +0200, Danny Backx wrote:
>
> >Hmm, we're probably using the same version of LessTif but not OpenDX.
> >I am using 4.1.3. I don't see a call of _XmMapKeyEvents anywhere.
> >Are you using the CVS version of OpenDX ?
> >
> > Danny
>
> I can jump in here - I checked out OpenDX/CVS meanwhile! :)
>
> configure checks for _XmMapKeyEvents()!
> The code itself seems to be:
>
> /*
> ** The Public Interface to the above.
> */
>
> #ifndef _NO_PROTO
> Boolean TransferAccelerator(Widget shell, Widget source, String action)
> #else /* _NO_PROTO */
> Boolean TransferAccelerator(shell, source, action)
> Widget shell ;
> Widget source ;
> String action ;
> #endif /* _NO_PROTO */
> {
> /*
> ** Installs an accelerator on shell to fire button source
> ** using the same accelerator
> */
>
> char *accelerator = (char *) 0 ;
> Boolean retcode = False ;
> KeySym keysym=0 ;
> Modifiers modifiers=0 ;
>
> /*
> ** Fetch the accelerator for the given source of the event.
> */
>
> XtVaGetValues(source, XmNaccelerator, &accelerator, NULL) ;
>
> if (accelerator != (char *) 0) {
> /*
> ** Convert the accelerator to KeySym/Modifier combination.
> */
>
> #if defined(HAVE_XMMAPKEYEVENTS)
> int count ;
> int *type_list;
> KeySym *keysym_list ;
> Modifiers *modifiers_list ;
>
> count = _XmMapKeyEvents(accelerator, &type_list, &keysym_list,
> &modifiers_list) ;
>
> if (count > 0) {
> keysym = *keysym_list ;
> modifiers = *modifiers_list ;
> retcode = True ;
> }
> #else /* (HAVE_XMMAPKEYEVENTS) */
> int type ;
> retcode = _XmMapKeyEvent(accelerator, &type, (unsigned *)
> &keysym,
> &modifiers) ;
> #endif /* (HAVE_XMMAPKEYEVENTS) */
>
> /*
> ** Install the action.
> */
>
> if (retcode == True) {
> retcode = InstallAccelerator(shell, keysym, modifiers,
> source, action) ;
> }
>
> XtFree(accelerator) ;
> }
>
> return retcode ;
> }
>
> ---
> Alexander Mai
> [EMAIL PROTECTED]
>
> _______________________________________________
> Lesstif mailing list
> [EMAIL PROTECTED]
> https://terror.hungry.com/mailman/listinfo/lesstif
--
Danny Backx ([EMAIL PROTECTED] [EMAIL PROTECTED])
Home page : http://users.skynet.be/danny.backx
Projects: LessTif (http://www.lesstif.org)
Oleo (http://www.gnu.org/software/oleo/oleo.html)
_______________________________________________
Lesstif mailing list
[EMAIL PROTECTED]
https://terror.hungry.com/mailman/listinfo/lesstif
--- End Message ---
--- Begin Message ---
Danny Backx wrote:
>
> This may still be a LessTif problem, but I cannot tell without
> further investigation. Rob, do you have insights ?
Ay, no, I'm sorry.
I'm not at all the person that can help out here.
I have no idea what all this is about :(.
However, present OpenDX-CVS runs prefectly well with lesstif-0.93.18.
Does that give you a clue?
You also could discuss this problem with the OpenDX people, although
they are not that 'responsive' as this lesstif list.
Use the following two addresses:
[EMAIL PROTECTED]
[EMAIL PROTECTED]
If I can be of help with any further debugging, then please let me know.
Regards,
Rob.
--- End Message ---