From 9753e0a3fa23ee045a31ebd46cd76ca3262cb7df Mon Sep 17 00:00:00 2001
From: Haithem Rahmani <haithem.rahmani@st.com>
Date: Mon, 22 Jul 2013 11:59:19 -0400
Subject: [PATCH] imageprovider: fix crash when doing multiple RenderTo()'s in
 the webp provider

Signed-off-by: Haithem Rahmani <haithem.rahmani@st.com>
---
 .../idirectfbimageprovider_webp.c                  |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/interfaces/IDirectFBImageProvider/idirectfbimageprovider_webp.c b/interfaces/IDirectFBImageProvider/idirectfbimageprovider_webp.c
index 06ec64c..fdce208 100644
--- a/interfaces/IDirectFBImageProvider/idirectfbimageprovider_webp.c
+++ b/interfaces/IDirectFBImageProvider/idirectfbimageprovider_webp.c
@@ -128,6 +128,8 @@ WebP_decode_image( IDirectFBImageProvider_WebP_data *data,
      data->config.output.is_external_memory = 1;
 
      ret = DFB_OK;
+     buffer->SeekTo( buffer, 0 );
+
      while (ret != DFB_EOF && buffer->HasData( buffer ) == DFB_OK) {
           ret = buffer->GetData( buffer, data->image_size, image, &read_size );
 
@@ -224,6 +226,9 @@ IDirectFBImageProvider_WebP_RenderTo( IDirectFBImageProvider *thiz,
 
      data->serial = &state.serial;
 
+     dfb_gfxcard_wait_serial( data->serial );
+     dfb_surface_unref( data->decode_surface );
+
      dfb_state_set_source(&state, NULL);
      dfb_state_set_destination(&state, NULL);
 
@@ -234,11 +239,6 @@ IDirectFBImageProvider_WebP_RenderTo( IDirectFBImageProvider *thiz,
           cb_result=data->base.render_callback( &r, data->base.render_callback_context );
      }
 
-     if (cb_result == DIRCR_OK) {
-          data->base.buffer->Release( data->base.buffer );
-          data->base.buffer = NULL;
-     }
-
      return DFB_OK;
 
 error:
@@ -247,9 +247,6 @@ error:
 
      dfb_surface_unref( data->decode_surface );
 
-     data->base.buffer->Release( data->base.buffer );
-     data->base.buffer = NULL;
-
      return ret;
 }
 
-- 
1.7.7.6

