On Sun, Aug 28, 2011 at 12:13 PM, Younes Manton <youne...@gmail.com> wrote: > On Sat, Aug 27, 2011 at 7:58 PM, Maarten Lankhorst > <m.b.lankho...@gmail.com> wrote: >> The nouveau xvmc decoder doesn't need it. >> >> Signed-off-by: Maarten Lankhorst <m.b.lankho...@gmail.com> >> --- >> 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 79bd9c6..9cfec94 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; >> -- >> 1.7.6 >> >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev >> > > Pushed. Thanks. >
Oops, sorry, the above was referring to the xvmc test one. For this one maybe it's better if you implement create_buffer by just returning something non-null (like your decoder object), and ignoring it in set/destroy that way we don't have to have to repeat these checks in every state tracker. I don't feel strongly either way though. What do you think? _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev