src/inputmanager.cpp |
121 | 121 | |
122 | 122 | InputManager::Button InputManager::waitForButton(ButtonState state) { |
123 | 123 | ButtonEvent event; |
124 | | do { |
125 | | waitForEvent(&event); |
126 | | } while (event.state != state); |
| 124 | while (!waitForEvent(&event) || event.state != state); |
127 | 125 | return event.button; |
128 | 126 | } |
129 | 127 | |
130 | | void InputManager::waitForEvent(ButtonEvent *event) { |
131 | | getEvent(event, true); |
| 128 | bool InputManager::waitForEvent(ButtonEvent *event) { |
| 129 | return getEvent(event, true); |
132 | 130 | } |
133 | 131 | |
134 | 132 | bool InputManager::pollEvent(ButtonEvent *event) { |
... | ... | |
139 | 137 | //TODO: when an event is processed, program a new event |
140 | 138 | //in some time, and when it occurs, do a key repeat |
141 | 139 | |
| 140 | int i; |
| 141 | |
142 | 142 | #ifndef SDL_JOYSTICK_DISABLED |
143 | 143 | if (joystick) { |
144 | 144 | SDL_JoystickUpdate(); |
... | ... | |
179 | 179 | } |
180 | 180 | |
181 | 181 | if (source == KEYBOARD) { |
182 | | for (int i = 0; i < BUTTON_TYPE_SIZE; i++) { |
| 182 | for (i = 0; i < BUTTON_TYPE_SIZE; i++) { |
183 | 183 | if (buttonMap[i].source == KEYBOARD |
184 | 184 | && (unsigned int)event.key.keysym.sym == buttonMap[i].code) { |
185 | 185 | bevent->button = static_cast<Button>(i); |
... | ... | |
188 | 188 | } |
189 | 189 | #ifndef SDL_JOYSTICK_DISABLED |
190 | 190 | } else if (source == JOYSTICK) { |
191 | | for (int i = 0; i < BUTTON_TYPE_SIZE; i++) { |
| 191 | for (i = 0; i < BUTTON_TYPE_SIZE; i++) { |
192 | 192 | if (buttonMap[i].source == JOYSTICK |
193 | 193 | && (unsigned int)event.jbutton.button == buttonMap[i].code) { |
194 | 194 | bevent->button = static_cast<Button>(i); |
... | ... | |
197 | 197 | } |
198 | 198 | #endif |
199 | 199 | } |
| 200 | |
| 201 | if (i == BUTTON_TYPE_SIZE) |
| 202 | return false; |
| 203 | |
200 | 204 | if (wait && PowerSaver::isRunning()) { |
201 | 205 | PowerSaver::getInstance()->resetScreenTimer(); |
202 | 206 | } |