typedef struct _E_Info_Client
{
/* eldbus */
- int eldbus_init;
- Eldbus_Proxy *proxy;
+ int eldbus_init;
+ Eldbus_Proxy *proxy;
Eldbus_Connection *conn;
- Eldbus_Object *obj;
+ Eldbus_Object *obj;
/* topvwins */
- Eina_List *win_list;
+ Eina_List *win_list;
} E_Info_Client;
typedef struct _E_Win_Info
static E_Info_Client e_info_client;
-static Eina_Bool
-_e_info_client_eldbus_message(const char *method, E_Info_Message_Cb cb);
-static Eina_Bool
-_e_info_client_eldbus_message_with_args(const char *method, E_Info_Message_Cb cb,
- const char *signature, ...);
+static Eina_Bool _e_info_client_eldbus_message(const char *method, E_Info_Message_Cb cb);
+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,
- Eina_Bool alpha,
- const char *name,
- int x, int y,
- int w, int h,
- int layer,
- int visible)
+_e_win_info_new(Ecore_Window id, Eina_Bool alpha, const char *name, int x, int y, int w, int h, int layer, int visible)
{
E_Win_Info *win = NULL;
}
static void
-_get_window_info_cb(const Eldbus_Message *msg)
+_cb_window_info_get(const Eldbus_Message *msg)
{
const char *name = NULL, *text = NULL;
Eldbus_Message_Iter *array, *ec;
}
static void
-_e_info_client_proc_topvwins(int argc, char **argv)
+_e_info_client_proc_topvwins_info(int argc, char **argv)
{
E_Win_Info *win;
Eina_List *l;
int i = 0;
- if (!_e_info_client_eldbus_message("get_window_info", _get_window_info_cb))
+ 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));
E_FREE_LIST(e_info_client.win_list, _e_win_info_free);
}
-static char*
+static char *
_directory_make(char *path)
{
char dir[PATH_MAX], curdir[PATH_MAX], stamp[PATH_MAX];
}
static void
-_e_info_client_proc_shot_topvwins(int argc, char **argv)
+_e_info_client_proc_topvwins_shot(int argc, char **argv)
{
char *directory = _directory_make(argv[2]);
EINA_SAFETY_ON_NULL_RETURN(directory);
- if (!_e_info_client_eldbus_message_with_args("shot_topvwins", NULL, "s", directory))
+ if (!_e_info_client_eldbus_message_with_args("dump_topvwins", NULL, "s", directory))
{
free(directory);
return;
{
"topvwins", NULL,
"Print top visible windows",
- _e_info_client_proc_topvwins
+ _e_info_client_proc_topvwins_info
},
{
- "shot_topvwins", "[directory_path]",
- "Dump topvwins (default directory_path : current working directory)",
- _e_info_client_proc_shot_topvwins
+ "dump_topvwins", "[directory_path]",
+ "Dump top-level visible windows (default directory_path : current working directory)",
+ _e_info_client_proc_topvwins_shot
},
};
static void
-_e_info_client_eldbus_message_cb(void *data,
- const Eldbus_Message *msg,
- Eldbus_Pending *p EINA_UNUSED)
+_e_info_client_eldbus_message_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *p EINA_UNUSED)
{
E_Info_Message_Cb cb = (E_Info_Message_Cb)data;
- if (cb)
- cb(msg);
+ if (cb) cb(msg);
ecore_main_loop_quit();
}
}
static Eina_Bool
-_e_info_client_eldbus_message_with_args(const char *method, E_Info_Message_Cb cb,
- const char *signature, ...)
+_e_info_client_eldbus_message_with_args(const char *method, E_Info_Message_Cb cb, const char *signature, ...)
{
Eldbus_Pending *p;
va_list ap;
eldbus_proxy_unref(e_info_client.proxy);
e_info_client.proxy = NULL;
}
+
if (e_info_client.obj)
{
eldbus_object_unref(e_info_client.obj);
e_info_client.obj = NULL;
}
+
if (e_info_client.conn)
{
eldbus_connection_unref(e_info_client.conn);
e_info_client.conn = NULL;
}
+
if (e_info_client.eldbus_init)
{
eldbus_shutdown();
int nproc = sizeof(procs) / sizeof(procs[0]);
int i;
- printf("\n");
- printf("Usage:\n");
+ printf("\nUsage:\n");
+
for (i = 0; i < nproc; i++)
printf(" %s -%s %s\n", exec, procs[i].option, (procs[i].params)?procs[i].params:"");
- printf("\n");
- printf("Option:\n");
+
+ printf("\nOptions:\n");
+
for (i = 0; i < nproc; i++)
{
printf(" -%s\n", procs[i].option);
printf(" %s\n", (procs[i].description)?procs[i].description:"");
}
+
printf("\n");
}
if (!strcmp(argv[1], "-h") ||
!strcmp(argv[1], "-help") ||
!strcmp(argv[1], "--help"))
- _e_info_client_print_usage(argv[0]);
+ {
+ _e_info_client_print_usage(argv[0]);
+ }
else
{
/* handling a client request */
/* disconnecting dbus */
_e_info_client_eldbus_disconnect();
+
return 0;
err:
static E_Info_Server e_info_server;
struct wl_drm;
-struct wl_drm_buffer {
+
+struct wl_drm_buffer
+{
struct wl_resource *resource;
struct wl_drm *drm;
int32_t width, height;
};
static void
-_message_append_clients(Eldbus_Message_Iter *iter)
+_msg_clients_append(Eldbus_Message_Iter *iter)
{
Eldbus_Message_Iter *array_of_ec;
E_Client *ec;
win = e_client_util_win_get(ec);
eldbus_message_iter_arguments_append(array_of_ec, "(usiiiiibb)", &struct_of_ec);
+
eldbus_message_iter_arguments_append
(struct_of_ec, "usiiiiibb",
win,
e_client_util_name_get(ec) ?: "NO NAME",
ec->x, ec->y, ec->w, ec->h, ec->layer,
ec->visible, ec->argb);
+
eldbus_message_iter_container_close(array_of_ec, struct_of_ec);
}
/* Method Handlers */
static Eldbus_Message *
-_e_info_server_cb_get_window_info(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
+_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);
- _message_append_clients(eldbus_message_iter_get(reply));
+ _msg_clients_append(eldbus_message_iter_get(reply));
return reply;
}
static Eldbus_Message *
-_e_info_server_cb_shot_topvwins(const Eldbus_Service_Interface *iface EINA_UNUSED,
- const Eldbus_Message *msg)
+_e_info_server_cb_topvwins_dump(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
{
Eldbus_Message *reply = eldbus_message_method_return_new(msg);
const char *dir;
evas_object_image_alpha_set(img, ec->argb);
evas_object_image_size_set(img, w, h);
evas_object_image_data_set(img, data);
+
if (!evas_object_image_save(img, fname, NULL, "compress=1 quality=100"))
ERR("Cannot save window to '%s'", fname);
}
#endif
- if (img)
- evas_object_del(img);
- if (ee)
- ecore_evas_free(ee);
+ if (img) evas_object_del(img);
+ if (ee) ecore_evas_free(ee);
}
return reply;
}
static const Eldbus_Method methods[] = {
- {
- "get_window_info", NULL, ELDBUS_ARGS({"a(usiiiiibb)", "array of ec"}),
- _e_info_server_cb_get_window_info, 0
- },
- {
- "shot_topvwins", ELDBUS_ARGS({"s", "directory"}), NULL,
- _e_info_server_cb_shot_topvwins, ELDBUS_METHOD_FLAG_NOREPLY
- },
+ { "get_window_info", NULL, ELDBUS_ARGS({"a(usiiiiibb)", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
+ { "dump_topvwins", ELDBUS_ARGS({"s", "directory"}), NULL, _e_info_server_cb_topvwins_dump, ELDBUS_METHOD_FLAG_NOREPLY },
{ NULL, NULL, NULL, NULL, 0 }
};
EINA_SAFETY_ON_NULL_GOTO(e_info_server.iface, err);
return 1;
+
err:
e_info_server_shutdown();
return 0;
eldbus_service_interface_unregister(e_info_server.iface);
e_info_server.iface = NULL;
}
+
if (e_info_server.conn)
{
eldbus_connection_unref(e_info_server.conn);