diff options
Diffstat (limited to 'src/lib/ecore_drm/ecore_drm.c')
-rw-r--r-- | src/lib/ecore_drm/ecore_drm.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/ecore_drm/ecore_drm.c b/src/lib/ecore_drm/ecore_drm.c index 02dd76edbb..d52cf863e9 100644 --- a/src/lib/ecore_drm/ecore_drm.c +++ b/src/lib/ecore_drm/ecore_drm.c @@ -108,15 +108,18 @@ log_err: /** * Shutdown the Ecore_Drm library. - * + * * @return The number of times the library has been initialized without * being shutdown. 0 is returned if an error occurs. - * + * * @ingroup Ecore_Drm_Init_Group */ -EAPI int +EAPI int ecore_drm_shutdown(void) { + Eina_List *lists; + Ecore_Drm_Device *dev; + /* _ecore_drm_init_count should not go below zero. */ if (_ecore_drm_init_count < 1) { @@ -127,6 +130,13 @@ ecore_drm_shutdown(void) /* if we are still in use, decrement init count and get out */ if (--_ecore_drm_init_count != 0) return _ecore_drm_init_count; + /* free the list of devices */ + lists = eina_list_clone(ecore_drm_devices_get()); + EINA_LIST_FREE(lists, dev) + { + ecore_drm_device_free(dev); + } + /* close eeze */ eeze_shutdown(); |