OpenGL driver in x11drv with old ABI

Michael Karcher michael.karcher at dpk.berlin.fido.de
Sun Apr 7 17:43:43 CDT 2002


Hello Wine Maintainers,
you recently changed the DC_FUNCTIONS to take PHYSDEVs intead of DCs as
first parameter, but you forgot to reflect these changes in
graphics/x11drv/opengl.c. This made OpenGL crash on GetPixelFormat. The
patch is included.

Michael Karcher

Index: graphics/x11drv/opengl.c
===================================================================
RCS file: /home/wine/wine/graphics/x11drv/opengl.c,v
retrieving revision 1.5
diff -u -r1.5 opengl.c
--- graphics/x11drv/opengl.c	9 Mar 2002 23:50:38 -0000	1.5
+++ graphics/x11drv/opengl.c	7 Apr 2002 22:34:54 -0000
@@ -84,20 +84,19 @@
 
      Equivalent of glXChooseVisual
 */
-int X11DRV_ChoosePixelFormat(DC *dc,
+int X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev,
 			     const PIXELFORMATDESCRIPTOR *ppfd) {
 #define TEST_AND_ADD1(t,a) if (t) att_list[att_pos++] = a
 #define TEST_AND_ADD2(t,a,b) if (t) { att_list[att_pos++] = a; att_list[att_pos++] = b; }
 #define NULL_TEST_AND_ADD2(tv,a,b) att_list[att_pos++] = a; att_list[att_pos++] = ((tv) == 0 ? 0 : b)
 #define ADD2(a,b) att_list[att_pos++] = a; att_list[att_pos++] = b
   
-  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
   int att_list[64];
   int att_pos = 0;
   XVisualInfo *vis;
   
   if (TRACE_ON(opengl)) {
-    TRACE("(%p,%p)\n", dc, ppfd);
+    TRACE("(%p,%p)\n", physDev, ppfd);
     
     dump_PIXELFORMATDESCRIPTOR((PIXELFORMATDESCRIPTOR *) ppfd);
   }
@@ -162,16 +161,15 @@
 
      Get the pixel-format descriptor associated to the given id
 */
-int X11DRV_DescribePixelFormat(DC *dc,
+int X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
 			       int iPixelFormat,
 			       UINT nBytes,
 			       PIXELFORMATDESCRIPTOR *ppfd) {
-  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
   XVisualInfo *vis;
   int value;
   int rb,gb,bb,ab;
   
-  TRACE("(%p,%d,%d,%p)\n", dc, iPixelFormat, nBytes, ppfd);
+  TRACE("(%p,%d,%d,%p)\n", physDev, iPixelFormat, nBytes, ppfd);
   
   if (nBytes < sizeof(PIXELFORMATDESCRIPTOR)) {
     ERR("Wrong structure size !\n");
@@ -275,10 +273,8 @@
 
      Get the pixel-format id used by this DC
 */
-int X11DRV_GetPixelFormat(DC *dc) {
-  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
-  
-  TRACE("(%p): returns %d\n", dc, physDev->current_pf);
+int X11DRV_GetPixelFormat(X11DRV_PDEVICE *physDev) {
+  TRACE("(%p): returns %d\n", physDev, physDev->current_pf);
 
   return physDev->current_pf;
 }
@@ -287,12 +283,10 @@
 
      Set the pixel-format id used by this DC
 */
-BOOL X11DRV_SetPixelFormat(DC *dc,
+BOOL X11DRV_SetPixelFormat(X11DRV_PDEVICE *physDev,
 			   int iPixelFormat,
 			   const PIXELFORMATDESCRIPTOR *ppfd) {
-  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
-  
-  TRACE("(%p,%d,%p)\n", dc, iPixelFormat, ppfd);
+  TRACE("(%p,%d,%p)\n", physDev, iPixelFormat, ppfd);
 
   physDev->current_pf = iPixelFormat;
   
@@ -303,10 +297,8 @@
 
      Swap the buffers of this DC
 */
-BOOL X11DRV_SwapBuffers(DC *dc) {
-  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
-  
-  TRACE("(%p)\n", dc);
+BOOL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev) {
+  TRACE("(%p)\n", physDev);
 
   ENTER_GL();
   glXSwapBuffers(gdi_display, physDev->drawable);
Index: include/x11drv.h
===================================================================
RCS file: /home/wine/wine/include/x11drv.h,v
retrieving revision 1.100
diff -u -r1.100 x11drv.h
--- include/x11drv.h	3 Apr 2002 21:18:50 -0000	1.100
+++ include/x11drv.h	7 Apr 2002 22:34:55 -0000
@@ -176,11 +176,13 @@
 extern BOOL X11DRV_SetDeviceGammaRamp( X11DRV_PDEVICE *physDev, LPVOID ramp );
 
 /* OpenGL / X11 driver functions */
-extern int X11DRV_ChoosePixelFormat(DC *dc, const PIXELFORMATDESCRIPTOR *pppfd) ;
-extern int X11DRV_DescribePixelFormat(DC *dc, int iPixelFormat, UINT nBytes, PIXELFORMATDESCRIPTOR *ppfd) ;
-extern int X11DRV_GetPixelFormat(DC *dc) ;
-extern BOOL X11DRV_SetPixelFormat(DC *dc, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) ;
-extern BOOL X11DRV_SwapBuffers(DC *dc) ;
+extern int X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev,
+		                      const PIXELFORMATDESCRIPTOR *pppfd);
+extern int X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev, 
+		                        int iPixelFormat, UINT nBytes,
+					PIXELFORMATDESCRIPTOR *ppfd);
+extern int X11DRV_GetPixelFormat(X11DRV_PDEVICE *physDev);
+extern BOOL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev);
 
 /* X11 driver internal functions */
 



More information about the wine-patches mailing list