This patch adds a small API that we can use to check if the current
video driver supports the usage of drmWaitVBlank. This check is
required for certain drivers (like vbox) which do not support
drmWaitVBlank and thus are causing our animators in ecore_evas to
freeze. We can now use this API from within Ecore_Evas to disable
vsync'd animators and fall back to timer based ones.
@feature
*/
EAPI Eina_Bool ecore_drm2_output_background_color_set(Ecore_Drm2_Output *output, uint64_t r, uint64_t g, uint64_t b, uint64_t a);
+/**
+ * Check if vblank is supported by the current video driver
+ *
+ * @param dev
+ *
+ * @return EINA_TRUE if vblank is supported, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Drm2_Device_Group
+ * @since 1.23 */
+EAPI Eina_Bool ecore_drm2_vblank_supported(Ecore_Drm2_Device *dev);
+
# endif
#endif
return device->fd;
}
+EAPI Eina_Bool
+ecore_drm2_vblank_supported(Ecore_Drm2_Device *dev)
+{
+ drmVBlank tmp;
+ int ret = 0;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(dev, EINA_FALSE);
+
+ memset(&tmp, 0, sizeof(drmVBlank));
+ tmp.request.type = DRM_VBLANK_RELATIVE;
+
+ ret = sym_drmWaitVBlank(dev->fd, &tmp);
+
+ if (ret != 0) return EINA_FALSE;
+ return EINA_TRUE;
+}
+
/* prevent crashing with old apps compiled against these functions */
EAPI void ecore_drm2_device_keyboard_cached_context_set(){};
EAPI void ecore_drm2_device_keyboard_cached_keymap_set(){};