Refactored SDL events handling
This commit is contained in:
parent
d42608b546
commit
9d08c74a7f
1 changed files with 265 additions and 287 deletions
|
@ -1575,15 +1575,8 @@ void disablecapture()
|
|||
focus = 0;
|
||||
}
|
||||
|
||||
int handle_msgpump()
|
||||
void process_event(SDL_Event event)
|
||||
{
|
||||
auto gotEvent = 0;
|
||||
SDL_Event event;
|
||||
int mouseScale, x, y;
|
||||
|
||||
while (SDL_PollEvent(&event))
|
||||
{
|
||||
gotEvent = 1;
|
||||
const auto* keystate = SDL_GetKeyboardState(nullptr);
|
||||
|
||||
if (event.type == SDL_WINDOWEVENT)
|
||||
|
@ -1594,7 +1587,12 @@ int handle_msgpump()
|
|||
setminimized();
|
||||
amiberry_inactive(minimized);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_RESTORED:
|
||||
amiberry_active(minimized);
|
||||
unsetminimized();
|
||||
break;
|
||||
case SDL_WINDOWEVENT_LEAVE:
|
||||
mouseinside = false;
|
||||
set_mouse_grab(false);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
|
@ -1779,8 +1777,13 @@ int handle_msgpump()
|
|||
break;
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
if (!mouseinside) {
|
||||
mouseinside = true;
|
||||
}
|
||||
|
||||
if (recapture && isfullscreen() <= 0) {
|
||||
enablecapture();
|
||||
break;
|
||||
}
|
||||
|
||||
if (currprefs.input_tablet >= TABLET_MOUSEHACK)
|
||||
|
@ -1788,8 +1791,10 @@ int handle_msgpump()
|
|||
/* absolute */
|
||||
setmousestate(0, 0, event.motion.x, 1);
|
||||
setmousestate(0, 1, event.motion.y, 1);
|
||||
break;
|
||||
}
|
||||
else if (currprefs.jports[0].id == JSEM_MICE || currprefs.jports[1].id == JSEM_MICE)
|
||||
|
||||
if (currprefs.jports[0].id == JSEM_MICE || currprefs.jports[1].id == JSEM_MICE)
|
||||
{
|
||||
/* relative */
|
||||
#if defined (ANDROID)
|
||||
|
@ -1804,6 +1809,7 @@ int handle_msgpump()
|
|||
#endif //ANDROID
|
||||
setmousestate(0, 0, event.motion.xrel, 0);
|
||||
setmousestate(0, 1, event.motion.yrel, 0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1829,6 +1835,18 @@ int handle_msgpump()
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int handle_msgpump()
|
||||
{
|
||||
auto gotEvent = 0;
|
||||
SDL_Event event;
|
||||
|
||||
while (SDL_PollEvent(&event))
|
||||
{
|
||||
gotEvent = 1;
|
||||
process_event(event);
|
||||
}
|
||||
return gotEvent;
|
||||
}
|
||||
|
@ -1849,50 +1867,9 @@ bool handle_events()
|
|||
return true;
|
||||
}
|
||||
SDL_Event event;
|
||||
SDL_WaitEvent(&event);
|
||||
|
||||
if (event.type == SDL_WINDOWEVENT)
|
||||
while (SDL_PollEvent(&event))
|
||||
{
|
||||
switch (event.window.event)
|
||||
{
|
||||
case SDL_WINDOWEVENT_RESTORED:
|
||||
amiberry_active(minimized);
|
||||
unsetminimized();
|
||||
break;
|
||||
case SDL_WINDOWEVENT_LEAVE:
|
||||
set_mouse_grab(false);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
uae_quit();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (event.type)
|
||||
{
|
||||
case SDL_QUIT:
|
||||
uae_quit();
|
||||
break;
|
||||
case SDL_KEYDOWN:
|
||||
{
|
||||
if (event.key.repeat == 0)
|
||||
{
|
||||
if (enter_gui_key && event.key.keysym.sym == enter_gui_key)
|
||||
{
|
||||
inputdevice_add_inputcode(AKS_ENTERGUI, 1, nullptr);
|
||||
break;
|
||||
}
|
||||
if (quit_key && event.key.keysym.sym == quit_key)
|
||||
{
|
||||
inputdevice_add_inputcode(AKS_QUIT, 1, nullptr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
break;
|
||||
process_event(event);
|
||||
}
|
||||
|
||||
inputdevicefunc_keyboard.read();
|
||||
|
@ -1905,6 +1882,7 @@ bool handle_events()
|
|||
//updatedisplayarea();
|
||||
pause_emulation = was_paused;
|
||||
resumepaused(was_paused);
|
||||
sound_closed = 0;
|
||||
was_paused = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue