#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 <tizen-launch-server-protocol.h>
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
_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);
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);
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;
}
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)
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;
}
}
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
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);
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 */
"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;
}
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;
}
}
}
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);
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;
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);
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)
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);
}
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 =
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);
{
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;
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;
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);
{
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");
}
}
}