SDL/test/relative_mode.markdown
Gabriel Jacobo dad420670f Fixes #2022, do not resume on Android when surfaceChanged
If the app is in landscape mode and the user presses the power button, a pause
is followed immediately by a surfaceChanged event because the lock screen
is shown in portrait mode. This triggers a "false" resume.
So, we just pause and resume following the onWindowFocusChanged events.

Also, wait for SDL_APP_WILLENTERBACKGROUND and SDL_APP_DIDENTERBACKGROUND before
blocking the event pump.
2013-08-12 11:13:50 -03:00

1.2 KiB

Relative mode testing

See test program at the bottom of this file.

Initial tests:

  • When in relative mode, the mouse shouldn't be moveable outside of the window.
  • When the cursor is outside the window when relative mode is enabled, mouse clicks should not go to whatever app was under the cursor previously.
  • When alt/cmd-tabbing between a relative mode app and another app, clicks when in the relative mode app should also not go to whatever app was under the cursor previously.

Code

#include <SDL.h>

int PollEvents()
{
    SDL_Event event;
    while (SDL_PollEvent(&event))
    {
        switch (event.type)
        {
            case SDL_QUIT:
                return 1;
            default:
                break;
        }
    }

    return 0;
}

int main(int argc, char *argv[])
{
    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window *win = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, 0);
    SDL_SetRelativeMouseMode(SDL_TRUE);

    while (1)
    {
        if (PollEvents())
            break;
    }

    SDL_DestroyWindow(win);

    SDL_Quit();

    return 0;
}