Fix vconf type mismatch issue 00/301900/1
authorInhong Han <inhong1.han@samsung.com>
Mon, 27 Nov 2023 05:56:55 +0000 (14:56 +0900)
committerInhong Han <inhong1.han@samsung.com>
Mon, 27 Nov 2023 05:56:55 +0000 (14:56 +0900)
Change-Id: I7e8ba0efd97d3256749e88da4dd66cf28c731ba9

ism/extras/wayland_immodule/wayland_imcontext.c

index ccf9960..724ec07 100644 (file)
@@ -442,10 +442,26 @@ static void input_language_changed_cb (keynode_t *key, void* data)
     }
 }
 
+static Eina_Bool get_multiview_mode (const char *multiview_str)
+{
+    char *mode_str = strstr (multiview_str, "mode");
+    if (mode_str)
+    {
+        mode_str = strstr (mode_str, "\"on\"");
+        if (mode_str)
+            return EINA_TRUE;
+    }
+
+    return EINA_FALSE;
+}
+
 static void multiview_mode_changed_cb (keynode_t *key, void* data)
 {
-    multiview_mode = vconf_keynode_get_bool (key);
-    LOGD("multiview mode : %d", multiview_mode);
+    char *multiview_str = vconf_keynode_get_str (key);
+    if (multiview_str) {
+        multiview_mode = get_multiview_mode (multiview_str);
+        LOGD("multiview mode : %d", multiview_mode);
+    }
 }
 
 static Eina_Bool
@@ -2990,10 +3006,11 @@ void wayland_im_initialize ()
             hw_keyboard_mode = EINA_TRUE;
     }
 
-    if (vconf_get_bool (VCONFKEY_MULTIVIEW_MODE, &val) == 0) {
-        LOGD("multiview mode : %d", val);
-        if (val == EINA_TRUE)
-            multiview_mode = EINA_TRUE;
+    char *multiview_str = vconf_get_str (VCONFKEY_MULTIVIEW_MODE);
+    if (multiview_str) {
+        multiview_mode = get_multiview_mode (multiview_str);
+        LOGD("multiview mode : %d", multiview_mode);
+        free (multiview_str);
     }
 
     if (vconf_notify_key_changed (VCONFKEY_AUTOCAPITAL_ALLOW_BOOL, autocapital_allow_changed_cb, NULL) != 0)