fix memory leak by missing free pepper_efl_output_t. 00/68600/3
authorSeunghun Lee <shiin.lee@samsung.com>
Sun, 8 May 2016 10:06:35 +0000 (19:06 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Tue, 10 May 2016 03:54:18 +0000 (12:54 +0900)
Change-Id: Ia19b8ea716891e6e4f1fae7244f6b388cc7100e1

src/lib/compositor.c
src/lib/output.c
src/lib/output.h

index 648d6d8ef6e48fdf2161c28ffe9551ce92ab500a..aa8d14825fa30bc71061684239d99db4777ada9f 100644 (file)
@@ -93,7 +93,6 @@ pepper_efl_compositor_destroy(const char *name)
 {
    pepper_efl_comp_t *comp;
    pepper_efl_output_t *output;
-   Eina_List *l;
 
    if (!name)
      return EINA_FALSE;
@@ -107,8 +106,8 @@ pepper_efl_compositor_destroy(const char *name)
         return EINA_FALSE;
      }
 
-   EINA_LIST_FOREACH(comp->output_list, l, output)
-      pepper_output_destroy(output->base);
+   EINA_LIST_FREE(comp->output_list, output)
+      pepper_efl_output_destroy(output);
 
    pepper_efl_shell_shutdown();
 
@@ -240,6 +239,7 @@ create_output:
 
         return NULL;
      }
+   comp->output_list = eina_list_append(comp->output_list, output);
 
    eina_hash_add(_comp_hash, comp->name, comp);
 
index 1fd97c57a20cc29869dc44a23c381d0e34345407..bed564ca6200ee29d16b62b8af2e21369ae9eda2 100644 (file)
@@ -238,8 +238,6 @@ pepper_efl_output_create(pepper_efl_comp_t *comp, Evas_Object *win)
                            EVAS_CALLBACK_RENDER_POST,
                            _pepper_efl_output_cb_render_post, output);
 
-   comp->output_list = eina_list_append(comp->output_list, output);
-
    return output;
 
 err_plane:
@@ -251,3 +249,10 @@ err_output:
 err:
    return NULL;
 }
+
+void
+pepper_efl_output_destroy(pepper_efl_output_t *output)
+{
+   pepper_output_destroy(output->base);
+   free(output);
+}
index 6e836b22411dfd519668dd7dfc4d1c1c5e4f7d8e..6843f4c4545d500804bdab4695e6ac9e216e945a 100644 (file)
@@ -25,5 +25,6 @@ struct pepper_efl_output
 };
 
 pepper_efl_output_t  *pepper_efl_output_create(pepper_efl_comp_t *comp, Evas_Object *win);
+void                  pepper_efl_output_destroy(pepper_efl_output_t *output);
 
 #endif