Hi Julian, A small API change you'll need to know about. GUI_SEND_KAA_VO_OSD_INVALIDATE_RECT now takes an array of rectangles, where the last rectangle has a 0 width for a sentinel. So now you just send one invalidation each time you call evas_render(). This prevents a possible flicker if the vo thread displays a frame while multiple regions are getting updated to the OSD in another thread.
So your osd_render() function will look something like ... Evas_Rectangle *r; // array of rectangles Evas_List *updates, *p; int i; updates = evas_render_updates(evas); r = malloc(sizeof(Evas_Rectangle) * (evas_list_count(updates)+1)); for (i = 0, p = updates; p; p = p->next, i++) memcpy(&r[i], p->data, sizeof(Evas_Rectangle)); r[i].w = 0; // sentinel xine_gui_send_vo_data(stream, GUI_SEND_KAA_VO_OSD_INVALIDATE_RECT, (void *)r); free(r); (Not actually compiled or tested, but you get the idea.) Cheers, Jason.
signature.asc
Description: This is a digitally signed message part