130
130
static sdl_window_info * focus_window = NULL;
132
#if SDLMAME_EVENTS_IN_WORKER_THREAD
132
// input buffer - only for SDLMAME_EVENTS_IN_WORKER_THREAD
134
133
#define MAX_BUF_EVENTS (500) /* 100 not enough for SDL 1.3 */
135
134
static SDL_Event event_buf[MAX_BUF_EVENTS];
136
135
static int event_buf_count;
139
137
// keyboard states
140
138
static device_info * keyboard_list;
780
778
mouse_enabled = options_get_bool(mame_options(), OPTION_MOUSE);
782
devmap_init(&mouse_map, SDLOPTION_MOUSEINDEX, 8, "Mouse mapping");
780
devmap_init(machine, &mouse_map, SDLOPTION_MOUSEINDEX, 8, "Mouse mapping");
784
782
for (physical_mouse = 0; physical_mouse < SDL_GetNumMice(); physical_mouse++)
786
char *mouse_name = remove_spaces(SDL_GetMouseName(physical_mouse));
784
char *mouse_name = remove_spaces(machine, SDL_GetMouseName(physical_mouse));
788
786
devmap_register(&mouse_map, physical_mouse, mouse_name);
990
988
kt_table *key_trans_table;
992
key_trans_table = sdlinput_read_keymap();
990
key_trans_table = sdlinput_read_keymap(machine);
994
devmap_init(&keyboard_map, SDLOPTION_KEYBINDEX, 8, "Keyboard mapping");
992
devmap_init(machine, &keyboard_map, SDLOPTION_KEYBINDEX, 8, "Keyboard mapping");
996
994
for (physical_keyboard = 0; physical_keyboard < SDL_GetNumKeyboards(); physical_keyboard++)
1178
#if SDL13_COMBINE_RESIZE
1179
INLINE void resize_all_windows(void)
1182
osd_ticks_t now = osd_ticks();
1184
for (w = sdl_window_list; w != NULL; w = w->next)
1186
if (w->resize_width && w->resize_height && ((now - w->last_resize) > osd_ticks_per_second() / 10))
1188
sdlwindow_resize(w, w->resize_width, w->resize_height);
1189
w->resize_width = 0;
1190
w->resize_height = 0;
1181
1198
void sdlinput_process_events_buf(running_machine *machine)
1183
#if SDLMAME_EVENTS_IN_WORKER_THREAD
1184
1200
SDL_Event event;
1186
osd_lock_acquire(input_lock);
1187
#if (SDL_VERSION_ATLEAST(1,3,0))
1188
/* Make sure we get all pending events */
1191
while(SDL_PollEvent(&event))
1202
if (SDLMAME_EVENTS_IN_WORKER_THREAD)
1193
if (event_buf_count < MAX_BUF_EVENTS)
1194
event_buf[event_buf_count++] = event;
1196
mame_printf_warning("Event Buffer Overflow!\n");
1204
osd_lock_acquire(input_lock);
1205
#if (SDL_VERSION_ATLEAST(1,3,0))
1206
/* Make sure we get all pending events */
1209
while(SDL_PollEvent(&event))
1211
if (event_buf_count < MAX_BUF_EVENTS)
1212
event_buf[event_buf_count++] = event;
1214
mame_printf_warning("Event Buffer Overflow!\n");
1216
osd_lock_release(input_lock);
1198
osd_lock_release(input_lock);
1220
1238
devinfo->mouse.lY = 0;
1223
#if SDLMAME_EVENTS_IN_WORKER_THREAD
1224
osd_lock_acquire(input_lock);
1225
memcpy(loc_event_buf, event_buf, sizeof(event_buf));
1226
loc_event_buf_count = event_buf_count;
1227
event_buf_count = 0;
1228
osd_lock_release(input_lock);
1230
while (bufp < loc_event_buf_count) {
1231
event = loc_event_buf[bufp++];
1233
while(SDL_PollEvent(&event)) {
1241
if (SDLMAME_EVENTS_IN_WORKER_THREAD)
1243
osd_lock_acquire(input_lock);
1244
memcpy(loc_event_buf, event_buf, sizeof(event_buf));
1245
loc_event_buf_count = event_buf_count;
1246
event_buf_count = 0;
1247
osd_lock_release(input_lock);
1253
if (SDLMAME_EVENTS_IN_WORKER_THREAD)
1255
if (bufp >= loc_event_buf_count)
1257
event = loc_event_buf[bufp++];
1261
if (!SDL_PollEvent(&event))
1236
1265
if (event.type == SDL_KEYUP &&
1237
1266
event.key.keysym.sym == SDLK_CAPSLOCK)
1442
1471
focus_window = window;
1444
1473
case SDL_WINDOWEVENT_RESIZED:
1474
#if SDL13_COMBINE_RESIZE
1475
window->resize_width = event.window.data1;
1476
window->resize_height = event.window.data2;
1477
window->last_resize = osd_ticks();
1445
1479
if (event.window.data1 != window->width || event.window.data2 != window->height)
1446
1480
sdlwindow_resize(window, event.window.data1, event.window.data2);
1447
1482
focus_window = window;
1449
1484
case SDL_WINDOWEVENT_ENTER: