}
}
-static void
-_e_info_client_screen_opaque_region(int argc, char **argv)
-{
- const char *option;
- Eldbus_Message *msg;
- Eldbus_Message_Iter *itr;
- Eldbus_Pending *p;
-
- if (argc < 3 || argc > 7)
- {
- printf("Error Check Args\n");
- goto usage;
- }
-
- option = argv[2];
- if (eina_streq(option, "show") ||
- eina_streq(option, "hide"))
- {
- uint32_t show = !!eina_streq(option, "show");
-
- msg = eldbus_proxy_method_call_new(e_info_client.proxy, "screen_opaque_region_show");
- itr = eldbus_message_iter_get(msg);
- eldbus_message_iter_basic_append(itr, 'i', show);
-
- p = eldbus_proxy_send(e_info_client.proxy, msg,
- _e_info_client_eldbus_message_cb,
- NULL, -1);
- if (!p)
- {
- printf("Failed to call eldbus_proxy_send");
- return;
- }
-
- ecore_main_loop_begin();
- }
- else if (eina_streq(option, "geom"))
- {
- uint32_t x, y, w, h;
- if (argc != 7)
- {
- printf("Error Check Args\n");
- goto usage;
- }
-
- x = atoi(argv[3]);
- y = atoi(argv[4]);
- w = atoi(argv[5]);
- h = atoi(argv[6]);
-
- msg = eldbus_proxy_method_call_new(e_info_client.proxy, "screen_opaque_region_geom_set");
- itr = eldbus_message_iter_get(msg);
- eldbus_message_iter_basic_append(itr, 'i', x);
- eldbus_message_iter_basic_append(itr, 'i', y);
- eldbus_message_iter_basic_append(itr, 'i', w);
- eldbus_message_iter_basic_append(itr, 'i', h);
-
- p = eldbus_proxy_send(e_info_client.proxy, msg,
- _e_info_client_eldbus_message_cb,
- NULL, -1);
- if (!p)
- {
- printf("Failed to call eldbus_proxy_send");
- return;
- }
-
- ecore_main_loop_begin();
- }
- else if (eina_streq(option, "color"))
- {
- uint32_t r, g, b, a;
- if (argc != 7)
- {
- printf("Error Check Args\n");
- goto usage;
- }
-
- r = atoi(argv[3]);
- g = atoi(argv[4]);
- b = atoi(argv[5]);
- a = atoi(argv[6]);
-
- msg = eldbus_proxy_method_call_new(e_info_client.proxy, "screen_opaque_region_color_set");
- itr = eldbus_message_iter_get(msg);
- eldbus_message_iter_basic_append(itr, 'i', r);
- eldbus_message_iter_basic_append(itr, 'i', g);
- eldbus_message_iter_basic_append(itr, 'i', b);
- eldbus_message_iter_basic_append(itr, 'i', a);
-
- p = eldbus_proxy_send(e_info_client.proxy, msg,
- _e_info_client_eldbus_message_cb,
- NULL, -1);
- if (!p)
- {
- printf("Failed to call eldbus_proxy_send");
- return;
- }
-
- ecore_main_loop_begin();
- }
- else
- {
- // not supported log
- printf("Error Check Args\n");
- goto usage;
- }
-
- return;
-
-usage:
- printf(": enlightenment_info -screen_opaque_region show\n");
- printf(": enlightenment_info -screen_opaque_region hide\n");
- printf(": enlightenment_info -screen_opaque_region geom x y w h\n");
- printf(": enlightenment_info -screen_opaque_region color r g b a\n");
-}
-
typedef struct _ProcInfo
{
const char *option;
"Enable/Disable specific log",
_e_info_client_log_control
},
- {
- "screen_opaque_region",
- "[show|hide|geom|color]",
- "control zone opaque region",
- _e_info_client_screen_opaque_region
- },
};
ProcInfo procs_to_input[] =
#include "e_hints_intern.h"
#include "e_comp_input_intern.h"
#include "e_alpha_mask_rect_intern.h"
-#include "e_tizen_screen_manager_intern.h"
#include <tbm_bufmgr.h>
#include <tbm_surface.h>
int background;
} E_Info_Transform;
-typedef struct _E_Info_Screen_Opaque_Region {
- struct wl_listener screen_opaque_region_change;
-
- Eina_List *region_rect_list;
- Eina_List *region_eo_list;
-
- struct {
- uint32_t r, g, b, a;
- } region_rect_color;
-
-} E_Info_Screen_Opaque_Region;
-
static E_Info_Server e_info_server;
static Eina_List *e_info_transform_list = NULL;
-static E_Info_Screen_Opaque_Region e_info_screen_opaque_region;
static Eina_List *e_info_dump_hdlrs;
static char *e_info_dump_path;
return reply;
}
-static void
-_e_info_server_screen_opaque_region_show_rect(Evas_Object *obj, Eina_Rectangle geom, int r, int g, int b, int a)
-{
- if (!obj) return;
-
- evas_object_color_set(obj, r, g, b, a);
- evas_object_geometry_set(obj, geom.x, geom.y, geom.w, geom.h);
- evas_object_show(obj);
-
- e_comp_render_queue();
-}
-
-static Evas_Object *
-_e_info_server_screen_opaque_region_eo_new(Eina_Rectangle geom)
-{
- Evas_Object *obj;
- obj = evas_object_rectangle_add(e_comp->evas);
- if (!obj) return NULL;
-
- evas_object_name_set(obj, "opaque_region");
- evas_object_layer_set(obj, E_LAYER_CLIENT_NOTIFICATION_NORMAL);
- _e_info_server_screen_opaque_region_show_rect(obj, geom,
- e_info_screen_opaque_region.region_rect_color.r,
- e_info_screen_opaque_region.region_rect_color.g,
- e_info_screen_opaque_region.region_rect_color.b,
- e_info_screen_opaque_region.region_rect_color.a);
-
- return obj;
-}
-
-static void
-_e_info_server_screen_opaque_region_show()
-{
- Eina_List *l = NULL, *new_objs = NULL;
- Evas_Object *obj;
- Eina_Rectangle *r;
-
- if (!e_info_screen_opaque_region.region_rect_list) return;
-
- l = e_info_screen_opaque_region.region_eo_list;
- EINA_LIST_FREE(e_info_screen_opaque_region.region_rect_list, r)
- {
- if (l)
- {
- // can reuse obj
- obj = eina_list_data_get(l);
- _e_info_server_screen_opaque_region_show_rect(obj, *r,
- e_info_screen_opaque_region.region_rect_color.r,
- e_info_screen_opaque_region.region_rect_color.g,
- e_info_screen_opaque_region.region_rect_color.b,
- e_info_screen_opaque_region.region_rect_color.a);
- }
- else
- {
- // need create new obj
- obj = _e_info_server_screen_opaque_region_eo_new(*r);
- new_objs = eina_list_append(new_objs, obj);
- }
-
- eina_rectangle_free(r);
- l = eina_list_next(l);
- }
-
- EINA_LIST_FREE(new_objs, obj)
- e_info_screen_opaque_region.region_eo_list = eina_list_append(e_info_screen_opaque_region.region_eo_list, obj);
-}
-
-static void
-_e_info_server_screen_opaque_region_free()
-{
- Evas_Object *obj;
-
- if (!e_info_screen_opaque_region.region_eo_list) return;
-
- EINA_LIST_FREE(e_info_screen_opaque_region.region_eo_list, obj)
- {
- evas_object_hide(obj);
- evas_object_del(obj);
- }
-
- e_comp_render_queue();
-}
-
-static void
-_e_info_server_screen_opaque_region_rect_set(Eina_Rectangle geom)
-{
- Eina_Rectangle *rect = eina_rectangle_new(geom.x, geom.y, geom.w, geom.h);
- e_info_screen_opaque_region.region_rect_list = eina_list_append(e_info_screen_opaque_region.region_rect_list, rect);
-}
-
-static void
-_e_info_server_screen_opaque_region_rect_free()
-{
- Eina_Rectangle *r;
- EINA_LIST_FREE(e_info_screen_opaque_region.region_rect_list, r)
- eina_rectangle_free(r);
-}
-
-static void
-_e_info_server_cb_screen_opaque_region_change(struct wl_listener *listener, void *data)
-{
- Eina_Rectangle *r;
- Eina_Iterator *it;
- Eina_Tiler *opaque_region;
-
- opaque_region = (Eina_Tiler *)data;
- EINA_SAFETY_ON_NULL_RETURN(opaque_region);
-
- ELOGF("WIN_INFO", "opaque_region_changed", NULL);
-
- _e_info_server_screen_opaque_region_rect_free();
- it = eina_tiler_iterator_new(opaque_region);
- EINA_ITERATOR_FOREACH(it, r)
- {
- ELOGF("WIN_INFO", "\topaque_region_changed, r(%d, %d, %d, %d)", NULL, r->x, r->y, r->w, r->h);
- _e_info_server_screen_opaque_region_rect_set(*r);
- }
- eina_iterator_free(it);
-
- _e_info_server_screen_opaque_region_show();
-}
-
-
-static Eldbus_Message *
-_e_info_server_cb_screen_opaque_region_show(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- Eina_Tiler *opaque_region;
- Eina_Iterator *it;
- Eina_Rectangle *r;
- uint32_t show;
-
- if (!eldbus_message_arguments_get(msg, "i", &show))
- {
- ERR("Error getting arguments.");
- return reply;
- }
-
- if (show)
- {
- if (!e_info_screen_opaque_region.screen_opaque_region_change.notify)
- {
- e_info_screen_opaque_region.screen_opaque_region_change.notify = _e_info_server_cb_screen_opaque_region_change;
- e_tizen_screen_opaque_region_change_listener_add(e_tizen_screen_screen_get(e_zone_current_get()),
- &e_info_screen_opaque_region.screen_opaque_region_change);
-
- opaque_region = e_tizen_screen_opaque_region_get(e_tizen_screen_screen_get(e_zone_current_get()));
- _e_info_server_screen_opaque_region_rect_free();
- it = eina_tiler_iterator_new(opaque_region);
- EINA_ITERATOR_FOREACH(it, r)
- {
- ELOGF("WIN_INFO", "initialize opaque region of wininfo, r(%d, %d, %d, %d)", NULL, r->x, r->y, r->w, r->h);
- _e_info_server_screen_opaque_region_rect_set(*r);
- }
- eina_iterator_free(it);
-
- _e_info_server_screen_opaque_region_show();
- }
- }
- else
- {
- _e_info_server_screen_opaque_region_free();
- _e_info_server_screen_opaque_region_rect_free();
-
- wl_list_remove(&e_info_screen_opaque_region.screen_opaque_region_change.link);
- e_info_screen_opaque_region.screen_opaque_region_change.notify = NULL;
- }
-
- return reply;
-}
-
-
-static Eldbus_Message *
-_e_info_server_cb_screen_opaque_region_geom_set(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- uint32_t x = 0, y = 0, w = 0, h = 0;
-
- if (!eldbus_message_arguments_get(msg, "iiii", &x, &y, &w, &h))
- {
- ERR("Error getting arguments.");
- return reply;
- }
-
- ELOGF("WIN_INFO", "opaque_region geometry set, %u, %u, %ux%u", NULL, x, y, w, h);
- if (w == 0 || h == 0) return reply;
-
- Eina_Tiler *tiler = eina_tiler_new(x+w, y+h);
- if (!tiler)
- {
- ERR("Could not create tiler");
- return reply;
- }
- eina_tiler_rect_add(tiler, &(Eina_Rectangle){x, y, w, h});
-
- e_tizen_screen_opaque_region_set(e_tizen_screen_screen_get(e_zone_current_get()), tiler, 0);
-
- _e_info_server_screen_opaque_region_show();
-
- return reply;
-}
-
-
-static Eldbus_Message *
-_e_info_server_cb_screen_opaque_region_color_set(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
-{
- Eldbus_Message *reply = eldbus_message_method_return_new(msg);
- uint32_t r = 0, g = 0, b = 0, a = 0;
-
- if (!eldbus_message_arguments_get(msg, "iiii", &r, &g, &b, &a))
- {
- ERR("Error getting arguments.");
- return reply;
- }
-
- ELOGF("WIN_INFO", "opaque_region color set, r:%u, g:%u, b:%u, a:%d", NULL, r, g, b, a);
-
- e_info_screen_opaque_region.region_rect_color.r = r;
- e_info_screen_opaque_region.region_rect_color.g = g;
- e_info_screen_opaque_region.region_rect_color.b = b;
- e_info_screen_opaque_region.region_rect_color.a = a;
-
- _e_info_server_screen_opaque_region_show();
-
- return reply;
-}
-
//{ "method_name", arguments_from_client, return_values_to_client, _method_cb, ELDBUS_METHOD_FLAG },
static const Eldbus_Method methods[] = {
{ "get_window_info", NULL, ELDBUS_ARGS({"iiiiisiiia("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
{ "input_subtype_set", ELDBUS_ARGS({"ss", "set input device's subtype(subclas)"}), ELDBUS_ARGS({"s", "result message"}), _e_info_server_cb_input_subtype_set, 0 },
{ "kvm_transparent", ELDBUS_ARGS({"i", "set kvm service window to transparent"}), NULL, _e_info_server_cb_kvm_transparent_set, 0 },
{ "log_control", ELDBUS_ARGS({"s","log type" }, {"i", "enable"}), NULL, _e_info_server_cb_log_control, 0},
- { "screen_opaque_region_show", ELDBUS_ARGS({"i", "shown"}), NULL, _e_info_server_cb_screen_opaque_region_show, 0 },
- { "screen_opaque_region_geom_set", ELDBUS_ARGS({"iiii", "geometry of opaque region"}), NULL, _e_info_server_cb_screen_opaque_region_geom_set, 0 },
- { "screen_opaque_region_color_set", ELDBUS_ARGS({"iiii", "color(rgb) of opaque region"}), NULL, _e_info_server_cb_screen_opaque_region_color_set, 0 },
{ NULL, NULL, NULL, NULL, 0 }
};