Add internal API to set whether IME is called from dotnet 23/162723/5
authorsungwook79.park <sungwook79.park@samsung.com>
Tue, 5 Dec 2017 05:37:18 +0000 (14:37 +0900)
committersungwook79.park <sungwook79.park@samsung.com>
Tue, 5 Dec 2017 06:43:40 +0000 (15:43 +0900)
Change-Id: I73c5a5d0d738ef38643673c996acc7d9b95447f4
Signed-off-by: sungwook79.park <sungwook79.park@samsung.com>
include/inputmethod_internal.h
src/inputmethod.cpp

index a2a003a292ac90017b1e7d4e98c85d858e63ad07..4e9f74d337a436068ba2f39ee59f114cd3724fee 100644 (file)
@@ -323,6 +323,20 @@ int ime_prepare();
  */
 int ime_finalize();
 
+/**
+ * @brief Set flag whether IME is called from dotnet
+ *
+ * @since_tizen 4.0
+ *
+ * @privilege %http://tizen.org/privilege/ime
+ *
+ * @param[in] set Set with Dotnet mode
+ * @return 0 on success, otherwise a negative error value
+ * @retval #IME_ERROR_NONE No error
+ * @retval #IME_ERROR_PERMISSION_DENIED The application does not have the privilege to call this function
+ */
+int ime_set_dotnet_flag(bool set);
+
 #ifdef __cplusplus
 }
 #endif
index 6bb6765bfef3803311d0f5ae377cbb37ca8ae031..54014564df0534b66b350497c5f2bc0aeea5e89d 100644 (file)
@@ -480,6 +480,19 @@ ime_error_e _check_privilege()
     return ret;
 }
 
+bool g_from_dotnet = false;
+EXPORT_API int ime_set_dotnet_flag(bool set)
+{
+    ime_error_e retVal = IME_ERROR_NONE;
+
+    retVal = _check_privilege();
+    if (retVal != IME_ERROR_NONE) return retVal;
+
+    g_from_dotnet = set;
+
+    return retVal;
+}
+
 EXPORT_API int ime_run(ime_callback_s *basic_cb, void *user_data)
 {
     ime_error_e retVal = IME_ERROR_NONE;
@@ -510,6 +523,11 @@ EXPORT_API int ime_run(ime_callback_s *basic_cb, void *user_data)
     g_user_data = user_data;
     g_running = true;
 
+    if (g_from_dotnet) {
+        LOGD("ime_run is called from dotnet");
+        return IME_ERROR_NONE;
+    }
+
     try {
         g_core.run();
     } catch (...) {
@@ -1374,6 +1392,7 @@ EXPORT_API int ime_initialize()
     if (retVal != IME_ERROR_NONE) return retVal;
 
     g_core.init();
+    g_running = false;
 
     return retVal;
 }
@@ -1405,6 +1424,10 @@ EXPORT_API int ime_finalize()
     if (retVal != IME_ERROR_NONE) return retVal;
 
     g_core.fini();
+    g_running = false;
+    memset(&g_basic_callback, 0, sizeof(ime_callback_s));
+    memset(&g_event_callback, 0, sizeof(ime_event_callback_s));
+    g_user_data = NULL;
 
     return retVal;
 }