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.");

Reply via email to