From: SooChan Lim Date: Sun, 27 Apr 2025 08:28:11 +0000 (+0900) Subject: e_tizen_launch_effect: use e_view apis X-Git-Tag: accepted/tizen/unified/20250429.071401~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eee6bafd4303e69921f164025565b159a179f432;p=platform%2Fupstream%2Fenlightenment.git e_tizen_launch_effect: use e_view apis e_tizesn_launch_effect uses the e_view apis instead of evas_object apis Change-Id: I649533ed8818d757e83747b8773fbf5009fc3b83 --- diff --git a/src/bin/server/e_tizen_launch_effect.c b/src/bin/server/e_tizen_launch_effect.c index ba2105618b..1ab1a0f8a9 100644 --- a/src/bin/server/e_tizen_launch_effect.c +++ b/src/bin/server/e_tizen_launch_effect.c @@ -10,6 +10,8 @@ #include "e_service_indicator_intern.h" #include "e_utils_intern.h" #include "e_tizen_ws_shell_manager_intern.h" +#include "e_view_client_intern.h" +#include "e_comp_canvas_intern.h" #include @@ -49,17 +51,21 @@ struct _E_Tizen_Launch_Effect_Splash uint32_t angle; /* 0, 90, 180, 270 : rotation angle */ uint32_t pid; - Evas_Object *obj; /* launch screen image */ + E_View_Image *view_image; /* launch screen image_view */ + E_View_Edje *view_edje; /* launch screen edje_view */ + E_View *view; /* launch screen view */ E_Pixmap *ep; /* pixmap for launch screen client */ E_Client *ec; /* client for launch screen image */ Ecore_Timer *timeout; /* launch screen image hide timer */ Eina_Bool valid; /* validation check */ Eina_Bool replaced; - E_Comp_Object_Content_Type content_type; /* type of content */ - + E_View_Client_External_View_Type external_view_type; /* type of external view */ Eina_Bool custom_effect_callee; /* custom effect enabled */ const char *appid; + + struct wl_listener view_destroy_listener; + struct wl_listener view_hide_listener; }; typedef enum _Launch_Img_File_type @@ -124,15 +130,15 @@ static void _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) { E_Client *ec = NULL; - Evas_Object *obj = NULL; + E_View_Client *view_client; if (!tzlaunch_splash->valid) return; if (!tzlaunch_splash->ec) return; ec = tzlaunch_splash->ec; - obj = tzlaunch_splash->obj; + view_client = e_client_view_get(ec); - tzlaunch_splash->obj = NULL; + tzlaunch_splash->view = NULL; tzlaunch_splash->ec = NULL; tzlaunch_splash->valid = EINA_FALSE; if (tzlaunch_splash->timeout) ecore_timer_del(tzlaunch_splash->timeout); @@ -142,8 +148,6 @@ _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) tzlaunch_splash->appid = NULL; eina_stringshare_del(tzlaunch_splash->path); tzlaunch_splash->path = NULL; - - ELOGF("TZPOL", "Launchscreen hide | pid %d, replaced:%d, tzlaunch_pixmap:%p, ec_pixmap:%p", ec, tzlaunch_splash->pid, tzlaunch_splash->replaced, tzlaunch_splash->ep, ec->pixmap); @@ -157,7 +161,7 @@ _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) if (ec->visible) { ec->visible = EINA_FALSE; - e_view_client_hide(e_client_view_get(ec)); + e_view_client_hide(view_client); ec->ignored = EINA_TRUE; } @@ -173,9 +177,9 @@ _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) if (!e_util_strcmp("wl_pointer-cursor", ec->icccm.window_role)) { // if Launchscreen is replaced to cursor, than hide - e_comp_object_content_unset(ec->frame); + e_view_client_content_unset(view_client); + e_view_client_hide(view_client); ec->visible = EINA_FALSE; - e_view_client_hide(e_client_view_get(ec)); ec->ignored = EINA_TRUE; } else if (!tzlaunch_splash->replaced) @@ -189,19 +193,16 @@ _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) if (ec->first_mapped) { ELOGF("LAUNCH", "SHOW real win by replaced splash ec", ec); - e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e"); + e_view_client_signal_emit(view_client, "e,action,launch_real,done", "e"); e_client_launch_real_done_event_send(ec); } - e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch,done", "e"); + e_view_client_signal_emit(view_client, "e,action,launch,done", "e"); } } e_comp_launchscrn_ec_remove(ec); } - if (obj) - evas_object_unref(obj); - tzlaunch_splash->ep = NULL; tzlaunch_splash->replaced = EINA_FALSE; } @@ -224,21 +225,23 @@ _launch_effect_client_del(E_Client *ec) } static void -_launchscreen_splash_cb_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) +_launchscreen_splash_cb_view_destroy(struct wl_listener *listener, void *data) { - E_Tizen_Launch_Effect_Splash *tzlaunch_splash = data; + E_Tizen_Launch_Effect_Splash *tzlaunch_splash; - if ((tzlaunch_splash) && (tzlaunch_splash->obj == obj)) - tzlaunch_splash->obj = NULL; + tzlaunch_splash = wl_container_of(listener, tzlaunch_splash, view_destroy_listener); + + tzlaunch_splash->view_image = NULL; + tzlaunch_splash->view_edje = NULL; + tzlaunch_splash->view = NULL; } static void -_launchscreen_splash_cb_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) +_launchscreen_splash_cb_view_hide(struct wl_listener *listener, void *data) { - E_Tizen_Launch_Effect_Splash *tzlaunch_splash = data; + E_Tizen_Launch_Effect_Splash *tzlaunch_splash; - if ((tzlaunch_splash) && (tzlaunch_splash->obj == obj)) - _launch_splash_off(tzlaunch_splash); + tzlaunch_splash = wl_container_of(listener, tzlaunch_splash, view_hide_listener); } static Eina_Bool @@ -274,7 +277,10 @@ _launchscreen_splash_setup(E_Tizen_Launch_Effect_Splash *splash, struct wl_array *extra_config) { E_Client *ec = NULL; - E_Comp_Object_Content_Type content_type = 0; + E_View_Client *view_client; + E_View_Tree *view_tree_layer; + E_Canvas_Layer layer; + int comp_w = 0, comp_h = 0; EINA_SAFETY_ON_NULL_RETURN_VAL(splash->ec, EINA_FALSE); EINA_SAFETY_ON_NULL_RETURN_VAL(e_client_view_get(splash->ec), EINA_FALSE); @@ -297,67 +303,88 @@ _launchscreen_splash_setup(E_Tizen_Launch_Effect_Splash *splash, if (indicator) ELOGF("TZPOL", "Launchscreen setup | INDICATOR of the splash screen has benn deprecated. please check!", NULL); - int comp_w = 0, comp_h = 0; + view_client = e_client_view_get(ec); + layer = e_view_layer_index_get(e_view_client_view_get(view_client)); + view_tree_layer = e_canvas_layer_view_tree_get(e_comp_canvas_get(), layer); + if (splash->type == LAUNCH_IMG_FILE_TYPE_IMAGE) { - Evas_Load_Error err; - - content_type = E_COMP_OBJECT_CONTENT_TYPE_EXT_IMAGE; - splash->obj = evas_object_image_add(e_comp_evas_get()); - EINA_SAFETY_ON_NULL_RETURN_VAL(splash->obj, EINA_FALSE); - - evas_object_image_file_set(splash->obj, splash->path, NULL); - - err = evas_object_image_load_error_get(splash->obj); - if (err != EVAS_LOAD_ERROR_NONE) - { - ELOGF("TZPOL", - "Launchscreen setup | fail to load image %s : %s", - ec, splash->path, evas_load_error_str(err)); - evas_object_del(splash->obj); - splash->obj = NULL; - return EINA_FALSE; - } - - e_comp_size_get(&comp_w, &comp_h); - evas_object_image_fill_set(splash->obj, 0, 0, comp_w, comp_h); - evas_object_image_filled_set(splash->obj, EINA_TRUE); + splash->view_image = e_view_image_create(view_tree_layer); + EINA_SAFETY_ON_NULL_RETURN_VAL(splash->view_image, EINA_FALSE); + + splash->view = e_view_image_view_get(splash->view_image); + if (!e_view_image_file_set(splash->view_image, splash->path, NULL)) + { + ELOGF("TZPOL", "Launchscreen setup | fail to load image %s", + ec, splash->path); + + e_view_destroy(e_view_image_view_get(splash->view_image)); + splash->view_image = NULL; + splash->view = NULL; + + return EINA_FALSE; + } + + e_comp_size_get(&comp_w, &comp_h); + e_view_image_fill_set(splash->view_image, 0, 0, comp_w, comp_h); + e_view_image_filled_set(splash->view_image, EINA_TRUE); + + if (depth == 32) + ec->argb = EINA_TRUE; + else + ec->argb = EINA_FALSE; + + ELOGF("COMP", "Set argb:%d", ec, ec->argb); + + //set splash->view_edje to a content of view_client + if (!e_view_client_external_view_image_set(view_client, splash->view_image)) + { + ERR("Launchscreen setup | setting comp object content failed ec(%p) view_image(%p)", + ec, splash->view_image); + + return EINA_FALSE; + } + + ELOGF("TZPOL", "Launchscreen setup | set external_view_image(%p)", ec, splash->view_image); } else { - content_type = E_COMP_OBJECT_CONTENT_TYPE_EXT_EDJE; - splash->obj = edje_object_add(e_comp_evas_get()); - EINA_SAFETY_ON_NULL_RETURN_VAL(splash->obj, EINA_FALSE); - - if (!edje_object_file_set(splash->obj, splash->path, SPLASH_GROUP_NAME)) - { - Edje_Load_Error err; - - err = edje_object_load_error_get(splash->obj); - ELOGF("TZPOL", - "Launchscreen setup | fail to load edje %s : %s", - ec, splash->path, edje_load_error_str(err)); - evas_object_del(splash->obj); - splash->obj = NULL; - return EINA_FALSE; - - } - - evas_object_move(splash->obj, 0, 0); - e_comp_size_get(&comp_w, &comp_h); - evas_object_resize(splash->obj, comp_w, comp_h); - } + splash->view_edje = e_view_edje_create(view_tree_layer); + EINA_SAFETY_ON_NULL_RETURN_VAL(splash->view_edje, EINA_FALSE); - if (depth == 32) ec->argb = EINA_TRUE; - else ec->argb = EINA_FALSE; - ELOGF("COMP", "Set argb:%d", ec, ec->argb); + splash->view = e_view_edje_view_get(splash->view_edje); + if (!e_view_edje_file_set(splash->view_edje, splash->path, SPLASH_GROUP_NAME)) + { + ELOGF("TZPOL", "Launchscreen setup | fail to load edje %s", + ec, splash->path); - //set splash->obj to a content of ec->frame - if (!e_comp_object_content_set(ec->frame, splash->obj, content_type)) - { - ERR("Launchscreen setup | setting comp object content failed ec(%p) obj(%p)", - ec, splash->obj); - return EINA_FALSE; + e_view_destroy(e_view_edje_view_get(splash->view_edje)); + splash->view_edje = NULL; + splash->view = NULL; + + return EINA_FALSE; + } + + e_comp_size_get(&comp_w, &comp_h); + + e_view_edje_geometry_set(splash->view_edje, 0, 0, comp_w, comp_h); + + if (depth == 32) + ec->argb = EINA_TRUE; + else + ec->argb = EINA_FALSE; + + ELOGF("COMP", "Set argb:%d", ec, ec->argb); + + //set splash->view_edje to a content of view_client + if (!e_view_client_external_view_edje_set(view_client, splash->view_edje)) + { + ERR("Launchscreen setup | setting comp object content failed ec(%p) view_edje(%p)", + ec, splash->view_edje); + + return EINA_FALSE; + } + ELOGF("TZPOL", "Launchscreen setup | set external_view_edje(%p)", ec, splash->view_edje); } /* Post job of setup content_type */ @@ -391,26 +418,24 @@ _launchscreen_splash_setup(E_Tizen_Launch_Effect_Splash *splash, "Launchscreen setup | custom effect callee set appid(%s)", ec, splash->appid); } - else break; + else + break; } } } - //ref splash object - if (splash->obj) + // set event callback + if (splash->view) { - evas_object_ref(splash->obj); - - evas_object_event_callback_add(splash->obj, - EVAS_CALLBACK_DEL, - _launchscreen_splash_cb_del, splash); - evas_object_event_callback_add(splash->obj, - EVAS_CALLBACK_HIDE, - _launchscreen_splash_cb_hide, splash); + splash->view_destroy_listener.notify = _launchscreen_splash_cb_view_destroy; + e_view_event_listener_add(splash->view, E_VIEW_DESTROY, &splash->view_destroy_listener); + + splash->view_hide_listener.notify = _launchscreen_splash_cb_view_hide; + e_view_event_listener_add(splash->view, E_VIEW_HIDE, &splash->view_hide_listener); } splash->valid = EINA_TRUE; - splash->content_type = e_comp_object_content_type_get(ec->frame); + splash->external_view_type = e_view_client_external_view_type_get(view_client); return EINA_TRUE; } @@ -448,10 +473,10 @@ _tzlaunch_splash_iface_cb_launch(struct wl_client *client EINA_UNUSED, struct wl if (!res) { ERR("Launchscreen launch | Could not complete %s", __FUNCTION__); - if (tzlaunch_splash->obj) + if (tzlaunch_splash->view) { - evas_object_del(tzlaunch_splash->obj); - tzlaunch_splash->obj = NULL; + e_view_destroy(tzlaunch_splash->view); + tzlaunch_splash->view = NULL; } } } @@ -465,6 +490,8 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ int tw, th; int comp_w = 0, comp_h = 0; E_Comp *comp = e_comp_get(); + E_View_Client *view_client; + bool ret = false; tzlaunch_splash = wl_resource_get_user_data(res_tzlaunch_splash); EINA_SAFETY_ON_NULL_RETURN(tzlaunch_splash); @@ -489,9 +516,21 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ old_ec = tzlaunch_splash->ec; if (new_ec) { - if (e_comp_object_content_set(new_ec->frame, - tzlaunch_splash->obj, - tzlaunch_splash->content_type)) + view_client = e_client_view_get(new_ec); + + ERR("SOOLIM:%s %p, %p, %d, %d", __FUNCTION__, new_ec, + view_client, + tzlaunch_splash->external_view_type, + e_view_client_external_view_type_get(view_client)); + + if (tzlaunch_splash->external_view_type == E_VIEW_CLIENT_EXTERNAL_VIEW_TYPE_IMAGE) + ret = e_view_client_external_view_image_set(view_client, tzlaunch_splash->view_image); + else if (tzlaunch_splash->external_view_type == E_VIEW_CLIENT_EXTERNAL_VIEW_TYPE_EDJE) + ret = e_view_client_external_view_edje_set(view_client, tzlaunch_splash->view_edje); + else + ret = false; + + if (ret) { e_client_unignore(new_ec); new_ec->visible = EINA_TRUE; @@ -511,16 +550,15 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ e_service_launcher_callee_register(new_ec, tzlaunch_splash->appid, tzlaunch_splash->path, SPLASH_GROUP_NAME); } - e_view_client_show(e_client_view_get(new_ec)); + e_view_client_show(view_client); e_client_raise(new_ec); tzlaunch_splash->ec = new_ec; tzlaunch_splash->replaced = EINA_TRUE; ELOGF("TZPOL", - "Launchscreen client changed | old(%p) new(%p) using obj(%p)", - new_ec, - old_ec, new_ec, tzlaunch_splash->obj); + "Launchscreen client changed | old(%p) new(%p) using view(%p)", + new_ec, old_ec, new_ec, tzlaunch_splash->view); /* delete ec was created for launchscreen */ e_comp_launchscrn_ec_remove(old_ec); @@ -530,10 +568,12 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ tzlaunch_splash->ep = NULL; } else - ERR("Can't set external content for new_ec(%p)", new_ec); + ERR("Can't set external view for new_ec(%p), external_view_type(%d)", + new_ec, e_view_client_external_view_type_get(view_client)); } else { + view_client = e_client_view_get(old_ec); old_ec->ignored = EINA_FALSE; old_ec->visible = EINA_TRUE; if (old_ec->new_client) @@ -546,7 +586,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ e_service_launcher_callee_register(old_ec, tzlaunch_splash->appid, tzlaunch_splash->path, SPLASH_GROUP_NAME); } - e_view_client_show(e_client_view_get(old_ec)); + e_view_client_show(view_client); e_client_raise(old_ec); } @@ -598,13 +638,12 @@ _tzlaunch_splash_iface_cb_launch_v2(struct wl_client *client EINA_UNUSED, if (!res) { ERR("Launchscreen launch_v2 | Could not complete %s", __FUNCTION__); - if (tzlaunch_splash->obj) + if (tzlaunch_splash->view) { - evas_object_del(tzlaunch_splash->obj); - tzlaunch_splash->obj = NULL; + e_view_destroy(tzlaunch_splash->view); + tzlaunch_splash->view = NULL; } } - } static const struct tizen_launch_splash_interface _tzlaunch_splash_iface = @@ -670,10 +709,10 @@ _tzlaunch_splash_destroy(struct wl_resource *res_tzlaunch_splash) tzlaunch_splash = wl_resource_get_user_data(res_tzlaunch_splash); EINA_SAFETY_ON_NULL_RETURN(tzlaunch_splash); - if (tzlaunch_splash->obj) + if (tzlaunch_splash->view) { - evas_object_event_callback_del_full(tzlaunch_splash->obj, EVAS_CALLBACK_DEL, _launchscreen_splash_cb_del, tzlaunch_splash); - evas_object_event_callback_del_full(tzlaunch_splash->obj, EVAS_CALLBACK_HIDE, _launchscreen_splash_cb_hide, tzlaunch_splash); + e_view_event_listener_del(tzlaunch_splash->view, E_VIEW_HIDE, &tzlaunch_splash->view_hide_listener); + e_view_event_listener_del(tzlaunch_splash->view, E_VIEW_DESTROY, &tzlaunch_splash->view_destroy_listener); } _launch_splash_off(tzlaunch_splash); diff --git a/src/bin/windowmgr/services/e_service_launcher.c b/src/bin/windowmgr/services/e_service_launcher.c index 78c378a7fa..5be6e2147d 100644 --- a/src/bin/windowmgr/services/e_service_launcher.c +++ b/src/bin/windowmgr/services/e_service_launcher.c @@ -418,10 +418,12 @@ _launcher_prepare_send(E_Service_Launcher *lc, { uint32_t res_id = 0; - E_Comp_Object_Content_Type content_type = 0; + E_View_Client_External_View_Type externel_view_type; enum tws_service_launcher_target_type target_type = 0; const char *target_path = NULL, *target_group = NULL; - Evas_Object *content = NULL; + E_View_Image *external_view_image; + E_View_Edje *external_view_edje; + E_View_Client *view_client; struct wl_array info_array; int len; @@ -434,15 +436,17 @@ _launcher_prepare_send(E_Service_Launcher *lc, wl_array_init(&info_array); if (lc->direction == TWS_SERVICE_LAUNCHER_DIRECTION_FORWARD) { - content_type = e_comp_object_content_type_get(target_ec->frame); - switch (content_type) + view_client = e_client_view_get(target_ec); + externel_view_type = e_view_client_external_view_type_get(view_client); + + switch (externel_view_type) { - case E_COMP_OBJECT_CONTENT_TYPE_EXT_IMAGE: - content = e_comp_object_content_get(target_ec->frame); - EINA_SAFETY_ON_NULL_GOTO(content, fail); + case E_VIEW_CLIENT_EXTERNAL_VIEW_TYPE_IMAGE: + external_view_image = e_view_client_external_view_image_get(view_client); + EINA_SAFETY_ON_NULL_GOTO(external_view_image, fail); target_type = TWS_SERVICE_LAUNCHER_TARGET_TYPE_IMAGE; - evas_object_image_file_get(content, &target_path, NULL); + e_view_image_file_get(external_view_image, &target_path, NULL); EINA_SAFETY_ON_NULL_GOTO(target_path, fail); len = strlen(target_path) + 1; @@ -451,15 +455,15 @@ _launcher_prepare_send(E_Service_Launcher *lc, strncpy(p_char, target_path, len); break; - case E_COMP_OBJECT_CONTENT_TYPE_EXT_EDJE: - content = e_comp_object_content_get(target_ec->frame); - EINA_SAFETY_ON_NULL_GOTO(content, fail); + case E_VIEW_CLIENT_EXTERNAL_VIEW_TYPE_EDJE: + external_view_edje = e_view_client_external_view_edje_get(view_client); + EINA_SAFETY_ON_NULL_GOTO(external_view_edje, fail); target_type = TWS_SERVICE_LAUNCHER_TARGET_TYPE_EDJE; target_path = lc->target.splash_path; target_group = lc->target.splash_group; if ((!target_path) || (!target_group)) - edje_object_file_get(content, &target_path, &target_group); + e_view_edje_file_get(external_view_edje, &target_path, &target_group); EINA_SAFETY_ON_NULL_GOTO(target_path, fail); EINA_SAFETY_ON_NULL_GOTO(target_group, fail); @@ -1337,17 +1341,21 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED, { if (target_ec->launching == EINA_TRUE) { + E_View_Client *view_client; + view_client = e_client_view_get(target_ec); + ELOGF("COMP", "Un-Set launching flag..", target_ec); target_ec->launching = EINA_FALSE; if (target_ec->first_mapped) { E_Comp_Wl_Client_Data *target_cdata = e_client_cdata_get(target_ec); - ELOGF("LAUNCH", "SHOW real win (target->frame:%p, map:%d) by launcher service (win:0x%08zx, ec:%p).", target_ec, target_ec->frame, target_cdata->mapped, e_client_util_win_get(lc->ec), lc->ec); - e_view_client_signal_emit(e_client_view_get(target_ec), "e,action,launch_real,done", "e"); + ELOGF("LAUNCH", "SHOW real win (target->view_client:%p, map:%d) by launcher service (win:0x%08zx, ec:%p).", + target_ec, view_client, target_cdata->mapped, e_client_util_win_get(lc->ec), lc->ec); + e_view_client_signal_emit(view_client, "e,action,launch_real,done", "e"); e_client_launch_real_done_event_send(target_ec); } - e_comp_object_signal_emit(target_ec->frame, "e,action,launch,done", "e"); + e_view_client_signal_emit(view_client, "e,action,launch,done", "e"); } } } diff --git a/src/include/e_view_client.h b/src/include/e_view_client.h index 4e0968cd8b..3cb112eb01 100644 --- a/src/include/e_view_client.h +++ b/src/include/e_view_client.h @@ -24,9 +24,9 @@ typedef _E_View_Client_Signal_Cb E_View_Client_Signal_Cb; void e_view_client_alpha_set(E_View_Client *client, bool alpha); void e_view_client_color_get(E_View_Client *client, int *r, int *g, int *b, int *a); bool e_view_client_content_set(E_View_Client *client, E_View *content, E_Comp_Object_Content_Type type); +E_View_Client_External_View_Type e_view_client_external_view_type_get(E_View_Client *client); E_Comp_Object_Content_Type e_view_client_content_type_get(E_View_Client *client); bool e_view_client_external_view_image_set(E_View_Client *client, E_View_Image *view_image); -E_View_Client_External_View_Type e_view_client_external_view_type_get(E_View_Client *client); void e_view_client_damage(E_View_Client *client, int x, int y, int width, int height); void e_view_client_dirty(E_View_Client *client); E_View *e_view_client_effect_object_get(E_View_Client *client);