forked from enlightenment/efl
ecore_wl2: Add buffer_age_get API and use it in surface code
This commit is contained in:
parent
ebcce5aefa
commit
e97a8cefe8
|
@ -2009,6 +2009,7 @@ EAPI void ecore_wl2_buffer_unlock(Ecore_Wl2_Buffer *b);
|
|||
EAPI void ecore_wl2_buffer_destroy(Ecore_Wl2_Buffer *b);
|
||||
EAPI Eina_Bool ecore_wl2_buffer_busy_get(Ecore_Wl2_Buffer *buffer);
|
||||
EAPI void ecore_wl2_buffer_busy_set(Ecore_Wl2_Buffer *buffer);
|
||||
EAPI int ecore_wl2_buffer_age_get(Ecore_Wl2_Buffer *buffer);
|
||||
|
||||
EAPI Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
|
||||
EAPI void ecore_wl2_surface_destroy(Ecore_Wl2_Surface *surface);
|
||||
|
|
|
@ -688,6 +688,14 @@ ecore_wl2_buffer_busy_set(Ecore_Wl2_Buffer *buffer)
|
|||
buffer->busy = EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
ecore_wl2_buffer_age_get(Ecore_Wl2_Buffer *buffer)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(buffer, 0);
|
||||
|
||||
return buffer->age;
|
||||
}
|
||||
|
||||
static Ecore_Wl2_Buffer *
|
||||
_ecore_wl2_buffer_partial_create(int w, int h, Eina_Bool alpha)
|
||||
{
|
||||
|
|
|
@ -84,14 +84,16 @@ _evas_dmabuf_surface_wait(Ecore_Wl2_Surface *s)
|
|||
Ecore_Wl2_Buffer *b, *best = NULL;
|
||||
Eina_List *l;
|
||||
int best_age = -1;
|
||||
int age;
|
||||
|
||||
EINA_LIST_FOREACH(s->buffers, l, b)
|
||||
{
|
||||
if (ecore_wl2_buffer_busy_get(b)) continue;
|
||||
if (b->age > best_age)
|
||||
age = ecore_wl2_buffer_age_get(b);
|
||||
if (age > best_age)
|
||||
{
|
||||
best = b;
|
||||
best_age = b->age;
|
||||
best_age = age;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,7 +134,7 @@ _evas_dmabuf_surface_assign(Ecore_Wl2_Surface *s)
|
|||
EINA_LIST_FOREACH(s->buffers, l, b)
|
||||
b->age++;
|
||||
|
||||
return s->current->age;
|
||||
return ecore_wl2_buffer_age_get(s->current);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue