Fix/improve framebuffer object reference counting.
[mesa.git] / src / mesa / drivers / x11 / xm_line.c
index f60ffa65eb9f88fffbcdff58933023c207a41938..c31054251599db1a0c9c0f4fff32e7f71c85416f 100644 (file)
@@ -117,8 +117,11 @@ void xmesa_choose_point( GLcontext *ctx )
 /**********************************************************************/
 
 
+#if CHAN_BITS == 8
+
+
 #define GET_XRB(XRB)  struct xmesa_renderbuffer *XRB = \
-   (struct xmesa_renderbuffer *) ctx->DrawBuffer->_ColorDrawBuffers[0][0]->Wrapped
+   xmesa_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[0][0]->Wrapped)
 
 
 /*
@@ -533,6 +536,7 @@ void xmesa_choose_point( GLcontext *ctx )
 
 
 
+
 #ifndef XFree86Server
 /**
  * Draw fast, XOR line with XDrawLine in front color buffer.
@@ -547,8 +551,7 @@ xor_line(GLcontext *ctx, const SWvertex *vert0, const SWvertex *vert1)
    XMesaContext xmesa = XMESA_CONTEXT(ctx);
    XMesaDisplay *dpy = xmesa->xm_visual->display;
    XMesaGC gc = xmesa->xm_buffer->gc;
-   struct xmesa_renderbuffer *xrb = (struct xmesa_renderbuffer *)
-      ctx->DrawBuffer->_ColorDrawBuffers[0][0];
+   GET_XRB(xrb);
    unsigned long pixel = xmesa_color_to_pixel(ctx,
                                               vert1->color[0], vert1->color[1],
                                               vert1->color[2], vert1->color[3],
@@ -567,6 +570,9 @@ xor_line(GLcontext *ctx, const SWvertex *vert0, const SWvertex *vert1)
 #endif /* XFree86Server */
 
 
+#endif /* CHAN_BITS == 8 */
+
+
 /**
  * Return pointer to line drawing function, or NULL if we should use a
  * swrast fallback.
@@ -574,11 +580,15 @@ xor_line(GLcontext *ctx, const SWvertex *vert0, const SWvertex *vert1)
 static swrast_line_func
 get_line_func(GLcontext *ctx)
 {
+#if CHAN_BITS == 8
    XMesaContext xmesa = XMESA_CONTEXT(ctx);
    SWcontext *swrast = SWRAST_CONTEXT(ctx);
    int depth = GET_VISUAL_DEPTH(xmesa->xm_visual);
    struct xmesa_renderbuffer *xrb;
 
+   if (CHAN_BITS != 8)
+      return NULL;
+
    if ((ctx->DrawBuffer->_ColorDrawBufferMask[0]
         & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_BACK_LEFT)) == 0)
       return (swrast_line_func) NULL;
@@ -589,8 +599,7 @@ get_line_func(GLcontext *ctx)
    if (ctx->Line.StippleFlag)             return (swrast_line_func) NULL;
    if (swrast->_RasterMask & MULTI_DRAW_BIT) return (swrast_line_func) NULL;
 
-   xrb = (struct xmesa_renderbuffer *)
-      ctx->DrawBuffer->_ColorDrawBuffers[0][0]->Wrapped;
+   xrb = xmesa_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[0][0]->Wrapped);
 
    if (xrb->ximage
        && swrast->_RasterMask==DEPTH_BIT
@@ -663,6 +672,7 @@ get_line_func(GLcontext *ctx)
    }
 #endif /* XFree86Server */
 
+#endif /* CHAN_BITS == 8 */
    return (swrast_line_func) NULL;
 }