winex11: Pass a generic PHYSDEV to all graphics entry points.
diff --git a/dlls/winex11.drv/bitblt.c b/dlls/winex11.drv/bitblt.c
index 6348165..9209227 100644
--- a/dlls/winex11.drv/bitblt.c
+++ b/dlls/winex11.drv/bitblt.c
@@ -1408,8 +1408,9 @@
 /***********************************************************************
  *           X11DRV_PatBlt
  */
-BOOL CDECL X11DRV_PatBlt( X11DRV_PDEVICE *physDev, INT x, INT y, INT width, INT height, DWORD rop )
+BOOL CDECL X11DRV_PatBlt( PHYSDEV dev, INT x, INT y, INT width, INT height, DWORD rop )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     BOOL usePat = (((rop >> 4) & 0x0f0000) != (rop & 0x0f0000));
     const BYTE *opcode = BITBLT_Opcodes[(rop >> 16) & 0xff];
     struct bitblt_coords dst;
@@ -1485,11 +1486,12 @@
 /***********************************************************************
  *           X11DRV_StretchBlt
  */
-BOOL CDECL X11DRV_StretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT yDst, INT widthDst, INT heightDst,
+BOOL CDECL X11DRV_StretchBlt( PHYSDEV dst_dev, INT xDst, INT yDst, INT widthDst, INT heightDst,
                               PHYSDEV src_dev, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc,
                               DWORD rop )
 {
-    X11DRV_PDEVICE *physDevSrc = (X11DRV_PDEVICE *)src_dev; /* FIXME: check that it's really an x11 dev */
+    X11DRV_PDEVICE *physDevDst = get_x11drv_dev( dst_dev );
+    X11DRV_PDEVICE *physDevSrc = get_x11drv_dev( src_dev ); /* FIXME: check that it's really an x11 dev */
     BOOL usePat, useDst, destUsed, fStretch, fNullBrush;
     struct bitblt_coords src, dst;
     INT width, height;
@@ -1685,11 +1687,12 @@
 /***********************************************************************
  *           X11DRV_AlphaBlend
  */
-BOOL CDECL X11DRV_AlphaBlend( X11DRV_PDEVICE *physDevDst, INT xDst, INT yDst, INT widthDst, INT heightDst,
+BOOL CDECL X11DRV_AlphaBlend( PHYSDEV dst_dev, INT xDst, INT yDst, INT widthDst, INT heightDst,
                               PHYSDEV src_dev, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc,
                               BLENDFUNCTION blendfn )
 {
-    X11DRV_PDEVICE *physDevSrc = (X11DRV_PDEVICE *)src_dev; /* FIXME: check that it's really an x11 dev */
+    X11DRV_PDEVICE *physDevDst = get_x11drv_dev( dst_dev );
+    X11DRV_PDEVICE *physDevSrc = get_x11drv_dev( src_dev ); /* FIXME: check that it's really an x11 dev */
     struct bitblt_coords src, dst;
 
     src.x      = xSrc;
diff --git a/dlls/winex11.drv/bitmap.c b/dlls/winex11.drv/bitmap.c
index 4683fd9..08c359c 100644
--- a/dlls/winex11.drv/bitmap.c
+++ b/dlls/winex11.drv/bitmap.c
@@ -87,8 +87,9 @@
 /***********************************************************************
  *           SelectBitmap   (X11DRV.@)
  */
-HBITMAP CDECL X11DRV_SelectBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap )
+HBITMAP CDECL X11DRV_SelectBitmap( PHYSDEV dev, HBITMAP hbitmap )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     X_PHYSBITMAP *physBitmap;
     BITMAP bitmap;
 
@@ -131,7 +132,7 @@
  *
  * Returns TRUE on success else FALSE
  */
-BOOL CDECL X11DRV_CreateBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap, LPVOID bmBits )
+BOOL CDECL X11DRV_CreateBitmap( PHYSDEV dev, HBITMAP hbitmap, LPVOID bmBits )
 {
     X_PHYSBITMAP *physBitmap;
     BITMAP bitmap;
diff --git a/dlls/winex11.drv/brush.c b/dlls/winex11.drv/brush.c
index 61f1a86..ca8c5b7 100644
--- a/dlls/winex11.drv/brush.c
+++ b/dlls/winex11.drv/brush.c
@@ -250,8 +250,9 @@
 /***********************************************************************
  *           SelectBrush   (X11DRV.@)
  */
-HBRUSH CDECL X11DRV_SelectBrush( X11DRV_PDEVICE *physDev, HBRUSH hbrush )
+HBRUSH CDECL X11DRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     LOGBRUSH logbrush;
     HBITMAP hBitmap;
     BITMAPINFO * bmpInfo;
@@ -320,8 +321,10 @@
 /***********************************************************************
  *           SetDCBrushColor (X11DRV.@)
  */
-COLORREF CDECL X11DRV_SetDCBrushColor( X11DRV_PDEVICE *physDev, COLORREF crColor )
+COLORREF CDECL X11DRV_SetDCBrushColor( PHYSDEV dev, COLORREF crColor )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     if (GetCurrentObject(physDev->hdc, OBJ_BRUSH) == GetStockObject( DC_BRUSH ))
         BRUSH_SelectSolidBrush( physDev, crColor );
 
diff --git a/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c
index 226c416..eb716fc 100644
--- a/dlls/winex11.drv/dib.c
+++ b/dlls/winex11.drv/dib.c
@@ -3842,11 +3842,12 @@
  *		X11DRV_SetDIBitsToDevice
  *
  */
-INT CDECL X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest, INT yDest, DWORD cx,
+INT CDECL X11DRV_SetDIBitsToDevice( PHYSDEV dev, INT xDest, INT yDest, DWORD cx,
                                     DWORD cy, INT xSrc, INT ySrc,
                                     UINT startscan, UINT lines, LPCVOID bits,
                                     const BITMAPINFO *info, UINT coloruse )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     X11DRV_DIB_IMAGEBITS_DESCR descr;
     INT result;
     LONG width, height;
@@ -3970,9 +3971,10 @@
 /***********************************************************************
  *           SetDIBits   (X11DRV.@)
  */
-INT CDECL X11DRV_SetDIBits( X11DRV_PDEVICE *physDev, HBITMAP hbitmap, UINT startscan,
+INT CDECL X11DRV_SetDIBits( PHYSDEV dev, HBITMAP hbitmap, UINT startscan,
                             UINT lines, LPCVOID bits, const BITMAPINFO *info, UINT coloruse )
 {
+  X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
   X_PHYSBITMAP *physBitmap = X11DRV_get_phys_bitmap( hbitmap );
   X11DRV_DIB_IMAGEBITS_DESCR descr;
   DIBSECTION ds;
@@ -4086,9 +4088,10 @@
 /***********************************************************************
  *           GetDIBits   (X11DRV.@)
  */
-INT CDECL X11DRV_GetDIBits( X11DRV_PDEVICE *physDev, HBITMAP hbitmap, UINT startscan, UINT lines,
+INT CDECL X11DRV_GetDIBits( PHYSDEV dev, HBITMAP hbitmap, UINT startscan, UINT lines,
                             LPVOID bits, BITMAPINFO *info, UINT coloruse )
 {
+  X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
   X_PHYSBITMAP *physBitmap = X11DRV_get_phys_bitmap( hbitmap );
   DIBSECTION dib;
   X11DRV_DIB_IMAGEBITS_DESCR descr;
@@ -4750,9 +4753,10 @@
 /***********************************************************************
  *           X11DRV_CreateDIBSection   (X11DRV.@)
  */
-HBITMAP CDECL X11DRV_CreateDIBSection( X11DRV_PDEVICE *physDev, HBITMAP hbitmap,
+HBITMAP CDECL X11DRV_CreateDIBSection( PHYSDEV dev, HBITMAP hbitmap,
                                        const BITMAPINFO *bmi, UINT usage )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     X_PHYSBITMAP *physBitmap;
     DIBSECTION dib;
     WORD bpp, compr;
@@ -4920,8 +4924,9 @@
 /***********************************************************************
  *           SetDIBColorTable   (X11DRV.@)
  */
-UINT CDECL X11DRV_SetDIBColorTable( X11DRV_PDEVICE *physDev, UINT start, UINT count, const RGBQUAD *colors )
+UINT CDECL X11DRV_SetDIBColorTable( PHYSDEV dev, UINT start, UINT count, const RGBQUAD *colors )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     DIBSECTION dib;
     UINT ret = 0;
     X_PHYSBITMAP *physBitmap = physDev->bitmap;
diff --git a/dlls/winex11.drv/graphics.c b/dlls/winex11.drv/graphics.c
index ac5ea62..459be9b 100644
--- a/dlls/winex11.drv/graphics.c
+++ b/dlls/winex11.drv/graphics.c
@@ -188,8 +188,9 @@
 /***********************************************************************
  *           X11DRV_SetDeviceClipping
  */
-void CDECL X11DRV_SetDeviceClipping( X11DRV_PDEVICE *physDev, HRGN vis_rgn, HRGN clip_rgn )
+void CDECL X11DRV_SetDeviceClipping( PHYSDEV dev, HRGN vis_rgn, HRGN clip_rgn )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     RGNDATA *data;
 
     CombineRgn( physDev->region, vis_rgn, clip_rgn, clip_rgn ? RGN_AND : RGN_COPY );
@@ -469,9 +470,9 @@
 /***********************************************************************
  *           X11DRV_LineTo
  */
-BOOL CDECL
-X11DRV_LineTo( X11DRV_PDEVICE *physDev, INT x, INT y )
+BOOL CDECL X11DRV_LineTo( PHYSDEV dev, INT x, INT y )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     POINT pt[2];
 
     if (X11DRV_SetupGCForPen( physDev )) {
@@ -504,11 +505,10 @@
  * 'lines' is the number of lines to draw: 0 for Arc, 1 for Chord, 2 for Pie.
  *
  */
-static BOOL
-X11DRV_DrawArc( X11DRV_PDEVICE *physDev, INT left, INT top, INT right,
-                INT bottom, INT xstart, INT ystart,
-                INT xend, INT yend, INT lines )
+static BOOL X11DRV_DrawArc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
+                            INT xstart, INT ystart, INT xend, INT yend, INT lines )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     INT xcenter, ycenter, istart_angle, idiff_angle;
     INT width, oldwidth;
     double start_angle, end_angle;
@@ -661,44 +661,38 @@
 /***********************************************************************
  *           X11DRV_Arc
  */
-BOOL CDECL
-X11DRV_Arc( X11DRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom,
-            INT xstart, INT ystart, INT xend, INT yend )
+BOOL CDECL X11DRV_Arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
+                       INT xstart, INT ystart, INT xend, INT yend )
 {
-    return X11DRV_DrawArc( physDev, left, top, right, bottom,
-			   xstart, ystart, xend, yend, 0 );
+    return X11DRV_DrawArc( dev, left, top, right, bottom, xstart, ystart, xend, yend, 0 );
 }
 
 
 /***********************************************************************
  *           X11DRV_Pie
  */
-BOOL CDECL
-X11DRV_Pie( X11DRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom,
-            INT xstart, INT ystart, INT xend, INT yend )
+BOOL CDECL X11DRV_Pie( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
+                       INT xstart, INT ystart, INT xend, INT yend )
 {
-    return X11DRV_DrawArc( physDev, left, top, right, bottom,
-			   xstart, ystart, xend, yend, 2 );
+    return X11DRV_DrawArc( dev, left, top, right, bottom, xstart, ystart, xend, yend, 2 );
 }
 
 /***********************************************************************
  *           X11DRV_Chord
  */
-BOOL CDECL
-X11DRV_Chord( X11DRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom,
-              INT xstart, INT ystart, INT xend, INT yend )
+BOOL CDECL X11DRV_Chord( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
+                         INT xstart, INT ystart, INT xend, INT yend )
 {
-    return X11DRV_DrawArc( physDev, left, top, right, bottom,
-		  	   xstart, ystart, xend, yend, 1 );
+    return X11DRV_DrawArc( dev, left, top, right, bottom, xstart, ystart, xend, yend, 1 );
 }
 
 
 /***********************************************************************
  *           X11DRV_Ellipse
  */
-BOOL CDECL
-X11DRV_Ellipse( X11DRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom )
+BOOL CDECL X11DRV_Ellipse( PHYSDEV dev, INT left, INT top, INT right, INT bottom )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     INT width, oldwidth;
     BOOL update = FALSE;
     RECT rc = get_device_rect( physDev->hdc, left, top, right, bottom );
@@ -754,9 +748,9 @@
 /***********************************************************************
  *           X11DRV_Rectangle
  */
-BOOL CDECL
-X11DRV_Rectangle(X11DRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom)
+BOOL CDECL X11DRV_Rectangle(PHYSDEV dev, INT left, INT top, INT right, INT bottom)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     INT width, oldwidth, oldjoinstyle;
     BOOL update = FALSE;
     RECT rc = get_device_rect( physDev->hdc, left, top, right, bottom );
@@ -821,10 +815,10 @@
 /***********************************************************************
  *           X11DRV_RoundRect
  */
-BOOL CDECL
-X11DRV_RoundRect( X11DRV_PDEVICE *physDev, INT left, INT top, INT right,
-                  INT bottom, INT ell_width, INT ell_height )
+BOOL CDECL X11DRV_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
+                             INT ell_width, INT ell_height )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     INT width, oldwidth, oldendcap;
     BOOL update = FALSE;
     POINT pts[2];
@@ -1023,9 +1017,9 @@
 /***********************************************************************
  *           X11DRV_SetPixel
  */
-COLORREF CDECL
-X11DRV_SetPixel( X11DRV_PDEVICE *physDev, INT x, INT y, COLORREF color )
+COLORREF CDECL X11DRV_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     unsigned long pixel;
     POINT pt;
 
@@ -1055,10 +1049,10 @@
 /***********************************************************************
  *           X11DRV_GetPixel
  */
-COLORREF CDECL
-X11DRV_GetPixel( X11DRV_PDEVICE *physDev, INT x, INT y )
+COLORREF CDECL X11DRV_GetPixel( PHYSDEV dev, INT x, INT y )
 {
     static Pixmap pixmap = 0;
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     XImage * image;
     int pixel;
     POINT pt;
@@ -1107,9 +1101,10 @@
 /***********************************************************************
  *           X11DRV_PaintRgn
  */
-BOOL CDECL
-X11DRV_PaintRgn( X11DRV_PDEVICE *physDev, HRGN hrgn )
+BOOL CDECL X11DRV_PaintRgn( PHYSDEV dev, HRGN hrgn )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     if (X11DRV_SetupGCForBrush( physDev ))
     {
         unsigned int i;
@@ -1137,9 +1132,9 @@
 /**********************************************************************
  *          X11DRV_Polyline
  */
-BOOL CDECL
-X11DRV_Polyline( X11DRV_PDEVICE *physDev, const POINT* pt, INT count )
+BOOL CDECL X11DRV_Polyline( PHYSDEV dev, const POINT* pt, INT count )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     int i;
     XPoint *points;
 
@@ -1174,10 +1169,10 @@
 /**********************************************************************
  *          X11DRV_Polygon
  */
-BOOL CDECL
-X11DRV_Polygon( X11DRV_PDEVICE *physDev, const POINT* pt, INT count )
+BOOL CDECL X11DRV_Polygon( PHYSDEV dev, const POINT* pt, INT count )
 {
-    register int i;
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+    int i;
     XPoint *points;
     BOOL update = FALSE;
 
@@ -1226,16 +1221,16 @@
 /**********************************************************************
  *          X11DRV_PolyPolygon
  */
-BOOL CDECL
-X11DRV_PolyPolygon( X11DRV_PDEVICE *physDev, const POINT* pt, const INT* counts, UINT polygons)
+BOOL CDECL X11DRV_PolyPolygon( PHYSDEV dev, const POINT* pt, const INT* counts, UINT polygons )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     HRGN hrgn;
 
     /* FIXME: The points should be converted to device coords before */
     /* creating the region. */
 
     hrgn = CreatePolyPolygonRgn( pt, counts, polygons, GetPolyFillMode( physDev->hdc ) );
-    X11DRV_PaintRgn( physDev, hrgn );
+    X11DRV_PaintRgn( dev, hrgn );
     DeleteObject( hrgn );
 
       /* Draw the outline of the polygons */
@@ -1284,9 +1279,10 @@
 /**********************************************************************
  *          X11DRV_PolyPolyline
  */
-BOOL CDECL
-X11DRV_PolyPolyline( X11DRV_PDEVICE *physDev, const POINT* pt, const DWORD* counts, DWORD polylines )
+BOOL CDECL X11DRV_PolyPolyline( PHYSDEV dev, const POINT* pt, const DWORD* counts, DWORD polylines )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     if (X11DRV_SetupGCForPen ( physDev ))
     {
         unsigned int i, j, max = 0;
@@ -1403,10 +1399,9 @@
 /**********************************************************************
  *          X11DRV_ExtFloodFill
  */
-BOOL CDECL
-X11DRV_ExtFloodFill( X11DRV_PDEVICE *physDev, INT x, INT y, COLORREF color,
-                     UINT fillType )
+BOOL CDECL X11DRV_ExtFloodFill( PHYSDEV dev, INT x, INT y, COLORREF color, UINT fillType )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     XImage *image;
     RECT rect;
     POINT pt;
@@ -1457,9 +1452,10 @@
 /**********************************************************************
  *          X11DRV_SetBkColor
  */
-COLORREF CDECL
-X11DRV_SetBkColor( X11DRV_PDEVICE *physDev, COLORREF color )
+COLORREF CDECL X11DRV_SetBkColor( PHYSDEV dev, COLORREF color )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     physDev->backgroundPixel = X11DRV_PALETTE_ToPhysical( physDev, color );
     return color;
 }
@@ -1467,9 +1463,10 @@
 /**********************************************************************
  *          X11DRV_SetTextColor
  */
-COLORREF CDECL
-X11DRV_SetTextColor( X11DRV_PDEVICE *physDev, COLORREF color )
+COLORREF CDECL X11DRV_SetTextColor( PHYSDEV dev, COLORREF color )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     physDev->textPixel = X11DRV_PALETTE_ToPhysical( physDev, color );
     return color;
 }
@@ -1519,7 +1516,7 @@
 /***********************************************************************
  *              GetICMProfile (X11DRV.@)
  */
-BOOL CDECL X11DRV_GetICMProfile( X11DRV_PDEVICE *physDev, LPDWORD size, LPWSTR filename )
+BOOL CDECL X11DRV_GetICMProfile( PHYSDEV dev, LPDWORD size, LPWSTR filename )
 {
     static const WCHAR srgb[] =
         {'s','R','G','B',' ','C','o','l','o','r',' ','S','p','a','c','e',' ',
@@ -1593,8 +1590,9 @@
 /***********************************************************************
  *              EnumICMProfiles (X11DRV.@)
  */
-INT CDECL X11DRV_EnumICMProfiles( X11DRV_PDEVICE *physDev, ICMENUMPROCW proc, LPARAM lparam )
+INT CDECL X11DRV_EnumICMProfiles( PHYSDEV dev, ICMENUMPROCW proc, LPARAM lparam )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     HKEY hkey;
     DWORD len_sysdir, len_path, len, index = 0;
     WCHAR sysdir[MAX_PATH], *profile;
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c
index b9c1c1c..00d1edd 100644
--- a/dlls/winex11.drv/init.c
+++ b/dlls/winex11.drv/init.c
@@ -167,8 +167,10 @@
 /**********************************************************************
  *	     X11DRV_DeleteDC
  */
-BOOL CDECL X11DRV_DeleteDC( X11DRV_PDEVICE *physDev )
+BOOL CDECL X11DRV_DeleteDC( PHYSDEV dev )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     if(physDev->xrender)
       X11DRV_XRender_DeleteDC( physDev );
     DeleteObject( physDev->region );
@@ -183,8 +185,10 @@
 /***********************************************************************
  *           GetDeviceCaps    (X11DRV.@)
  */
-INT CDECL X11DRV_GetDeviceCaps( X11DRV_PDEVICE *physDev, INT cap )
+INT CDECL X11DRV_GetDeviceCaps( PHYSDEV dev, INT cap )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     switch(cap)
     {
     case DRIVERVERSION:
@@ -284,9 +288,11 @@
 /**********************************************************************
  *           ExtEscape  (X11DRV.@)
  */
-INT CDECL X11DRV_ExtEscape( X11DRV_PDEVICE *physDev, INT escape, INT in_count, LPCVOID in_data,
+INT CDECL X11DRV_ExtEscape( PHYSDEV dev, INT escape, INT in_count, LPCVOID in_data,
                             INT out_count, LPVOID out_data )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     switch(escape)
     {
     case QUERYESCSUPPORT:
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index feead5f..4e9d14a 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -1199,8 +1199,9 @@
  *
  * Equivalent to glXChooseVisual.
  */
-int CDECL X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev,
-			     const PIXELFORMATDESCRIPTOR *ppfd) {
+int CDECL X11DRV_ChoosePixelFormat(PHYSDEV dev, const PIXELFORMATDESCRIPTOR *ppfd)
+{
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     WineGLPixelFormat *list;
     int onscreen_size;
     int ret = 0;
@@ -1448,10 +1449,10 @@
  *
  * Get the pixel-format descriptor associated to the given id
  */
-int CDECL X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
-			       int iPixelFormat,
-			       UINT nBytes,
-			       PIXELFORMATDESCRIPTOR *ppfd) {
+int CDECL X11DRV_DescribePixelFormat(PHYSDEV dev, int iPixelFormat,
+                                     UINT nBytes, PIXELFORMATDESCRIPTOR *ppfd)
+{
+  X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
   /*XVisualInfo *vis;*/
   int value;
   int rb,gb,bb,ab;
@@ -1592,7 +1593,9 @@
  *
  * Get the pixel-format id used by this DC
  */
-int CDECL X11DRV_GetPixelFormat(X11DRV_PDEVICE *physDev) {
+int CDECL X11DRV_GetPixelFormat(PHYSDEV dev)
+{
+  X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
   WineGLPixelFormat *fmt;
   int tmp;
   TRACE("(%p)\n", physDev);
@@ -1701,9 +1704,10 @@
  *
  * Set the pixel-format id used by this DC
  */
-BOOL CDECL X11DRV_SetPixelFormat(X11DRV_PDEVICE *physDev,
-			   int iPixelFormat,
-			   const PIXELFORMATDESCRIPTOR *ppfd) {
+BOOL CDECL X11DRV_SetPixelFormat(PHYSDEV dev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
+{
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     TRACE("(%p,%d,%p)\n", physDev, iPixelFormat, ppfd);
 
     if (!has_opengl()) return FALSE;
@@ -1738,8 +1742,9 @@
  *
  * For OpenGL32 wglCreateContext.
  */
-HGLRC CDECL X11DRV_wglCreateContext(X11DRV_PDEVICE *physDev)
+HGLRC CDECL X11DRV_wglCreateContext(PHYSDEV dev)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     Wine_GLContext *ret;
     WineGLPixelFormat *fmt;
     int hdcPF = physDev->current_pf;
@@ -1877,7 +1882,9 @@
  *
  * For OpenGL32 wglMakeCurrent.
  */
-BOOL CDECL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) {
+BOOL CDECL X11DRV_wglMakeCurrent(PHYSDEV dev, HGLRC hglrc)
+{
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     BOOL ret;
     HDC hdc = physDev->hdc;
     DWORD type = GetObjectType(hdc);
@@ -1955,8 +1962,10 @@
  *
  * For OpenGL32 wglMakeContextCurrentARB
  */
-BOOL CDECL X11DRV_wglMakeContextCurrentARB(X11DRV_PDEVICE* pDrawDev, X11DRV_PDEVICE* pReadDev, HGLRC hglrc)
+BOOL CDECL X11DRV_wglMakeContextCurrentARB( PHYSDEV draw_dev, PHYSDEV read_dev, HGLRC hglrc )
 {
+    X11DRV_PDEVICE *pDrawDev = get_x11drv_dev( draw_dev );
+    X11DRV_PDEVICE *pReadDev = get_x11drv_dev( read_dev );
     BOOL ret;
 
     TRACE("(%p,%p,%p)\n", pDrawDev, pReadDev, hglrc);
@@ -2185,8 +2194,9 @@
  *
  * For OpenGL32 wglUseFontBitmapsA.
  */
-BOOL CDECL X11DRV_wglUseFontBitmapsA(X11DRV_PDEVICE *physDev, DWORD first, DWORD count, DWORD listBase)
+BOOL CDECL X11DRV_wglUseFontBitmapsA(PHYSDEV dev, DWORD first, DWORD count, DWORD listBase)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
      Font fid = physDev->font;
 
      TRACE("(%p, %d, %d, %d) using font %ld\n", physDev->hdc, first, count, listBase, fid);
@@ -2209,8 +2219,9 @@
  *
  * For OpenGL32 wglUseFontBitmapsW.
  */
-BOOL CDECL X11DRV_wglUseFontBitmapsW(X11DRV_PDEVICE *physDev, DWORD first, DWORD count, DWORD listBase)
+BOOL CDECL X11DRV_wglUseFontBitmapsW(PHYSDEV dev, DWORD first, DWORD count, DWORD listBase)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
      Font fid = physDev->font;
 
      TRACE("(%p, %d, %d, %d) using font %ld\n", physDev->hdc, first, count, listBase, fid);
@@ -2322,8 +2333,9 @@
  *
  * WGL_ARB_create_context: wglCreateContextAttribsARB
  */
-HGLRC CDECL X11DRV_wglCreateContextAttribsARB(X11DRV_PDEVICE *physDev, HGLRC hShareContext, const int* attribList)
+HGLRC CDECL X11DRV_wglCreateContextAttribsARB(PHYSDEV dev, HGLRC hShareContext, const int* attribList)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     Wine_GLContext *ret;
     WineGLPixelFormat *fmt;
     int hdcPF = physDev->current_pf;
@@ -2672,9 +2684,11 @@
  * Gdi32 implements the part of this function which creates a device context.
  * This part associates the physDev with the X drawable of the pbuffer.
  */
-HDC CDECL X11DRV_wglGetPbufferDCARB(X11DRV_PDEVICE *physDev, HPBUFFERARB hPbuffer)
+HDC CDECL X11DRV_wglGetPbufferDCARB(PHYSDEV dev, HPBUFFERARB hPbuffer)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     Wine_GLPBuffer* object = hPbuffer;
+
     if (NULL == object) {
         SetLastError(ERROR_INVALID_HANDLE);
         return NULL;
@@ -3515,8 +3529,10 @@
  * WGL_WINE_pixel_format_passthrough: wglSetPixelFormatWINE
  * This is a WINE-specific wglSetPixelFormat which can set the pixel format multiple times.
  */
-BOOL CDECL X11DRV_wglSetPixelFormatWINE(X11DRV_PDEVICE *physDev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
+BOOL CDECL X11DRV_wglSetPixelFormatWINE(PHYSDEV dev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     TRACE("(%p,%d,%p)\n", physDev, iPixelFormat, ppfd);
 
     if (!has_opengl()) return FALSE;
@@ -3809,8 +3825,9 @@
  *
  * Swap the buffers of this DC
  */
-BOOL CDECL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev)
+BOOL CDECL X11DRV_SwapBuffers(PHYSDEV dev)
 {
+  X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
   GLXDrawable drawable;
   Wine_GLContext *ctx = NtCurrentTeb()->glContext;
 
@@ -3927,8 +3944,8 @@
 /***********************************************************************
  *		ChoosePixelFormat (X11DRV.@)
  */
-int CDECL X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev,
-                                     const PIXELFORMATDESCRIPTOR *ppfd) {
+int CDECL X11DRV_ChoosePixelFormat(PHYSDEV dev, const PIXELFORMATDESCRIPTOR *ppfd)
+{
   opengl_error();
   return 0;
 }
@@ -3936,10 +3953,9 @@
 /***********************************************************************
  *		DescribePixelFormat (X11DRV.@)
  */
-int CDECL X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
-                                     int iPixelFormat,
-                                     UINT nBytes,
-                                     PIXELFORMATDESCRIPTOR *ppfd) {
+int CDECL X11DRV_DescribePixelFormat(PHYSDEV dev, int iPixelFormat,
+                                     UINT nBytes, PIXELFORMATDESCRIPTOR *ppfd)
+{
   opengl_error();
   return 0;
 }
@@ -3947,7 +3963,8 @@
 /***********************************************************************
  *		GetPixelFormat (X11DRV.@)
  */
-int CDECL X11DRV_GetPixelFormat(X11DRV_PDEVICE *physDev) {
+int CDECL X11DRV_GetPixelFormat(PHYSDEV dev)
+{
   opengl_error();
   return 0;
 }
@@ -3955,9 +3972,8 @@
 /***********************************************************************
  *		SetPixelFormat (X11DRV.@)
  */
-BOOL CDECL X11DRV_SetPixelFormat(X11DRV_PDEVICE *physDev,
-                                   int iPixelFormat,
-                                   const PIXELFORMATDESCRIPTOR *ppfd) {
+BOOL CDECL X11DRV_SetPixelFormat(PHYSDEV dev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
+{
   opengl_error();
   return FALSE;
 }
@@ -3965,7 +3981,8 @@
 /***********************************************************************
  *		SwapBuffers (X11DRV.@)
  */
-BOOL CDECL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev) {
+BOOL CDECL X11DRV_SwapBuffers(PHYSDEV dev)
+{
   opengl_error();
   return FALSE;
 }
@@ -3985,7 +4002,8 @@
  *
  * For OpenGL32 wglCreateContext.
  */
-HGLRC CDECL X11DRV_wglCreateContext(X11DRV_PDEVICE *physDev) {
+HGLRC CDECL X11DRV_wglCreateContext(PHYSDEV dev)
+{
     opengl_error();
     return NULL;
 }
@@ -3995,7 +4013,7 @@
  *
  * WGL_ARB_create_context: wglCreateContextAttribsARB
  */
-HGLRC CDECL X11DRV_wglCreateContextAttribsARB(X11DRV_PDEVICE *physDev, HGLRC hShareContext, const int* attribList)
+HGLRC CDECL X11DRV_wglCreateContextAttribsARB(PHYSDEV dev, HGLRC hShareContext, const int* attribList)
 {
     opengl_error();
     return NULL;
@@ -4021,13 +4039,14 @@
     return NULL;
 }
 
-HDC CDECL X11DRV_wglGetPbufferDCARB(X11DRV_PDEVICE *hDevice, void *hPbuffer)
+HDC CDECL X11DRV_wglGetPbufferDCARB(PHYSDEV dev, void *hPbuffer)
 {
     opengl_error();
     return NULL;
 }
 
-BOOL CDECL X11DRV_wglMakeContextCurrentARB(X11DRV_PDEVICE* hDrawDev, X11DRV_PDEVICE* hReadDev, HGLRC hglrc) {
+BOOL CDECL X11DRV_wglMakeContextCurrentARB(PHYSDEV draw_dev, PHYSDEV read_dev, HGLRC hglrc)
+{
     opengl_error();
     return FALSE;
 }
@@ -4037,7 +4056,8 @@
  *
  * For OpenGL32 wglMakeCurrent.
  */
-BOOL CDECL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) {
+BOOL CDECL X11DRV_wglMakeCurrent(PHYSDEV dev, HGLRC hglrc)
+{
     opengl_error();
     return FALSE;
 }
@@ -4057,7 +4077,7 @@
  *
  * For OpenGL32 wglUseFontBitmapsA.
  */
-BOOL CDECL X11DRV_wglUseFontBitmapsA(X11DRV_PDEVICE *physDev, DWORD first, DWORD count, DWORD listBase)
+BOOL CDECL X11DRV_wglUseFontBitmapsA(PHYSDEV dev, DWORD first, DWORD count, DWORD listBase)
 {
     opengl_error();
     return FALSE;
@@ -4068,7 +4088,7 @@
  *
  * For OpenGL32 wglUseFontBitmapsW.
  */
-BOOL CDECL X11DRV_wglUseFontBitmapsW(X11DRV_PDEVICE *physDev, DWORD first, DWORD count, DWORD listBase)
+BOOL CDECL X11DRV_wglUseFontBitmapsW(PHYSDEV dev, DWORD first, DWORD count, DWORD listBase)
 {
     opengl_error();
     return FALSE;
@@ -4080,7 +4100,7 @@
  * WGL_WINE_pixel_format_passthrough: wglSetPixelFormatWINE
  * This is a WINE-specific wglSetPixelFormat which can set the pixel format multiple times.
  */
-BOOL CDECL X11DRV_wglSetPixelFormatWINE(X11DRV_PDEVICE *physDev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
+BOOL CDECL X11DRV_wglSetPixelFormatWINE(PHYSDEV dev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
 {
     opengl_error();
     return FALSE;
diff --git a/dlls/winex11.drv/palette.c b/dlls/winex11.drv/palette.c
index a7a6b35..3b0097f 100644
--- a/dlls/winex11.drv/palette.c
+++ b/dlls/winex11.drv/palette.c
@@ -1213,8 +1213,9 @@
 /***********************************************************************
  *              RealizePalette    (X11DRV.@)
  */
-UINT X11DRV_RealizePalette( X11DRV_PDEVICE *physDev, HPALETTE hpal, BOOL primary )
+UINT CDECL X11DRV_RealizePalette( PHYSDEV dev, HPALETTE hpal, BOOL primary )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     char flag;
     int  index;
     UINT i, iRemapped = 0;
@@ -1331,7 +1332,7 @@
 /***********************************************************************
  *              UnrealizePalette    (X11DRV.@)
  */
-BOOL X11DRV_UnrealizePalette( HPALETTE hpal )
+BOOL CDECL X11DRV_UnrealizePalette( HPALETTE hpal )
 {
     int *mapping = palette_get_mapping( hpal );
 
@@ -1349,8 +1350,7 @@
 /***********************************************************************
  *              GetSystemPaletteEntries   (X11DRV.@)
  */
-UINT X11DRV_GetSystemPaletteEntries( X11DRV_PDEVICE *physDev, UINT start, UINT count,
-                                     LPPALETTEENTRY entries )
+UINT CDECL X11DRV_GetSystemPaletteEntries( PHYSDEV dev, UINT start, UINT count, LPPALETTEENTRY entries )
 {
     UINT i;
 
@@ -1375,8 +1375,9 @@
 /***********************************************************************
  *              GetNearestColor   (X11DRV.@)
  */
-COLORREF X11DRV_GetNearestColor( X11DRV_PDEVICE *physDev, COLORREF color )
+COLORREF CDECL X11DRV_GetNearestColor( PHYSDEV dev, COLORREF color )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     unsigned char spec_type = color >> 24;
     COLORREF nearest;
 
@@ -1417,8 +1418,9 @@
 /***********************************************************************
  *              RealizeDefaultPalette    (X11DRV.@)
  */
-UINT X11DRV_RealizeDefaultPalette( X11DRV_PDEVICE *physDev )
+UINT CDECL X11DRV_RealizeDefaultPalette( PHYSDEV dev )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     UINT ret = 0;
 
     if (palette_size && GetObjectType(physDev->hdc) != OBJ_MEMDC)
diff --git a/dlls/winex11.drv/pen.c b/dlls/winex11.drv/pen.c
index 49fe74c..188a406 100644
--- a/dlls/winex11.drv/pen.c
+++ b/dlls/winex11.drv/pen.c
@@ -28,7 +28,7 @@
 /***********************************************************************
  *           SelectPen   (X11DRV.@)
  */
-HPEN CDECL X11DRV_SelectPen( X11DRV_PDEVICE *physDev, HPEN hpen )
+HPEN CDECL X11DRV_SelectPen( PHYSDEV dev, HPEN hpen )
 {
     static const char PEN_dash[]          = { 16,8 };
     static const char PEN_dot[]           = { 4,4 };
@@ -39,6 +39,7 @@
     static const char EXTPEN_dot[]        = { 1,1 };
     static const char EXTPEN_dashdot[]    = { 3,1,1,1 };
     static const char EXTPEN_dashdotdot[] = { 3,1,1,1,1,1 };
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     LOGPEN logpen;
     int i;
 
@@ -126,8 +127,10 @@
 /***********************************************************************
  *           SetDCPenColor (X11DRV.@)
  */
-COLORREF CDECL X11DRV_SetDCPenColor( X11DRV_PDEVICE *physDev, COLORREF crColor )
+COLORREF CDECL X11DRV_SetDCPenColor( PHYSDEV dev, COLORREF crColor )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     if (GetCurrentObject(physDev->hdc, OBJ_PEN) == GetStockObject( DC_PEN ))
         physDev->pen.pixel = X11DRV_PALETTE_ToPhysical( physDev, crColor );
 
diff --git a/dlls/winex11.drv/text.c b/dlls/winex11.drv/text.c
index 1431bc1..a468879 100644
--- a/dlls/winex11.drv/text.c
+++ b/dlls/winex11.drv/text.c
@@ -37,11 +37,10 @@
 /***********************************************************************
  *           X11DRV_ExtTextOut
  */
-BOOL CDECL
-X11DRV_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flags,
-                   const RECT *lprect, LPCWSTR wstr, UINT count,
-                   const INT *lpDx )
+BOOL CDECL X11DRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
+                              const RECT *lprect, LPCWSTR wstr, UINT count, const INT *lpDx )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     unsigned int i;
     fontObject*		pfo;
     XFontStruct*	font;
@@ -92,7 +91,7 @@
         /* make a copy of the current device region */
         saved_region = CreateRectRgn( 0, 0, 0, 0 );
         CombineRgn( saved_region, physDev->region, 0, RGN_COPY );
-        X11DRV_SetDeviceClipping( physDev, saved_region, clip_region );
+        X11DRV_SetDeviceClipping( dev, saved_region, clip_region );
         DeleteObject( clip_region );
     }
 
@@ -181,7 +180,7 @@
     if (flags & ETO_CLIPPED)
     {
         /* restore the device region */
-        X11DRV_SetDeviceClipping( physDev, saved_region, 0 );
+        X11DRV_SetDeviceClipping( dev, saved_region, 0 );
         DeleteObject( saved_region );
     }
     goto END;
@@ -199,9 +198,10 @@
 /***********************************************************************
  *           X11DRV_GetTextExtentExPoint
  */
-BOOL CDECL X11DRV_GetTextExtentExPoint( X11DRV_PDEVICE *physDev, LPCWSTR str, INT count,
+BOOL CDECL X11DRV_GetTextExtentExPoint( PHYSDEV dev, LPCWSTR str, INT count,
                                         INT maxExt, LPINT lpnFit, LPINT alpDx, LPSIZE size )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     fontObject* pfo = XFONT_GetFontObject( physDev->font );
 
     TRACE("%s %d\n", debugstr_wn(str,count), count);
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 21411f5..8c28fd3 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -169,6 +169,11 @@
     struct xrender_info *xrender;
 } X11DRV_PDEVICE;
 
+static inline X11DRV_PDEVICE *get_x11drv_dev( PHYSDEV dev )
+{
+    return (X11DRV_PDEVICE *)dev;
+}
+
 struct bitblt_coords
 {
     int  x;      /* original position and width */
@@ -187,66 +192,66 @@
 
 /* Wine driver X11 functions */
 
-extern BOOL CDECL X11DRV_EnumDeviceFonts( X11DRV_PDEVICE *physDev, LPLOGFONTW plf,
+extern BOOL CDECL X11DRV_EnumDeviceFonts( PHYSDEV dev, LPLOGFONTW plf,
                                           FONTENUMPROCW dfeproc, LPARAM lp ) DECLSPEC_HIDDEN;
 extern LONG CDECL X11DRV_GetBitmapBits( HBITMAP hbitmap, void *bits, LONG count ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_GetCharWidth( X11DRV_PDEVICE *physDev, UINT firstChar,
+extern BOOL CDECL X11DRV_GetCharWidth( PHYSDEV dev, UINT firstChar,
                                        UINT lastChar, LPINT buffer ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_GetTextExtentExPoint( X11DRV_PDEVICE *physDev, LPCWSTR str, INT count,
+extern BOOL CDECL X11DRV_GetTextExtentExPoint( PHYSDEV dev, LPCWSTR str, INT count,
                                                INT maxExt, LPINT lpnFit, LPINT alpDx, LPSIZE size ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_GetTextMetrics(X11DRV_PDEVICE *physDev, TEXTMETRICW *metrics) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_LineTo( X11DRV_PDEVICE *physDev, INT x, INT y) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Arc( X11DRV_PDEVICE *physDev, INT left, INT top, INT right,
+extern BOOL CDECL X11DRV_GetTextMetrics(PHYSDEV dev, TEXTMETRICW *metrics) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_LineTo( PHYSDEV dev, INT x, INT y) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_Arc( PHYSDEV dev, INT left, INT top, INT right,
                               INT bottom, INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Pie( X11DRV_PDEVICE *physDev, INT left, INT top, INT right,
+extern BOOL CDECL X11DRV_Pie( PHYSDEV dev, INT left, INT top, INT right,
                               INT bottom, INT xstart, INT ystart, INT xend,
                               INT yend ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Chord( X11DRV_PDEVICE *physDev, INT left, INT top,
+extern BOOL CDECL X11DRV_Chord( PHYSDEV dev, INT left, INT top,
                                 INT right, INT bottom, INT xstart,
                                 INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Ellipse( X11DRV_PDEVICE *physDev, INT left, INT top,
+extern BOOL CDECL X11DRV_Ellipse( PHYSDEV dev, INT left, INT top,
                                   INT right, INT bottom ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Rectangle(X11DRV_PDEVICE *physDev, INT left, INT top,
+extern BOOL CDECL X11DRV_Rectangle(PHYSDEV dev, INT left, INT top,
                                    INT right, INT bottom) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_RoundRect( X11DRV_PDEVICE *physDev, INT left, INT top,
+extern BOOL CDECL X11DRV_RoundRect( PHYSDEV dev, INT left, INT top,
                                     INT right, INT bottom, INT ell_width,
                                     INT ell_height ) DECLSPEC_HIDDEN;
-extern COLORREF CDECL X11DRV_SetPixel( X11DRV_PDEVICE *physDev, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN;
-extern COLORREF CDECL X11DRV_GetPixel( X11DRV_PDEVICE *physDev, INT x, INT y) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_PaintRgn( X11DRV_PDEVICE *physDev, HRGN hrgn ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Polyline( X11DRV_PDEVICE *physDev,const POINT* pt,INT count) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_Polygon( X11DRV_PDEVICE *physDev, const POINT* pt, INT count ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_PolyPolygon( X11DRV_PDEVICE *physDev, const POINT* pt,
+extern COLORREF CDECL X11DRV_SetPixel( PHYSDEV dev, INT x, INT y, COLORREF color ) DECLSPEC_HIDDEN;
+extern COLORREF CDECL X11DRV_GetPixel( PHYSDEV dev, INT x, INT y) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_PaintRgn( PHYSDEV dev, HRGN hrgn ) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_Polyline( PHYSDEV dev,const POINT* pt,INT count) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_Polygon( PHYSDEV dev, const POINT* pt, INT count ) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_PolyPolygon( PHYSDEV dev, const POINT* pt,
                                       const INT* counts, UINT polygons) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_PolyPolyline( X11DRV_PDEVICE *physDev, const POINT* pt,
+extern BOOL CDECL X11DRV_PolyPolyline( PHYSDEV dev, const POINT* pt,
                                        const DWORD* counts, DWORD polylines) DECLSPEC_HIDDEN;
 
-extern COLORREF CDECL X11DRV_SetBkColor( X11DRV_PDEVICE *physDev, COLORREF color ) DECLSPEC_HIDDEN;
-extern COLORREF CDECL X11DRV_SetTextColor( X11DRV_PDEVICE *physDev, COLORREF color ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_ExtFloodFill( X11DRV_PDEVICE *physDev, INT x, INT y,
+extern COLORREF CDECL X11DRV_SetBkColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;
+extern COLORREF CDECL X11DRV_SetTextColor( PHYSDEV dev, COLORREF color ) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_ExtFloodFill( PHYSDEV dev, INT x, INT y,
                                        COLORREF color, UINT fillType ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y,
+extern BOOL CDECL X11DRV_ExtTextOut( PHYSDEV dev, INT x, INT y,
                                      UINT flags, const RECT *lprect,
                                      LPCWSTR str, UINT count, const INT *lpDx ) DECLSPEC_HIDDEN;
 extern LONG CDECL X11DRV_SetBitmapBits( HBITMAP hbitmap, const void *bits, LONG count ) DECLSPEC_HIDDEN;
-extern void CDECL X11DRV_SetDeviceClipping( X11DRV_PDEVICE *physDev, HRGN vis_rgn, HRGN clip_rgn ) DECLSPEC_HIDDEN;
-extern INT CDECL X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest,
+extern void CDECL X11DRV_SetDeviceClipping( PHYSDEV dev, HRGN vis_rgn, HRGN clip_rgn ) DECLSPEC_HIDDEN;
+extern INT CDECL X11DRV_SetDIBitsToDevice( PHYSDEV dev, INT xDest,
                                            INT yDest, DWORD cx, DWORD cy,
                                            INT xSrc, INT ySrc,
                                            UINT startscan, UINT lines,
                                            LPCVOID bits, const BITMAPINFO *info,
                                            UINT coloruse ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_GetDeviceGammaRamp( X11DRV_PDEVICE *physDev, LPVOID ramp ) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_SetDeviceGammaRamp( X11DRV_PDEVICE *physDev, LPVOID ramp ) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_GetDeviceGammaRamp( PHYSDEV dev, LPVOID ramp ) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_SetDeviceGammaRamp( PHYSDEV dev, LPVOID ramp ) DECLSPEC_HIDDEN;
 
 /* OpenGL / X11 driver functions */
-extern int CDECL X11DRV_ChoosePixelFormat(X11DRV_PDEVICE *physDev,
+extern int CDECL X11DRV_ChoosePixelFormat(PHYSDEV dev,
 		                      const PIXELFORMATDESCRIPTOR *pppfd) DECLSPEC_HIDDEN;
-extern int CDECL X11DRV_DescribePixelFormat(X11DRV_PDEVICE *physDev,
+extern int CDECL X11DRV_DescribePixelFormat(PHYSDEV dev,
 		                        int iPixelFormat, UINT nBytes,
 					PIXELFORMATDESCRIPTOR *ppfd) DECLSPEC_HIDDEN;
-extern int CDECL X11DRV_GetPixelFormat(X11DRV_PDEVICE *physDev) DECLSPEC_HIDDEN;
-extern BOOL CDECL X11DRV_SwapBuffers(X11DRV_PDEVICE *physDev) DECLSPEC_HIDDEN;
+extern int CDECL X11DRV_GetPixelFormat(PHYSDEV dev) DECLSPEC_HIDDEN;
+extern BOOL CDECL X11DRV_SwapBuffers(PHYSDEV dev) DECLSPEC_HIDDEN;
 extern void X11DRV_OpenGL_Cleanup(void) DECLSPEC_HIDDEN;
 
 /* X11 driver internal functions */
diff --git a/dlls/winex11.drv/xfont.c b/dlls/winex11.drv/xfont.c
index 307ee09..342acb9 100644
--- a/dlls/winex11.drv/xfont.c
+++ b/dlls/winex11.drv/xfont.c
@@ -3226,8 +3226,9 @@
 /***********************************************************************
  *           SelectFont   (X11DRV.@)
  */
-HFONT CDECL X11DRV_SelectFont( X11DRV_PDEVICE *physDev, HFONT hfont, HANDLE gdiFont )
+HFONT CDECL X11DRV_SelectFont( PHYSDEV dev, HFONT hfont, HANDLE gdiFont )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     LOGFONTW logfont;
     LOGFONT16 lf;
 
@@ -3319,9 +3320,10 @@
  *
  *           X11DRV_EnumDeviceFonts
  */
-BOOL CDECL X11DRV_EnumDeviceFonts( X11DRV_PDEVICE *physDev, LPLOGFONTW plf,
+BOOL CDECL X11DRV_EnumDeviceFonts( PHYSDEV dev, LPLOGFONTW plf,
                                    FONTENUMPROCW proc, LPARAM lp )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     ENUMLOGFONTEXW	lf;
     NEWTEXTMETRICEXW	tm;
     fontResource*	pfr = fontList;
@@ -3384,8 +3386,10 @@
 /***********************************************************************
  *           X11DRV_GetTextMetrics
  */
-BOOL CDECL X11DRV_GetTextMetrics(X11DRV_PDEVICE *physDev, TEXTMETRICW *metrics)
+BOOL CDECL X11DRV_GetTextMetrics(PHYSDEV dev, TEXTMETRICW *metrics)
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+
     if( CHECK_PFONT(physDev->font) )
     {
 	fontObject* pfo = __PFONT(physDev->font);
@@ -3399,9 +3403,9 @@
 /***********************************************************************
  *           X11DRV_GetCharWidth
  */
-BOOL CDECL X11DRV_GetCharWidth( X11DRV_PDEVICE *physDev, UINT firstChar, UINT lastChar,
-                                  LPINT buffer )
+BOOL CDECL X11DRV_GetCharWidth( PHYSDEV dev, UINT firstChar, UINT lastChar, LPINT buffer )
 {
+    X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     fontObject* pfo = XFONT_GetFontObject( physDev->font );
 
     if( pfo )
diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
index 3a4c250..f21492f 100644
--- a/dlls/winex11.drv/xrender.c
+++ b/dlls/winex11.drv/xrender.c
@@ -1872,7 +1872,7 @@
         /* make a copy of the current device region */
         saved_region = CreateRectRgn( 0, 0, 0, 0 );
         CombineRgn( saved_region, physDev->region, 0, RGN_COPY );
-        X11DRV_SetDeviceClipping( physDev, saved_region, clip_region );
+        X11DRV_SetDeviceClipping( &physDev->dev, saved_region, clip_region );
         DeleteObject( clip_region );
     }
 
@@ -2134,7 +2134,7 @@
     if (flags & ETO_CLIPPED)
     {
         /* restore the device region */
-        X11DRV_SetDeviceClipping( physDev, saved_region, 0 );
+        X11DRV_SetDeviceClipping( &physDev->dev, saved_region, 0 );
         DeleteObject( saved_region );
     }
 
diff --git a/dlls/winex11.drv/xvidmode.c b/dlls/winex11.drv/xvidmode.c
index abc8a30..fe62fb0 100644
--- a/dlls/winex11.drv/xvidmode.c
+++ b/dlls/winex11.drv/xvidmode.c
@@ -426,7 +426,7 @@
  * the stuff in graphics/x11drv/ has been moved to dlls/x11drv, so that
  * they can include xvidmode.h directly
  */
-BOOL CDECL X11DRV_GetDeviceGammaRamp(X11DRV_PDEVICE *physDev, LPVOID ramp)
+BOOL CDECL X11DRV_GetDeviceGammaRamp(PHYSDEV dev, LPVOID ramp)
 {
 #ifdef SONAME_LIBXXF86VM
   return X11DRV_XF86VM_GetGammaRamp(ramp);
@@ -442,7 +442,7 @@
  * the stuff in graphics/x11drv/ has been moved to dlls/x11drv, so that
  * they can include xvidmode.h directly
  */
-BOOL CDECL X11DRV_SetDeviceGammaRamp(X11DRV_PDEVICE *physDev, LPVOID ramp)
+BOOL CDECL X11DRV_SetDeviceGammaRamp(PHYSDEV dev, LPVOID ramp)
 {
 #ifdef SONAME_LIBXXF86VM
   return X11DRV_XF86VM_SetGammaRamp(ramp);