| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/device/physical/physical_device.c')
| -rw-r--r-- | src/device/physical/physical_device.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/device/physical/physical_device.c b/src/device/physical/physical_device.c index cf74b3c..797c734 100644 --- a/src/device/physical/physical_device.c +++ b/src/device/physical/physical_device.c @@ -148,14 +148,13 @@ int relabsd_physical_device_read * through them in order. * TODO: add an option to allow users to drop events when late. */ - device->is_late ? + (device->is_late == 1) ? LIBEVDEV_READ_FLAG_SYNC : LIBEVDEV_READ_FLAG_NORMAL ) /* "The fd is not in O_NONBLOCK and a read may block." */ | LIBEVDEV_READ_FLAG_BLOCKING - ) - , + ), &event ); @@ -166,7 +165,7 @@ int relabsd_physical_device_read RELABSD_DEBUG ( RELABSD_DEBUG_REAL_EVENTS, - "Valid event received: {type = %s; code = %s; value = %d}.", + "SUCCESS Valid event received: {type = %s; code = %s; value = %d}.", libevdev_event_type_get_name(event.type), libevdev_event_code_get_name(event.type, event.code), event.value @@ -176,7 +175,9 @@ int relabsd_physical_device_read *input_code = event.code; *input_value = event.value; - return 0; + device->is_late = 0; + + return 1; /* Code indicating that we are late. */ case LIBEVDEV_READ_STATUS_SYNC: @@ -187,21 +188,26 @@ int relabsd_physical_device_read * so we don't actually have any input event in hand. */ - /* FIXME: Really make sure this cannot recurse a second time. */ - return - relabsd_physical_device_read - ( - device, - input_type, - input_code, - input_value - ); + *input_type = event.type; + *input_code = event.code; + *input_value = event.value; + + RELABSD_DEBUG + ( + RELABSD_DEBUG_REAL_EVENTS, + "SYNC Valid event received: {type = %s; code = %s; value = %d}.", + libevdev_event_type_get_name(event.type), + libevdev_event_code_get_name(event.type, event.code), + event.value + ); + + return 1; /* No event to read. */ case -EAGAIN: device->is_late = 0; - return -1; + return 0; default: RELABSD_FATAL |


