e_input_backend_thread_safe_call(E_Input_Thread_Safe_Call_Cb cb, void *data, size_t data_length)
{
E_Input_Thread_Request_Data order;
+ char *write_buf = NULL;
+ ssize_t write_buf_size = 0;
+
order.safe_call_cb = cb;
order.data_length = data_length;
return;
}
- if (input_thread_pipe_write(&order, sizeof(E_Input_Thread_Request_Data)) < 0)
- {
- ERR("Failed to write header to pipe\n");
- return;
- }
+ write_buf_size = sizeof(E_Input_Thread_Request_Data)+data_length;
+ write_buf = calloc(sizeof(char), write_buf_size);
+ EINA_SAFETY_ON_NULL_RETURN(write_buf);
- if (input_thread_pipe_write(data, data_length) < 0)
+ memcpy(write_buf, &order, sizeof(E_Input_Thread_Request_Data));
+ memcpy(write_buf + sizeof(E_Input_Thread_Request_Data), data, data_length);
+
+ if (input_thread_pipe_write(write_buf, write_buf_size) < 0)
{
- ERR("Failed to write header to pipe\n");
- return;
+ ERR("Failed to write data to pipe\n");
}
+
+ free(write_buf);
}
static int