Eldbus_Object *obj;
/* topvwins */
+ int use_gl, use_hwc, use_multi_layer, hwc;
+ const char *engine;
Eina_List *win_list;
Eina_List *input_dev;
}
static void
-_cb_window_info_get(const Eldbus_Message *msg)
+_e_win_info_make_array(Eldbus_Message_Iter *array)
{
- const char *name = NULL, *text = NULL;
- Eldbus_Message_Iter *array, *ec;
+ Eldbus_Message_Iter *ec;
Eina_Bool res;
- res = eldbus_message_error_get(msg, &name, &text);
- EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
- res = eldbus_message_arguments_get(msg, "a("VALUE_TYPE_FOR_TOPVWINS")", &array);
- EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
while (eldbus_message_iter_get_and_next(array, 'r', &ec))
{
const char *win_name;
win = _e_win_info_new(id, res_id, pid, alpha, opaque, win_name, x, y, w, h, layer, visible, visibility, iconic, frame_visible, focused, hwc, pl_zpos, parent_id, layer_name);
e_info_client.win_list = eina_list_append(e_info_client.win_list, win);
}
+}
+
+static void
+_cb_window_info_get(const Eldbus_Message *msg)
+{
+ const char *name = NULL, *text = NULL;
+ Eldbus_Message_Iter *array;
+ Eina_Bool res;
+
+ res = eldbus_message_error_get(msg, &name, &text);
+ EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+ res = eldbus_message_arguments_get(msg, "a("VALUE_TYPE_FOR_TOPVWINS")", &array);
+ EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+ _e_win_info_make_array(array);
+
+finish:
+ if ((name) || (text))
+ {
+ printf("errname:%s errmsg:%s\n", name, text);
+ }
+}
+
+static void
+_cb_vwindow_info_get(const Eldbus_Message *msg)
+{
+ const char *name = NULL, *text = NULL;
+ Eldbus_Message_Iter *array;
+ char *engine;
+ Eina_Bool res;
+
+ res = eldbus_message_error_get(msg, &name, &text);
+ EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+ res = eldbus_message_arguments_get(msg, "iiiisa("VALUE_TYPE_FOR_TOPVWINS")",
+ &e_info_client.use_gl, &e_info_client.use_hwc, &e_info_client.use_multi_layer,
+ &e_info_client.hwc, &engine,
+ &array);
+ EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+ e_info_client.engine = eina_stringshare_add(engine);
+
+ _e_win_info_make_array(array);
finish:
if ((name) || (text))
}
}
+
static void
_e_info_client_cb_compobjs(const Eldbus_Message *msg)
{
const char *prev_layer_name = NULL;
- if (!_e_info_client_eldbus_message("get_window_info", _cb_window_info_get))
+ if (!_e_info_client_eldbus_message("get_window_info", _cb_vwindow_info_get))
return;
+ printf("GL : %s\n", e_info_client.use_gl ? "on":"off");
+ printf("ENG: %s\n", e_info_client.engine);
+ if (e_info_client.use_hwc)
+ {
+ printf("HWC: %s\n", e_info_client.hwc ? "on":"off");
+ printf("Multi Plane: %s\n\n", e_info_client.use_multi_layer ? "on":"off");
+ }
+
printf("%d Top level windows\n", eina_list_count(e_info_client.win_list));
printf("--------------------------------------[ topvwins ]----------------------------------------------------------------------------\n");
printf(" No Win_ID RcsID PID w h x y Foc Dep Opaq Visi Icon Map Frame PL@ZPos Parent Title\n");
printf("\nHWC is disabled\n\n");
E_FREE_LIST(e_info_client.win_list, _e_win_info_free);
+ if (e_info_client.engine)
+ {
+ eina_stringshare_del(e_info_client.engine);
+ e_info_client.engine = NULL;
+ }
}
static void
_e_info_server_cb_window_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
{
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ Eldbus_Message_Iter *iter = eldbus_message_iter_get(reply);
+
+ eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->engine);
+ eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->hwc);
+ eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->hwc_use_multi_plane);
+ eldbus_message_iter_basic_append(iter, 'i', e_comp->hwc);
+ eldbus_message_iter_basic_append(iter, 's', ecore_evas_engine_name_get(e_comp->ee));
- _msg_clients_append(eldbus_message_iter_get(reply), EINA_TRUE);
+ _msg_clients_append(iter, EINA_TRUE);
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({"a("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
+ { "get_window_info", NULL, ELDBUS_ARGS({"iiiisa("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
{ "get_all_window_info", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_all_window_info_get, 0 },
{ "compobjs", NULL, ELDBUS_ARGS({"a("SIGNATURE_COMPOBJS_CLIENT")", "array of comp objs"}), _e_info_server_cb_compobjs, 0 },
{ "subsurface", NULL, ELDBUS_ARGS({"a("SIGNATURE_SUBSURFACE")", "array of ec"}), _e_info_server_cb_subsurface, 0 },