lanni@edsews.eds.com (mike lanni) (05/22/91)
xperts, Has anyone run XView applications (based on X11R4) and displayed them on Dec (running X11R3)? Orignally when doing this I received some font errors which I resolved and then I received the following error msg: XView warning: xv_rop: can't handle drawables of different depth XView warning: xv_rop: xv_rop_internal failed X Error: BadAtom Request Major code 17 () Request Minor code 0 ResourceID 0x7f0000 Error Serial #383 Current Serial #383 The application actually displays, but once an event occurs, the above message is produced. Anyone have any suggestions? Should this be feasible? Thanks in advance, ---------------------------------------------------------------------- Mike Lanni email: lanni@eds.com Electronic Data Systems voice: (313) 265-7019 750 Tower Drive P.O. Box 7019 Troy, MI 48098-7019
usd@ecmwf.co.uk (Ditlef Martens) (05/23/91)
We at ECMWF has had the same problem. It seems that the DEC server does not know about the extended event types defined by the ICCCM. The event gets messed up, but the funny thing is that the result depends on the window manager you are running. Fortunately some people are kind enough to give you the sources ... and there is a way around the problem. We run this patch for DECstation 5000 / ULTRIX 4.0 To be able to run SUN XView programs on a SUN, displaying the window on a DECstation you have to do the following. 1. Get the source of xview. 2. Patch the file : xview2/lib/libxvin/win/win_input.c The patches are included. 3. Do a make world. 4. When you want to run an xview application you change the LD_LIBRARY_PATH We use: setenv LD_LIBRARY_PATH "/home/unix/xview2/lib/libxview:$LD_LIBRARY_PATH" Note that you also need some OpenLook fonts. The patch: A quick and dirty patch to win_input.c is enclosed. Two parts of the event processing is patched. a) Drag and drop events. The positions gets garbled up, I have not found a way to patch the positions. These events are ignored. b) Focus and delete-window. Mapped to correct values for different window managers. If the env. variable DEC_XVIEW_DEBUG is defined the events are printed. If the "return (result);" statement in the patch for lines: 1561,1586 is removed, XView programs on SUN servers will run without side-effects. *** win_input.c Thu May 23 11:09:07 1991 --- win_input.c.ORIG Fri Aug 10 04:49:26 1990 *************** *** 1561,1586 **** { int final_x, final_y; - - - if (1) { - static int print_debug; - if (print_debug == 0) { - print_debug = getenv("DEC_XVIEW_DEBUG"); - if (print_debug == 0) print_debug = 1; - } - if (print_debug != 1) { - fprintf(stderr, "Xview*win/win_input.c (SERVER_DO_DRAG*) ok for DEC ??\n"); - fprintf(stderr, " data.l[0]=%lx\n", clientmessage->data.l[0]); - fprintf(stderr, " data.l[1]=%lx\n", clientmessage->data.l[1]); - fprintf(stderr, " data.l[2]=%lx\n", clientmessage->data.l[2]); - fprintf(stderr, " data.l[3]=%lx\n", clientmessage->data.l[3]); - } - return (result); - } - - - /* * the xy is in the sender's coordinate, need to translate it */ --- 1561,1566 ---- *************** *** 1612,1658 **** } break; case SERVER_WM_PROTOCOLS_TYPE:{ ! Server_atom_type atom_type2 ; ! ! /* usd USD 20-feb-91 - original file in *ORIG */ ! if (1) { ! static Atom wm_take_focus, wm_delete_window; ! static int print_debug; ! if (wm_take_focus == 0) { ! wm_take_focus = XInternAtom(xv_display(info), "WM_TAKE_FOCUS", False); ! wm_delete_window = XInternAtom(xv_display(info), "WM_DELETE_WINDOW", False); ! print_debug = getenv("DEC_XVIEW_DEBUG"); ! } ! ! if (print_debug) { ! fprintf(stderr, "~Xview/win/win_input.c (WM_PROTOCOLS) fixed for DEC\n"); ! fprintf(stderr, " data.l[0]=%lx\n", clientmessage->data.l[0]); ! fprintf(stderr, " data.l[1]=%lx\n", clientmessage->data.l[1]); ! } ! ! if (clientmessage->data.l[0] == (long)wm_take_focus ! || clientmessage->data.l[0] == (long)0x2880 /* SUN OLWM on DEC */ ! || clientmessage->data.l[0] == (long)0x850800 /* MOTIF mwm on DEC */ ! ) { ! clientmessage->data.l[0] = (long)wm_take_focus; ! } ! else ! if (clientmessage->data.l[0] == (long)wm_delete_window ! || clientmessage->data.l[0] == (long)0x243b /* SUN OLWM on DEC */ ! || clientmessage->data.l[0] == (long)0x7c0000 /* MOTIF mwm on DEC */ ! ) { ! clientmessage->data.l[0] = (long)wm_delete_window; ! } ! else ! return(result); ! ! ! if (print_debug) ! fprintf(stderr, " NEW data.l[0]=%lx\n", clientmessage->data.l[0]); ! } ! ! ! atom_type2 = server_get_atom_type(server_public, clientmessage->data.l[0]); switch (atom_type2) { case SERVER_WM_SAVE_YOURSELF_TYPE:{ char str[200]; --- 1592,1599 ---- } break; case SERVER_WM_PROTOCOLS_TYPE:{ ! Server_atom_type atom_type2 = ! server_get_atom_type(server_public, clientmessage->data.l[0]); switch (atom_type2) { case SERVER_WM_SAVE_YOURSELF_TYPE:{ char str[200]; ==================================================== -- Ditlef Martens User Support ECMWF (European Centre for Medium Range Weather Forecasts) Shinfield Park, Reading, Berkshire RG2 9AX, UK EMail: Ditlef.Martens@ecmwf.co.uk Phone: +44 734 499 000 Fax: .. 869 450