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 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);
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue