From 1b5c54d92425b0d6b087fdb290038678d582c914 Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Sat, 17 May 2014 11:01:07 +0200 Subject: [PATCH] make terminology foward compatible with upcoming efl/elm 1.10 --- src/bin/app_server.c | 84 ++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 34 deletions(-) diff --git a/src/bin/app_server.c b/src/bin/app_server.c index 17bba433..ec9056f8 100644 --- a/src/bin/app_server.c +++ b/src/bin/app_server.c @@ -6,7 +6,23 @@ #include "termio.h" #include "app_server_eet.h" -#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR >= 8) +#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR >= 10) + +#ifndef ELM_APP_SERVER_VIEW_EVENT_CLOSED +#define ELM_APP_SERVER_VIEW_EVENT_CLOSED ELM_APP_SERVER_VIEW_EV_CLOSED +#endif + +#ifndef ELM_APP_SERVER_VIEW_EVENT_RESUMED +#define ELM_APP_SERVER_VIEW_EVENT_RESUMED ELM_APP_SERVER_VIEW_EV_RESUMED +#endif + +#ifndef ELM_APP_SERVER_VIEW_EVENT_SAVE +#define ELM_APP_SERVER_VIEW_EVENT_SAVE ELM_APP_SERVER_VIEW_EV_SAVE +#endif + +#ifndef ELM_APP_SERVER_EVENT_TERMINATE +#define ELM_APP_SERVER_EVENT_TERMINATE ELM_APP_SERVER_EV_TERMINATE +#endif static Elm_App_Server *_server = NULL; static Eina_Bool _ignore_term_add = EINA_FALSE; @@ -31,13 +47,13 @@ void app_server_term_del(Evas_Object *term) { Elm_App_Server_View *view; - const char *id; + const char *id = NULL; view = evas_object_data_del(term, "app_view"); if (!view) return; - eo_do(view, elm_app_server_view_id_get(&id)); + eo_do(view, id = elm_app_server_view_id_get()); terminology_item_term_entries_del(views_eet, id); eo_del(view); @@ -49,7 +65,7 @@ _view_closed_cb(void *data, Eo *view, void *event_info EINA_UNUSED) { Term *term = data; - const char *id; + const char *id = NULL; if (term) { @@ -61,7 +77,7 @@ _view_closed_cb(void *data, Eo *view, term_object); } - eo_do(view, elm_app_server_view_id_get(&id)); + eo_do(view, id = elm_app_server_view_id_get()); terminology_item_term_entries_del(views_eet, id); eo_del(view); @@ -92,7 +108,7 @@ _view_save_cb(void *data EINA_UNUSED, { char dir[PATH_MAX]; Evas_Object *term_object; - const char *id; + const char *id = NULL; Term_Item *term_eet; term_object = main_term_evas_object_get(data); @@ -104,7 +120,7 @@ _view_save_cb(void *data EINA_UNUSED, evas_object_data_del(term_object, "app_view"); termio_cwd_get(term_object, dir, sizeof(dir)); - eo_do(view, elm_app_server_view_id_get(&id)); + eo_do(view, id = elm_app_server_view_id_get()); term_eet = terminology_item_term_entries_get(views_eet, id); if (term_eet) @@ -126,8 +142,8 @@ _view_resumed_cb(void *data, Eo *view, { Term *term = data; Win *wn; - Eina_List **wins; - const char *title, *id; + Eina_List **wins = NULL; + const char *title, *id = NULL; Evas_Object *term_object; const char *dir = NULL; Term_Item *term_eet; @@ -138,9 +154,8 @@ _view_resumed_cb(void *data, Eo *view, return EINA_TRUE; } - eo_do(_server, eo_base_data_get("wins", (void **)&wins)); - wn = eina_list_data_get(*wins); - if (!wn) + eo_do(_server, wins = eo_key_data_get("wins")); + if (!wins || !(wn = eina_list_data_get(*wins))) { ERR("There is no window open"); return EINA_TRUE; @@ -148,7 +163,7 @@ _view_resumed_cb(void *data, Eo *view, term = eina_list_data_get(main_win_terms_get(wn)); - eo_do(view, elm_app_server_view_id_get(&id)); + eo_do(view, id = elm_app_server_view_id_get()); term_eet = terminology_item_term_entries_get(views_eet, id); if (term_eet) { @@ -179,15 +194,15 @@ _view_resumed_cb(void *data, Eo *view, eo_do(view, elm_app_server_view_title_set(title), elm_app_server_view_window_set( main_win_evas_object_get(main_term_win_get(term))), - eo_event_callback_del(ELM_APP_SERVER_VIEW_EV_CLOSED, _view_closed_cb, + eo_event_callback_del(ELM_APP_SERVER_VIEW_EVENT_CLOSED, _view_closed_cb, NULL), - eo_event_callback_del(ELM_APP_SERVER_VIEW_EV_RESUMED, _view_resumed_cb, + eo_event_callback_del(ELM_APP_SERVER_VIEW_EVENT_RESUMED, _view_resumed_cb, NULL), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_CLOSED, _view_closed_cb, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_CLOSED, _view_closed_cb, term), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_RESUMED, _view_resumed_cb, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_RESUMED, _view_resumed_cb, term), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_SAVE, _view_save_cb, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_SAVE, _view_save_cb, term)); evas_object_smart_callback_add(term_object, "title,change", @@ -245,14 +260,14 @@ app_server_win_del_request_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Eina_List **wins; + Eina_List **wins = NULL; if (!_server) return; - eo_do(_server, eo_base_data_get("wins", (void **)&wins)); + eo_do(_server, wins = eo_key_data_get("wins")); - if (eina_list_count(*wins) > 1) + if (wins && eina_list_count(*wins) > 1) return; /* @@ -283,11 +298,11 @@ _app_server_term_add(Term *term) elm_app_server_view_window_set( main_win_evas_object_get(main_term_win_get(term))), elm_app_server_view_resume(), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_CLOSED, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_CLOSED, _view_closed_cb, term), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_RESUMED, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_RESUMED, _view_resumed_cb, term), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_SAVE, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_SAVE, _view_save_cb, term)); evas_object_smart_callback_add(term_object, "title,change", @@ -321,11 +336,10 @@ _app_server_create_view_cb(Elm_App_Server *server, const Eina_Value *args EINA_U { Win *wn; Term *term; - Eina_List **wins; + Eina_List **wins = NULL; - eo_do(server, eo_base_data_get("wins", (void **)&wins)); - wn = eina_list_data_get(*wins); - if (!wn) + eo_do(server, wins = eo_key_data_get("wins")); + if (!wins || !(wn = eina_list_data_get(*wins))) { ERR("There is no window open"); *error_name = eina_stringshare_add("There is no window open"); @@ -355,12 +369,14 @@ void app_server_init(Eina_List **wins, Eina_Bool restore_views) { Win *wn; - Eina_Iterator *views; + Eina_Iterator *views = NULL; Elm_App_Server_View *view; const char *title; char lock_file[PATH_MAX], eet_dir[PATH_MAX]; FILE *f; + if (!wins) + return; wn = eina_list_data_get(*wins); if (!wn) return; @@ -392,9 +408,9 @@ app_server_init(Eina_List **wins, Eina_Bool restore_views) _app_server_create_view_cb)); eo_do(_server, elm_app_server_title_set(title), - eo_base_data_set("wins", wins, NULL), - elm_app_server_views_get(&views), - eo_event_callback_add(ELM_APP_SERVER_EV_TERMINATE, + eo_key_data_set("wins", wins, NULL), + views = elm_app_server_views_get(), + eo_event_callback_add(ELM_APP_SERVER_EVENT_TERMINATE, _server_terminate_cb, wins)); //views saved EINA_ITERATOR_FOREACH(views, view) @@ -402,9 +418,9 @@ app_server_init(Eina_List **wins, Eina_Bool restore_views) if (restore_views) ecore_idler_add(_restore_view_cb, view); eo_do(view, - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_CLOSED, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_CLOSED, _view_closed_cb, NULL), - eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_RESUMED, + eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_RESUMED, _view_resumed_cb, NULL)); } eina_iterator_free(views);