[2.4][vector]: Resource clean up when progressbar delete time.
authorwoochan lee <wc0917.lee@samsung.com>
Sat, 26 Sep 2015 03:17:54 +0000 (12:17 +0900)
committerJaehwan Kim <jae.hwan.kim@samsung.com>
Tue, 17 Nov 2015 05:15:44 +0000 (14:15 +0900)
Change-Id: I85df613619e8995f6b32e2d9d6459ae8d53bc8d9

src/lib/tizen_vector.c

index 38593919b813af4dba68d4c3ce69f036d9b942a3..bb861d71db20f0ad6c2f1248135d14e2e944ba1a 100644 (file)
@@ -1639,17 +1639,6 @@ progressbar_hide_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSE
    _pulse_stop(data);
 }
 
-static void
-progressbar_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj,
-                   void *event_info EINA_UNUSED)
-{
-   vg_progressbar *vd = evas_object_data_get(obj, vg_key);
-
-   _pulse_stop(vd);
-   evas_object_data_set(obj, vg_key, NULL);
-   free(vd);
-}
-
 static void
 transit_progressbar_normal_op1(Elm_Transit_Effect *effect, Elm_Transit *transit EINA_UNUSED, double progress)
 {
@@ -2023,6 +2012,24 @@ _progressbar_process_pulse_stop(void *data,
    _pulse_stop(data);
 }
 
+static void
+progressbar_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj,
+                   void *event_info EINA_UNUSED)
+{
+   vg_progressbar *vd = evas_object_data_get(obj, vg_key);
+
+   _pulse_stop(vd);
+   evas_object_data_set(obj, vg_key, NULL);
+   elm_object_signal_callback_del(vd->obj, "elm,state,pulse,start",
+                                  "*", _progressbar_process_pulse_start);
+   elm_object_signal_callback_del(vd->obj, "elm,state,pulse,stop",
+                                  "*", _progressbar_process_pulse_stop);
+   evas_object_del(vd->vg[0]);
+   evas_object_del(vd->vg[1]);
+   evas_object_del(vd->vg[2]);
+   free(vd);
+}
+
 static void
 _progressbar_process_style(vg_progressbar *vd)
 {
@@ -2068,7 +2075,23 @@ tizen_vg_progressbar_set(Elm_Progressbar *obj)
 
    //Apply vector ux only theme has "vector_ux"
    const char *str = elm_layout_data_get(obj, "vector_ux");
-   if (!str) return;
+   if (!str)
+     {
+        _pulse_stop(vd);
+        evas_object_data_set(vd->obj, vg_key, NULL);
+        evas_object_event_callback_del(vd->obj, EVAS_CALLBACK_DEL,
+                                       progressbar_del_cb);
+        evas_object_event_callback_del(vd->obj, EVAS_CALLBACK_HIDE,
+                                       progressbar_hide_cb);
+        elm_object_signal_callback_del(vd->obj, "elm,state,pulse,start",
+                                       "*", _progressbar_process_pulse_start);
+
+        elm_object_signal_callback_del(vd->obj, "elm,state,pulse,stop",
+                                       "*", _progressbar_process_pulse_stop);
+        free(vd);
+
+        return;
+     }
 
    if (!vd)
      {