[Piglit] [PATCH] Fix windows code path

Jose Fonseca jfonseca at vmware.com
Wed Nov 2 09:18:43 PDT 2011


Your patch doesn't apply cleanly. I'm not sure if my mail client fault or yours. Can anybody else apply this cleanly?

Regardless, please re-send as attachment.

Jose

----- Original Message -----
> Morgan,
> 
> I don't think this fixes any actual bug, as SetPixelFormat's ppfd
> argument is not used for anything,
> per http://msdn.microsoft.com/en-us/library/dd369049(v=vs.85).aspx
> 
> But I think this is a good code cleanup regardless.
> 
> 
> Jose
> 
> ----- Original Message -----
> > Hi,
> > It seems there is a mistake in the windows code path. Actually
> > DrawingSurfaceConfig holds a pointer to a pfd but it is invalid (as
> > we
> > send a pointer to a stack object). There is also two invalid
> > SetPixelFormat calls. This patch fixes it.
> > 
> > ---
> >  tests/glean/dsconfig.cpp |   42
> >  +++++++++++++++++++++---------------------
> >  tests/glean/dsconfig.h   |    2 +-
> >  tests/glean/dsurf.cpp    |    3 +--
> >  tests/glean/rc.cpp       |    4 +---
> >  4 files changed, 24 insertions(+), 27 deletions(-)
> > 
> > diff --git a/tests/glean/dsconfig.cpp b/tests/glean/dsconfig.cpp
> > index 9a4336c..69b549d 100644
> > --- a/tests/glean/dsconfig.cpp
> > +++ b/tests/glean/dsconfig.cpp
> > @@ -367,48 +367,48 @@
> > DrawingSurfaceConfig::DrawingSurfaceConfig(int
> > id,
> > ::PIXELFORMATDESCRIPTOR *ppfd
> >      if (!mapsInitialized)
> >          initializeMaps();
> > 
> > -    pfd = ppfd;
> > +    pfd = *ppfd;
> >      pfdID = id;
> > 
> > -    canRGBA = pfd->iPixelType == PFD_TYPE_RGBA;
> > -    canCI = pfd->iPixelType == PFD_TYPE_COLORINDEX;
> > +    canRGBA = pfd.iPixelType == PFD_TYPE_RGBA;
> > +    canCI = pfd.iPixelType == PFD_TYPE_COLORINDEX;
> > 
> > -    bufSize = pfd->cColorBits + pfd->cAlphaBits;
> > +    bufSize = pfd.cColorBits + pfd.cAlphaBits;
> > 
> >      level = 0;
> > 
> > -    db = pfd->dwFlags & PFD_DOUBLEBUFFER;
> > +    db = pfd.dwFlags & PFD_DOUBLEBUFFER;
> > 
> > -    stereo = pfd->dwFlags & PFD_STEREO;
> > +    stereo = pfd.dwFlags & PFD_STEREO;
> > 
> > -    aux = pfd->cAuxBuffers;
> > +    aux = pfd.cAuxBuffers;
> > 
> >      if (canRGBA)    {
> > -        r = pfd->cRedBits;
> > -        g = pfd->cGreenBits;
> > -        b = pfd->cBlueBits;
> > -        a = pfd->cAlphaBits;
> > +        r = pfd.cRedBits;
> > +        g = pfd.cGreenBits;
> > +        b = pfd.cBlueBits;
> > +        a = pfd.cAlphaBits;
> >      }
> >      else
> >          r = g = b = a = 0;
> > 
> > -    z = pfd->cDepthBits;
> > -    s = pfd->cStencilBits;
> > +    z = pfd.cDepthBits;
> > +    s = pfd.cStencilBits;
> > 
> > -    accR = pfd->cAccumRedBits;
> > -    accG = pfd->cAccumGreenBits;
> > -    accB = pfd->cAccumBlueBits;
> > -    accA = pfd->cAccumAlphaBits;
> > +    accR = pfd.cAccumRedBits;
> > +    accG = pfd.cAccumGreenBits;
> > +    accB = pfd.cAccumBlueBits;
> > +    accA = pfd.cAccumAlphaBits;
> > 
> >      samples = 0; // XXX implement properly for Windows!
> > 
> > -    canWindow = pfd->dwFlags & PFD_DRAW_TO_WINDOW;
> > +    canWindow = pfd.dwFlags & PFD_DRAW_TO_WINDOW;
> > 
> > -    canWinSysRender = pfd->dwFlags & PFD_SUPPORT_GDI;
> > +    canWinSysRender = pfd.dwFlags & PFD_SUPPORT_GDI;
> > 
> > -    if (pfd->dwFlags & PFD_GENERIC_FORMAT)
> > +    if (pfd.dwFlags & PFD_GENERIC_FORMAT)
> >      {
> > -        if (pfd->dwFlags & PFD_GENERIC_ACCELERATED)
> > +        if (pfd.dwFlags & PFD_GENERIC_ACCELERATED)
> >          {
> >              // it's an MCD - at least it has some acceleration
> >              fast = true;
> > diff --git a/tests/glean/dsconfig.h b/tests/glean/dsconfig.h
> > index 3827662..8df2abc 100644
> > --- a/tests/glean/dsconfig.h
> > +++ b/tests/glean/dsconfig.h
> > @@ -93,7 +93,7 @@ class DrawingSurfaceConfig {
> >      ::XID fbcID;            // Framebuffer Config ID.
> >  #     endif
> >  #   elif defined(__WIN__)
> > -    ::PIXELFORMATDESCRIPTOR *pfd;
> > +    ::PIXELFORMATDESCRIPTOR pfd;
> >      int pfdID;
> >  #   elif defined(__AGL__)
> >      AGLPixelFormat    pf;
> > diff --git a/tests/glean/dsurf.cpp b/tests/glean/dsurf.cpp
> > index 2a3bea1..4e4cfd7 100644
> > --- a/tests/glean/dsurf.cpp
> > +++ b/tests/glean/dsurf.cpp
> > @@ -155,8 +155,7 @@ legacyMethod:
> > 
> >      hDC = GetDC(hWindow);
> > 
> > -    PIXELFORMATDESCRIPTOR pfd;
> > -    SetPixelFormat(hDC,config->pfdID,&pfd);
> > +    SetPixelFormat(hDC,config->pfdID,&config->pfd);
> > 
> >  #elif defined(__BEWIN__)
> > 
> > diff --git a/tests/glean/rc.cpp b/tests/glean/rc.cpp
> > index 8cc95b3..e432d99 100644
> > --- a/tests/glean/rc.cpp
> > +++ b/tests/glean/rc.cpp
> > @@ -66,9 +66,7 @@ HGLRC create_context(GLEAN::DrawingSurfaceConfig
> > &c)
> >      if (!hDC)
> >          return 0;
> > 
> > -    PIXELFORMATDESCRIPTOR pfd;
> > -
> > -    if (!SetPixelFormat(hDC,c.pfdID,&pfd))
> > +    if (!SetPixelFormat(hDC,c.pfdID,&c.pfd))
> >      {
> >          ReleaseDC(hwnd,hDC);
> >          DestroyWindow(hwnd);
> > --
> > 1.7.7.1.msysgit.0
> > 
> > 
> > _______________________________________________
> > Piglit mailing list
> > Piglit at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/piglit
> > 
> 


More information about the Piglit mailing list