Modified to not to set keyboard repeat rate twice 89/306389/1
authorInhong Han <inhong1.han@samsung.com>
Wed, 21 Feb 2024 04:13:19 +0000 (13:13 +0900)
committerInhong Han <inhong1.han@samsung.com>
Wed, 21 Feb 2024 04:54:24 +0000 (13:54 +0900)
Change-Id: Icc0a794f830cfbbd379b4659f0cd78661041e73a

ism/extras/wayland_immodule/wayland_imcontext.c

index 08a3594..883a353 100644 (file)
@@ -1558,26 +1558,28 @@ set_focus(Ecore_IMF_Context *ctx)
             ecore_wl2_window_surface_get(imcontext->window));
 
     char *key_rate = getenv ("ISF_KEY_REPEAT_RATE");
+    double repeat_rate = 0.0, repeat_delay = 0.0;
     if (key_rate) {
         g_desired_key_rate = atof (key_rate);
         if (g_desired_key_rate > 0.0) {
-            if (!ecore_wl2_input_keyboard_repeat_get (input, &g_original_key_rate, &g_original_key_delay)) {
+            if (!ecore_wl2_input_keyboard_repeat_get (input, &repeat_rate, &repeat_delay)) {
                 LOGE ("ecore_wl2_input_keyboard_repeat_get failed");
+            } else {
+                LOGD ("ecore_wl2_input_keyboard_repeat_get rate=%f, delay=%f. Desired rate=%f",
+                    repeat_rate, repeat_delay, g_desired_key_rate);
+
+                if (g_desired_key_rate != repeat_rate && !g_focused) {
+                    g_focused = EINA_TRUE;
+                    if (!ecore_wl2_input_keyboard_repeat_set (input, g_desired_key_rate, repeat_delay)) {
+                        LOGE ("ecore_wl2_input_keyboard_repeat_set failed");
+                    } else {
+                        g_original_key_rate = repeat_rate;
+                        g_original_key_delay = repeat_delay;
+                        LOGD ("ecore_wl2_input_keyboard_repeat_set(%f, %f), original rate(%f)",
+                            g_desired_key_rate, repeat_delay, g_original_key_rate);
+                    }
+                }
             }
-            else {
-                LOGD ("ecore_wl2_input_keyboard_repeat_get original rate=%f, delay=%f. Desired rate=%f",
-                    g_original_key_rate, g_original_key_delay, g_desired_key_rate);
-            }
-        }
-    }
-
-    if (g_desired_key_rate > 0.0 && g_original_key_delay > 0.0 && !g_focused) {
-        g_focused = EINA_TRUE;
-        if (!ecore_wl2_input_keyboard_repeat_set (input, g_desired_key_rate, g_original_key_delay)) {
-            LOGE ("ecore_wl2_input_keyboard_repeat_set failed");
-        }
-        else {
-            LOGD ("ecore_wl2_input_keyboard_repeat_set(%f, %f)", g_desired_key_rate, g_original_key_delay);
         }
     }