From: Taekyun Kim Date: Thu, 3 Sep 2015 08:16:15 +0000 (+0900) Subject: drm: Free resources when destruction X-Git-Tag: accepted/tizen/mobile/20151221.050925~34^2~172 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b46ef94f6bc391d5798b92644344f3c2e144cd41;p=platform%2Fcore%2Fuifw%2Fpepper.git drm: Free resources when destruction Change-Id: I2bbfbfac3835e5c8722df478d6f3a40c6595088b --- diff --git a/src/lib/drm/drm-common.c b/src/lib/drm/drm-common.c index 6af2906..89283eb 100644 --- a/src/lib/drm/drm-common.c +++ b/src/lib/drm/drm-common.c @@ -107,6 +107,8 @@ pepper_drm_create(pepper_compositor_t *compositor, struct udev *udev, const char drm->compositor = compositor; drm->fd = -1; + pepper_list_init(&drm->plane_list); + pepper_list_init(&drm->connector_list); /* Find primary GPU udev device. Usually card0. */ udev_device = find_primary_gpu(udev); @@ -165,7 +167,6 @@ pepper_drm_create(pepper_compositor_t *compositor, struct udev *udev, const char drm->resources = drmModeGetResources(drm->fd); PEPPER_CHECK(drm->resources, goto error, "drmModeGetResources() failed.\n"); - pepper_list_init(&drm->plane_list); drm_init_connectors(drm); drm_init_planes(drm); udev_device_unref(udev_device); @@ -185,22 +186,7 @@ pepper_drm_create(pepper_compositor_t *compositor, struct udev *udev, const char error: if (drm) - { - if (drm->resources) - drmModeFreeResources(drm->resources); - - if (drm->udev_event_source) - wl_event_source_remove(drm->udev_event_source); - - if (drm->drm_event_source) - wl_event_source_remove(drm->drm_event_source); - - if (drm->udev_monitor) - udev_monitor_unref(drm->udev_monitor); - - if (drm->fd != -1) - close(drm->fd); - } + pepper_drm_destroy(drm); if (udev_device) udev_device_unref(udev_device); @@ -229,5 +215,17 @@ pepper_drm_destroy(pepper_drm_t *drm) if (drm->resources) drmModeFreeResources(drm->resources); + if (drm->udev_event_source) + wl_event_source_remove(drm->udev_event_source); + + if (drm->drm_event_source) + wl_event_source_remove(drm->drm_event_source); + + if (drm->udev_monitor) + udev_monitor_unref(drm->udev_monitor); + + if (drm->fd != -1) + close(drm->fd); + free(drm); } diff --git a/src/lib/drm/drm-connector.c b/src/lib/drm/drm-connector.c index 6458b16..fc71e4f 100644 --- a/src/lib/drm/drm-connector.c +++ b/src/lib/drm/drm-connector.c @@ -49,8 +49,6 @@ drm_init_connectors(pepper_drm_t *drm) { int i; - pepper_list_init(&drm->connector_list); - for (i = 0; i < drm->resources->count_connectors; i++) { drm_connector_t *conn = calloc(1, sizeof(drm_connector_t));