summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/uiinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/uiinput.cpp')
-rw-r--r--src/emu/uiinput.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/emu/uiinput.cpp b/src/emu/uiinput.cpp
index 952a5b371b3..9123a6af526 100644
--- a/src/emu/uiinput.cpp
+++ b/src/emu/uiinput.cpp
@@ -263,7 +263,14 @@ g_profiler.start(PROFILER_INPUT);
/* if this is an autorepeat case, set a 1x delay and leave pressed = 1 */
else if (speed > 0 && (osd_ticks() + tps - m_next_repeat[code]) >= tps)
- m_next_repeat[code] += 1 * speed * tps / 60;
+ {
+ // In the autorepeatcase, we need to double check the key is still pressed
+ // as there can be a delay between the key polling and our processing of the event
+ m_seqpressed[code] = machine().ioport().type_pressed(ioport_type(code));
+ pressed = (m_seqpressed[code] == SEQ_PRESSED_TRUE);
+ if (pressed)
+ m_next_repeat[code] += 1 * speed * tps / 60;
+ }
/* otherwise, reset pressed = 0 */
else