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
|
static void
|
||||||
_outbuf_tick_schedule(int fd EINA_UNUSED, void *data)
|
_outbuf_tick_schedule(int fd EINA_UNUSED, void *data)
|
||||||
{
|
{
|
||||||
Outbuf *ob;
|
|
||||||
Outbuf_Fb *ofb;
|
|
||||||
|
|
||||||
ob = data;
|
|
||||||
if (!ticking) return;
|
if (!ticking) return;
|
||||||
|
|
||||||
ofb = ob->priv.current;
|
|
||||||
if (!ofb) return;
|
|
||||||
|
|
||||||
drmVBlank vbl =
|
drmVBlank vbl =
|
||||||
{
|
{
|
||||||
.request.type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT,
|
.request.type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT,
|
||||||
|
@ -382,6 +375,7 @@ _outbuf_fb_assign(Outbuf *ob)
|
||||||
{
|
{
|
||||||
if (ob->priv.ofb[i].valid)
|
if (ob->priv.ofb[i].valid)
|
||||||
{
|
{
|
||||||
|
ob->priv.ofb[i].busy = 0;
|
||||||
ob->priv.ofb[i].age = 0;
|
ob->priv.ofb[i].age = 0;
|
||||||
ob->priv.ofb[i].drawn = EINA_FALSE;
|
ob->priv.ofb[i].drawn = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue