ecore_wl2: Add buffer_age_get API and use it in surface code

This commit is contained in:
Derek Foreman 2018-01-25 16:08:20 -06:00
parent ebcce5aefa
commit e97a8cefe8
3 changed files with 14 additions and 3 deletions

View File

@ -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 void ecore_wl2_buffer_destroy(Ecore_Wl2_Buffer *b);
EAPI Eina_Bool ecore_wl2_buffer_busy_get(Ecore_Wl2_Buffer *buffer); EAPI Eina_Bool ecore_wl2_buffer_busy_get(Ecore_Wl2_Buffer *buffer);
EAPI void ecore_wl2_buffer_busy_set(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 Ecore_Wl2_Surface *ecore_wl2_surface_create(Ecore_Wl2_Window *win, Eina_Bool alpha);
EAPI void ecore_wl2_surface_destroy(Ecore_Wl2_Surface *surface); EAPI void ecore_wl2_surface_destroy(Ecore_Wl2_Surface *surface);

View File

@ -688,6 +688,14 @@ ecore_wl2_buffer_busy_set(Ecore_Wl2_Buffer *buffer)
buffer->busy = EINA_TRUE; 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 * static Ecore_Wl2_Buffer *
_ecore_wl2_buffer_partial_create(int w, int h, Eina_Bool alpha) _ecore_wl2_buffer_partial_create(int w, int h, Eina_Bool alpha)
{ {

View File

@ -84,14 +84,16 @@ _evas_dmabuf_surface_wait(Ecore_Wl2_Surface *s)
Ecore_Wl2_Buffer *b, *best = NULL; Ecore_Wl2_Buffer *b, *best = NULL;
Eina_List *l; Eina_List *l;
int best_age = -1; int best_age = -1;
int age;
EINA_LIST_FOREACH(s->buffers, l, b) EINA_LIST_FOREACH(s->buffers, l, b)
{ {
if (ecore_wl2_buffer_busy_get(b)) continue; 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 = 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) EINA_LIST_FOREACH(s->buffers, l, b)
b->age++; b->age++;
return s->current->age; return ecore_wl2_buffer_age_get(s->current);
} }
static void static void