Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dosbox-staging/dosbox-staging.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/hardware/mouse/mouse_interfaces.cpp')
-rw-r--r--src/hardware/mouse/mouse_interfaces.cpp47
1 files changed, 27 insertions, 20 deletions
diff --git a/src/hardware/mouse/mouse_interfaces.cpp b/src/hardware/mouse/mouse_interfaces.cpp
index f2a3620a4..4015256c2 100644
--- a/src/hardware/mouse/mouse_interfaces.cpp
+++ b/src/hardware/mouse/mouse_interfaces.cpp
@@ -148,13 +148,14 @@ public:
~InterfaceDos() = default;
void NotifyMoved(MouseEvent &ev, const float x_rel, const float y_rel,
- const uint16_t x_abs, const uint16_t y_abs) override;
+ const uint32_t x_abs, const uint32_t y_abs) override;
void NotifyButton(MouseEvent &ev, const uint8_t idx,
const bool pressed) override;
void NotifyWheel(MouseEvent &ev, const int16_t w_rel) override;
-
void NotifyBooting() override;
+ void UpdateInputType() override;
+
private:
friend class MouseInterface;
@@ -163,7 +164,6 @@ private:
void Init() override;
- void UpdateRawMapped() override;
void UpdateMinRate() override;
void UpdateRate() override;
};
@@ -174,11 +174,13 @@ public:
~InterfacePS2() = default;
void NotifyMoved(MouseEvent &ev, const float x_rel, const float y_rel,
- const uint16_t x_abs, const uint16_t y_abs) override;
+ const uint32_t x_abs, const uint32_t y_abs) override;
void NotifyButton(MouseEvent &ev, const uint8_t idx,
const bool pressed) override;
void NotifyWheel(MouseEvent &ev, const int16_t w_rel) override;
+ void UpdateInputType() override;
+
private:
friend class MouseInterface;
@@ -187,7 +189,6 @@ private:
void Init() override;
- void UpdateRawMapped() override;
void UpdateSensitivity() override;
void UpdateRate() override;
@@ -201,7 +202,7 @@ public:
~InterfaceCOM() = default;
void NotifyMoved(MouseEvent &ev, const float x_rel, const float y_rel,
- const uint16_t x_abs, const uint16_t y_abs) override;
+ const uint32_t x_abs, const uint32_t y_abs) override;
void NotifyButton(MouseEvent &ev, const uint8_t idx,
const bool pressed) override;
void NotifyWheel(MouseEvent &ev, const int16_t w_rel) override;
@@ -263,8 +264,10 @@ void MouseInterface::InitAllInstances()
default: assert(false); break;
}
- for (auto interface : mouse_interfaces)
+ for (auto interface : mouse_interfaces) {
interface->Init();
+ interface->UpdateConfig();
+ }
}
MouseInterface *MouseInterface::Get(const MouseInterfaceId interface_id)
@@ -415,7 +418,7 @@ void MouseInterface::SetMapStatus(const MouseMapStatus status, const uint8_t dev
if (map_status != new_map_status || mapped_idx != new_mapped_idx)
ResetButtons();
if (map_status != new_map_status)
- UpdateRawMapped();
+ UpdateInputType();
if (mapped_idx != new_mapped_idx)
ManyMouseGlue::GetInstance().Map(new_mapped_idx, interface_id);
@@ -514,11 +517,11 @@ void MouseInterface::UnRegisterListener()
void MouseInterface::UpdateConfig()
{
- UpdateRawMapped();
+ UpdateInputType();
UpdateSensitivity();
}
-void MouseInterface::UpdateRawMapped() {}
+void MouseInterface::UpdateInputType() {}
void MouseInterface::UpdateSensitivity()
{
@@ -630,7 +633,7 @@ void InterfaceDos::Init()
}
void InterfaceDos::NotifyMoved(MouseEvent &ev, const float x_rel, const float y_rel,
- const uint16_t x_abs, const uint16_t y_abs)
+ const uint32_t x_abs, const uint32_t y_abs)
{
ev.dos_moved = MOUSEDOS_NotifyMoved(x_rel * sensitivity_coeff_x,
y_rel * sensitivity_coeff_y,
@@ -668,10 +671,12 @@ void InterfaceDos::NotifyBooting()
ManyMouseGlue::GetInstance().ShutdownIfSafe();
}
-void InterfaceDos::UpdateRawMapped()
+void InterfaceDos::UpdateInputType()
{
- MOUSEDOS_NotifyMapped(IsMapped());
- MOUSEDOS_NotifyRawInput(mouse_config.raw_input || IsMapped());
+ const bool use_relative = IsMapped() || MOUSE_IsCaptured();
+ const bool is_input_raw = IsMapped() || mouse_config.raw_input;
+
+ MOUSEDOS_NotifyInputType(use_relative, is_input_raw);
}
void InterfaceDos::UpdateMinRate()
@@ -698,7 +703,7 @@ void InterfacePS2::Init()
}
void InterfacePS2::NotifyMoved(MouseEvent &ev, const float x_rel, const float y_rel,
- const uint16_t x_abs, const uint16_t y_abs)
+ const uint32_t x_abs, const uint32_t y_abs)
{
const bool request_ps2 = MOUSEPS2_NotifyMoved(x_rel * sensitivity_coeff_x,
y_rel * sensitivity_coeff_y);
@@ -731,10 +736,12 @@ void InterfacePS2::NotifyWheel(MouseEvent &ev, const int16_t w_rel)
ev.request_ps2 = request_ps2 || request_vmm;
}
-void InterfacePS2::UpdateRawMapped()
+void InterfacePS2::UpdateInputType()
{
- MOUSEVMM_NotifyMapped(IsMapped());
- MOUSEVMM_NotifyRawInput(mouse_config.raw_input || IsMapped());
+ const bool use_relative = IsMapped() || MOUSE_IsCaptured();
+ const bool is_input_raw = IsMapped() || mouse_config.raw_input;
+
+ MOUSEVMM_NotifyInputType(use_relative, is_input_raw);
}
void InterfacePS2::UpdateSensitivity()
@@ -759,8 +766,8 @@ InterfaceCOM::InterfaceCOM(const uint8_t port_id)
mouse_predefined.sensitivity_com)
{}
-void InterfaceCOM::NotifyMoved(MouseEvent &, const float x_rel,
- const float y_rel, const uint16_t, const uint16_t)
+void InterfaceCOM::NotifyMoved(MouseEvent &, const float x_rel, const float y_rel,
+ const uint32_t, const uint32_t)
{
assert(listener);