e_hints_client_list_set();
evas_object_del(ec->frame);
E_OBJECT(ec)->references--;
+ ELOG("CLIENT FREE", ec->pixmap, ec);
free(ec);
}
if ((!ec->new_client) && (!stopping))
_e_client_event_simple(ec, E_EVENT_CLIENT_REMOVE);
+ ELOG("CLIENT DEL", ec->pixmap, ec);
+
if (ec->parent)
{
ec->parent->transients = eina_list_remove(ec->parent->transients, ec);
e_comp->clients = eina_list_append(e_comp->clients, ec);
eina_hash_add(clients_hash, &ec->pixmap, ec);
+ ELOG("CLIENT ADD", ec->pixmap, ec);
_e_client_event_simple(ec, E_EVENT_CLIENT_ADD);
e_comp_object_client_add(ec);
if (ec->frame)
_e_comp_wl_compositor_cb_region_create
};
+static void
+_e_comp_wl_pname_print(pid_t pid)
+{
+ FILE *h;
+ char proc[512], pname[512];
+ size_t len;
+
+ sprintf(proc, "/proc/%d/cmdline", pid);
+
+ h = fopen(proc, "r");
+ if (!h) return;
+
+ len = fread(pname, sizeof(char), 512, h);
+ if (len > 0)
+ {
+ if ('\n' == pname[len - 1])
+ pname[len - 1] = '\0';
+ }
+
+ fclose(h);
+
+ ELOGF("COMP", " |%s", NULL, NULL, pname);
+}
+
+
+static void
+_e_comp_wl_compositor_cb_unbind(struct wl_resource *res_comp)
+{
+ struct wl_client *client;
+ pid_t pid = 0;
+ uid_t uid = 0;
+ gid_t gid = 0;
+
+ client = wl_resource_get_client(res_comp);
+ if (client)
+ wl_client_get_credentials(client,
+ &pid,
+ &uid,
+ &gid);
+
+ ELOGF("COMP",
+ "UNBIND |res_comp:0x%08x|client:0x%08x|%d|%d|%d",
+ NULL, NULL,
+ (unsigned int)res_comp,
+ (unsigned int)client,
+ pid, uid, gid);
+}
+
static void
_e_comp_wl_compositor_cb_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
{
E_Comp *comp;
struct wl_resource *res;
+ pid_t pid = 0;
+ uid_t uid = 0;
+ gid_t gid = 0;
if (!(comp = data)) return;
return;
}
- wl_resource_set_implementation(res, &_e_comp_interface, comp, NULL);
+ wl_resource_set_implementation(res,
+ &_e_comp_interface,
+ comp,
+ _e_comp_wl_compositor_cb_unbind);
+
+ wl_client_get_credentials(client, &pid, &uid, &gid);
+
+ ELOGF("COMP",
+ "BIND |res_comp:0x%08x|client:0x%08x|%d|%d|%d",
+ NULL, NULL,
+ (unsigned int)res,
+ (unsigned int)client,
+ pid, uid, gid);
+
+ _e_comp_wl_pname_print(pid);
}
static void
color = eina_log_level_color_get(level);
fprintf(stdout,
- "%s%s<" EINA_COLOR_RESET "%s%s>" EINA_COLOR_RESET "%s:%d" EINA_COLOR_RESET " ",
+ "%s%s<" EINA_COLOR_RESET "%s%s>" EINA_COLOR_RESET "%30.30s:%04d" EINA_COLOR_RESET " ",
color, _names[level > EINA_LOG_LEVEL_DBG ? EINA_LOG_LEVEL_DBG : level],
d->domain_str, color, file, line);
vfprintf(stdout, fmt, args);
{
e_log_dom = eina_log_domain_register("e", EINA_COLOR_WHITE);
eina_log_print_cb_set(_e_log_cb, NULL);
- return e_log_dom != -1;
+ eina_log_domain_level_set("e", 3);
+ return 1;
}
EINTERN int
#define ERR(...) EINA_LOG_DOM_ERR(e_log_dom, __VA_ARGS__)
#define CRI(...) EINA_LOG_DOM_CRIT(e_log_dom, __VA_ARGS__)
+#define ELOG(t, cp, ec) \
+ do \
+ { \
+ if ((!cp) && (!ec)) \
+ INF("EWL|%20.20s| | |", \
+ (t)); \
+ else \
+ INF("EWL|%20.20s|cp:0x%08x|ec:0x%08x|", \
+ (t), \
+ (unsigned int)(cp), \
+ (unsigned int)(ec)); \
+ } \
+ while (0)
+
+#define ELOGF(t, f, cp, ec, x...) \
+ do \
+ { \
+ if ((!cp) && (!ec)) \
+ INF("EWL|%20.20s| | |"f, \
+ (t), ##x); \
+ else \
+ INF("EWL|%20.20s|cp:0x%08x|ec:0x%08x|"f, \
+ (t), \
+ (unsigned int)(cp), \
+ (unsigned int)(ec), \
+ ##x); \
+ } \
+ while (0)
+
+
EINTERN extern int e_log_dom;
EINTERN int e_log_init(void);
#undef WRN
#undef ERR
#undef CRI
+#undef ELOG
+#undef ELOGF
#define DBG(...) printf(__VA_ARGS__); putc('\n', stdout)
#define INF(...) printf(__VA_ARGS__); putc('\n', stdout)
#define WRN(...) printf(__VA_ARGS__); putc('\n', stdout)
#define ERR(...) printf(__VA_ARGS__); putc('\n', stdout)
#define CRI(...) printf(__VA_ARGS__); putc('\n', stdout)
+#define ELOG(...) ;
+#define ELOGF(...) ;
#endif
#endif
}
e_comp_wl_buffer_reference(&cp->buffer_ref, NULL);
+ ELOG("PIXMAP CLEAR", cp, cp->client);
(void)cache;
#endif
}
#endif
_e_pixmap_clear(cp, 1);
+ ELOG("PIXMAP FREE", cp, cp->client);
free(cp);
}
{
if (!cp) return 0;
if (--cp->refcount) return cp->refcount;
+ ELOG("PIXMAP DEL", cp, cp->client);
_e_pixmap_hook_call(E_PIXMAP_HOOK_DEL, cp);
e_pixmap_image_clear(cp, EINA_FALSE);
if (cp->parent) eina_hash_set(pixmaps[cp->type], &cp->parent, NULL);
cp->res_id = res_id;
eina_hash_add(res_ids, &res_id, cp);
res_id++;
+ ELOG("PIXMAP NEW", cp, cp->client);
#endif
break;
}