hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=d72b0756d2a8a9381368b87f3231701a2db8c3a3

commit d72b0756d2a8a9381368b87f3231701a2db8c3a3
Author: ChunEon Park <[email protected]>
Date:   Tue Feb 4 22:20:40 2014 +0900

    edj_mgr - refactoring.
    
    removed edj_mgr instance handling outside of the edj_mgr.
    edj_mgr is also singleton instance.
    don't need to handle the instant unnecessarily.
---
 src/bin/edc_editor.c  |  3 +-
 src/bin/edj_mgr.c     | 95 +++++++++++++++++++++++++++------------------------
 src/bin/edj_viewer.c  |  2 +-
 src/bin/main.c        | 21 ++++++------
 src/bin/menu.c        |  4 +--
 src/include/common.h  |  1 -
 src/include/edj_mgr.h | 22 ++++++------
 src/include/menu.h    |  2 --
 8 files changed, 76 insertions(+), 74 deletions(-)

diff --git a/src/bin/edc_editor.c b/src/bin/edc_editor.c
index 81d949c..908c4fe 100644
--- a/src/bin/edc_editor.c
+++ b/src/bin/edc_editor.c
@@ -414,8 +414,7 @@ program_run(edit_data *ed, char *cur)
    char *program = parser_name_get(ed->pd, cur);
    if (program)
      {
-        edj_mgr *em = edj_mgr_get();
-        view_data *vd = edj_mgr_view_get(em, NULL);
+        view_data *vd = edj_mgr_view_get(NULL);
         view_program_run(vd, program);
         free(program);
      }
diff --git a/src/bin/edj_mgr.c b/src/bin/edj_mgr.c
index 2f6d873..635a91c 100644
--- a/src/bin/edj_mgr.c
+++ b/src/bin/edj_mgr.c
@@ -3,27 +3,49 @@
 
 const double VIEW_CACHING_TIME = 60 * 30;
 
-static edj_mgr *g_em;
-
 typedef struct edj_data_s
 {
    view_data *vd;
    Ecore_Timer *timer;
 } edj_data;
 
-struct edj_mgr_s
+typedef struct edj_mgr_s
 {
    Eina_List *edjs;
    edj_data *edj;
    Evas_Object *layout;
 
    Eina_Bool reload_need : 1;
-};
+} edj_mgr;
+
+static edj_mgr *g_em = NULL;
+
+static void
+view_del_cb(void *data)
+{
+   edj_mgr *em = g_em;
+   edj_data *edj = data;
+   em->edjs = eina_list_remove(em->edjs, edj);
+   if (edj->timer) ecore_timer_del(edj->timer);
+   if (em->edj == edj) em->edj = NULL;
+   free(edj);
+}
+
+static Eina_Bool
+view_del_timer_cb(void *data)
+{
+   view_data *vd = data;
+   edj_data *edj = view_data_get(vd);
+   edj->timer = NULL;
+   edj_mgr_view_del(vd);
+   return ECORE_CALLBACK_CANCEL;
+}
 
 void
-edj_mgr_clear(edj_mgr *em)
+edj_mgr_clear()
 {
    edj_data *edj;
+   edj_mgr *em = g_em;
 
    EINA_LIST_FREE(em->edjs, edj)
      {
@@ -36,36 +58,34 @@ edj_mgr_clear(edj_mgr *em)
    em->reload_need = EINA_FALSE;
 }
 
-edj_mgr *
+void
 edj_mgr_init(Evas_Object *parent)
 {
    edj_mgr *em = calloc(1, sizeof(edj_mgr));
+   g_em = em;
+
    Evas_Object *layout = elm_layout_add(parent);
    elm_layout_file_set(layout, EDJE_PATH, "viewer_layout");
    evas_object_show(layout);
    em->layout = layout;
-   g_em = em;
-   return em;
-}
-
-edj_mgr *
-edj_mgr_get()
-{
-   return g_em;
 }
 
 void
-edj_mgr_term(edj_mgr *em)
+edj_mgr_term()
 {
+   edj_mgr *em = g_em;
+
    edj_mgr_clear(em);
    evas_object_del(em->layout);
    free(em);
 }
 
 view_data *
-edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
+edj_mgr_view_get(Eina_Stringshare *group)
 {
-   if (!em) em = g_em;
+   edj_mgr *em = g_em;
+   if (!em) return NULL;
+
    if (!group && em->edj) return em->edj->vd;
 
    edj_data *edj;
@@ -79,8 +99,9 @@ edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
 }
 
 void
-edj_mgr_view_del(edj_mgr *em, view_data *vd)
+edj_mgr_view_del(view_data *vd)
 {
+   edj_mgr *em = g_em;
    edj_data *edj = view_data_get(vd);
    em->edjs = eina_list_remove(em->edjs, edj);
    if (edj->timer) ecore_timer_del(edj->timer);
@@ -88,20 +109,11 @@ edj_mgr_view_del(edj_mgr *em, view_data *vd)
    free(edj);
 }
 
-static void
-view_del_cb(void *data)
+view_data *
+edj_mgr_view_new(const char *group, stats_data *sd)
 {
    edj_mgr *em = g_em;
-   edj_data *edj = data;
-   em->edjs = eina_list_remove(em->edjs, edj);
-   if (edj->timer) ecore_timer_del(edj->timer);
-   if (em->edj == edj) em->edj = NULL;
-   free(edj);
-}
 
-view_data *
-edj_mgr_view_new(edj_mgr *em, const char *group, stats_data *sd)
-{
    edj_data *edj = calloc(1, sizeof(edj_data));
    if (!edj) return NULL;
 
@@ -113,26 +125,18 @@ edj_mgr_view_new(edj_mgr *em, const char *group, 
stats_data *sd)
      }
 
    edj->vd = vd;
-   edj_mgr_view_switch_to(em, vd);
+   edj_mgr_view_switch_to(vd);
 
    em->edjs = eina_list_append(em->edjs, edj);
 
    return vd;
 }
 
-static Eina_Bool
-view_del_timer_cb(void *data)
-{
-   view_data *vd = data;
-   edj_data *edj = view_data_get(vd);
-   edj->timer = NULL;
-   edj_mgr_view_del(g_em, vd);
-   return ECORE_CALLBACK_CANCEL;
-}
-
 view_data *
-edj_mgr_view_switch_to(edj_mgr *em, view_data *vd)
+edj_mgr_view_switch_to(view_data *vd)
 {
+   edj_mgr *em = g_em;
+
    if (em->edj && (em->edj->vd == vd)) return vd;
 
    //Switch views
@@ -178,19 +182,22 @@ edj_mgr_view_switch_to(edj_mgr *em, view_data *vd)
 }
 
 Evas_Object *
-edj_mgr_obj_get(edj_mgr *em)
+edj_mgr_obj_get()
 {
+   edj_mgr *em = g_em;
    return em->layout;
 }
 
 void
-edj_mgr_reload_need_set(edj_mgr *em, Eina_Bool reload)
+edj_mgr_reload_need_set(Eina_Bool reload)
 {
+   edj_mgr *em = g_em;
    em->reload_need = reload;
 }
 
 Eina_Bool
-edj_mgr_reload_need_get(edj_mgr *em)
+edj_mgr_reload_need_get()
 {
+   edj_mgr *em = g_em;
    return em->reload_need;
 }
diff --git a/src/bin/edj_viewer.c b/src/bin/edj_viewer.c
index e53781a..fbde0fc 100644
--- a/src/bin/edj_viewer.c
+++ b/src/bin/edj_viewer.c
@@ -44,7 +44,7 @@ file_set_timer_cb(void *data)
         return ECORE_CALLBACK_CANCEL;
      }
 
-   edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
+   edj_mgr_reload_need_set(EINA_TRUE);
 
    return ECORE_CALLBACK_RENEW;
 }
diff --git a/src/bin/main.c b/src/bin/main.c
index a73ef62..7d02a61 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -6,7 +6,6 @@
 typedef struct app_s
 {
    edit_data *ed;
-   edj_mgr *em;
    stats_data *sd;
 
    Eio_Monitor *edc_monitor;
@@ -312,7 +311,7 @@ main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void 
*ev)
    if (!ad->ctrl_pressed) return ECORE_CALLBACK_PASS_ON;
 
    //Scale up/down layout
-   view_data *vd = edj_mgr_view_get(ad->em, NULL);
+   view_data *vd = edj_mgr_view_get(NULL);
    double scale = config_view_scale_get();
 
    if (event->z < 0) scale += 0.1;
@@ -332,9 +331,9 @@ main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void 
*ev)
 static void
 edc_view_set(app_data *ad, stats_data *sd, Eina_Stringshare *group)
 {
-   view_data *vd = edj_mgr_view_get(ad->em, group);
-   if (vd) edj_mgr_view_switch_to(ad->em, vd);
-   else vd = edj_mgr_view_new(ad->em, group, sd);
+   view_data *vd = edj_mgr_view_get(group);
+   if (vd) edj_mgr_view_switch_to(vd);
+   else vd = edj_mgr_view_new(group, sd);
 
    if (!vd) return;
 
@@ -385,11 +384,11 @@ config_update_cb(void *data)
    view_dummy_toggle(VIEW_DATA, EINA_FALSE);
 
    //previous build was failed, Need to rebuild then reload the edj.
-   if (edj_mgr_reload_need_get(ad->em))
+   if (edj_mgr_reload_need_get())
      {
         build_edc();
         edit_changed_set(ad->ed, EINA_FALSE);
-        edj_mgr_clear(ad->em);
+        edj_mgr_clear();
         edc_view_set(ad, ad->sd, stats_group_name_get(ad->sd));
         if (ad->edc_monitor) eio_monitor_del(ad->edc_monitor);
         ad->edc_monitor = eio_monitor_add(config_edc_path_get());
@@ -400,7 +399,7 @@ config_update_cb(void *data)
         edit_changed_set(ad->ed, EINA_FALSE);
      }
 
-   view_scale_set(edj_mgr_view_get(ad->em, NULL), config_view_scale_get());
+   view_scale_set(edj_mgr_view_get(NULL), config_view_scale_get());
 }
 
 static void
