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:
parent
95a00b8e49
commit
3be2630a30
|
@ -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))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue