+ bool ret;
+
+ // this layer doesn't draw anything onto the canvas we're
+ // rendering, but it uses straight blending, so we need to render
+ // the stuff under us and then blit transparent pixels over it
+ // using the appropriate 'amount'
+ if (straight_and_empty)
+ {
+ if ((ret = Context((context+1)).accelerated_render(surface,quality,renddesc,cb)))
+ {
+ Surface clearsurface;
+ clearsurface.set_wh(renddesc.get_w(),renddesc.get_h());
+ clearsurface.clear();
+
+ Surface::alpha_pen apen(surface->begin());
+ apen.set_alpha(composite->get_amount());
+ apen.set_blend_method(composite->get_blend_method());
+
+ clearsurface.blit_to(apen);
+ }
+ }
+ else
+ ret = (*context)->accelerated_render(context+1,surface,quality,renddesc, cb);
+
+#ifdef SYNFIG_PROFILE_LAYERS