[comp.windows.x] R4 Xsun, GX support

root@sun1.ruf.uni-freiburg.de (Martin Walter) (01/16/90)

Unfortunately R4 does not support the GX. Until Sun will adapt
Xsun to there hardware (hopefully!) I use following little 'quick
and dirty' patch. It accelerates only simple bitblock moves within the
screen, but is very useful in xterm-scrolling and opaque-moves.

Martin.

#########################################################################
*** server/Imakefile.orig       Sun Dec 17 01:09:30 1989
--- server/Imakefile    Tue Jan 16 13:30:27 1990
***************
*** 241,245 ****
  SUNOBJS = ddx/sun/sunInit.o $(FONTUTIL)
  SUNLIBS = $(SUN) $(CFB) $(DIX) $(BSD) $(SNF) $(MFB) $(MI) $(EXTENSIONS)
! SUNSYSLIBS = $(SYSLIBS) $(SUNWINDOWSLIBS)
  XsunDIRS = $(SUNDIRS)
  
--- 241,245 ----
  SUNOBJS = ddx/sun/sunInit.o $(FONTUTIL)
  SUNLIBS = $(SUN) $(CFB) $(DIX) $(BSD) $(SNF) $(MFB) $(MI) $(EXTENSIONS)
! SUNSYSLIBS = $(SYSLIBS) $(SUNWINDOWSLIBS) -lpixrect
  XsunDIRS = $(SUNDIRS)
  
*** server/ddx/cfb/cfbbitblt.c.orig     Fri Dec  8 02:35:42 1989
--- server/ddx/cfb/cfbbitblt.c  Tue Jan 16 13:01:03 1990
***************
*** 217,220 ****
--- 217,255 ----
      }
  
+ /*---------------------------------------------------------------------*/
+ 
+     if ((pSrc->type == DRAWABLE_WINDOW)
+      && (pDst->type == DRAWABLE_WINDOW)
+      && (alu == GXcopy)
+        )
+     {
+ #include <pixrect/pixrect_hs.h>
+ 
+         static Pixrect *screen = 0;
+         static planemaskSav = -999999;
+         if (!screen) screen = pr_open("/dev/fb");
+ 
+         if (planemask != planemaskSav) {
+             planemaskSav = planemask;
+             pr_putattributes(screen,&planemaskSav);
+         }
+ 
+         while(nbox--)
+         {
+             pr_rop( screen,
+                     pbox->x1, pbox->y1,
+                     pbox->x2 - pbox->x1, pbox->y2 - pbox->y1,
+                     PIX_SRC, screen,
+                     pptSrc->x, pptSrc->y);
+             pbox++;
+             pptSrc++;
+         }
+                                     /* Important: Wait for Completion! */
+         pr_get(screen, 0, 0);
+ 
+     } else
+ 
+ /*---------------------------------------------------------------------*/
+ 
      /* special case copy */
      if (alu == GXcopy && (planemask & PMSK) == PMSK)

#########################################################################
-- 
_____________________________________________________________________________
Internet: mawa@sun1.ruf.uni-freiburg.de     (132.230.1.1) | Rechenzentrum Uni
X.400: G=martin;S=walter;OU=ruf;P=uni-freiburg;A=dbp;C=de | Freiburg, Germany