Lower CPU usage
This commit is contained in:
parent
a0a5eba0f4
commit
309609a377
1 changed files with 11 additions and 15 deletions
26
dev_out.c
26
dev_out.c
|
|
@ -479,10 +479,9 @@ void *dev_out_thread_func(void *ptr) {
|
||||||
virt_dualshock_compose(&controller_data.ds4, &dev_out_data->dev_stats.gamepad, tmp_buf);
|
virt_dualshock_compose(&controller_data.ds4, &dev_out_data->dev_stats.gamepad, tmp_buf);
|
||||||
virt_dualshock_send(&controller_data.ds4, tmp_buf);
|
virt_dualshock_send(&controller_data.ds4, tmp_buf);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// this does reset the for, ensuring every other device has nothing to say
|
|
||||||
continue;
|
if ((current_mouse_fd > 0) && (mouse_time_diff_usecs >= mouse_report_timing_us)) {
|
||||||
} else if ((current_mouse_fd > 0) && (mouse_time_diff_usecs >= mouse_report_timing_us)) {
|
|
||||||
mouse_last_hid_report_sent = now;
|
mouse_last_hid_report_sent = now;
|
||||||
|
|
||||||
virt_mouse_send(&mouse_data, &dev_out_data->dev_stats.mouse, NULL);
|
virt_mouse_send(&mouse_data, &dev_out_data->dev_stats.mouse, NULL);
|
||||||
|
|
@ -490,16 +489,12 @@ void *dev_out_thread_func(void *ptr) {
|
||||||
// reset mouse movements now
|
// reset mouse movements now
|
||||||
dev_out_data->dev_stats.mouse.x = 0;
|
dev_out_data->dev_stats.mouse.x = 0;
|
||||||
dev_out_data->dev_stats.mouse.y = 0;
|
dev_out_data->dev_stats.mouse.y = 0;
|
||||||
|
}
|
||||||
// this does reset the for, ensuring every other device has nothing to say
|
|
||||||
continue;
|
if ((current_keyboard_fd > 0) && (kbd_time_diff_usecs >= kbd_report_timing_us)) {
|
||||||
} else if ((current_keyboard_fd > 0) && (kbd_time_diff_usecs >= kbd_report_timing_us)) {
|
|
||||||
keyboard_last_hid_report_sent = now;
|
keyboard_last_hid_report_sent = now;
|
||||||
|
|
||||||
virt_kbd_send(&keyboard_data, &dev_out_data->dev_stats.kbd, NULL);
|
virt_kbd_send(&keyboard_data, &dev_out_data->dev_stats.kbd, NULL);
|
||||||
|
|
||||||
// this does reset the for, ensuring every other device has nothing to say
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -533,11 +528,11 @@ void *dev_out_thread_func(void *ptr) {
|
||||||
FD_SET(current_gamepad_fd, &read_fds);
|
FD_SET(current_gamepad_fd, &read_fds);
|
||||||
}
|
}
|
||||||
|
|
||||||
const int64_t timeout_gamepad_time_diff_usecs = (current_gamepad_fd > 0) ? gamepad_report_timing_us - gamepad_time_diff_usecs : 500;
|
const int64_t timeout_gamepad_time_diff_usecs = (current_gamepad_fd > 0) ? gamepad_report_timing_us - gamepad_time_diff_usecs : 5000;
|
||||||
const int64_t timeout_mouse_time_diff_usecs = (current_mouse_fd > 0) ? mouse_report_timing_us - mouse_time_diff_usecs : 500;
|
const int64_t timeout_mouse_time_diff_usecs = (current_mouse_fd > 0) ? mouse_report_timing_us - mouse_time_diff_usecs : 5000;
|
||||||
const int64_t timeout_kbd_time_diff_usecs = (current_keyboard_fd > 0) ? kbd_report_timing_us - kbd_time_diff_usecs : 500;
|
const int64_t timeout_kbd_time_diff_usecs = (current_keyboard_fd > 0) ? kbd_report_timing_us - kbd_time_diff_usecs : 5000;
|
||||||
|
|
||||||
int64_t next_timing_out_device_diff_usecs = 500;
|
int64_t next_timing_out_device_diff_usecs = 5000;
|
||||||
|
|
||||||
if ((timeout_kbd_time_diff_usecs > 0) && (timeout_kbd_time_diff_usecs < next_timing_out_device_diff_usecs)) {
|
if ((timeout_kbd_time_diff_usecs > 0) && (timeout_kbd_time_diff_usecs < next_timing_out_device_diff_usecs)) {
|
||||||
next_timing_out_device_diff_usecs = timeout_kbd_time_diff_usecs;
|
next_timing_out_device_diff_usecs = timeout_kbd_time_diff_usecs;
|
||||||
|
|
@ -563,6 +558,7 @@ void *dev_out_thread_func(void *ptr) {
|
||||||
if (ready_fds == -1) {
|
if (ready_fds == -1) {
|
||||||
const int err = errno;
|
const int err = errno;
|
||||||
fprintf(stderr, "Error reading events for output devices: %d\n", err);
|
fprintf(stderr, "Error reading events for output devices: %d\n", err);
|
||||||
|
usleep(1000);
|
||||||
continue;
|
continue;
|
||||||
} else if (ready_fds == 0) {
|
} else if (ready_fds == 0) {
|
||||||
// timeout: do nothing but continue. next iteration will take care
|
// timeout: do nothing but continue. next iteration will take care
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue