Ryujinx-SDL/test/relative_mode.markdown
Edward Rudd b88ca1b4a6 the last parameter of XChangeProperty is the number of elements.. and when the element format is 32.. the element is "long" so we have 5 long elements here.
Yes this seems confusing as on mac+linux Long is either 32 or 64bits depending on the architecture, but this is how the X11 protocol is defined. Thus 5 is the correct value for the nelts here.  Not 5 or 10 depending on the architecture.

More info on the confusion https://bugs.freedesktop.org/show_bug.cgi?id=16802
2015-02-10 16:28:56 -05:00

1.3 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_Window *win;

    SDL_Init(SDL_INIT_VIDEO);

    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;
}