sdl2_frt/visualtest/src/variators.c
Pierre-Loup A. Griffais 24c86b5501 [X11] Reconcile logical keyboard state with physical state on FocusIn
since the window system doesn't do it for us like other platforms.

This prevents sticky keys and missed keys when going in and out
of focus, for example Alt would appear to stick if switching away
from an SDL app with Alt-Tab and had to be pressed again.

CR: Sam
2014-09-11 19:24:42 -07:00

93 lines
2.4 KiB
C

/* See COPYING.txt for the full license governing this code. */
/**
* \file variators.c
*
* Source file for the operations that act on variators.
*/
#include <SDL_test.h>
#include "SDL_visualtest_variators.h"
int
SDLVisualTest_InitVariator(SDLVisualTest_Variator* variator,
SDLVisualTest_SUTConfig* config,
SDLVisualTest_VariatorType type,
Uint64 seed)
{
if(!variator)
{
SDLTest_LogError("variator argument cannot be NULL");
return 0;
}
if(!config)
{
SDLTest_LogError("config argument cannot be NULL");
return 0;
}
variator->type = type;
switch(type)
{
case SDL_VARIATOR_EXHAUSTIVE:
return SDLVisualTest_InitExhaustiveVariator(&variator->data.exhaustive,
config);
break;
case SDL_VARIATOR_RANDOM:
return SDLVisualTest_InitRandomVariator(&variator->data.random,
config, seed);
break;
default:
SDLTest_LogError("Invalid value for variator type");
return 0;
}
return 0;
}
char*
SDLVisualTest_GetNextVariation(SDLVisualTest_Variator* variator)
{
if(!variator)
{
SDLTest_LogError("variator argument cannot be NULL");
return NULL;
}
switch(variator->type)
{
case SDL_VARIATOR_EXHAUSTIVE:
return SDLVisualTest_GetNextExhaustiveVariation(&variator->data.exhaustive);
break;
case SDL_VARIATOR_RANDOM:
return SDLVisualTest_GetNextRandomVariation(&variator->data.random);
break;
default:
SDLTest_LogError("Invalid value for variator type");
return NULL;
}
return NULL;
}
void SDLVisualTest_FreeVariator(SDLVisualTest_Variator* variator)
{
if(!variator)
{
SDLTest_LogError("variator argument cannot be NULL");
return;
}
switch(variator->type)
{
case SDL_VARIATOR_EXHAUSTIVE:
SDLVisualTest_FreeExhaustiveVariator(&variator->data.exhaustive);
break;
case SDL_VARIATOR_RANDOM:
SDLVisualTest_FreeRandomVariator(&variator->data.random);
break;
default:
SDLTest_LogError("Invalid value for variator type");
}
}