Francisco,

Will Mesa continue to build after these changes for people who have not
tracked the latest glproto and dri2proto repos?  

I'd prefer to be able to build Mesa on at least the most recently
released major distros, which may require the use of some #ifdefs in the
changes.

Keith

On Mon, 2010-02-08 at 10:25 -0800, Francisco Jerez wrote:
> Signed-off-by: Francisco Jerez <[email protected]>
> ---
>  glx/glxdri2.c |   28 +++++++++++++++++++++++++---
>  1 files changed, 25 insertions(+), 3 deletions(-)
> 
> diff --git a/glx/glxdri2.c b/glx/glxdri2.c
> index 0f998de..dae7b42 100644
> --- a/glx/glxdri2.c
> +++ b/glx/glxdri2.c
> @@ -67,6 +67,7 @@ struct __GLXDRIscreen {
>  
>      xf86EnterVTProc  *enterVT;
>      xf86LeaveVTProc  *leaveVT;
> +    PreConfigureWindowProcPtr PreConfigureWindow;
>  
>      const __DRIcoreExtension *core;
>      const __DRIdri2Extension *dri2;
> @@ -217,13 +218,13 @@ __glXDRIdrawableSwapBuffers(ClientPtr client, 
> __GLXdrawable *drawable)
>      __GLXDRIscreen *screen = priv->screen;
>      CARD64 unused;
>  
> -    if (screen->flush)
> -     (*screen->flush->flushInvalidate)(priv->driDrawable);
> -
>      if (DRI2SwapBuffers(client, drawable->pDraw, 0, 0, 0, &unused,
>                       __glXdriSwapEvent, drawable->pDraw) != Success)
>       return FALSE;
>  
> +    if (screen->flush)
> +     (*screen->flush->invalidate)(priv->driDrawable);
> +
>      return TRUE;
>  }
>  
> @@ -607,6 +608,24 @@ glxDRILeaveVT (int index, int flags)
>  }
>  
>  static void
> +glxDRIPreConfigureWindow(WindowPtr pWin, int x, int y, int w, int h, int bw,
> +                      WindowPtr pSib)
> +{
> +    ScreenPtr pScreen = pWin->drawable.pScreen;
> +    __GLXDRIscreen *screen = (__GLXDRIscreen *)glxGetScreen(pScreen);
> +    __GLXDRIdrawable *draw = (__GLXDRIdrawable 
> *)glxGetDrawableFromWindow(pWin);
> +
> +    if (screen->PreConfigureWindow)
> +         (*screen->PreConfigureWindow)(pWin, x, y, w, h, bw, pSib);
> +
> +    if (!draw || (draw->height == h && draw->width == w))
> +         return;
> +
> +    if (screen->flush)
> +         screen->flush->invalidate(draw->driDrawable);
> +}
> +
> +static void
>  initializeExtensions(__GLXDRIscreen *screen)
>  {
>      const __DRIextension **extensions;
> @@ -782,6 +801,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
>      screen->leaveVT = pScrn->LeaveVT;
>      pScrn->LeaveVT = glxDRILeaveVT;
>  
> +    screen->PreConfigureWindow = pScreen->PreConfigureWindow;
> +    pScreen->PreConfigureWindow = glxDRIPreConfigureWindow;
> +
>      LogMessage(X_INFO,
>              "AIGLX: Loaded and initialized %s\n", filename);
>  


_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to