From: Doyoun Kang Date: Fri, 21 Apr 2023 08:16:01 +0000 (+0900) Subject: add GetVisibleInfo_v3 method X-Git-Tag: accepted/tizen/unified/20230425.130135~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b24f4ae5457fbbd29d7a5c4862b693128a1b0aac;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-processmgr.git add GetVisibleInfo_v3 method Change-Id: Ibe7bd20a54b11bbb2e8e0a582ee9c7dda7c28cf9 --- diff --git a/src/e_mod_processmgr.c b/src/e_mod_processmgr.c index d67ec74..e3d1cdb 100644 --- a/src/e_mod_processmgr.c +++ b/src/e_mod_processmgr.c @@ -16,12 +16,15 @@ static Ecore_Event_Handler *_dbus_init_done = NULL; #define VALUE_TYPE_FOR_VISIBLE_WINS "uiiiibibiiiib" // pid, geo(x,y,w,h), is_transformed, alpha, opaque, visibility, focused, is_mapped, layer, name #define VALUE_TYPE_FOR_VISIBLE_WINS_V2 "iiiiibbiibbis" +// pid, geo(x,y,w,h), win angle, target angle, is_transformed, alpha, opaque, visibility, focused, is_mapped, layer, name +#define VALUE_TYPE_FOR_VISIBLE_WINS_V3 "iiiiiiibbiibbis" static void _e_processmgr_process_action_send(int pid, E_Process_Action act); static void _e_processmgr_cb_hook_action_change(void *d EINA_UNUSED, E_Process *epro, void *user); static Eldbus_Message* _e_processmgr_process_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg); static Eldbus_Message *_e_processmgr_visible_window_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg); static Eldbus_Message *_e_processmgr_visible_window_info_v2_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg); +static Eldbus_Message *_e_processmgr_visible_window_info_v3_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg); static Eldbus_Message *_e_processmgr_focus_pid_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg); static Eina_Bool _e_processmgr_cb_client_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event); @@ -31,6 +34,7 @@ static const Eldbus_Method _e_processmgr_methods[] = { { "GetProcStatus", ELDBUS_ARGS({"i", "pid"}), ELDBUS_ARGS({"i","process status"}, {"i", "focused"}), _e_processmgr_process_info_get, 0 }, { "GetVisibleWinInfo", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_VISIBLE_WINS")", "array of window"}), _e_processmgr_visible_window_info_get, 0 }, { "GetVisibleWinInfo_v2", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_VISIBLE_WINS_V2")", "array of window"}), _e_processmgr_visible_window_info_v2_get, 0 }, + { "GetVisibleWinInfo_v3", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_VISIBLE_WINS_V3")", "array of window"}), _e_processmgr_visible_window_info_v3_get, 0 }, { "GetFocusProc", NULL, ELDBUS_ARGS({"i", "pid"}), _e_processmgr_focus_pid_get, 0 }, { NULL, NULL, NULL, NULL, 0 } }; @@ -156,14 +160,18 @@ _msg_window_info_append(Eldbus_Message_Iter *iter, int ver) E_Client *ec; E_Client *p_ec; E_Client *a_ec; + E_Zone *zone; Evas_Object *o; int noti_level; Eina_Bool is_opaque; + int zone_angle, win_angle; EINA_SAFETY_ON_NULL_RETURN_VAL(iter, EINA_FALSE); if (ver == 2) eldbus_message_iter_arguments_append(iter, "a("VALUE_TYPE_FOR_VISIBLE_WINS_V2")", &array_of_win); + else if (ver == 3) + eldbus_message_iter_arguments_append(iter, "a("VALUE_TYPE_FOR_VISIBLE_WINS_V3")", &array_of_win); else // default version : 1 eldbus_message_iter_arguments_append(iter, "a("VALUE_TYPE_FOR_VISIBLE_WINS")", &array_of_win); @@ -196,6 +204,12 @@ _msg_window_info_append(Eldbus_Message_Iter *iter, int ver) // color depth is_alpha = ec->argb; + // current angle + win_angle = ec->e.state.rot.ang.curr; + + // zone angle + zone_angle = ec->zone ? ec->zone->rot.curr : 0; + // visibility visibility = ec->visibility.obscured; @@ -267,6 +281,15 @@ _msg_window_info_append(Eldbus_Message_Iter *iter, int ver) (struct_of_win, VALUE_TYPE_FOR_VISIBLE_WINS_V2, pid, x, y, w, h, is_transformed, is_alpha, is_opaque, visibility, focused, is_mapped, ec->layer, e_client_util_name_get(ec) ?: "NO NAME"); } + else if (ver == 3) + { + eldbus_message_iter_arguments_append(array_of_win, "("VALUE_TYPE_FOR_VISIBLE_WINS_V3")", &struct_of_win); + + // pid, geo(x,y,w,h), win angle, target angle, is_transformed, alpha, opaque, visibility, focused, is_mapped, layer, name + eldbus_message_iter_arguments_append + (struct_of_win, VALUE_TYPE_FOR_VISIBLE_WINS_V3, + pid, x, y, w, h, win_angle, zone_angle, is_transformed, is_alpha, is_opaque, visibility, focused, is_mapped, ec->layer, e_client_util_name_get(ec) ?: "NO NAME"); + } else { eldbus_message_iter_arguments_append(array_of_win, "("VALUE_TYPE_FOR_VISIBLE_WINS")", &struct_of_win); @@ -317,6 +340,23 @@ _e_processmgr_visible_window_info_v2_get(const Eldbus_Service_Interface *iface E return reply; } +static Eldbus_Message * +_e_processmgr_visible_window_info_v3_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) +{ + Eldbus_Message *reply = NULL; + Eina_Bool ret; + + ELOGF("PROCESSMGR", "Get request - GetVisibleWinInfo_v3", NULL); + + reply = eldbus_message_method_return_new(msg); + EINA_SAFETY_ON_NULL_RETURN_VAL(reply, NULL); + + ret = _msg_window_info_append(eldbus_message_iter_get(reply), 3); + ELOGF("PROCESSMGR", "Reply result:%d", NULL, ret); + + return reply; +} + static Eldbus_Message * _e_processmgr_focus_pid_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg) {