Hi,

I have a lot of threads in my application. One of them is used to provide
video data to application.
So, when new video frame is available I just put video data to queue and
make call
clutter_threads_add_idle_full(G_PRIORITY_HIGH,  /* I tries over priority
also, DEFAULT, LOW */
                                         videoFrameCB,
                                         handle, 0);

After that videoFrameCB is called and I'm getting first available video data
from queue
and do setup for texture using clutter_texture_set_from_rgb_data

static gboolean videoFrameCB(gpointer data)
{
    clutter_texture_set_from_rgb_data();
    return FALSE;
}

(clutter-gstream is working in the same way...)

All works fine, BUT some times texture(actor) never redraw it self. I just
see only the first frame on the screen.
I can move window outside desktop then move it back and texture will be
redrawning with latest available video frame.

Maybe clutter_texture_set_from_rgb_data is called too intensive? As i known
setting texture data on visible actor
will force to redraw stage, maybe problem here?
#define CLUTTER_PRIORITY_REDRAW         (G_PRIORITY_DEFAULT + 10)

Any ideas? Maybe I need to redraw stage directly after setting up texture?

Thanks,
Roman

Reply via email to