e_info: Modified focus_policy_ext option to suit the usage. 22/264322/6
authorJunseok, Kim <juns.kim@samsung.com>
Thu, 16 Sep 2021 03:53:39 +0000 (12:53 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Fri, 17 Sep 2021 03:16:47 +0000 (03:16 +0000)
Change-Id: I8665134a2af5acf980ab2cc8254c5640e3c2df44

src/bin/e_info_client.c
src/bin/e_info_server.c

index 0048421ff823aa354c1ac6ee37a4ea8696b47d6f..03a87ef328099ebbd48c9bccd1a0b215c0f1edf4 100644 (file)
@@ -5447,16 +5447,18 @@ static void
 _e_info_client_cb_focus_policy_ext(const Eldbus_Message *msg)
 {
    const char *errname = NULL, *errtext = NULL;
-   const int result = 0;
+   Eina_Bool changed = EINA_FALSE;
+   int result = -1;
 
    EINA_SAFETY_ON_TRUE_GOTO(eldbus_message_error_get(msg, &errname, &errtext), err);
+   EINA_SAFETY_ON_FALSE_GOTO(eldbus_message_arguments_get(msg, "bi", &changed, &result), err);
 
-   EINA_SAFETY_ON_FALSE_GOTO(eldbus_message_arguments_get(msg, "i", &result), err);
-
-   if (result >= 0)
+   if (changed)
      printf("Successfully changed, now focus_policy_ext=%d\n", result);
+   else if (result >= 0)
+     printf("now focus_policy_ext=%d\n", result);
    else
-     printf("value change failed\n");
+     printf("Error occured\n");
 
    return;
 
@@ -5475,12 +5477,17 @@ _e_info_client_proc_focus_policy_ext(int argc, char **argv)
    int input = -1;
    Eina_Bool res;
 
-   EINA_SAFETY_ON_FALSE_GOTO(argc == 3, usage);
+   EINA_SAFETY_ON_FALSE_GOTO(((argc == 2) || (argc == 3)), usage);
 
-   input = atoi(argv[2]);
-   if ((input != 0) && (input != 1) && (input != -1)) goto usage;
+   if (argc == 3)
+     {
+        input = atoi(argv[2]);
+        if ((input != 0) && (input != 1)) goto usage;
+     }
+   else
+     input = -1;
 
-   res = _e_info_client_eldbus_message_with_args("focus_policy_ext_set", _e_info_client_cb_focus_policy_ext, "i", atoi(argv[2]));
+   res = _e_info_client_eldbus_message_with_args("focus_policy_ext_set", _e_info_client_cb_focus_policy_ext, "i", input);
    EINA_SAFETY_ON_FALSE_RETURN(res);
 
    return;
index a5c47932589250b6e446fcf6ae6e962f6a8f04e0..f8de3edcff5a4265ce0839e43c20db7864b5a411 100644 (file)
@@ -6763,7 +6763,8 @@ static Eldbus_Message *
 _e_info_server_cb_focus_policy_ext_set(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
    Eldbus_Message *reply;
-   int option = 0, res = -1;
+   int option = 0, res = -1, previous_policy;
+   Eina_Bool changed = EINA_FALSE;
 
    if (!eldbus_message_arguments_get(msg, "i", &option))
      {
@@ -6771,7 +6772,7 @@ _e_info_server_cb_focus_policy_ext_set(const Eldbus_Service_Interface *iface EIN
                                         "focus_policy_ext_set: an attempt to get argument from method call message failed");
      }
 
-   e_client_focus_defer_clear();
+   previous_policy = e_config->focus_policy_ext;
 
    switch (option)
      {
@@ -6790,9 +6791,14 @@ _e_info_server_cb_focus_policy_ext_set(const Eldbus_Service_Interface *iface EIN
      }
 
    res = e_config->focus_policy_ext;
+   if (previous_policy != res)
+     {
+        e_client_focus_defer_clear();
+        changed = EINA_TRUE;
+     }
 
    reply = eldbus_message_method_return_new(msg);
-   eldbus_message_arguments_append(reply, "i", res);
+   eldbus_message_arguments_append(reply, "bi", changed, res);
 
    return reply;
 }
@@ -7271,7 +7277,7 @@ static const Eldbus_Method methods[] = {
    { "input_region", ELDBUS_ARGS({"siiii", "options"}), ELDBUS_ARGS({"a(iiii)", "path"}), _e_info_server_cb_input_region, 0},
    { "hwc_wins", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"as", "hwc wins info"}), _e_info_server_cb_hwc_wins_info_get, 0 },
    { "screen_info", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"as", "screen info"}), _e_info_server_cb_screen_info_get, 0 },
-   { "focus_policy_ext_set", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"i", "result"}), _e_info_server_cb_focus_policy_ext_set, 0 },
+   { "focus_policy_ext_set", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"bi", "isChanged and result"}), _e_info_server_cb_focus_policy_ext_set, 0 },
    { "focus_history", NULL, ELDBUS_ARGS({"a(ubbbs)", "history array"}), _e_info_server_cb_focus_history, 0 },
    { "init_device", ELDBUS_ARGS({"us", "device information"}), ELDBUS_ARGS({"s", "result message"}), _e_info_server_cb_init_device, 0},
    { "deinit_device", NULL, NULL, _e_info_server_cb_deinit_device, 0},