diff options
-rw-r--r-- | src/gallium/state_trackers/xorg/xvmc/surface.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/xorg/xvmc/surface.c b/src/gallium/state_trackers/xorg/xvmc/surface.c index 521bc42ba82..76bcf6385ed 100644 --- a/src/gallium/state_trackers/xorg/xvmc/surface.c +++ b/src/gallium/state_trackers/xorg/xvmc/surface.c @@ -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; |