int iconic;
int focused;
int hwc;
+ int pl_zpos;
const char *layer_name; // layer name
} E_Win_Info;
-#define VALUE_TYPE_FOR_TOPVWINS "uuisiiiiibbiibbis"
+#define VALUE_TYPE_FOR_TOPVWINS "uuisiiiiibbiibbiis"
#define VALUE_TYPE_REQUEST_RESLIST "ui"
#define VALUE_TYPE_REPLY_RESLIST "ssi"
#define VALUE_TYPE_FOR_INPUTDEV "ssi"
static Eina_Bool _e_info_client_eldbus_message_with_args(const char *method, E_Info_Message_Cb cb, const char *signature, ...);
static E_Win_Info *
-_e_win_info_new(Ecore_Window id, uint32_t res_id, int pid, Eina_Bool alpha, int opaque, const char *name, int x, int y, int w, int h, int layer, int visible, int visibility, int iconic, int focused, int hwc, const char *layer_name)
+_e_win_info_new(Ecore_Window id, uint32_t res_id, int pid, Eina_Bool alpha, int opaque, const char *name, int x, int y, int w, int h, int layer, int visible, int visibility, int iconic, int focused, int hwc, int pl_zpos, const char *layer_name)
{
E_Win_Info *win = NULL;
win->iconic = iconic;
win->focused = focused;
win->hwc = hwc;
+ win->pl_zpos = pl_zpos;
win->layer_name = eina_stringshare_add(layer_name);
return win;
{
const char *win_name;
const char *layer_name;
- int x, y, w, h, layer, visibility, opaque, hwc;
+ int x, y, w, h, layer, visibility, opaque, hwc, pl_zpos;
Eina_Bool visible, alpha, iconic, focused;
Ecore_Window id;
uint32_t res_id;
&iconic,
&focused,
&hwc,
+ &pl_zpos,
&layer_name);
if (!res)
{
continue;
}
- win = _e_win_info_new(id, res_id, pid, alpha, opaque, win_name, x, y, w, h, layer, visible, visibility, iconic, focused, hwc, layer_name);
+ win = _e_win_info_new(id, res_id, pid, alpha, opaque, win_name, x, y, w, h, layer, visible, visibility, iconic, focused, hwc, pl_zpos, layer_name);
e_info_client.win_list = eina_list_append(e_info_client.win_list, win);
}
int i = 0;
int prev_layer = -1;
const char *prev_layer_name = NULL;
- E_Win_Info *nocomp_win = NULL;
if (!_e_info_client_eldbus_message("get_window_info", _cb_window_info_get))
return;
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 Focus Depth Opaq Visi Icon Map_State Title \n");
- printf("------------------------------------------------------------------------------------------------------------\n");
+ printf("--------------------------------------[ topvwins ]--------------------------------------------------------------\n");
+ printf(" No Win_ID RcsID PID w h x y Focus Depth Opaq Visi Icon Map_State PL@ZPos Title \n");
+ printf("----------------------------------------------------------------------------------------------------------------\n");
if (!e_info_client.win_list)
{
EINA_LIST_FOREACH(e_info_client.win_list, l, win)
{
if (!win) return;
+ char tmp[20];
i++;
if (win->layer != prev_layer)
{
if (prev_layer != -1)
- printf("------------------------------------------------------------------------------------------------------------[%s]\n",
+ printf("--------------------------------------------------------------------------------------------------------------[%s]\n",
prev_layer_name ? prev_layer_name : " ");
prev_layer = win->layer;
prev_layer_name = win->layer_name;
}
- printf("%3d 0x%08x %5d %5d %5d %5d %6d %6d %c %5d %d ", i, win->id, win->res_id, win->pid, win->w, win->h, win->x, win->y, win->focused ? 'O':' ', win->alpha? 32:24, win->opaque);
- printf("%2d %d %-11s %s\n", win->visibility, win->iconic, win->vis? "Viewable":"NotViewable", win->name?:"No Name");
- if(win->hwc == 2) nocomp_win = win;
+
+ if (win->visibility == 0)
+ {
+ if (win->hwc) snprintf(tmp, sizeof(tmp), "hwc@%i", win->pl_zpos);
+ else snprintf(tmp, sizeof(tmp), "comp@%i", win->pl_zpos);
+ }
+ else
+ {
+ snprintf(tmp, sizeof(tmp), " - ");
+ }
+
+ printf("%3d 0x%08x %5d %5d %5d %5d %4d %4d %c %5d %d ", i, win->id, win->res_id, win->pid, win->w, win->h, win->x, win->y, win->focused ? 'O':' ', win->alpha? 32:24, win->opaque);
+ printf("%2d %d %-11s %-8s %s\n", win->visibility, win->iconic, win->vis? "Viewable":"NotViewable", tmp, win->name?:"No Name");
}
if (prev_layer_name)
- printf("------------------------------------------------------------------------------------------------------------[%s]\n",
+ printf("--------------------------------------------------------------------------------------------------------------[%s]\n",
prev_layer_name ? prev_layer_name : " ");
- if(nocomp_win)
- printf("\nNocomp : %s(0x%08x)\n\n", nocomp_win->name?:"No Name", nocomp_win->id);
-
E_FREE_LIST(e_info_client.win_list, _e_win_info_free);
}
void wl_map_for_each(struct wl_map *map, void *func, void *data);
-#ifdef HAVE_HWC
-#include "e_comp_hwc.h"
-#endif
-
#define BUS "org.enlightenment.wm"
#define PATH "/org/enlightenment/wm"
#define IFACE "org.enlightenment.wm.info"
//FILE pointer for protocol_trace
static FILE *log_fp_ptrace = NULL;
-#define VALUE_TYPE_FOR_TOPVWINS "uuisiiiiibbiibbis"
+#define VALUE_TYPE_FOR_TOPVWINS "uuisiiiiibbiibbiis"
#define VALUE_TYPE_REQUEST_RESLIST "ui"
#define VALUE_TYPE_REPLY_RESLIST "ssi"
#define VALUE_TYPE_FOR_INPUTDEV "ssi"
uint32_t res_id = 0;
pid_t pid = -1;
char layer_name[32];
- int hwc = -1;
+ int hwc = 0, pl_zpos = -999;
ec = evas_object_data_get(o, "E_Client");
if (!ec) continue;
if (e_comp->hwc)
{
- // TODO: print plane number
- if (!e_comp->nocomp_ec)
- hwc = 1; // comp mode
- else if (e_comp->nocomp_ec == ec)
- hwc = 2; // a client occupied scanout buff
- else
- hwc = 0;
+#ifdef ENABLE_HWC_MULTI
+ Eina_List *l, *ll;
+ E_Output * eout;
+ E_Plane *ep;
+
+ eout = e_output_find(ec->zone->output_id);
+ EINA_LIST_FOREACH_SAFE(eout->planes, l, ll, ep)
+ {
+ E_Client *overlay_ec = ep->ec;
+ if (e_plane_is_primary(ep)) pl_zpos = ep->zpos;
+ if (overlay_ec == ec)
+ {
+ hwc = 1;
+ pl_zpos = ep->zpos;
+ }
+ }
}
-
+#else
+ if (e_comp->nocomp_ec == ec)
+ {
+ hwc = 1;
+ pl_zpos = 0;
+ }
+#endif
eldbus_message_iter_arguments_append(array_of_ec, "("VALUE_TYPE_FOR_TOPVWINS")", &struct_of_ec);
eldbus_message_iter_arguments_append
pid,
e_client_util_name_get(ec) ?: "NO NAME",
ec->x, ec->y, ec->w, ec->h, ec->layer,
- ec->visible, ec->argb, ec->visibility.opaque, ec->visibility.obscured, ec->iconic, ec->focused, hwc, layer_name);
+ ec->visible, ec->argb, ec->visibility.opaque, ec->visibility.obscured, ec->iconic, ec->focused, hwc, pl_zpos, layer_name);
eldbus_message_iter_container_close(array_of_ec, struct_of_ec);
}