ecore_wl2_input: fix calibration logic for repeating key event 52/268252/1
authorHosang Kim <hosang12.kim@samsung.com>
Fri, 17 Dec 2021 09:47:10 +0000 (18:47 +0900)
committerkim hosang <hosang12.kim@samsung.com>
Fri, 17 Dec 2021 10:21:05 +0000 (10:21 +0000)
Change-Id: I6f444b2a71e6e4d2c0379b0ffad8e755d9375ee0

src/lib/ecore_wl2/ecore_wl2_input.c

index 6720fc7..0c19dae 100644 (file)
@@ -1367,15 +1367,20 @@ _keyboard_cb_repeat(void *data)
    input = data;
    if (!input || !input->repeat.timer) return ECORE_CALLBACK_CANCEL;
 
-   //A bit slow...
-   double cur_time = ecore_time_get();
-   if (cur_time > input->repeat.intime)
+   if (!input->repeat.repeating)
      {
-        input->repeat.intime = cur_time + (cur_time - input->repeat.intime) + 0.0166;
-        ecore_timer_interval_set(input->repeat.timer, input->repeat.intime - cur_time);
-        return ECORE_CALLBACK_RENEW;
+        //A bit slow...
+        double cur_time = ecore_time_get();
+        if (cur_time > input->repeat.intime)
+          {
+             input->repeat.intime = cur_time + (cur_time - input->repeat.intime) + 0.0166;
+             ecore_timer_interval_set(input->repeat.timer, input->repeat.intime - cur_time);
+             return ECORE_CALLBACK_RENEW;
+          }
+
+        ecore_timer_interval_set(input->repeat.timer, input->repeat.rate);
+        input->repeat.repeating = EINA_TRUE;
      }
-   input->repeat.intime = (cur_time + input->repeat.delay + 0.0166);
 
    input->repeat.time += (int)(input->repeat.rate * 1000.0);
 
@@ -1385,11 +1390,6 @@ _keyboard_cb_repeat(void *data)
                              WL_KEYBOARD_KEY_STATE_PRESSED,
                              input->repeat.time, EINA_FALSE);
 
-   if (!input->repeat.repeating)
-     {
-        ecore_timer_interval_set(input->repeat.timer, input->repeat.rate);
-        input->repeat.repeating = EINA_TRUE;
-     }
    return ECORE_CALLBACK_RENEW;
 }