Commit 63ed4907 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

sdl2: factor out sdl2_poll_events



Create a new function to poll and handle sdl2 events,
which is then just called from the refresh timer.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
parent 0d01b7ce
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ struct sdl2_console {
void sdl2_window_create(struct sdl2_console *scon);
void sdl2_window_destroy(struct sdl2_console *scon);
void sdl2_window_resize(struct sdl2_console *scon);
void sdl2_poll_events(struct sdl2_console *scon);

void sdl2_reset_keys(struct sdl2_console *scon);
void sdl2_process_key(struct sdl2_console *scon,
+13 −10
Original line number Diff line number Diff line
@@ -507,10 +507,8 @@ static void handle_mousewheel(SDL_Event *ev)
    qemu_input_event_sync();
}

static void handle_windowevent(DisplayChangeListener *dcl, SDL_Event *ev)
static void handle_windowevent(struct sdl2_console *scon, SDL_Event *ev)
{
    struct sdl2_console *scon = get_scon_from_window(ev->key.windowID);

    switch (ev->window.event) {
    case SDL_WINDOWEVENT_RESIZED:
        {
@@ -537,10 +535,10 @@ static void handle_windowevent(DisplayChangeListener *dcl, SDL_Event *ev)
        }
        break;
    case SDL_WINDOWEVENT_RESTORED:
        update_displaychangelistener(dcl, GUI_REFRESH_INTERVAL_DEFAULT);
        update_displaychangelistener(&scon->dcl, GUI_REFRESH_INTERVAL_DEFAULT);
        break;
    case SDL_WINDOWEVENT_MINIMIZED:
        update_displaychangelistener(dcl, 500);
        update_displaychangelistener(&scon->dcl, 500);
        break;
    case SDL_WINDOWEVENT_CLOSE:
        if (!no_quit) {
@@ -551,9 +549,8 @@ static void handle_windowevent(DisplayChangeListener *dcl, SDL_Event *ev)
    }
}

static void sdl_refresh(DisplayChangeListener *dcl)
void sdl2_poll_events(struct sdl2_console *scon)
{
    struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);
    SDL_Event ev1, *ev = &ev1;

    if (scon->last_vm_running != runstate_is_running()) {
@@ -561,8 +558,6 @@ static void sdl_refresh(DisplayChangeListener *dcl)
        sdl_update_caption(scon);
    }

    graphic_hw_update(dcl->con);

    while (SDL_PollEvent(ev)) {
        switch (ev->type) {
        case SDL_KEYDOWN:
@@ -591,7 +586,7 @@ static void sdl_refresh(DisplayChangeListener *dcl)
            handle_mousewheel(ev);
            break;
        case SDL_WINDOWEVENT:
            handle_windowevent(dcl, ev);
            handle_windowevent(scon, ev);
            break;
        default:
            break;
@@ -599,6 +594,14 @@ static void sdl_refresh(DisplayChangeListener *dcl)
    }
}

static void sdl_refresh(DisplayChangeListener *dcl)
{
    struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);

    graphic_hw_update(dcl->con);
    sdl2_poll_events(scon);
}

static void sdl_mouse_warp(DisplayChangeListener *dcl,
                           int x, int y, int on)
{