Skip to content

Commit d1e0877

Browse files
authored
Fix SdlGamepad/SdlJoystick state going stale with no event subscribers (#2605)
1 parent 9b54298 commit d1e0877

2 files changed

Lines changed: 23 additions & 35 deletions

File tree

src/Input/Silk.NET.Input.Sdl/SdlGamepad.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,14 @@ public void DoEvent(Event @event)
128128
}
129129
case GameControllerAxis.ControllerAxisTriggerleft:
130130
{
131-
TriggerMoved?.Invoke
132-
(this, _triggers[0] = new Trigger(0, (float) @event.Caxis.Value / short.MaxValue));
131+
_triggers[0] = new Trigger(0, (float) @event.Caxis.Value / short.MaxValue);
132+
TriggerMoved?.Invoke(this, _triggers[0]);
133133
break;
134134
}
135135
case GameControllerAxis.ControllerAxisTriggerright:
136136
{
137-
TriggerMoved?.Invoke
138-
(this, _triggers[1] = new Trigger(1, (float) @event.Caxis.Value / short.MaxValue));
137+
_triggers[1] = new Trigger(1, (float) @event.Caxis.Value / short.MaxValue);
138+
TriggerMoved?.Invoke(this, _triggers[1]);
139139
break;
140140
}
141141
}
@@ -145,15 +145,15 @@ public void DoEvent(Event @event)
145145
case EventType.Controllerbuttondown:
146146
{
147147
var ogBtn = _buttons[@event.Cbutton.Button];
148-
ButtonDown?.Invoke
149-
(this, _buttons[@event.Cbutton.Button] = new Button(ogBtn.Name, ogBtn.Index, true));
148+
_buttons[@event.Cbutton.Button] = new Button(ogBtn.Name, ogBtn.Index, true);
149+
ButtonDown?.Invoke(this, _buttons[@event.Cbutton.Button]);
150150
break;
151151
}
152152
case EventType.Controllerbuttonup:
153153
{
154154
var ogBtn = _buttons[@event.Cbutton.Button];
155-
ButtonUp?.Invoke
156-
(this, _buttons[@event.Cbutton.Button] = new Button(ogBtn.Name, ogBtn.Index, false));
155+
_buttons[@event.Cbutton.Button] = new Button(ogBtn.Name, ogBtn.Index, false);
156+
ButtonUp?.Invoke(this, _buttons[@event.Cbutton.Button]);
157157
break;
158158
}
159159
case EventType.Controllerdeviceadded:

src/Input/Silk.NET.Input.Sdl/SdlJoystick.cs

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,9 @@ public void DoEvent(Event @event)
5252
Array.Resize(ref _axes, @event.Jaxis.Axis + 1);
5353
}
5454

55-
AxisMoved?.Invoke
56-
(
57-
this,
58-
_axes[@event.Jaxis.Axis] = new Axis
59-
(@event.Jaxis.Axis, (float) @event.Jaxis.Value / short.MaxValue)
60-
);
55+
_axes[@event.Jaxis.Axis] = new Axis
56+
(@event.Jaxis.Axis, (float) @event.Jaxis.Value / short.MaxValue);
57+
AxisMoved?.Invoke(this, _axes[@event.Jaxis.Axis]);
6158
break;
6259
}
6360
case EventType.Joyballmotion:
@@ -73,17 +70,14 @@ public void DoEvent(Event @event)
7370
}
7471

7572
var val = @event.Jhat.Value;
76-
HatMoved?.Invoke
73+
_hats[@event.Jhat.Hat] = new Hat
7774
(
78-
this,
79-
_hats[@event.Jhat.Hat] = new Hat
80-
(
81-
@event.Jhat.Hat, (Position2D) ((val & 0x01) * (int) Position2D.Up +
82-
(val & 0x02) * (int) Position2D.Right +
83-
(val & 0x04) * (int) Position2D.Down +
84-
(val & 0x08) * (int) Position2D.Left)
85-
)
75+
@event.Jhat.Hat, (Position2D) ((val & 0x01) * (int) Position2D.Up +
76+
(val & 0x02) * (int) Position2D.Right +
77+
(val & 0x04) * (int) Position2D.Down +
78+
(val & 0x08) * (int) Position2D.Left)
8679
);
80+
HatMoved?.Invoke(this, _hats[@event.Jhat.Hat]);
8781
break;
8882
}
8983
case EventType.Joybuttondown:
@@ -93,12 +87,9 @@ public void DoEvent(Event @event)
9387
Array.Resize(ref _buttons, @event.Jbutton.Button + 1);
9488
}
9589

96-
ButtonDown?.Invoke
97-
(
98-
this,
99-
_buttons[@event.Jbutton.Button] = new Button
100-
((ButtonName) @event.Jbutton.Button, @event.Jbutton.Button, true)
101-
);
90+
_buttons[@event.Jbutton.Button] = new Button
91+
((ButtonName) @event.Jbutton.Button, @event.Jbutton.Button, true);
92+
ButtonDown?.Invoke(this, _buttons[@event.Jbutton.Button]);
10293
break;
10394
}
10495
case EventType.Joybuttonup:
@@ -108,12 +99,9 @@ public void DoEvent(Event @event)
10899
Array.Resize(ref _buttons, @event.Jbutton.Button + 1);
109100
}
110101

111-
ButtonUp?.Invoke
112-
(
113-
this,
114-
_buttons[@event.Jbutton.Button] = new Button
115-
((ButtonName) @event.Jbutton.Button, @event.Jbutton.Button, false)
116-
);
102+
_buttons[@event.Jbutton.Button] = new Button
103+
((ButtonName) @event.Jbutton.Button, @event.Jbutton.Button, false);
104+
ButtonUp?.Invoke(this, _buttons[@event.Jbutton.Button]);
117105
break;
118106
}
119107
case EventType.Joydeviceadded:

0 commit comments

Comments
 (0)