derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e97a8cefe8a7f575c427d9bcadbd245e31c09465
commit e97a8cefe8a7f575c427d9bcadbd245e31c09465 Author: Derek Foreman <[email protected]> Date: Thu Jan 25 16:08:20 2018 -0600 ecore_wl2: Add buffer_age_get API and use it in surface code --- src/lib/ecore_wl2/Ecore_Wl2.h | 1 + src/lib/ecore_wl2/ecore_wl2_buffer.c | 8 ++++++++ src/lib/ecore_wl2/ecore_wl2_surface.c | 8 +++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index c67711181e..ebb8783ff7 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -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); diff --git a/src/lib/ecore_wl2/ecore_wl2_buffer.c b/src/lib/ecore_wl2/ecore_wl2_buffer.c index dfd63a8a1a..f9a633f629 100644 --- a/src/lib/ecore_wl2/ecore_wl2_buffer.c +++ b/src/lib/ecore_wl2/ecore_wl2_buffer.c @@ -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) { diff --git a/src/lib/ecore_wl2/ecore_wl2_surface.c b/src/lib/ecore_wl2/ecore_wl2_surface.c index 257f12c2fa..08a62076b5 100644 --- a/src/lib/ecore_wl2/ecore_wl2_surface.c +++ b/src/lib/ecore_wl2/ecore_wl2_surface.c @@ -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 --
