Eina_List *pending_commit_list;
/* layer fps */
- Eina_List *layer_fps_list;
+ Eina_List *fps_list;
/* dump_buffers */
const char *dump_fullpath;
unsigned int tsurface;
} E_Pending_Commit_Info;
-typedef struct _E_Layer_Fps_Info
+typedef struct _E_Fps_Info
{
+ E_Info_Fps_Type type;
const char *output;
int zpos;
+ unsigned int window;
double fps;
-} E_Layer_Fps_Info;
+} E_Fps_Info;
#define VALUE_TYPE_FOR_TOPVWINS "uuisiiiiibbbiiibbiiusb"
#define VALUE_TYPE_REQUEST_RESLIST "ui"
#define VALUE_TYPE_REPLY_RESLIST "ssi"
#define VALUE_TYPE_FOR_INPUTDEV "ssi"
#define VALUE_TYPE_FOR_PENDING_COMMIT "uiuu"
-#define VALUE_TYPE_FOR_LAYER_FPS "sid"
+#define VALUE_TYPE_FOR_FPS "usiud"
#define VALUE_TYPE_REQUEST_FOR_KILL "uts"
#define VALUE_TYPE_REPLY_KILL "s"
#define VALUE_TYPE_REQUEST_FOR_WININFO "t"
E_FREE_LIST(e_info_client.pending_commit_list, _e_pending_commit_info_free);
}
-static E_Layer_Fps_Info *
-_e_player_fps_info_new(const char *output, int zpos, double fps)
+static E_Fps_Info *
+_e_fps_info_new(E_Info_Fps_Type type, const char *output, int zpos, unsigned int window, double fps)
{
- E_Layer_Fps_Info *layer_fps = NULL;
+ E_Fps_Info *fps_info = NULL;
- layer_fps = E_NEW(E_Layer_Fps_Info, 1);
- EINA_SAFETY_ON_NULL_RETURN_VAL(layer_fps, NULL);
+ fps_info = E_NEW(E_Fps_Info, 1);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(fps_info, NULL);
- layer_fps->output = output;
- layer_fps->zpos = zpos;
- layer_fps->fps = fps;
+ fps_info->type = type;
+ fps_info->output = output;
+ fps_info->zpos = zpos;
+ fps_info->window = window;
+ fps_info->fps = fps;
- return layer_fps;
+ return fps_info;
}
static void
-_e_layer_fps_info_free(E_Layer_Fps_Info *layer_fps)
+_e_fps_info_free(E_Fps_Info *fps)
{
- E_FREE(layer_fps);
+ E_FREE(fps);
}
static void
-_cb_layer_fps_info_get(const Eldbus_Message *msg)
+_cb_fps_info_get(const Eldbus_Message *msg)
{
const char *name = NULL, *text = NULL;
Eldbus_Message_Iter *array, *eldbus_msg;
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_LAYER_FPS")", &array);
+ res = eldbus_message_arguments_get(msg, "a("VALUE_TYPE_FOR_FPS")", &array);
EINA_SAFETY_ON_FALSE_GOTO(res, finish);
while (eldbus_message_iter_get_and_next(array, 'r', &eldbus_msg))
{
- E_Layer_Fps_Info *layer_fps = NULL;
+ E_Fps_Info *fps_info = NULL;
const char *output;
- int zpos;
+ int zpos, type;
double fps;
+ unsigned int window;
res = eldbus_message_iter_arguments_get(eldbus_msg,
- VALUE_TYPE_FOR_LAYER_FPS,
+ VALUE_TYPE_FOR_FPS,
+ &type,
&output,
&zpos,
+ &window,
&fps);
if (!res)
{
- printf("Failed to get player_fps info\n");
+ printf("Failed to get fps info\n");
continue;
}
- layer_fps = _e_player_fps_info_new(output, zpos, fps);
- if (!layer_fps) continue;
+ fps_info = _e_fps_info_new(type, output, zpos, window, fps);
+ if (!fps_info) continue;
- e_info_client.layer_fps_list = eina_list_append(e_info_client.layer_fps_list, layer_fps);
+ e_info_client.fps_list = eina_list_append(e_info_client.fps_list, fps_info);
}
finish:
}
static void
-_e_info_client_proc_fps_layer_info(int argc, char **argv)
+_e_info_client_proc_fps_info(int argc, char **argv)
{
do
{
Eina_List *l;
- E_Layer_Fps_Info *layer_fps;
+ E_Fps_Info *fps;
- if (!_e_info_client_eldbus_message("get_layer_fps_info", _cb_layer_fps_info_get))
+ if (!_e_info_client_eldbus_message("get_fps_info", _cb_fps_info_get))
return;
- if (!e_info_client.layer_fps_list)
- goto fps_layer_done;
+ if (!e_info_client.fps_list)
+ goto fps_done;
- EINA_LIST_FOREACH(e_info_client.layer_fps_list, l, layer_fps)
+ EINA_LIST_FOREACH(e_info_client.fps_list, l, fps)
{
- printf("%3s-ZPos@%d...%3.1f\n",
- layer_fps->output,
- layer_fps->zpos,
- layer_fps->fps);
+ if (fps->type == E_INFO_FPS_TYPE_OUTPUT)
+ {
+ printf("%3s-OUTPUT...%3.1f\n",
+ fps->output,
+ fps->fps);
+ }
+ else if (fps->type == E_INFO_FPS_TYPE_LAYER)
+ {
+ printf("%3s-Layer-ZPos@%d...%3.1f\n",
+ fps->output,
+ fps->zpos,
+ fps->fps);
+ }
+ else if (fps->type == E_INFO_FPS_TYPE_HWC_WIN)
+ {
+ printf("%3s-HWC-Win_ID(0x%x)-ZPos@%d...%3.1f\n",
+ fps->output,
+ fps->window,
+ fps->zpos,
+ fps->fps);
+ }
+ else if (fps->type == E_INFO_FPS_TYPE_HWC_COMP)
+ {
+ printf("%3s-HWC-COMP...%3.1f\n",
+ fps->output,
+ fps->fps);
+ }
}
- E_FREE_LIST(e_info_client.layer_fps_list, _e_layer_fps_info_free);
-fps_layer_done:
+ E_FREE_LIST(e_info_client.fps_list, _e_fps_info_free);
+fps_done:
usleep(500000);
}
while (1);
},
{
"fps", NULL,
- "Print FPS in every sec per layer",
- _e_info_client_proc_fps_layer_info
+ "Print FPS in every sec per",
+ _e_info_client_proc_fps_info
},
{
"keymap", NULL,
#define VALUE_TYPE_REPLY_RESLIST "ssi"
#define VALUE_TYPE_FOR_INPUTDEV "ssi"
#define VALUE_TYPE_FOR_PENDING_COMMIT "uiuu"
-#define VALUE_TYPE_FOR_LAYER_FPS "sid"
+#define VALUE_TYPE_FOR_FPS "usiud"
#define VALUE_TYPE_REQUEST_FOR_KILL "uts"
#define VALUE_TYPE_REPLY_KILL "s"
#define VALUE_TYPE_REQUEST_FOR_WININFO "t"
}
static void
-_msg_layer_fps_append(Eldbus_Message_Iter *iter)
+_msg_fps_append(Eldbus_Message_Iter *iter)
{
- Eina_List *output_l, *plane_l;
- Eldbus_Message_Iter *array_of_layer_fps;
+ Eina_List *output_l, *plane_l, *hwc_l;
+ Eldbus_Message_Iter *array_of_fps;
E_Comp_Screen *e_comp_screen = NULL;
+ E_Hwc_Window *hwc_window = NULL;
E_Output *output = NULL;
E_Plane *plane = NULL;
double fps = 0.0;
char output_name[30];
- eldbus_message_iter_arguments_append(iter, "a("VALUE_TYPE_FOR_LAYER_FPS")", &array_of_layer_fps);
+ eldbus_message_iter_arguments_append(iter, "a("VALUE_TYPE_FOR_FPS")", &array_of_fps);
e_comp_screen = e_comp->e_comp_screen;
{
if (e_hwc_policy_get(output->hwc) == E_HWC_POLICY_WINDOWS)
{
- if (!e_hwc_windows_fps_get(output->hwc, &fps)) continue;
+ if (e_hwc_windows_fps_get(output->hwc, &fps))
+ {
+ Eldbus_Message_Iter* struct_of_fps;
- Eldbus_Message_Iter* struct_of_layer_fps;
+ eldbus_message_iter_arguments_append(array_of_fps, "("VALUE_TYPE_FOR_FPS")", &struct_of_fps);
- eldbus_message_iter_arguments_append(array_of_layer_fps, "("VALUE_TYPE_FOR_LAYER_FPS")", &struct_of_layer_fps);
+ eldbus_message_iter_arguments_append
+ (struct_of_fps, VALUE_TYPE_FOR_FPS,
+ E_INFO_FPS_TYPE_OUTPUT,
+ output_name,
+ -999,
+ 0,
+ fps);
- eldbus_message_iter_arguments_append
- (struct_of_layer_fps, VALUE_TYPE_FOR_LAYER_FPS,
- output_name,
- -999,
- fps);
+ eldbus_message_iter_container_close(array_of_fps, struct_of_fps);
+ }
+
+ EINA_LIST_FOREACH(output->hwc->hwc_windows, hwc_l, hwc_window)
+ {
+ E_Hwc_Window_State state;
+ Eldbus_Message_Iter* struct_of_fps;
+
+ if(!hwc_window) continue;
+
+ state = e_hwc_window_accepted_state_get(hwc_window);
+ if ((state == E_HWC_WINDOW_STATE_CLIENT) || (state == E_HWC_WINDOW_STATE_NONE)) continue;
+ if (!e_hwc_window_fps_get(hwc_window, &fps)) continue;
- eldbus_message_iter_container_close(array_of_layer_fps, struct_of_layer_fps);
+ eldbus_message_iter_arguments_append(array_of_fps, "("VALUE_TYPE_FOR_FPS")", &struct_of_fps);
+
+ eldbus_message_iter_arguments_append
+ (struct_of_fps, VALUE_TYPE_FOR_FPS,
+ hwc_window->is_target ? E_INFO_FPS_TYPE_HWC_COMP : E_INFO_FPS_TYPE_HWC_WIN,
+ output_name,
+ hwc_window->zpos,
+ hwc_window->is_target ? 0 : e_client_util_win_get(hwc_window->ec),
+ fps);
+
+ eldbus_message_iter_container_close(array_of_fps, struct_of_fps);
+ }
}
else
{
if (!plane) continue;
if (!e_plane_fps_get(plane, &fps)) continue;
- Eldbus_Message_Iter* struct_of_layer_fps;
+ Eldbus_Message_Iter* struct_of_fps;
- eldbus_message_iter_arguments_append(array_of_layer_fps, "("VALUE_TYPE_FOR_LAYER_FPS")", &struct_of_layer_fps);
+ eldbus_message_iter_arguments_append(array_of_fps, "("VALUE_TYPE_FOR_FPS")", &struct_of_fps);
eldbus_message_iter_arguments_append
- (struct_of_layer_fps, VALUE_TYPE_FOR_LAYER_FPS,
+ (struct_of_fps, VALUE_TYPE_FOR_FPS,
+ E_INFO_FPS_TYPE_LAYER,
output_name,
plane->zpos,
+ 0,
plane->fps);
- eldbus_message_iter_container_close(array_of_layer_fps, struct_of_layer_fps);
+ eldbus_message_iter_container_close(array_of_fps, struct_of_fps);
}
}
}
memset(output_name, 0x0, sizeof(char)*30);
}
- eldbus_message_iter_container_close(iter, array_of_layer_fps);
+ eldbus_message_iter_container_close(iter, array_of_fps);
}
static Eldbus_Message *
-_e_info_server_cb_layer_fps_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+_e_info_server_cb_fps_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
{
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
e_comp->calc_fps = 1;
}
- _msg_layer_fps_append(eldbus_message_iter_get(reply));
+ _msg_fps_append(eldbus_message_iter_get(reply));
return reply;
}
{ "hwc", ELDBUS_ARGS({"i", "hwc"}), NULL, e_info_server_cb_hwc, 0},
{ "show_plane_state", NULL, NULL, e_info_server_cb_show_plane_state, 0},
{ "show_pending_commit", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_PENDING_COMMIT")", "array of pending commit"}), e_info_server_cb_show_pending_commit, 0},
- { "get_layer_fps_info", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_LAYER_FPS")", "array of pending commit"}), _e_info_server_cb_layer_fps_info_get, 0},
+ { "get_fps_info", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_FPS")", "array of fps"}), _e_info_server_cb_fps_info_get, 0},
{ "get_keymap", NULL, ELDBUS_ARGS({"hi", "keymap fd"}), _e_info_server_cb_keymap_info_get, 0},
{ "effect_control", ELDBUS_ARGS({"i", "effect_control"}), NULL, e_info_server_cb_effect_control, 0},
{ "get_keygrab_status", ELDBUS_ARGS({"s", "get_keygrab_status"}), NULL, _e_info_server_cb_keygrab_status_get, 0},