test: added SDLTest_CommonDefaultArgs()

This is for test apps that don't need custom command line arguments; it lets
us reduce the boilerplate code a tiny bit.
This commit is contained in:
Ryan C. Gordon 2019-05-19 01:45:15 -04:00
parent 18d83093a8
commit 00e5eeb40e
7 changed files with 41 additions and 65 deletions

View File

@ -158,6 +158,17 @@ const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
*/ */
SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state); SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
/**
* \brief Easy argument handling when test app doesn't need any custom args.
*
* \param state The common state describing the test window to create.
* \param argc argc, as supplied to SDL_main
* \param argv argv, as supplied to SDL_main
*
* \returns False if app should quit, true otherwise.
*/
SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);
/** /**
* \brief Common event handler for test windows. * \brief Common event handler for test windows.
* *

View File

@ -489,6 +489,21 @@ SDLTest_CommonUsage(SDLTest_CommonState * state)
} }
} }
SDL_bool
SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, const int argc, char **argv)
{
int i = 1;
while (i < argc) {
const int consumed = SDLTest_CommonArg(state, i);
if (consumed == 0) {
SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
return SDL_FALSE;
}
i += consumed;
}
return SDL_TRUE;
}
static void static void
SDLTest_PrintRendererFlag(char *text, size_t maxlen, Uint32 flag) SDLTest_PrintRendererFlag(char *text, size_t maxlen, Uint32 flag)
{ {

View File

@ -268,9 +268,6 @@ loop(void)
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
int i;
/* !!! FIXME: there should be an SDLTest_CommonDefaultArgs() so apps don't need this. */
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
if (!state) { if (!state) {
return 1; return 1;
@ -281,16 +278,8 @@ int main(int argc, char* argv[])
state->window_h = HEIGHT; state->window_h = HEIGHT;
state->skip_renderer = SDL_TRUE; state->skip_renderer = SDL_TRUE;
for (i = 1; i < argc;) { if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) {
const int consumed = SDLTest_CommonArg(state, i); SDLTest_CommonQuit(state);
if (consumed == 0) {
SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
return 1;
}
i += consumed;
}
if (!SDLTest_CommonInit(state)) {
return 1; return 1;
} }

View File

@ -174,19 +174,11 @@ main(int argc, char *argv[])
if (!state) { if (!state) {
return 1; return 1;
} }
for (i = 1; i < argc;) {
int consumed;
consumed = SDLTest_CommonArg(state, i); if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) {
if (consumed == 0) { SDLTest_CommonQuit(state);
SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
return 1; return 1;
} }
i += consumed;
}
if (!SDLTest_CommonInit(state)) {
quit(2);
}
drawstates = SDL_stack_alloc(DrawState, state->num_windows); drawstates = SDL_stack_alloc(DrawState, state->num_windows);
for (i = 0; i < state->num_windows; ++i) { for (i = 0; i < state->num_windows; ++i) {

View File

@ -164,19 +164,11 @@ main(int argc, char *argv[])
if (!state) { if (!state) {
return 1; return 1;
} }
for (i = 1; i < argc;) {
int consumed;
consumed = SDLTest_CommonArg(state, i); if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) {
if (consumed == 0) { SDLTest_CommonQuit(state);
SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
return 1; return 1;
} }
i += consumed;
}
if (!SDLTest_CommonInit(state)) {
quit(2);
}
drawstates = SDL_stack_alloc(DrawState, state->num_windows); drawstates = SDL_stack_alloc(DrawState, state->num_windows);
for (i = 0; i < state->num_windows; ++i) { for (i = 0; i < state->num_windows; ++i) {

View File

@ -1119,7 +1119,7 @@ static SDL_bool render(void)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int fsaa, accel; int fsaa, accel;
int i, done; int done;
SDL_DisplayMode mode; SDL_DisplayMode mode;
SDL_Event event; SDL_Event event;
Uint32 then, now, frames; Uint32 then, now, frames;
@ -1138,27 +1138,15 @@ int main(int argc, char *argv[])
{ {
return 1; return 1;
} }
for(i = 1; i < argc;)
{
int consumed;
consumed = SDLTest_CommonArg(state, i);
if(consumed < 0)
{
SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
quit(1);
}
i += consumed;
}
/* Set Vulkan parameters */ /* Set Vulkan parameters */
state->window_flags |= SDL_WINDOW_VULKAN; state->window_flags |= SDL_WINDOW_VULKAN;
state->num_windows = 1; state->num_windows = 1;
state->skip_renderer = 1; state->skip_renderer = 1;
if(!SDLTest_CommonInit(state)) if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) {
{ SDLTest_CommonQuit(state);
quit(2); return 1;
} }
SDL_GetCurrentDisplayMode(0, &mode); SDL_GetCurrentDisplayMode(0, &mode);

View File

@ -129,21 +129,10 @@ main(int argc, char *argv[])
if (!state) { if (!state) {
return 1; return 1;
} }
for (i = 1; i < argc;) {
int consumed;
consumed = SDLTest_CommonArg(state, i); if (!SDLTest_CommonDefaultArgs(state, argc, argv) || !SDLTest_CommonInit(state)) {
if (consumed == 0) { SDLTest_CommonQuit(state);
consumed = -1; return 1;
}
if (consumed < 0) {
SDL_Log("Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
quit(1);
}
i += consumed;
}
if (!SDLTest_CommonInit(state)) {
quit(2);
} }
SDL_EventState(SDL_DROPFILE, SDL_ENABLE); SDL_EventState(SDL_DROPFILE, SDL_ENABLE);