On Fri, Feb 27, 2009 at 12:20 AM, Cakemeister <cakemeis...@comcast.net> wrote: > My first problem is that the previous frame doesn't appear to erase when the > current frame is drawn. This leaves artifacts on the screen. I must be > missing something in the process of rendering each frame. > Swfdec does not erase any previous content. You have to do it yourself. This is because Swfdec support an alpha channel. So you are supposed to prepare the background. If you do not want to use an alpha channel, you should prerender the image with the Flash file's background color, that you can query with swfdec_player_get_background_color().
> My second problem is that my application that uses this code is very slow. > Is there some kind of "invalid rect" that I can use to just transfer the > portion of the frame that has changed to the final OpenGL texture? I'm > getting really slow frame rates, like 4 fps. > Yes, the general idea is that you connect to the "invalidate" signal, keep track of the regions that change and only render those. The general way of doing this is to collect the invalid rectangles and clipping the cairo context before rendering. It'd look something like this in code: for (i = 0; i < n_rects; i++) { cairo_rectangle (cr, rects[i].x, rects[i].y, rects[i].w, rects[i].h); } cairo_clip (cr); /* clear background here */ swfdec_player_render (player, cr); This will not get you above 4fps when a lot of stuff changes in frames (you gotta wait for a supported cairo GL backend, people seem to be hacking on those), but for the average case, it saves a lot of performance. Cheers, Benjamin _______________________________________________ Swfdec mailing list Swfdec@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/swfdec