xorg/xvmc: Only set decode buffer when available
authorMaarten Lankhorst <m.b.lankhorst@gmail.com>
Sat, 27 Aug 2011 23:58:23 +0000 (01:58 +0200)
committerYounes Manton <younes.m@gmail.com>
Mon, 29 Aug 2011 23:39:22 +0000 (19:39 -0400)
The nouveau xvmc decoder doesn't need it.

Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
src/gallium/state_trackers/xorg/xvmc/surface.c

index 521bc42..76bcf63 100644 (file)
@@ -111,7 +111,8 @@ SetDecoderStatus(XvMCSurfacePrivate *surface)
    context_priv = surface->context->privData;
    decoder = context_priv->decoder;
 
-   decoder->set_decode_buffer(decoder, surface->decode_buffer);
+   if (surface->decode_buffer)
+      decoder->set_decode_buffer(decoder, surface->decode_buffer);
    decoder->set_decode_target(decoder, surface->video_buffer);
 
    for (i = 0; i < 2; ++i) {
@@ -181,7 +182,8 @@ Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surfac
    if (!surface_priv)
       return BadAlloc;
 
-   surface_priv->decode_buffer = context_priv->decoder->create_buffer(context_priv->decoder);
+   if (context_priv->decoder->create_buffer)
+      surface_priv->decode_buffer = context_priv->decoder->create_buffer(context_priv->decoder);
    surface_priv->video_buffer = pipe->create_video_buffer
    (
       pipe, PIPE_FORMAT_NV12, context_priv->decoder->chroma_format,
@@ -496,7 +498,8 @@ Status XvMCDestroySurface(Display *dpy, XvMCSurface *surface)
       SetDecoderStatus(surface_priv);
       context_priv->decoder->end_frame(context_priv->decoder);
    }
-   context_priv->decoder->destroy_buffer(context_priv->decoder, surface_priv->decode_buffer);
+   if (surface_priv->decode_buffer)
+      context_priv->decoder->destroy_buffer(context_priv->decoder, surface_priv->decode_buffer);
    surface_priv->video_buffer->destroy(surface_priv->video_buffer);
    FREE(surface_priv);
    surface->privData = NULL;