forked from enlightenment/efl
evas drm: Implement support for outbuf_idle_flush
This commit is contained in:
parent
3dfec81be1
commit
0d63743be9
|
@ -83,5 +83,6 @@ void *_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx,
|
||||||
void _outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int y, int w, int h);
|
void _outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int y, int w, int h);
|
||||||
void _outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
|
void _outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
|
||||||
void _outbuf_damage_region_set(Outbuf *ob, Tilebuf_Rect *damage);
|
void _outbuf_damage_region_set(Outbuf *ob, Tilebuf_Rect *damage);
|
||||||
|
void _outbuf_idle_flush(Outbuf *ob);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -273,8 +273,6 @@ _outbuf_reconfigure(Outbuf *ob, int w, int h, int rotation, Outbuf_Depth depth)
|
||||||
(ob->depth == depth) && (ob->format == format))
|
(ob->depth == depth) && (ob->format == format))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
while (ecore_drm2_fb_release(ob->priv.output, EINA_TRUE));
|
|
||||||
|
|
||||||
ob->w = w;
|
ob->w = w;
|
||||||
ob->h = h;
|
ob->h = h;
|
||||||
ob->depth = depth;
|
ob->depth = depth;
|
||||||
|
@ -282,7 +280,7 @@ _outbuf_reconfigure(Outbuf *ob, int w, int h, int rotation, Outbuf_Depth depth)
|
||||||
ob->rotation = rotation;
|
ob->rotation = rotation;
|
||||||
ob->priv.unused_duration = 0;
|
ob->priv.unused_duration = 0;
|
||||||
|
|
||||||
/* TODO: idle flush */
|
_outbuf_idle_flush(ob);
|
||||||
}
|
}
|
||||||
|
|
||||||
Render_Output_Swap_Mode
|
Render_Output_Swap_Mode
|
||||||
|
@ -572,3 +570,25 @@ _outbuf_damage_region_set(Outbuf *ob, Tilebuf_Rect *damage)
|
||||||
|
|
||||||
ecore_drm2_fb_dirty(fb, rects, count);
|
ecore_drm2_fb_dirty(fb, rects, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_outbuf_idle_flush(Outbuf *ob)
|
||||||
|
{
|
||||||
|
while (ob->priv.pending)
|
||||||
|
{
|
||||||
|
RGBA_Image *img;
|
||||||
|
Eina_Rectangle *rect;
|
||||||
|
|
||||||
|
img = ob->priv.pending->data;
|
||||||
|
ob->priv.pending =
|
||||||
|
eina_list_remove_list(ob->priv.pending, ob->priv.pending);
|
||||||
|
|
||||||
|
rect = img->extended_info;
|
||||||
|
|
||||||
|
evas_cache_image_drop(&img->cache_entry);
|
||||||
|
|
||||||
|
eina_rectangle_free(rect);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (ecore_drm2_fb_release(ob->priv.output, EINA_TRUE));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue