Hi,

another patch - see subject...

It won't apply cleanly without the AYUV patch from my previous mail (but
I'm not saying that the AYUV patch introduced this bug).


Cheers,
Andre'

>From 7222e41f8ecb96bf8008ba3ded03e85fb600e2ac Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Andr=C3=A9=20Draszik?= <andre.dras...@st.com>
Date: Wed, 22 Jul 2009 02:06:49 +0100
Subject: [PATCH] (software rasterizer) buffer unlocking fixes in error paths
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Signed-off-by: André Draszik <andre.dras...@st.com>
---
 src/gfx/generic/generic.c |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/gfx/generic/generic.c b/src/gfx/generic/generic.c
index fda9cba..8909787 100644
--- a/src/gfx/generic/generic.c
+++ b/src/gfx/generic/generic.c
@@ -9029,7 +9029,7 @@ bool gAcquire( CardState *state, DFBAccelerationMask accel )
                break;
           default:
                D_ONCE("unsupported destination format");
-               return false;
+               goto error;
      }
 
      if (DFB_BLITTING_FUNCTION( accel )) {
@@ -9058,14 +9058,14 @@ bool gAcquire( CardState *state, DFBAccelerationMask accel )
                     if (dst_ycbcr &&
                         state->blittingflags & (DSBLIT_COLORIZE |
                                                 DSBLIT_SRC_PREMULTCOLOR))
-                         return false;
+                         goto error;
                case DSPF_A1:
                case DSPF_A4:
                case DSPF_A8:
                     if (DFB_PLANAR_PIXELFORMAT(gfxs->dst_format) &&
                         gfxs->dst_format != DSPF_YUV444P &&
                         state->blittingflags & DSBLIT_DST_COLORKEY)
-                         return false;
+                         goto error;
                     break;
                case DSPF_I420:
                case DSPF_YV12:
@@ -9073,19 +9073,19 @@ bool gAcquire( CardState *state, DFBAccelerationMask accel )
                case DSPF_NV21:
                case DSPF_NV16:
                     if (state->blittingflags & DSBLIT_SRC_COLORKEY)
-                         return false;
+                         goto error;
                case DSPF_YUY2:
                case DSPF_UYVY:
                case DSPF_AYUV:
                     if (dst_ycbcr) {
                          if (state->blittingflags & (DSBLIT_COLORIZE     |
                                                      DSBLIT_SRC_PREMULTCOLOR))
-                              return false;
+                              goto error;
 
                          if (DFB_PLANAR_PIXELFORMAT(gfxs->dst_format) &&
                              gfxs->dst_format != DSPF_YUV444P &&
                              state->blittingflags & DSBLIT_DST_COLORKEY)
-                              return false;
+                              goto error;
                     }
                     src_ycbcr = true;
                     break;
@@ -9094,18 +9094,18 @@ bool gAcquire( CardState *state, DFBAccelerationMask accel )
                case DSPF_VYU:
                     if (dst_ycbcr) {
                          if (state->blittingflags & (DSBLIT_SRC_PREMULTCOLOR))
-                              return false;
+                              goto error;
 
                          if (DFB_PLANAR_PIXELFORMAT(gfxs->dst_format) &&
                              gfxs->dst_format != DSPF_YUV444P &&
                              state->blittingflags & DSBLIT_DST_COLORKEY)
-                              return false;
+                              goto error;
                     }
                     src_ycbcr = true;
                     break;
                default:
                     D_ONCE("unsupported source format");
-                    return false;
+                    goto error;
           }
      }
 
@@ -9675,8 +9675,7 @@ bool gAcquire( CardState *state, DFBAccelerationMask accel )
                }
           default:
                D_ONCE("unimplemented drawing/blitting function");
-               gRelease( state );
-               return false;
+               goto error;
      }
 
      *funcs = NULL;
@@ -9684,6 +9683,11 @@ bool gAcquire( CardState *state, DFBAccelerationMask accel )
      dfb_state_update( state, state->flags & CSF_SOURCE_LOCKED );
 
      return true;
+
+error:
+     gRelease( state );
+     return false;
+
 }
 
 void gRelease( CardState *state )
-- 
1.6.0.4

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to