xserver: Branch 'master' - 2 commits

Michel Daenzer daenzer at kemper.freedesktop.org
Fri Jan 19 19:30:31 EET 2007


 hw/xfree86/fbdevhw/fbdevhw.c |   66 ++++++++++++++++++++++++-------------------
 1 files changed, 38 insertions(+), 28 deletions(-)

New commits:
diff-tree 14d6a9b327381a6bb2dac59c62728e5fd0f0bcfb (from 27a01e100bff21ac0b70c6d72071d7226fc91264)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Fri Jan 19 18:30:21 2007 +0100

    fbdevhw: Only deal with RGB weight if default visual is True- or DirectColor.

diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index 8b163be..a573b8f 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -187,9 +187,16 @@ xfree2fbdev_fblayout(ScrnInfoPtr pScrn, 
 			      pScrn->virtualX;
 	var->yres_virtual   = pScrn->virtualY;
 	var->bits_per_pixel = pScrn->bitsPerPixel;
-	var->red.length     = pScrn->weight.red;
-	var->green.length   = pScrn->weight.green;
-	var->blue.length    = pScrn->weight.blue;
+	if (pScrn->defaultVisual == TrueColor ||
+	    pScrn->defaultVisual == DirectColor) {
+	    var->red.length     = pScrn->weight.red;
+	    var->green.length   = pScrn->weight.green;
+	    var->blue.length    = pScrn->weight.blue;
+	} else {
+	    var->red.length     = 8;
+	    var->green.length   = 8;
+	    var->blue.length    = 8;
+	}
 }
 
 static void
@@ -746,15 +753,18 @@ fbdevHWModeInit(ScrnInfoPtr pScrn, Displ
 		return FALSE;
 	}
 
-	/* XXX: This is a hack, but it should be a NOP for all the setups that
-	 * worked before and actually seems to fix some others...
-	 */
-	pScrn->offset.red   = fPtr->var.red.offset;
-	pScrn->offset.green = fPtr->var.green.offset;
-	pScrn->offset.blue  = fPtr->var.blue.offset;
-	pScrn->mask.red     = ((1 << fPtr->var.red.length) - 1) << fPtr->var.red.offset;
-	pScrn->mask.green   = ((1 << fPtr->var.green.length) - 1) << fPtr->var.green.offset;
-	pScrn->mask.blue    = ((1 << fPtr->var.blue.length) - 1) << fPtr->var.blue.offset;
+	if (pScrn->defaultVisual == TrueColor ||
+	    pScrn->defaultVisual == DirectColor) {
+	    /* XXX: This is a hack, but it should be a NOP for all the setups that
+	     * worked before and actually seems to fix some others...
+	     */
+	    pScrn->offset.red   = fPtr->var.red.offset;
+	    pScrn->offset.green = fPtr->var.green.offset;
+	    pScrn->offset.blue  = fPtr->var.blue.offset;
+	    pScrn->mask.red     = ((1 << fPtr->var.red.length) - 1) << fPtr->var.red.offset;
+	    pScrn->mask.green   = ((1 << fPtr->var.green.length) - 1) << fPtr->var.green.offset;
+	    pScrn->mask.blue    = ((1 << fPtr->var.blue.length) - 1) << fPtr->var.blue.offset;
+	}
 
 	return TRUE;
 }
diff-tree 27a01e100bff21ac0b70c6d72071d7226fc91264 (from 65f4690ecb4576f60396fcccff8e5bd5d4b6645f)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Fri Jan 19 18:28:05 2007 +0100

    fbdevhw: Consider mode set equal to mode requested if virtual width is larger.

diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index 8f78b85..8b163be 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -229,23 +229,23 @@ xfree2fbdev_timing(DisplayModePtr mode, 
 }
 
 static Bool
-fbdev_modes_equal(struct fb_var_screeninfo *one, struct fb_var_screeninfo *two)
+fbdev_modes_equal(struct fb_var_screeninfo *set, struct fb_var_screeninfo *req)
 {
-	return (one->xres_virtual == two->xres_virtual &&
-		one->yres_virtual == two->yres_virtual &&
-		one->bits_per_pixel == two->bits_per_pixel &&
-		one->red.length == two->red.length &&
-		one->green.length == two->green.length &&
-		one->blue.length == two->blue.length &&
-		one->xres == two->xres && one->yres == two->yres &&
-		one->pixclock == two->pixclock &&
-		one->right_margin == two->right_margin &&
-		one->hsync_len == two->hsync_len &&
-		one->left_margin == two->left_margin &&
-		one->lower_margin == two->lower_margin &&
-		one->vsync_len == two->vsync_len &&
-		one->upper_margin == two->upper_margin &&
-		one->sync == two->sync && one->vmode == two->vmode);
+	return (set->xres_virtual >= req->xres_virtual &&
+		set->yres_virtual == req->yres_virtual &&
+		set->bits_per_pixel == req->bits_per_pixel &&
+		set->red.length == req->red.length &&
+		set->green.length == req->green.length &&
+		set->blue.length == req->blue.length &&
+		set->xres == req->xres && set->yres == req->yres &&
+		set->pixclock == req->pixclock &&
+		set->right_margin == req->right_margin &&
+		set->hsync_len == req->hsync_len &&
+		set->left_margin == req->left_margin &&
+		set->lower_margin == req->lower_margin &&
+		set->vsync_len == req->vsync_len &&
+		set->upper_margin == req->upper_margin &&
+		set->sync == req->sync && set->vmode == req->vmode);
 }
 
 static void



More information about the xorg-commit mailing list