summaryrefslogtreecommitdiff
path: root/wrapper
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-08-24 04:24:33 -0400
committera1xd <[email protected]>2020-08-24 04:24:33 -0400
commit313ab92531fbfacb955f9de85d3fc611f8064154 (patch)
tree4986f8f58b4144a4ec7e85ae14af045b7c12b3da /wrapper
parentMerge pull request #16 from JacobPalecki/Misc (diff)
downloadrawaccel-313ab92531fbfacb955f9de85d3fc611f8064154.tar.xz
rawaccel-313ab92531fbfacb955f9de85d3fc611f8064154.zip
clean up wrapper, minimize heap alloc
Diffstat (limited to 'wrapper')
-rw-r--r--wrapper/wrapper.cpp22
-rw-r--r--wrapper/wrapper.hpp33
-rw-r--r--wrapper/wrapper.vcxproj48
-rw-r--r--wrapper/wrapper_io.cpp12
-rw-r--r--wrapper/wrapper_io.hpp8
5 files changed, 27 insertions, 96 deletions
diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp
index dcc9606..6dabd7e 100644
--- a/wrapper/wrapper.cpp
+++ b/wrapper/wrapper.cpp
@@ -2,8 +2,9 @@
#include "wrapper.hpp"
-using namespace rawaccel;
-using namespace System;
+void replace(mouse_modifier* mod_ptr, const modifier_args& args) {
+ *mod_ptr = mouse_modifier(args);
+}
Tuple<double, double>^ ManagedAccel::Accelerate(int x, int y, double time)
{
@@ -11,7 +12,7 @@ Tuple<double, double>^ ManagedAccel::Accelerate(int x, int y, double time)
(double)x,
(double)y
};
- vec2d output = (*modifier_instance).modify_with_accel(input_vec2d, (milliseconds)time);
+ vec2d output = modifier_instance->modify_with_accel(input_vec2d, time);
return gcnew Tuple<double, double>(output.x, output.y);
}
@@ -31,7 +32,7 @@ void ManagedAccel::UpdateAccel(
double midpoint,
double gain_cap)
{
- modifier_args args = modifier_args{};
+ modifier_args args{};
args.acc_fn_args.accel_mode = mode;
args.degrees = rotation;
args.sens.x = sensitivityX;
@@ -46,13 +47,9 @@ void ManagedAccel::UpdateAccel(
args.acc_fn_args.acc_args.exponent = lim_exp;
args.acc_fn_args.acc_args.midpoint = midpoint;
args.acc_fn_args.acc_args.gain_cap = gain_cap;
-
- mouse_modifier* temp_modifier = new mouse_modifier(args);
- driverWriter->writeToDriver(temp_modifier);
- delete temp_modifier;
-
- ReadFromDriver();
+ replace(modifier_instance, args);
+ WriteToDriver();
}
double ManagedAccel::SensitivityX::get() { return modifier_instance->sensitivity.x; }
@@ -74,11 +71,10 @@ double ManagedAccel::PowerScale::get() { return modifier_instance->accel_fn.impl
void ManagedAccel::WriteToDriver()
{
- driverWriter->writeToDriver(modifier_instance);
+ wrapper_io::writeToDriver(*modifier_instance);
}
void ManagedAccel::ReadFromDriver()
{
- delete modifier_instance;
- modifier_instance = driverWriter->readFromDriver();
+ wrapper_io::readFromDriver(*modifier_instance);
}
diff --git a/wrapper/wrapper.hpp b/wrapper/wrapper.hpp
index 3643eb5..45647e8 100644
--- a/wrapper/wrapper.hpp
+++ b/wrapper/wrapper.hpp
@@ -1,43 +1,33 @@
#pragma once
-#include <iostream>
-
#include "wrapper_io.hpp"
-using namespace rawaccel;
using namespace System;
public ref class ManagedAccel
{
-protected:
- mouse_modifier* modifier_instance;
- wrapper_io* driverWriter;
+ mouse_modifier* const modifier_instance;
+
public:
- ManagedAccel(mouse_modifier* accel)
- : modifier_instance(accel)
- {
- driverWriter = new wrapper_io();
- }
- ManagedAccel(System::IntPtr args)
- {
- modifier_instance = new mouse_modifier(*reinterpret_cast<modifier_args*>(args.ToPointer()));
- driverWriter = new wrapper_io();
- }
+ ManagedAccel(System::IntPtr args) :
+ modifier_instance(new mouse_modifier(*reinterpret_cast<modifier_args*>(args.ToPointer())))
+ {}
// Empty constructor needed for serialization
- ManagedAccel() {}
+ ManagedAccel() : modifier_instance(nullptr) {}
virtual ~ManagedAccel()
{
- if (modifier_instance!= nullptr)
+ if (modifier_instance != nullptr)
{
delete modifier_instance;
}
}
+
!ManagedAccel()
{
- if (modifier_instance!= nullptr)
+ if (modifier_instance != nullptr)
{
delete modifier_instance;
}
@@ -60,10 +50,6 @@ public:
property double Midpoint { double get(); }
property double MinimumTime { double get(); }
property double PowerScale { double get(); }
- mouse_modifier* GetInstance()
- {
- return modifier_instance;
- }
Tuple<double, double>^ Accelerate(int x, int y, double time);
@@ -82,7 +68,6 @@ public:
double midpoint,
double gain_cap);
-
void WriteToDriver();
void ReadFromDriver();
diff --git a/wrapper/wrapper.vcxproj b/wrapper/wrapper.vcxproj
index 3407d6d..0ea90de 100644
--- a/wrapper/wrapper.vcxproj
+++ b/wrapper/wrapper.vcxproj
@@ -1,14 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
@@ -27,20 +19,6 @@
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <CLRSupport>true</CLRSupport>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
- <CLRSupport>true</CLRSupport>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
@@ -61,12 +39,6 @@
<ImportGroup Label="Shared">
<Import Project="..\common\common.vcxitems" Label="Shared" />
</ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -85,26 +57,6 @@
<AdditionalDependencies />
</Link>
</ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <LanguageStandard>stdcpp17</LanguageStandard>
- </ClCompile>
- <Link>
- <AdditionalDependencies />
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <LanguageStandard>stdcpp17</LanguageStandard>
- </ClCompile>
- <Link>
- <AdditionalDependencies />
- </Link>
- </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
diff --git a/wrapper/wrapper_io.cpp b/wrapper/wrapper_io.cpp
index 4284d60..b5727ef 100644
--- a/wrapper/wrapper_io.cpp
+++ b/wrapper/wrapper_io.cpp
@@ -3,16 +3,12 @@
#include <rawaccel-io.hpp>
#include "wrapper_io.hpp"
-void wrapper_io::writeToDriver(rawaccel::mouse_modifier* modifier)
+void wrapper_io::writeToDriver(const mouse_modifier& modifier)
{
- rawaccel::write(*modifier);
+ write(modifier);
}
-rawaccel::mouse_modifier* wrapper_io::readFromDriver()
+void wrapper_io::readFromDriver(mouse_modifier& modifier)
{
- rawaccel::mouse_modifier modifier = rawaccel::read();
- rawaccel::mouse_modifier* mod_pnt = (rawaccel::mouse_modifier*)malloc(sizeof(rawaccel::mouse_modifier));
- memcpy(mod_pnt, &modifier, sizeof(rawaccel::mouse_modifier));
-
- return mod_pnt;
+ modifier = read();
}
diff --git a/wrapper/wrapper_io.hpp b/wrapper/wrapper_io.hpp
index 3427e3f..1873f75 100644
--- a/wrapper/wrapper_io.hpp
+++ b/wrapper/wrapper_io.hpp
@@ -2,7 +2,9 @@
#include <rawaccel.hpp>
+using namespace rawaccel;
+
struct wrapper_io {
- void writeToDriver(rawaccel::mouse_modifier* modifier);
- rawaccel::mouse_modifier* readFromDriver();
-}; \ No newline at end of file
+ static void writeToDriver(const mouse_modifier& modifier);
+ static void readFromDriver(mouse_modifier& modifier);
+};