e_input: move kbd structure to e_comp_input_intern.h
[platform/upstream/enlightenment.git] / src / bin / e_info_server.c
index ec59ab7..2472440 100644 (file)
@@ -6628,13 +6628,44 @@ finish:
    return reply;
 }
 
+static void
+_e_info_server_input_thread_key_repeat_set(void *data)
+{
+   FILE *log_fp;
+   int delay = 0;
+   int rate = 0;
+   E_Input_Thread_Request_Key_Repeat_Data key_repeat_data;
+
+   memcpy(&key_repeat_data, data, sizeof(E_Input_Thread_Request_Key_Repeat_Data));
+
+   delay = key_repeat_data.delay;
+   rate = key_repeat_data.rate;
+
+   if (strlen(key_repeat_data.path) > 0)
+     {
+        log_fp = fopen(key_repeat_data.path, "a");
+        EINA_SAFETY_ON_NULL_RETURN(log_fp);
+
+        fprintf(log_fp, "\tkeyboard repeat info\n");
+        fprintf(log_fp, "\t\trate: %d (ms), delay: %d (ms)\n", e_comp_input_key->kbd.repeat_rate, e_comp_input_key->kbd.repeat_delay);
+        fclose(log_fp);
+        log_fp = NULL;
+     }
+   else
+     {
+        if (delay <= 0) delay = e_comp_input_key->kbd.repeat_delay;
+        if (rate <= 0) rate = e_comp_input_key->kbd.repeat_rate;
+
+        e_comp_wl_input_keyboard_repeat_set(delay, rate);
+     }
+}
+
 static Eldbus_Message *
 _e_info_server_cb_key_repeat(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
    Eldbus_Message *reply = eldbus_message_method_return_new(msg);
    const char *path = NULL;
    int rate = 0, delay = 0;
-   FILE *log_fp;
 
    if (!eldbus_message_arguments_get(msg, "sii", &path, &delay, &rate))
      {
@@ -6643,23 +6674,14 @@ _e_info_server_cb_key_repeat(const Eldbus_Service_Interface *iface EINA_UNUSED,
      }
    if (!e_comp_wl) return reply;
 
+   E_Input_Thread_Request_Key_Repeat_Data key_repeat_data = { 0 };
    if (path && strlen(path) > 0)
-     {
-        log_fp = fopen(path, "a");
-        EINA_SAFETY_ON_NULL_RETURN_VAL(log_fp, reply);
+      strncpy(key_repeat_data.path, path, strlen(path));
 
-        fprintf(log_fp, "\tkeyboard repeat info\n");
-        fprintf(log_fp, "\t\trate: %d (ms), delay: %d (ms)\n", e_comp_wl->kbd.repeat_rate, e_comp_wl->kbd.repeat_delay);
-        fclose(log_fp);
-        log_fp = NULL;
-     }
-   else
-     {
-        if (delay <= 0) delay = e_comp_wl->kbd.repeat_delay;
-        if (rate <= 0) rate = e_comp_wl->kbd.repeat_rate;
+   key_repeat_data.delay = delay;
+   key_repeat_data.rate = rate;
 
-        e_comp_wl_input_keyboard_repeat_set(delay, rate);
-     }
+   e_input_thread_safe_call(_e_info_server_input_thread_key_repeat_set, &key_repeat_data, sizeof(E_Input_Thread_Request_Key_Repeat_Data));
 
    return reply;
 }