summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-09-08 11:40:11 -0500
committerDerek Foreman <derekf@osg.samsung.com>2016-09-08 13:55:25 -0500
commitcc29a25c47bf12b4a3fc94396cc5c39e6d3e7739 (patch)
tree12fd2b9843fc9a20c3fb509ea7de766c3397bd2a
parentace55231a3b92fd46ae3be9ef6b0379538fe7927 (diff)
downloadefl-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.h12
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_outputs.c6
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