*** server/ddx/sun/sunFbs.c	Mon Mar 22 19:25:35 1993
--- ../../fix/server/ddx/sun/sunFbs.c	Mon May 24 10:12:39 1993
***************
*** 220,226 ****
      return TRUE;
  }
  
! Bool sunInitCommon (scrn, pScrn, offset, init1, init2, cr_cm, save)
      int		scrn;
      ScreenPtr	pScrn;
      off_t	offset;
--- 220,226 ----
      return TRUE;
  }
  
! Bool sunInitCommon (scrn, pScrn, offset, init1, init2, cr_cm, save, fb_off)
      int		scrn;
      ScreenPtr	pScrn;
      off_t	offset;
***************
*** 229,239 ****
      Bool	(*cr_cm)();
      void	(*save)();
  {
!     pointer	fb;
  
      if (!sunScreenAllocate (pScrn))
  	return FALSE;
!     if (!sunFbs[scrn].fb) {
  	if ((fb = sunMemoryMap ((size_t) sunFbs[scrn].info.fb_size, 
  			     offset, 
  			     sunFbs[scrn].fd)) == NULL)
--- 229,239 ----
      Bool	(*cr_cm)();
      void	(*save)();
  {
!     pointer	fb = sunFbs[scrn].fb;
  
      if (!sunScreenAllocate (pScrn))
  	return FALSE;
!     if (!fb) {
  	if ((fb = sunMemoryMap ((size_t) sunFbs[scrn].info.fb_size, 
  			     offset, 
  			     sunFbs[scrn].fd)) == NULL)
***************
*** 241,247 ****
  	sunFbs[scrn].fb = fb;
      }
      /* mfbScreenInit() or cfbScreenInit() */
!     if (!(*init1)(pScrn, fb,
  	    sunFbs[scrn].info.fb_width,
  	    sunFbs[scrn].info.fb_height,
  	    monitorResolution, monitorResolution,
--- 241,247 ----
  	sunFbs[scrn].fb = fb;
      }
      /* mfbScreenInit() or cfbScreenInit() */
!     if (!(*init1)(pScrn, fb + fb_off,
  	    sunFbs[scrn].info.fb_width,
  	    sunFbs[scrn].info.fb_height,
  	    monitorResolution, monitorResolution,
*** server/ddx/sun/sunCfb.c	Mon Mar 22 19:25:35 1993
--- ../../fix/server/ddx/sun/sunCfb.c	Mon Jun  7 14:20:04 1993
***************
*** 255,261 ****
      sunFbs[screen].EnterLeave = NoopDDA;
      return sunInitCommon (screen, pScreen, CG3_MMAP_OFFSET,
  	cfbScreenInit, CGScreenInit,
! 	sunSaveScreen, cfbCreateDefColormap);
  }
  
  #ifndef i386 /* { */
--- 255,261 ----
      sunFbs[screen].EnterLeave = NoopDDA;
      return sunInitCommon (screen, pScreen, CG3_MMAP_OFFSET,
  	cfbScreenInit, CGScreenInit,
! 	sunSaveScreen, cfbCreateDefColormap, 0);
  }
  
  #ifndef i386 /* { */
***************
*** 292,297 ****
--- 292,305 ----
      regp->update_cmap = 1;
  }
  
+ static void CG2ScreenInit (pScreen)
+     ScreenPtr   pScreen;
+ {
+     SetupScreen (pScreen);
+     CGScreenInit (pScreen);
+     pPrivate->UpdateColormap = CG2UpdateColormap;
+ }
+ 
  static Bool
  CG2SaveScreen (pScreen, on)
      ScreenPtr	  pScreen;
***************
*** 330,343 ****
      if (mono) {
  	ret = sunInitCommon (screen, pScreen, 0,
  			mfbScreenInit, 0,
! 			mfbCreateDefColormap, CG2SaveScreen);
  	((CG2Ptr) sunFbs[screen].fb)->regs.ppmask.reg = 1;
  	pScreen->whitePixel = 0;
  	pScreen->blackPixel = 1;
      } else {
  	ret = sunInitCommon (screen, pScreen, 0,
! 			cfbScreenInit, CGScreenInit,
! 			cfbCreateDefColormap, CG2SaveScreen);
  	((CG2Ptr) sunFbs[screen].fb)->regs.ppmask.reg = 0xFF;
  	pPrivate = GetScreenPrivate (pScreen);
  	pPrivate->UpdateColormap = CG2UpdateColormap;
--- 338,352 ----
      if (mono) {
  	ret = sunInitCommon (screen, pScreen, 0,
  			mfbScreenInit, 0,
! 			mfbCreateDefColormap, CG2SaveScreen, 0);
  	((CG2Ptr) sunFbs[screen].fb)->regs.ppmask.reg = 1;
  	pScreen->whitePixel = 0;
  	pScreen->blackPixel = 1;
      } else {
  	ret = sunInitCommon (screen, pScreen, 0,
! 			cfbScreenInit, CG2ScreenInit,
! 			cfbCreateDefColormap, CG2SaveScreen,
! 			(int) &((struct cg2memfb *) 0)->pixplane);
  	((CG2Ptr) sunFbs[screen].fb)->regs.ppmask.reg = 0xFF;
  	pPrivate = GetScreenPrivate (pScreen);
  	pPrivate->UpdateColormap = CG2UpdateColormap;
***************
*** 383,389 ****
      sunSupportsDepth8 = TRUE;
      return sunInitCommon (screen, pScreen, 0,
  	cfbScreenInit, CGScreenInit,
! 	cfbCreateDefColormap, sunSaveScreen);
  }
  
  #ifdef FBTYPE_SUNFAST_COLOR /* { */
--- 392,398 ----
      sunSupportsDepth8 = TRUE;
      return sunInitCommon (screen, pScreen, 0,
  	cfbScreenInit, CGScreenInit,
! 	cfbCreateDefColormap, sunSaveScreen, (int) ((CG4Ptr) 0)->cpixel);
  }
  
  #ifdef FBTYPE_SUNFAST_COLOR /* { */
*** server/ddx/sun/sunMfb.c	Mon Mar 22 19:25:36 1993
--- ../../fix/server/ddx/sun/sunMfb.c	Mon May 24 10:18:45 1993
***************
*** 94,104 ****
  {
      Bool	ret;
      sunFbs[screen].EnterLeave = NoopDDA;
-     ret = sunInitCommon (screen, pScreen, 0,
- 	mfbScreenInit, NULL,
- 	sunSaveScreen, mfbCreateDefColormap);
      pScreen->whitePixel = 0;
      pScreen->blackPixel = 1;
      return ret;
  }
  
--- 94,104 ----
  {
      Bool	ret;
      sunFbs[screen].EnterLeave = NoopDDA;
      pScreen->whitePixel = 0;
      pScreen->blackPixel = 1;
+     ret = sunInitCommon (screen, pScreen, 0,
+ 	mfbScreenInit, NULL,
+ 	sunSaveScreen, mfbCreateDefColormap, 0);
      return ret;
  }
  
