forked from enlightenment/efl
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:
parent
bdcd84cd2c
commit
5535c049cd
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue