ecore_drm2: make flip to NULL buffer mean something

When triple buffering we'll have a buffer in ecore_drm2's "next" position.
Until now we've had to query it from the engine then try to re post it.

Also, when generating ticks we need to flip to the current buffer when no
changes have been made to get another callback.

Now a NULL fb to fb_flip will either flip to next, if available, or current
if there's nothing new to flip to.
This commit is contained in:
Derek Foreman 2016-09-07 22:13:34 -05:00
parent 95a00b8e49
commit 3be2630a30
1 changed files with 8 additions and 1 deletions

View File

@ -228,18 +228,25 @@ ecore_drm2_fb_flip(Ecore_Drm2_Fb *fb, Ecore_Drm2_Output *output)
{
int ret = 0;
EINA_SAFETY_ON_NULL_RETURN_VAL(fb, -1);
EINA_SAFETY_ON_NULL_RETURN_VAL(output, -1);
EINA_SAFETY_ON_NULL_RETURN_VAL(output->current_mode, -1);
if (!output->enabled) return -1;
if (!fb) fb = output->next;
/* So we can generate a tick by flipping to the current fb */
if (!fb) fb = output->current;
if (output->next)
{
output->next->busy = EINA_FALSE;
output->next = NULL;
}
/* If we don't have an fb to set by now, BAIL! */
if (!fb) return -1;
if ((!output->current) ||
(output->current->stride != fb->stride))
{