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