From fa3ebfb1eb054ba88824a908c996094bb98e85c5 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Tue, 30 Mar 2021 18:27:02 -0400 Subject: refactor lut/motivity --- driver/driver.cpp | 41 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 30 deletions(-) (limited to 'driver/driver.cpp') diff --git a/driver/driver.cpp b/driver/driver.cpp index 49f375d..89f09dc 100644 --- a/driver/driver.cpp +++ b/driver/driver.cpp @@ -13,13 +13,11 @@ #endif using milliseconds = double; -using lut_value_t = ra::si_pair; struct { ra::settings args; milliseconds tick_interval = 0; // set in DriverEntry ra::mouse_modifier modifier; - vec2 lookups = {}; } global = {}; VOID @@ -164,7 +162,7 @@ Return Value: case RA_READ: status = WdfRequestRetrieveOutputBuffer( Request, - sizeof(ra::settings), + sizeof(ra::io_t), &buffer, NULL ); @@ -172,14 +170,18 @@ Return Value: DebugPrint(("RetrieveOutputBuffer failed: 0x%x\n", status)); } else { - *reinterpret_cast(buffer) = global.args; - bytes_out = sizeof(ra::settings); + ra::io_t& output = *reinterpret_cast(buffer); + + output.args = global.args; + output.mod = global.modifier; + + bytes_out = sizeof(ra::io_t); } break; case RA_WRITE: status = WdfRequestRetrieveInputBuffer( Request, - sizeof(ra::settings), + sizeof(ra::io_t), &buffer, NULL ); @@ -191,14 +193,10 @@ Return Value: interval.QuadPart = static_cast(ra::WRITE_DELAY) * -10000; KeDelayExecutionThread(KernelMode, FALSE, &interval); - ra::settings new_settings = *reinterpret_cast(buffer); - - if (new_settings.time_min <= 0 || _isnanf(static_cast(new_settings.time_min))) { - new_settings.time_min = ra::settings{}.time_min; - } + ra::io_t& input = *reinterpret_cast(buffer); - global.args = new_settings; - global.modifier = { global.args, global.lookups }; + global.args = input.args; + global.modifier = input.mod; } break; case RA_GET_VERSION: @@ -276,23 +274,6 @@ Routine Description: KeQueryPerformanceCounter(&freq); global.tick_interval = 1e3 / freq.QuadPart; - auto make_lut = [] { - const size_t POOL_SIZE = sizeof(lut_value_t) * ra::LUT_SIZE; - - auto pool = ExAllocatePoolWithTag(NonPagedPool, POOL_SIZE, 'AR'); - - if (!pool) { - DebugPrint(("RA - failed to allocate LUT\n")); - } - else { - RtlZeroMemory(pool, POOL_SIZE); - } - - return reinterpret_cast(pool); - }; - - global.lookups = { make_lut(), make_lut() }; - CreateControlDevice(driver); } else { -- cgit v1.2.3