return;
}
+static void
+_e_info_client_basic_operation_gen(int argc, char **argv)
+{
+ const char *win, *operation;
+ Eldbus_Message *msg;
+ Eldbus_Message_Iter *itr;
+ Eldbus_Pending *p;
+
+ if (argc < 4)
+ {
+ printf("Error Check Args: enlightenment_info -basic_op_gen [window] [operation]\n");
+ return;
+ }
+
+ win = argv[2];
+ operation = argv[3];
+
+ msg = eldbus_proxy_method_call_new(e_info_client.proxy, "basic_op_gen");
+ itr = eldbus_message_iter_get(msg);
+ eldbus_message_iter_basic_append(itr, 's', win);
+ eldbus_message_iter_basic_append(itr, 's', operation);
+
+ p = eldbus_proxy_send(e_info_client.proxy, msg,
+ _e_info_client_eldbus_message_cb,
+ NULL, -1);
+ if (!p)
+ {
+ printf("\"aux_msg\" proxy_send error");
+ return;
+ }
+
+ ecore_main_loop_begin();
+}
+
typedef struct _ProcInfo
{
const char *option;
"execute gcov flush",
_e_info_client_proc_gcov
},
+ {
+ "basic_op_gen",
+ USAGE_BASIC_OPERATION_GENERATE,
+ "Generate basic operation",
+ _e_info_client_basic_operation_gen
+ },
};
ProcInfo procs_to_input[] =
#include "e_comp_object.h"
#include "e_info_server_input.h"
#include <mcheck.h>
+#include "e_policy_wl.h"
#define EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT
#include <Edje_Edit.h>
return reply;
}
+static void
+_e_info_server_basic_operation_request(E_Client *ec, const char *operation)
+{
+ if (!ec) return;
+ if (!operation) return;
+
+ if (!e_util_strcmp("lower", operation))
+ {
+ e_policy_wl_generate_request(ec, E_POLICY_WL_GENERATE_REQUEST_LOWER);
+ }
+ else if (!e_util_strcmp("activate", operation))
+ {
+ e_policy_wl_generate_request(ec, E_POLICY_WL_GENERATE_REQUEST_ACTIVATE);
+ }
+ else if (!e_util_strcmp("iconify", operation))
+ {
+ e_policy_wl_generate_request(ec, E_POLICY_WL_GENERATE_REQUEST_ICONIFY);
+ }
+ else if (!e_util_strcmp("uniconify", operation))
+ {
+ e_policy_wl_generate_request(ec, E_POLICY_WL_GENERATE_REQUEST_UNICONIFY);
+ }
+ else
+ {
+ ERR("Not supported operation (%s)", operation);
+ }
+}
+
+static Eldbus_Message *
+_e_info_server_cb_basic_operation_generate(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ const char *win_str, *operation;
+ unsigned long tmp = 0;
+ uint64_t win_id = 0;
+ E_Client *ec;
+ Evas_Object *o;
+ Eina_Bool res = EINA_FALSE;
+
+ if (!e_policy)
+ {
+ ERR("e_policy is not initialized!");
+ return reply;
+ }
+
+ if (!eldbus_message_arguments_get(msg, "ss", &win_str, &operation))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ res = e_util_string_to_ulong(win_str, &tmp, 16);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(res, reply);
+
+ win_id = (uint64_t)tmp;
+
+ for (o = evas_object_top_get(e_comp->evas); o; o = evas_object_below_get(o))
+ {
+ ec = evas_object_data_get(o, "E_Client");
+ if (!ec) continue;
+
+ Ecore_Window win = e_client_util_win_get(ec);
+
+ if (win == win_id)
+ {
+ _e_info_server_basic_operation_request(ec, operation);
+ break;
+ }
+ }
+
+ 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({"iiiiisiiiiia("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
{ "mousegen", ELDBUS_ARGS({"iiii", "mouse information"}), ELDBUS_ARGS({"s", "result message"}), _e_info_server_cb_mousegen, 0},
{ "filter", ELDBUS_ARGS({"sis", "win_id, on(1)/off(0), filter name"}), ELDBUS_ARGS({"s", "result of request"}), _e_info_server_cb_filter, 0},
{ "gcov", ELDBUS_ARGS({"i", "option"}), NULL, _e_info_server_cb_gcov, 0},
+ { "basic_op_gen", ELDBUS_ARGS({"s","window id" }, {"s", "operation"}), NULL, _e_info_server_cb_basic_operation_generate, 0},
{ NULL, NULL, NULL, NULL, 0 }
};
}
}
+void
+e_policy_wl_generate_request(E_Client *ec, E_Policy_Wl_Gen_Request type)
+{
+ E_Comp_Wl_Client_Data *cdata = NULL;
+ if (!ec) return;
+
+ cdata = e_client_cdata_get(ec);
+ if (!cdata) return;
+ if (!cdata->wl_surface) return;
+
+ ELOGF("POL", "Generate operation (type:%d)", ec, type);
+ switch (type)
+ {
+ case E_POLICY_WL_GENERATE_REQUEST_LOWER:
+ _tzpol_iface_cb_lower(NULL, NULL, cdata->wl_surface);
+ break;
+ case E_POLICY_WL_GENERATE_REQUEST_ACTIVATE:
+ _tzpol_iface_cb_activate(NULL, NULL, cdata->wl_surface);
+ break;
+ case E_POLICY_WL_GENERATE_REQUEST_ICONIFY:
+ _tzpol_iface_cb_iconify(NULL, NULL, cdata->wl_surface);
+ break;
+ case E_POLICY_WL_GENERATE_REQUEST_UNICONIFY:
+ _tzpol_iface_cb_uniconify(NULL, NULL, cdata->wl_surface);
+ break;
+ default:
+ break;
+ }
+}
+
// --------------------------------------------------------
// public functions
// --------------------------------------------------------
typedef struct _E_Policy_Wl_Hook E_Policy_Wl_Hook;
typedef void (*E_Policy_Wl_Hook_Cb)(void *data, pid_t pid);
+typedef enum _E_Policy_Wl_Gen_Request
+{
+ E_POLICY_WL_GENERATE_REQUEST_LOWER,
+ E_POLICY_WL_GENERATE_REQUEST_ACTIVATE,
+ E_POLICY_WL_GENERATE_REQUEST_ICONIFY,
+ E_POLICY_WL_GENERATE_REQUEST_UNICONIFY,
+ E_POLICY_WL_GENERATE_REQUEST_LAST,
+} E_Policy_Wl_Gen_Request;
+
typedef enum _E_Policy_Wl_Hook_Point
{
E_POLICY_WL_HOOK_BASE_OUTPUT_RESOLUTION_GET,
/* activate */
E_API void e_policy_wl_activate(E_Client *ec);
+/* util */
+EINTERN void e_policy_wl_generate_request(E_Client *ec, E_Policy_Wl_Gen_Request type);
+
#endif /* E_MOD_WL_H */