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