xserver: Branch 'xorg-server-1.4-apple'

George Peter Staplin gstaplin at kemper.freedesktop.org
Wed Nov 12 16:35:09 PST 2008


 hw/xquartz/GL/visualConfigs.c |   30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

New commits:
commit ed181382ddeb77019577d39b9c06b1cd839e18e4
Author: George Staplin <gstaplin at apple.com>
Date:   Wed Nov 12 17:17:25 2008 -0700

    XQuartz: GL: Handle the alpha differently when the alpha is equal to GLCAPS_COLOR_BUF_INVALID_VALUE.
    
    This prevents visuals with odd sizes.  The machine I use didn't have
    this problem, but it shows up on some others.

diff --git a/hw/xquartz/GL/visualConfigs.c b/hw/xquartz/GL/visualConfigs.c
index 2f5c508..81f88fb 100644
--- a/hw/xquartz/GL/visualConfigs.c
+++ b/hw/xquartz/GL/visualConfigs.c
@@ -149,12 +149,30 @@ void setVisualConfigs(void) {
 					visualConfigs[i].redSize = conf->color_buffers[color].r;
 					visualConfigs[i].greenSize = conf->color_buffers[color].g;
 					visualConfigs[i].blueSize = conf->color_buffers[color].b;
-					visualConfigs[i].alphaSize = conf->color_buffers[color].a;
-					
-					visualConfigs[i].bufferSize = conf->color_buffers[color].r +
-					    conf->color_buffers[color].g + conf->color_buffers[color].b +
-					    conf->color_buffers[color].a;
-					
+
+					if(GLCAPS_COLOR_BUF_INVALID_VALUE == conf->color_buffers[color].a) {
+					    /* This visual has no alpha. */
+					    visualConfigs[i].alphaSize = 0;
+					} else {
+					    visualConfigs[i].alphaSize = conf->color_buffers[color].a;
+					}
+	
+					/* 
+					 * If the .a/alpha value is unset, then don't add it to the
+					 * bufferSize specification.  The INVALID_VALUE indicates that it
+					 * was unset.
+					 * 
+					 * This prevents odd bufferSizes, such as 14.
+					 */
+					if(GLCAPS_COLOR_BUF_INVALID_VALUE == conf->color_buffers[color].a) {
+					    visualConfigs[i].bufferSize = conf->color_buffers[color].r +
+						conf->color_buffers[color].g + conf->color_buffers[color].b;
+					} else {
+					    visualConfigs[i].bufferSize = conf->color_buffers[color].r +
+						conf->color_buffers[color].g + conf->color_buffers[color].b +
+						conf->color_buffers[color].a;
+					}
+
 					/*
 					 * I'm uncertain about these masks.
 					 * I don't think we actually care what the values are in our


More information about the xorg-commit mailing list