forked from enlightenment/efl
ecore_wl2: Add buffer_age_set and use it in surface code
This commit is contained in:
parent
e97a8cefe8
commit
dce3fcda86
|
@ -2010,6 +2010,7 @@ 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 int ecore_wl2_buffer_age_get(Ecore_Wl2_Buffer *buffer);
|
||||||
|
EAPI void ecore_wl2_buffer_age_set(Ecore_Wl2_Buffer *buffer, int age);
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -696,6 +696,13 @@ ecore_wl2_buffer_age_get(Ecore_Wl2_Buffer *buffer)
|
||||||
return buffer->age;
|
return buffer->age;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void ecore_wl2_buffer_age_set(Ecore_Wl2_Buffer *buffer, int age)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(buffer);
|
||||||
|
|
||||||
|
buffer->age = 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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,7 +106,7 @@ _evas_dmabuf_surface_wait(Ecore_Wl2_Surface *s)
|
||||||
|
|
||||||
best = ecore_wl2_buffer_create(ewd, s->w, s->h, s->alpha);
|
best = ecore_wl2_buffer_create(ewd, s->w, s->h, s->alpha);
|
||||||
/* Start at -1 so it's age is incremented to 0 for first draw */
|
/* Start at -1 so it's age is incremented to 0 for first draw */
|
||||||
best->age = -1;
|
ecore_wl2_buffer_age_set(best, -1);
|
||||||
s->buffers = eina_list_append(s->buffers, best);
|
s->buffers = eina_list_append(s->buffers, best);
|
||||||
}
|
}
|
||||||
return best;
|
return best;
|
||||||
|
@ -128,7 +128,7 @@ _evas_dmabuf_surface_assign(Ecore_Wl2_Surface *s)
|
||||||
*/
|
*/
|
||||||
WRN("No free DMAbuf buffers, dropping a frame");
|
WRN("No free DMAbuf buffers, dropping a frame");
|
||||||
EINA_LIST_FOREACH(s->buffers, l, b)
|
EINA_LIST_FOREACH(s->buffers, l, b)
|
||||||
b->age = 0;
|
ecore_wl2_buffer_age_set(b, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EINA_LIST_FOREACH(s->buffers, l, b)
|
EINA_LIST_FOREACH(s->buffers, l, b)
|
||||||
|
@ -149,7 +149,7 @@ _evas_dmabuf_surface_post(Ecore_Wl2_Surface *s, Eina_Rectangle *rects, unsigned
|
||||||
|
|
||||||
s->current = NULL;
|
s->current = NULL;
|
||||||
ecore_wl2_buffer_busy_set(b);
|
ecore_wl2_buffer_busy_set(b);
|
||||||
b->age = 0;
|
ecore_wl2_buffer_age_set(b, 0);
|
||||||
|
|
||||||
ecore_wl2_window_buffer_attach(s->wl2_win, b->wl_buffer, 0, 0, EINA_FALSE);
|
ecore_wl2_window_buffer_attach(s->wl2_win, b->wl_buffer, 0, 0, EINA_FALSE);
|
||||||
ecore_wl2_window_damage(s->wl2_win, rects, count);
|
ecore_wl2_window_damage(s->wl2_win, rects, count);
|
||||||
|
|
Loading…
Reference in New Issue