Add foreground pid check logic 92/117792/1
authorKwangyoun Kim <ky85.kim@samsung.com>
Mon, 23 Jan 2017 06:58:03 +0000 (15:58 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Tue, 7 Mar 2017 11:55:11 +0000 (03:55 -0800)
Change-Id: I62f4d43f5adaf87377d998db4b4dbcc8e6534018
Signed-off-by: Kwangyoun Kim <ky85.kim@samsung.com>
(cherry picked from commit 344f5d21211fca273d25226b0843de51a1d502d5)

server/vcd_client_data.c
server/vcd_client_data.h
server/vcd_server.c

index 010bde0c5dceab60c5bef4bb3701fc26f8d4cc07..9b2a00f897ad7d7305382aacf6bff365a38836f4 100644 (file)
@@ -1391,3 +1391,80 @@ int vcd_client_widget_get_asr_result_enabled(int pid, bool* enable)
 
        return 0;
 }
+
+void vcd_client_update_foreground_pid()
+{
+       int tmp_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
+       vcd_config_get_foreground(&tmp_pid);
+       SLOG(LOG_INFO, TAG_VCD, "[INFO] foreground pid (%d)", tmp_pid);
+
+       char appid[255] = {'\0',};
+       GSList *iter = NULL;
+       vc_client_info_s *data = NULL;
+
+       int count = g_slist_length(g_client_list);
+       int i;
+
+       if (0 == count) {
+               SLOG(LOG_DEBUG, TAG_VCD, "No Client");
+       } else {
+               iter = g_slist_nth(g_client_list, 0);
+               for (i = 0; i < count; i++) {
+                       if (NULL == iter)
+                               break;
+
+                       data = iter->data;
+
+                       if (NULL != data) {
+                               SLOG(LOG_DEBUG, TAG_VCD, "[%dth] pid(%d)", i, data->pid);
+                               memset(appid, 0, 255);
+                               aul_app_get_appid_bypid(data->pid, appid, sizeof(appid));
+                               int status = aul_app_get_status(appid);
+                               if (status == STATUS_FOCUS) {
+                                       SLOG(LOG_INFO, TAG_VCD, "[INFO] foreground pid (%d)", data->pid);
+                                       vcd_config_set_foreground(data->pid, true);
+                                       if (tmp_pid != data->pid) {
+                                               SLOG(LOG_INFO, TAG_VCD, "[INFO] foreground pid is different");
+                                       }
+                                       return;
+                               }
+                       }
+                       iter = g_slist_next(iter);
+               }
+       }
+
+       widget_info_s *widget_data = NULL;
+       count = g_slist_length(g_widget_list);
+
+       if (0 == count) {
+               SLOG(LOG_DEBUG, TAG_VCD, "No widget");
+       } else {
+               iter = g_slist_nth(g_widget_list, 0);
+               for (i = 0; i < count; i++) {
+                       if (NULL == iter)
+                               break;
+
+                       widget_data = iter->data;
+
+                       if (NULL != widget_data) {
+                               SLOG(LOG_DEBUG, TAG_VCD, "[%dth] pid(%d)", i, widget_data->pid);
+                               memset(appid, 0, 255);
+                               aul_app_get_appid_bypid(widget_data->pid, appid, sizeof(appid));
+                               int status = aul_app_get_status(appid);
+                               if (status == STATUS_FOCUS) {
+                                       SLOG(LOG_INFO, TAG_VCD, "[INFO] foreground pid (%d)", widget_data->pid);
+                                       vcd_config_set_foreground(widget_data->pid, true);
+                                       if (tmp_pid != widget_data->pid) {
+                                               SLOG(LOG_INFO, TAG_VCD, "[INFO] foreground pid is changed");
+                                       }
+                                       return;
+                               }
+                       }
+                       iter = g_slist_next(iter);
+               }
+       }
+
+       SLOG(LOG_INFO, TAG_VCD, "[INFO] No foreground");
+       vcd_config_set_foreground(VC_RUNTIME_INFO_NO_FOREGROUND, true);
+       return;
+}
index d84ba3b61c0ed7bce069603114820630e061ad71..d38a8ba91e8344fb206a016449dbec2e49a7716a 100644 (file)
@@ -152,6 +152,7 @@ int vcd_client_unset_exclusive_command(int pid);
 
 int vcd_client_save_client_info();
 
+void vcd_client_update_foreground_pid();
 /*
 * widget API
 */
index 9feed7efc145df03249a1b11a15e35e6f0de841c..00f5792937e00cf98c79a472637fbb742c703680 100755 (executable)
@@ -1526,11 +1526,12 @@ int vcd_server_mgr_start(vcd_recognition_mode_e recognition_mode, bool exclusive
        vcd_client_set_recognition_mode(recognition_mode);
 
        if (false == exclusive_cmd) {
+               vcd_client_update_foreground_pid();
                /* Notify show tooltip */
                if (1 == vcd_config_get_command_type_enabled(VC_COMMAND_TYPE_WIDGET)) {
                        int pid = vcd_client_widget_get_foreground_pid();
                        if (-1 != pid) {
-                               SLOG(LOG_DEBUG, TAG_VCD, "[Server] Request tooltip show and widget command");
+                               SLOG(LOG_INFO, TAG_VCD, "[Server] Request tooltip show and widget command");
                                ecore_timer_add(0, __vcd_request_show_tooltip, (void*)true);
                                return 0;
                        }