static bool g_silence_detection;
static vcd_recognition_mode_e g_recognition_mode;
static char* g_result_text = NULL;
+static bool g_is_waiting_recording = false;
+static int g_waiting_recording_pid = -1;
/* Function definitions */
widget_info_s* __widget_get_element(int pid);
return 0;
}
+int vcd_client_widget_set_waiting_for_recording(int pid, bool waiting)
+{
+
+ if (TRUE == waiting && pid != vcd_client_widget_get_foreground_pid()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Client Data ERROR] pid(%d) is NOT forground pid", pid);
+ return -1;
+ }
+
+ g_is_waiting_recording = waiting;
+ g_waiting_recording_pid = pid;
+ SLOG(LOG_INFO, TAG_VCD, "[INFO] Success to set waiting for recording, pid(%d), waiting(%d)", pid, waiting);
+ return 0;
+}
+
+int vcd_client_widget_get_waiting_for_recording(int pid, bool* waiting)
+{
+ if (pid != g_waiting_recording_pid) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Client Data ERROR] pid(%d) is NOT waiting pid", pid);
+ return -1;
+ }
+
+ *waiting = g_is_waiting_recording;
+ SLOG(LOG_INFO, TAG_VCD, "[INFO] Success to get waiting for recording, waiting(%d)", *waiting);
+ return 0;
+}
+
void vcd_client_update_foreground_pid()
{
int tmp_pid = VC_RUNTIME_INFO_NO_FOREGROUND;
static Eina_Bool __finalize_quit_ecore_loop(void *data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[Server] quit ecore main loop");
+ SLOG(LOG_ERROR, TAG_VCD, "[Server] quit ecore main loop");
ecore_main_loop_quit();
return EINA_FALSE;
}
SLOG(LOG_DEBUG, TAG_VCD, "[Server] Manager is NOT available.");
return VCD_ERROR_OPERATION_FAILED;
}
+ vcd_client_widget_set_waiting_for_recording(-1, false);
SLOG(LOG_DEBUG, TAG_VCD, "[Server] set recognition mode = %d", recognition_mode);
vcd_client_set_recognition_mode(recognition_mode);
if (-1 != pid) {
SLOG(LOG_INFO, TAG_VCD, "[Server] Request tooltip show and widget command");
ecore_timer_add(0, __vcd_request_show_tooltip, (void*)true);
+ vcd_client_widget_set_waiting_for_recording(pid, true);
return 0;
}
}
return VCD_ERROR_NONE;
}
+static void __vcd_server_widget_start_recording(void *data)
+{
+ if (0 != __start_internal_recognition()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to start recongition");
+ }
+ vcd_client_widget_set_waiting_for_recording(-1, false);
+}
+
int vcd_server_widget_finalize(int pid)
{
/* check if pid is valid */
}
if (0 == vcd_client_get_ref_count()) {
- SLOG(LOG_DEBUG, TAG_VCD, "[Server] connected client list is empty");
+ SLOG(LOG_ERROR, TAG_VCD, "[Server] connected client list is empty");
ecore_timer_add(0, __finalize_quit_ecore_loop, NULL);
+ return 0;
+ }
+
+ bool is_waiting = false;
+ if (0 != vcd_client_widget_get_waiting_for_recording(pid, &is_waiting)) {
+ SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to get waiting to recording");
}
+ if (true == is_waiting) {
+ SLOG(LOG_INFO, TAG_VCD, "[Server INFO] invoke to start recording");
+ ecore_main_loop_thread_safe_call_async(__vcd_server_widget_start_recording, NULL);
+ }
return VCD_ERROR_NONE;
}