diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2016-09-08 11:40:11 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2016-09-08 13:55:25 -0500 |
commit | cc29a25c47bf12b4a3fc94396cc5c39e6d3e7739 (patch) | |
tree | 12fd2b9843fc9a20c3fb509ea7de766c3397bd2a | |
parent | ace55231a3b92fd46ae3be9ef6b0379538fe7927 (diff) | |
download | efl-cc29a25c47bf12b4a3fc94396cc5c39e6d3e7739.tar.gz |
ecore_drm2: simplify API to get latest FB
What we've always wanted when getting the "current" FB is to get
the most recently submit one - this may be current, next, or pending.
Replace ecore_drm2_output_current_fb_get() with a function that gets the
most recent one - ecore_drm2_output_latest_fb_get(). Now callers don't
have to check the next buffer themselves first, and we don't have to
add an API for pending.
-rw-r--r-- | src/lib/ecore_drm2/Ecore_Drm2.h | 12 | ||||
-rw-r--r-- | src/lib/ecore_drm2/ecore_drm2_outputs.c | 6 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h index 013abb0a3f..ee5f54efa4 100644 --- a/src/lib/ecore_drm2/Ecore_Drm2.h +++ b/src/lib/ecore_drm2/Ecore_Drm2.h @@ -456,16 +456,20 @@ EAPI unsigned int ecore_drm2_output_crtc_get(Ecore_Drm2_Output *output); EAPI Ecore_Drm2_Fb *ecore_drm2_output_next_fb_get(Ecore_Drm2_Output *output); /** - * Return the current Ecore_Drm2_Fb used on a given output + * Return the most recently set Ecore_Drm2_Fb for a given output + * + * This may be the currently scanned out buffer, a buffer currently being + * flipped to scanout, or a buffer that has been submit but may not + * actually ever hit scanout at all. * * @param output * - * @return The current Ecore_Drm2_Fb used on this output, or NULL otherwise + * @return The latest Ecore_Drm2_Fb submit for this output, or NULL otherwise * * @ingroup Ecore_Drm2_Output_Group - * @since 1.18 + * @since 1.19 */ -EAPI Ecore_Drm2_Fb *ecore_drm2_output_current_fb_get(Ecore_Drm2_Output *output); +EAPI Ecore_Drm2_Fb *ecore_drm2_output_latest_fb_get(Ecore_Drm2_Output *output); /** * Set the next Ecore_Drm2_Fb to be used on a given output diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c index fda51f3cb9..fc7e2ebe6c 100644 --- a/src/lib/ecore_drm2/ecore_drm2_outputs.c +++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c @@ -945,10 +945,12 @@ ecore_drm2_output_next_fb_set(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb) } EAPI Ecore_Drm2_Fb * -ecore_drm2_output_current_fb_get(Ecore_Drm2_Output *output) +ecore_drm2_output_latest_fb_get(Ecore_Drm2_Output *output) { EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL); - return output->current; + if (output->pending) return output->pending; + if (output->current) return output->current; + return output->next; } EAPI void |