From 84d27c6508cf770d31a8db38bed0565796ea7df0 Mon Sep 17 00:00:00 2001 From: scph Date: Fri, 8 Apr 2022 15:25:51 -0500 Subject: [PATCH] mouse: get/set acceleration factor by mouse name * Create and use *_mouse_acceleration_by_name functions to replace older *_mouse_acceleration functions. Now consistent with related functions (such as *_mouse_speed_by_name). * Passing mouse_name to HandleGetSetMouseAcceleration in the BMessage fixes mouse acceleration changes not applying properly. Change-Id: I668cdbbbb81e3cb9069a3fc2ce77e6ef75ba8476 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5189 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- headers/os/interface/InterfaceDefs.h | 2 ++ .../devices/mouse/MouseInputDevice.cpp | 2 +- src/kits/interface/InterfaceDefs.cpp | 29 +++++++++++++++++++ src/preferences/input/MouseSettings.cpp | 4 +-- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h index 40210d9d50..fcde886778 100644 --- a/headers/os/interface/InterfaceDefs.h +++ b/headers/os/interface/InterfaceDefs.h @@ -432,6 +432,8 @@ status_t get_mouse_speed_by_name(BString mouse_name, int32* speed); status_t set_mouse_speed_by_name(BString mouse_name, int32 speed); status_t get_mouse_acceleration(int32* speed); status_t set_mouse_acceleration(int32 speed); +status_t get_mouse_acceleration_by_name(BString mouse_name, int32* speed); +status_t set_mouse_acceleration_by_name(BString mouse_name, int32 speed); status_t get_key_repeat_rate(int32* rate); status_t set_key_repeat_rate(int32 rate); diff --git a/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp b/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp index fa37131e0f..b6506d31ac 100644 --- a/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp +++ b/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp @@ -532,7 +532,7 @@ MouseDevice::_UpdateSettings() if (get_mouse_speed_by_name(fDeviceRef.name, &fSettings.accel.speed) != B_OK) LOG_ERR("error when get_mouse_speed\n"); else { - if (get_mouse_acceleration(&fSettings.accel.accel_factor) != B_OK) + if (get_mouse_acceleration_by_name(fDeviceRef.name, &fSettings.accel.accel_factor) != B_OK) LOG_ERR("error when get_mouse_acceleration\n"); else { mouse_accel accel; diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index 67bfc8ee3f..16c6602151 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -683,6 +683,35 @@ set_mouse_acceleration(int32 speed) } +status_t +get_mouse_acceleration_by_name(BString mouse_name, int32 *speed) +{ + BMessage command(IS_GET_MOUSE_ACCELERATION); + BMessage reply; + command.AddString("mouse_name", mouse_name.String()); + + _control_input_server_(&command, &reply); + + if (reply.FindInt32("speed", speed) != B_OK) + *speed = 65536; + + return B_OK; +} + + +status_t +set_mouse_acceleration_by_name(BString mouse_name, int32 speed) +{ + BMessage command(IS_SET_MOUSE_ACCELERATION); + BMessage reply; + command.AddString("mouse_name", mouse_name.String()); + + command.AddInt32("speed", speed); + + return _control_input_server_(&command, &reply); +} + + status_t get_key_repeat_rate(int32 *rate) { diff --git a/src/preferences/input/MouseSettings.cpp b/src/preferences/input/MouseSettings.cpp index 7acb36ffe8..b65c484ad3 100644 --- a/src/preferences/input/MouseSettings.cpp +++ b/src/preferences/input/MouseSettings.cpp @@ -95,7 +95,7 @@ MouseSettings::_RetrieveSettings() return B_ERROR; if (get_mouse_speed_by_name(fName, &fSettings.accel.speed) != B_OK) return B_ERROR; - if (get_mouse_acceleration(&fSettings.accel.accel_factor) != B_OK) + if (get_mouse_acceleration_by_name(fName, &fSettings.accel.accel_factor) != B_OK) return B_ERROR; if (get_mouse_type_by_name(fName, &fSettings.type) != B_OK) return B_ERROR; @@ -294,7 +294,7 @@ MouseSettings::SetMouseSpeed(int32 speed) void MouseSettings::SetAccelerationFactor(int32 factor) { - if (set_mouse_acceleration(factor) == B_OK) + if (set_mouse_acceleration_by_name(fName, factor) == B_OK) fSettings.accel.accel_factor = factor; }