Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > nonfree-release-src > by-pkgid > 86317ec462188f155161894fac7b1c53 > files > 25

xv-3.10a-15.mga5.nonfree.src.rpm

This patch fixes problems with picking a good visual on certain 24-bit Sun
systems.


*** ../xv-3.10a/xv.c	Thu Jan 19 13:08:43 1995
--- xv.c	Mon Mar 06 17:59:59 1995
***************
*** 326,363 ****
     */
  
  
- 
    /* if we *haven't* had a non-default visual specified,
       see if we have a TrueColor or DirectColor visual of 24 or 32 bits, 
       and if so, use that as the default visual (prefer TrueColor) */
  
    if (!visualstr && !useroot) {
      XVisualInfo *vinfo, rvinfo;
      int          best,  numvis;
      long         flags;
  
!     best = -1;
      rvinfo.class  = TrueColor;
      rvinfo.screen = theScreen;
!     flags = VisualClassMask | VisualScreenMask;
      
      vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
!     if (vinfo) {     /* look for a TrueColor, 24-bit or more (pref 24) */
!       for (i=0, best = -1; i<numvis; i++) {
  	if (vinfo[i].depth == 24) best = i;
- 	else if (vinfo[i].depth>24 && best<0) best = i;
        }
      }
! 
      if (best == -1) {   /* look for a DirectColor, 24-bit or more (pref 24) */
        rvinfo.class = DirectColor;
        if (vinfo) XFree((char *) vinfo);
        vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
        if (vinfo) {
! 	for (i=0, best = -1; i<numvis; i++) {
  	  if (vinfo[i].depth == 24) best = i;
- 	  else if (vinfo[i].depth>24 && best<0) best = i;
  	}
        }
      }
      
--- 326,377 ----
     */
  
  
    /* if we *haven't* had a non-default visual specified,
       see if we have a TrueColor or DirectColor visual of 24 or 32 bits, 
       and if so, use that as the default visual (prefer TrueColor) */
  
    if (!visualstr && !useroot) {
+     VisualID     defvid;
      XVisualInfo *vinfo, rvinfo;
      int          best,  numvis;
      long         flags;
  
!     best          = -1;
      rvinfo.class  = TrueColor;
      rvinfo.screen = theScreen;
!     flags         = VisualClassMask | VisualScreenMask;
!     defvid        = XVisualIDFromVisual(DefaultVisual(theDisp, 
! 						      DefaultScreen(theDisp)));
      
      vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
!     if (vinfo) {
!       /* Check list, use 'default', first 24-bit, or first >24-bit */
!       for (i=0; i<numvis && best==-1; i++) {   /* default? */
! 	if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
!       }
!       for (i=0; i<numvis && best==-1; i++) {   /* 24-bit ? */
  	if (vinfo[i].depth == 24) best = i;
        }
+       for (i=0; i<numvis && best==-1; i++) {   /* >24-bit ? */
+ 	if (vinfo[i].depth >= 24) best = i;
+       }
      }
!     
      if (best == -1) {   /* look for a DirectColor, 24-bit or more (pref 24) */
        rvinfo.class = DirectColor;
        if (vinfo) XFree((char *) vinfo);
+       
        vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
        if (vinfo) {
! 	for (i=0; i<numvis && best==-1; i++) {   /* default? */
! 	  if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
! 	}
! 	for (i=0; i<numvis && best==-1; i++) {   /* 24-bit ? */
  	  if (vinfo[i].depth == 24) best = i;
  	}
+ 	for (i=0; i<numvis && best==-1; i++) {   /* >24-bit ? */
+ 	  if (vinfo[i].depth >= 24) best = i;
+ 	}
        }
      }
      
***************
*** 364,371 ****
      if (best>=0 && best<numvis) useOtherVisual(vinfo, best);
      if (vinfo) XFree((char *) vinfo);
    }
! 
! 
  			   
    if (visualstr && useroot) {
      fprintf(stderr, "%s: %sUsing default visual.\n",
--- 378,385 ----
      if (best>=0 && best<numvis) useOtherVisual(vinfo, best);
      if (vinfo) XFree((char *) vinfo);
    }
!   
!   
  			   
    if (visualstr && useroot) {
      fprintf(stderr, "%s: %sUsing default visual.\n",