[comp.windows.x] XView Applications on a DEC

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