xmesa: split FX functions to separate file, part 2.
authorGeorge Sapountzis <gsap7@yahoo.gr>
Fri, 20 Apr 2007 15:25:42 +0000 (18:25 +0300)
committerGeorge Sapountzis <gsap7@yahoo.gr>
Fri, 20 Apr 2007 18:08:57 +0000 (21:08 +0300)
src/mesa/drivers/x11/xm_api.c
src/mesa/drivers/x11/xm_glide.c
src/mesa/drivers/x11/xm_glide.h
src/mesa/drivers/x11/xmesaP.h

index 692eb5f8078df12eb83c43ab8b0dd13a395ea1f9..5e2327a2d3bfe0bea06299a1fec80dfc2fb5d97f 100644 (file)
@@ -1557,12 +1557,11 @@ PUBLIC
 void XMesaDestroyContext( XMesaContext c )
 {
    GLcontext *mesaCtx = &c->mesa;
-#ifdef FX
-   XMesaBuffer xmbuf = XMESA_BUFFER(mesaCtx->DrawBuffer);
 
-   if (xmbuf && xmbuf->FXctx)
-      fxMesaDestroyContext(xmbuf->FXctx);
+#ifdef FX
+   FXdestroyContext( XMESA_BUFFER(mesaCtx->DrawBuffer) );
 #endif
+
    _swsetup_DestroyContext( mesaCtx );
    _swrast_DestroyContext( mesaCtx );
    _tnl_DestroyContext( mesaCtx );
@@ -1767,15 +1766,6 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer,
       if (!drawBuffer || !readBuffer)
          return GL_FALSE;  /* must specify buffers! */
 
-#ifdef FX
-      if (drawBuffer->FXctx) {
-         fxMesaMakeCurrent(drawBuffer->FXctx);
-
-         c->xm_buffer = drawBuffer;
-
-         return GL_TRUE;
-      }
-#endif
       if (&(c->mesa) == _mesa_get_current_context()
           && c->mesa.DrawBuffer == &drawBuffer->mesa_buffer
           && c->mesa.ReadBuffer == &readBuffer->mesa_buffer
@@ -1786,6 +1776,11 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer,
 
       c->xm_buffer = drawBuffer;
 
+#ifdef FX
+      if (FXmakeCurrent( drawBuffer ))
+         return GL_TRUE;
+#endif
+
       /* Call this periodically to detect when the user has begun using
        * GL rendering from multiple threads.
        */
index 37787a7922bc9f92110f79d6488ad4d1b8c66bde..ae4f4282dbb56fafdb306b66d48a6f1fa1a2af87 100644 (file)
@@ -27,6 +27,8 @@
 #include "xmesaP.h"
 
 #ifdef FX
+#include "../glide/fxdrv.h"
+
 void
 FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b)
 {
@@ -109,6 +111,24 @@ FXcreateContext(XMesaVisual v, XMesaWindow w, XMesaContext c, XMesaBuffer b)
 }
 
 
+void FXdestroyContext( XMesaBuffer b )
+{
+   if (b && b->FXctx)
+      fxMesaDestroyContext(b->FXctx);
+}
+
+
+GLboolean FXmakeCurrent( XMesaBuffer b )
+{
+   if (b->FXctx) {
+      fxMesaMakeCurrent(b->FXctx);
+
+      return GL_TRUE;
+   }
+   return GL_FALSE;
+}
+
+
 /*
  * Read image from VooDoo frame buffer into X/Mesa's back XImage.
  */
@@ -118,7 +138,6 @@ static void FXgetImage( XMesaBuffer b )
    static unsigned short pixbuf[MAX_WIDTH];
    GLuint x, y;
    GLuint width, height;
-   XMesaContext xmesa = XMESA_CONTEXT(ctx);
 
 #ifdef XFree86Server
    x = b->frontxrb->pixmap->x;
index 7458c57415a3cbcab189a3896e983011f7fb94e2..f7d0316524db42039a9a8a83ee22111c53ae1ca1 100644 (file)
@@ -31,6 +31,10 @@ extern void FXcreateContext( XMesaVisual v,
                              XMesaContext c,
                              XMesaBuffer b );
 
+extern void FXdestroyContext( XMesaBuffer b );
+
+extern GLboolean FXmakeCurrent( XMesaBuffer b );
+
 extern GLboolean FXswapBuffers( XMesaBuffer b );
 
 #endif /* _XM_GLIDE_H_ */
index cae5c0d9bc54a4e777b0ccffb1affbaff31ed5bd..01988867476a2f97d87e15a3e89c1e3f9621dc30 100644 (file)
@@ -31,7 +31,6 @@
 #include "mtypes.h"
 #if defined(FX)
 #include "GL/fxmesa.h"
-#include "../glide/fxdrv.h"
 #include "xm_glide.h"
 #endif
 #ifdef XFree86Server