Mir

Merge lp:~mir-team/mir/fix-initial-key-repeat-timeout-0.14 into lp:mir/0.14

Proposed by Robert Carr
Status: Merged
Approved by: Andreas Pokorny
Approved revision: no longer in the source branch.
Merged at revision: 2705
Proposed branch: lp:~mir-team/mir/fix-initial-key-repeat-timeout-0.14
Merge into: lp:mir/0.14
Diff against target: 105 lines (+16/-10)
4 files modified
src/server/input/default_configuration.cpp (+3/-2)
src/server/input/key_repeat_dispatcher.cpp (+5/-3)
src/server/input/key_repeat_dispatcher.h (+3/-1)
tests/unit-tests/input/test_key_repeat_dispatcher.cpp (+5/-4)
To merge this branch: bzr merge lp:~mir-team/mir/fix-initial-key-repeat-timeout-0.14
Reviewer Review Type Date Requested Status
Andreas Pokorny (community) Approve
Review via email: mp+264316@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Andreas Pokorny (andreas-pokorny) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/server/input/default_configuration.cpp'
2--- src/server/input/default_configuration.cpp 2015-06-18 08:45:44 +0000
3+++ src/server/input/default_configuration.cpp 2015-07-09 17:13:10 +0000
4@@ -161,14 +161,15 @@
5 return input_dispatcher(
6 [this]()
7 {
8- std::chrono::milliseconds const key_repeat_timeout{20};
9+ std::chrono::milliseconds const key_repeat_timeout{500};
10+ std::chrono::milliseconds const key_repeat_delay{50};
11
12 auto const options = the_options();
13 auto enable_repeat = options->get<bool>(options::enable_key_repeat_opt);
14
15 return std::make_shared<mi::KeyRepeatDispatcher>(
16 the_event_filter_chain_dispatcher(), the_main_loop(), enable_repeat,
17- key_repeat_timeout);
18+ key_repeat_timeout, key_repeat_delay);
19 });
20 }
21
22
23=== modified file 'src/server/input/key_repeat_dispatcher.cpp'
24--- src/server/input/key_repeat_dispatcher.cpp 2015-06-11 18:25:32 +0000
25+++ src/server/input/key_repeat_dispatcher.cpp 2015-07-09 17:13:10 +0000
26@@ -33,11 +33,13 @@
27 std::shared_ptr<mi::InputDispatcher> const& next_dispatcher,
28 std::shared_ptr<mir::time::AlarmFactory> const& factory,
29 bool repeat_enabled,
30- std::chrono::milliseconds repeat_timeout)
31+ std::chrono::milliseconds repeat_timeout,
32+ std::chrono::milliseconds repeat_delay)
33 : next_dispatcher(next_dispatcher),
34 alarm_factory(factory),
35 repeat_enabled(repeat_enabled),
36- repeat_timeout(repeat_timeout)
37+ repeat_timeout(repeat_timeout),
38+ repeat_delay(repeat_delay)
39 {
40 }
41
42@@ -116,7 +118,7 @@
43 ev.key.event_time = std::chrono::high_resolution_clock::now().time_since_epoch();
44 next_dispatcher->dispatch(ev);
45
46- capture_alarm->reschedule_in(repeat_timeout);
47+ capture_alarm->reschedule_in(repeat_delay);
48 });
49 alarm->reschedule_in(repeat_timeout);
50 device_state.repeat_alarms_by_scancode[scan_code] = {alarm};
51
52=== modified file 'src/server/input/key_repeat_dispatcher.h'
53--- src/server/input/key_repeat_dispatcher.h 2015-06-11 18:25:32 +0000
54+++ src/server/input/key_repeat_dispatcher.h 2015-07-09 17:13:10 +0000
55@@ -42,7 +42,8 @@
56 KeyRepeatDispatcher(std::shared_ptr<InputDispatcher> const& next_dispatcher,
57 std::shared_ptr<time::AlarmFactory> const& factory,
58 bool repeat_enabled,
59- std::chrono::milliseconds repeat_timeout);
60+ std::chrono::milliseconds repeat_timeout, /* timeout before sending first repeat */
61+ std::chrono::milliseconds repeat_delay /* delay between repeated keys */);
62
63 // InputDispatcher
64 bool dispatch(MirEvent const& event) override;
65@@ -56,6 +57,7 @@
66 std::shared_ptr<time::AlarmFactory> const alarm_factory;
67 bool const repeat_enabled;
68 std::chrono::milliseconds repeat_timeout;
69+ std::chrono::milliseconds repeat_delay;
70
71 struct KeyboardState
72 {
73
74=== modified file 'tests/unit-tests/input/test_key_repeat_dispatcher.cpp'
75--- tests/unit-tests/input/test_key_repeat_dispatcher.cpp 2015-06-11 18:25:32 +0000
76+++ tests/unit-tests/input/test_key_repeat_dispatcher.cpp 2015-07-09 17:13:10 +0000
77@@ -61,12 +61,13 @@
78 struct KeyRepeatDispatcher : public testing::Test
79 {
80 KeyRepeatDispatcher()
81- : dispatcher(mock_next_dispatcher, mock_alarm_factory, true, repeat_time)
82+ : dispatcher(mock_next_dispatcher, mock_alarm_factory, true, repeat_time, repeat_delay)
83 {
84 }
85 std::shared_ptr<mtd::MockInputDispatcher> mock_next_dispatcher = std::make_shared<mtd::MockInputDispatcher>();
86 std::shared_ptr<MockAlarmFactory> mock_alarm_factory = std::make_shared<MockAlarmFactory>();
87- std::chrono::milliseconds const repeat_time{1};
88+ std::chrono::milliseconds const repeat_time{2};
89+ std::chrono::milliseconds const repeat_delay{1};
90 mi::KeyRepeatDispatcher dispatcher;
91 };
92 }
93@@ -106,10 +107,10 @@
94 EXPECT_CALL(*mock_alarm_factory, create_alarm_adapter(_)).Times(1).
95 WillOnce(DoAll(SaveArg<0>(&alarm_function), Return(mock_alarm)));
96 // Once for initial down and again when invoked
97- EXPECT_CALL(*mock_alarm, reschedule_in(_)).Times(1).WillOnce(Return(true));
98+ EXPECT_CALL(*mock_alarm, reschedule_in(repeat_time)).Times(1).WillOnce(Return(true));
99 EXPECT_CALL(*mock_next_dispatcher, dispatch(mt::KeyDownEvent())).Times(1);
100 EXPECT_CALL(*mock_next_dispatcher, dispatch(mt::KeyRepeatEvent())).Times(1);
101- EXPECT_CALL(*mock_alarm, reschedule_in(_)).Times(1).WillOnce(Return(true));
102+ EXPECT_CALL(*mock_alarm, reschedule_in(repeat_delay)).Times(1).WillOnce(Return(true));
103 EXPECT_CALL(*mock_next_dispatcher, dispatch(mt::KeyUpEvent())).Times(1);
104
105 // Schedule the repeat

Subscribers

People subscribed via source and target branches

to all changes: