evas-drm: Fix occasoinaly freezes

We need to continue to tick even if we can't find a buffer - otherwise
we'll stop updating forever.

We also need to reset buffer busy bits to 0 if we run out of buffers or
we'll never try to assign one.  (The page flip handler would eventually
clear the busy bit for the current buffer, but a few lines ago we just
set that to NULL so it will never happen...)
This commit is contained in:
Derek Foreman 2016-05-20 11:56:38 -05:00 committed by Chris Michael
parent bdcd84cd2c
commit 5535c049cd
1 changed files with 1 additions and 7 deletions

View File

@ -50,15 +50,8 @@ _outbuf_tick_source_set(Outbuf *ob)
static void
_outbuf_tick_schedule(int fd EINA_UNUSED, void *data)
{
Outbuf *ob;
Outbuf_Fb *ofb;
ob = data;
if (!ticking) return;
ofb = ob->priv.current;
if (!ofb) return;
drmVBlank vbl =
{
.request.type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT,
@ -382,6 +375,7 @@ _outbuf_fb_assign(Outbuf *ob)
{
if (ob->priv.ofb[i].valid)
{
ob->priv.ofb[i].busy = 0;
ob->priv.ofb[i].age = 0;
ob->priv.ofb[i].drawn = EINA_FALSE;
}