@@ -511,8 +510,8 @@ elm_setup()
 static void
 edj_mgr_set(app_data *ad)
 {
-   ad->em = edj_mgr_init(base_layout_get());
-   base_left_view_set(edj_mgr_obj_get(ad->em));
+   edj_mgr_init(base_layout_get());
+   base_left_view_set(edj_mgr_obj_get());
 }
 
 static void
@@ -559,7 +558,7 @@ term(app_data *ad)
    build_term();
    menu_term();
    edit_term(ad->ed);
-   edj_mgr_term(ad->em);
+   edj_mgr_term();
    stats_term(ad->sd);
    base_gui_term();
    config_term();
diff --git a/src/bin/menu.c b/src/bin/menu.c
index b979a80..079e25e 100644
--- a/src/bin/menu.c
+++ b/src/bin/menu.c
@@ -675,7 +675,7 @@ edc_reload(menu_data *md, const char *edc_path)
 {
    config_edc_path_set(edc_path);
    edit_new(md->ed);
-   edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
+   edj_mgr_reload_need_set(EINA_TRUE);
    config_apply();
 }
 
@@ -769,7 +769,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, 
void *event_info)
         return;
      }
 
-   edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
+   edj_mgr_reload_need_set(EINA_TRUE);
    config_apply();
 
    fileselector_close(md);
diff --git a/src/include/common.h b/src/include/common.h
index e8b2073..921e2c2 100644
--- a/src/include/common.h
+++ b/src/include/common.h
@@ -9,7 +9,6 @@ typedef struct parser_s parser_data;
 typedef struct attr_value_s attr_value;
 typedef struct syntax_helper_s syntax_helper;
 typedef struct indent_s indent_data;
-typedef struct edj_mgr_s edj_mgr;
 
 #include "edc_editor.h"
 #include "menu.h"
diff --git a/src/include/edj_mgr.h b/src/include/edj_mgr.h
index 5034397..ab33df1 100644
--- a/src/include/edj_mgr.h
+++ b/src/include/edj_mgr.h
@@ -1,14 +1,14 @@
-edj_mgr *edj_mgr_get();
-edj_mgr *edj_mgr_init(Evas_Object *parent);
-void edj_mgr_term(edj_mgr *em);
-view_data * edj_mgr_view_new(edj_mgr *em, const char *group, stats_data *sd);
-view_data *edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group);
-Evas_Object * edj_mgr_obj_get(edj_mgr *em);
-view_data *edj_mgr_view_switch_to(edj_mgr *em, view_data *vd);
-void edj_mgr_view_del(edj_mgr *em, view_data *vd);
+#define VIEW_DATA edj_mgr_view_get(NULL)
 
-void edj_mgr_reload_need_set(edj_mgr *em, Eina_Bool reload);
-Eina_Bool edj_mgr_reload_need_get(edj_mgr *em);
-void edj_mgr_clear(edj_mgr *em);
+void edj_mgr_init(Evas_Object *parent);
+void edj_mgr_term();
+view_data * edj_mgr_view_new(const char *group, stats_data *sd);
+view_data *edj_mgr_view_get(Eina_Stringshare *group);
+Evas_Object * edj_mgr_obj_get();
+view_data *edj_mgr_view_switch_to(view_data *vd);
+void edj_mgr_view_del(view_data *vd);
+void edj_mgr_reload_need_set(Eina_Bool reload);
+Eina_Bool edj_mgr_reload_need_get();
+void edj_mgr_clear();
 
 
diff --git a/src/include/menu.h b/src/include/menu.h
index 9a6373c..bf48b14 100644
--- a/src/include/menu.h
+++ b/src/include/menu.h
@@ -1,5 +1,3 @@
-#define VIEW_DATA edj_mgr_view_get(NULL, NULL)
-
 void menu_init(edit_data *ed);
 void menu_term();
 void menu_toggle();

-- 


Reply via email to