drm: Bug fix
authorTaekyun Kim <tkq.kim@samsung.com>
Wed, 2 Sep 2015 07:44:43 +0000 (16:44 +0900)
committer손정훈 <jh13.son@samsung.com>
Wed, 2 Sep 2015 10:06:17 +0000 (19:06 +0900)
Change-Id: I23b33d9d6ee1480bbdc2a08e5add6d954f7bf580

src/lib/drm/drm-buffer.c
src/lib/drm/drm-common.c
src/lib/drm/drm-output.c

index 558b0a6..a2862ed 100644 (file)
@@ -99,11 +99,13 @@ init_buffer_gbm(drm_buffer_t *buffer, pepper_drm_t *drm, struct gbm_bo *bo)
 
     ret = drmModeAddFB2(drm->fd, buffer->w, buffer->h, gbm_bo_get_format(bo),
                         handles, strides, offsets, &buffer->id , 0);
-    PEPPER_CHECK(ret, return PEPPER_FALSE, "drmModeAddFB2() failed.\n");
 
-    ret = drmModeAddFB(drm->fd, buffer->w, buffer->h, 24, 32,
-                       buffer->stride, buffer->handle, &buffer->id);
-    PEPPER_CHECK(ret, return PEPPER_FALSE, "drmModeAddFB() failed.\n");
+    if (ret != 0)
+    {
+        ret = drmModeAddFB(drm->fd, buffer->w, buffer->h, 24, 32,
+                           buffer->stride, buffer->handle, &buffer->id);
+        PEPPER_CHECK(ret, return PEPPER_FALSE, "drmModeAddFB() failed.\n");
+    }
 
     return PEPPER_TRUE;
 }
index 9b95d9f..8533469 100644 (file)
@@ -211,10 +211,10 @@ error:
 PEPPER_API void
 pepper_drm_destroy(pepper_drm_t *drm)
 {
-    drm_connector_t *conn;
-    drm_plane_t     *plane;
+    drm_connector_t *conn, *next_conn;
+    drm_plane_t     *plane, *next_plane;
 
-    pepper_list_for_each(conn, &drm->connector_list, link)
+    pepper_list_for_each_safe(conn, next_conn, &drm->connector_list, link)
     {
         if (conn->output)
             drm_output_destroy(conn->output);
@@ -222,14 +222,14 @@ pepper_drm_destroy(pepper_drm_t *drm)
         drm_connector_destroy(conn);
     }
 
-    pepper_list_for_each(plane, &drm->plane_list, link)
+    pepper_list_for_each_safe(plane, next_plane, &drm->plane_list, link)
         drm_plane_destroy(plane);
 
-/*    if (drm->pixman_renderer)
+    if (drm->pixman_renderer)
         pepper_renderer_destroy(drm->pixman_renderer);
 
     if (drm->gl_renderer)
-        pepper_renderer_destroy(drm->gl_renderer);*/
+        pepper_renderer_destroy(drm->gl_renderer);
 
     if (drm->resources)
         drmModeFreeResources(drm->resources);
index 7aac7f9..b57ae14 100644 (file)
@@ -347,6 +347,8 @@ init_pixman_renderer(drm_output_t *output)
     }
 
     pixman_region32_init(&output->previous_damage);
+    output->render_type = DRM_RENDER_TYPE_PIXMAN;
+
     return;
 
 error:
@@ -398,6 +400,8 @@ init_gl_renderer(drm_output_t *output)
                                                              PEPPER_FORMAT_XRGB8888,
                                                              &native_visual_id);
     PEPPER_CHECK(output->render_target, goto error, "pepper_gl_renderer_create_target() failed.\n");
+    output->render_type = DRM_RENDER_TYPE_GL;
+
     return;
 
 error: