Hi,
find a patch attached that fixes all remaining strict-aliasing problems
when compiling Mesa with gcc 4 (at least for me).
CU all
Matthias
--
Matthias Hopf <[EMAIL PROTECTED]>, SuSE labs, Zimmer 3.2.06, Tel. 74053-715
Index: src/glut/glx/glut_dstr.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/glut/glx/glut_dstr.c,v
retrieving revision 1.5
diff -u -p -r1.5 glut_dstr.c
--- src/glut/glx/glut_dstr.c 12 Feb 2003 23:56:23 -0000 1.5
+++ src/glut/glx/glut_dstr.c 8 Jul 2005 17:04:00 -0000
@@ -34,6 +34,12 @@ static int glxcap[NUM_GLXCAPS] =
GLX_LEVEL,
};
+#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig)
+typedef void *fbc_t;
+#else
+typedef GLXFBConfigSGIX fbc_t;
+#endif
+
#ifdef TEST
#if !defined(_WIN32)
@@ -41,7 +47,7 @@ char *__glutProgramName = "dstr";
Display *__glutDisplay;
int __glutScreen;
XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool *
treatAsSingle,
- Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc) =
NULL;
+ Criterion * requiredCriteria, int nRequired, int requiredMask, fbc_t *fbc) =
NULL;
char *__glutDisplayString = NULL;
#endif
static int verbose = 0;
@@ -626,7 +632,7 @@ loadVisuals(int *nitems_return)
static XVisualInfo *
findMatch(FrameBufferMode * fbmodes, int nfbmodes,
- Criterion * criteria, int ncriteria, void **fbc)
+ Criterion * criteria, int ncriteria, fbc_t *fbc)
{
FrameBufferMode *found;
int *bestScore, *thisScore;
@@ -1420,7 +1426,7 @@ static int nfbmodes = 0;
static XVisualInfo *
getVisualInfoFromString(char *string, Bool * treatAsSingle,
- Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc)
+ Criterion * requiredCriteria, int nRequired, int requiredMask, fbc_t *fbc)
{
Criterion *criteria;
XVisualInfo *visinfo;
@@ -1530,11 +1536,7 @@ main(int argc, char **argv)
char *str, buffer[1024];
int tty = isatty(fileno(stdin));
int overlay = 0, showconfig = 0;
-#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig)
- GLXFBConfigSGIX fbc;
-#else
- void *fbc;
-#endif
+ fbc_t *fbc;
#if !defined(_WIN32)
dpy = XOpenDisplay(NULL);
@@ -1563,10 +1565,10 @@ main(int argc, char **argv)
} else {
if (overlay) {
vinfo = getVisualInfoFromString(str, &treatAsSingle,
- requiredOverlayCriteria, numRequiredOverlayCriteria,
requiredOverlayCriteriaMask, (void**) &fbc);
+ requiredOverlayCriteria, numRequiredOverlayCriteria,
requiredOverlayCriteriaMask, &fbc);
} else {
vinfo = getVisualInfoFromString(str, &treatAsSingle,
- requiredWindowCriteria, numRequiredWindowCriteria,
requiredWindowCriteriaMask, (void**) &fbc);
+ requiredWindowCriteria, numRequiredWindowCriteria,
requiredWindowCriteriaMask, &fbc);
}
if (vinfo) {
printf("\n");
Index: src/glut/glx/glut_overlay.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/glut/glx/glut_overlay.c,v
retrieving revision 1.4
diff -u -p -r1.4 glut_overlay.c
--- src/glut/glx/glut_overlay.c 12 Feb 2003 23:56:23 -0000 1.4
+++ src/glut/glx/glut_overlay.c 8 Jul 2005 17:04:00 -0000
@@ -28,6 +28,12 @@
#include "glutint.h"
#include "layerutil.h"
+#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig)
+typedef void *fbc_t;
+#else
+typedef GLXFBConfigSGIX fbc_t;
+#endif
+
static Criterion requiredOverlayCriteria[] =
{
{LEVEL, EQ, 1}, /* This entry gets poked in
@@ -315,7 +321,7 @@ __glutFreeOverlay(GLUToverlay * overlay)
}
static XVisualInfo *
-determineOverlayVisual(int *treatAsSingle, Bool * visAlloced, void **fbc)
+determineOverlayVisual(int *treatAsSingle, Bool * visAlloced, fbc_t *fbc)
{
if (__glutDisplayString) {
XVisualInfo *vi;
@@ -362,11 +368,7 @@ glutEstablishOverlay(void)
GLUToverlay *overlay;
GLUTwindow *window;
XSetWindowAttributes wa;
-#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig)
- GLXFBConfigSGIX fbc;
-#else
- void *fbc;
-#endif
+ fbc_t *fbc;
/* Register a routine to free an overlay with glut_win.c;
this keeps glut_win.c from pulling in all of
@@ -389,7 +391,7 @@ glutEstablishOverlay(void)
__glutFatalError("out of memory.");
overlay->vis = determineOverlayVisual(&overlay->treatAsSingle,
- &overlay->visAlloced, (void **) &fbc);
+ &overlay->visAlloced, &fbc);
if (!overlay->vis) {
__glutFatalError("lacks overlay support.");
}
@@ -567,7 +569,7 @@ glutLayerGet(GLenum param)
{
XVisualInfo *vi;
Bool dummy, visAlloced;
- void *fbc;
+ fbc_t fbc;
vi = determineOverlayVisual(&dummy, &visAlloced, &fbc);
if (vi) {
Index: src/glut/glx/glut_win.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/glut/glx/glut_win.c,v
retrieving revision 1.6
diff -u -p -r1.6 glut_win.c
--- src/glut/glx/glut_win.c 12 Feb 2003 23:56:23 -0000 1.6
+++ src/glut/glx/glut_win.c 8 Jul 2005 17:04:00 -0000
@@ -28,9 +28,15 @@ GLUTstale *__glutStaleWindowList = NULL;
#endif
GLUTwindow *__glutMenuWindow = NULL;
+#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig)
+typedef void *fbc_t;
+#else
+typedef GLXFBConfigSGIX fbc_t;
+#endif
+
void (*__glutFreeOverlayFunc) (GLUToverlay *);
XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool *
treatAsSingle,
- Criterion * requiredCriteria, int nRequired, int requiredMask, void** fbc) =
NULL;
+ Criterion * requiredCriteria, int nRequired, int requiredMask, fbc_t *fbc) =
NULL;
static Criterion requiredWindowCriteria[] =
{
@@ -434,7 +440,7 @@ __glutDefaultReshape(int width, int heig
}
XVisualInfo *
-__glutDetermineWindowVisual(Bool * treatAsSingle, Bool * visAlloced, void
**fbc)
+__glutDetermineWindowVisual(Bool * treatAsSingle, Bool * visAlloced, fbc_t
*fbc)
{
if (__glutDisplayString) {
@@ -471,11 +477,7 @@ __glutCreateWindow(GLUTwindow * parent,
unsigned long attribMask;
int winnum;
int i;
-#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig)
- GLXFBConfigSGIX fbc;
-#else
- void *fbc;
-#endif
+ fbc_t fbc;
#if defined(_WIN32)
WNDCLASS wc;
@@ -501,7 +503,7 @@ __glutCreateWindow(GLUTwindow * parent,
#if !defined(_WIN32)
window->vis = __glutDetermineWindowVisual(&window->treatAsSingle,
- &window->visAlloced, (void**) &fbc);
+ &window->visAlloced, &fbc);
if (!window->vis) {
__glutFatalError(
"visual with necessary capabilities not found.");