mirror of
https://github.com/Ryujinx/SDL.git
synced 2024-12-23 19:35:39 +00:00
0e45984fa0
The internal function SDL_EGL_LoadLibrary() did not delete and remove a mostly uninitialized data structure if loading the library first failed. A later try to use EGL then skipped initialization and assumed it was previously successful because the data structure now already existed. This led to at least one crash in the internal function SDL_EGL_ChooseConfig() because a NULL pointer was dereferenced to make a call to eglBindAPI().
74 lines
2.3 KiB
C
74 lines
2.3 KiB
C
/**
|
|
* \file SDL_visualtest_harness_argparser.h
|
|
*
|
|
* Provides functionality to parse command line arguments to the test harness.
|
|
*/
|
|
|
|
#include <SDL.h>
|
|
#include "SDL_visualtest_sut_configparser.h"
|
|
#include "SDL_visualtest_variator_common.h"
|
|
#include "SDL_visualtest_action_configparser.h"
|
|
|
|
#ifndef _SDL_visualtest_harness_argparser_h
|
|
#define _SDL_visualtest_harness_argparser_h
|
|
|
|
/** Maximum length of a path string */
|
|
#define MAX_PATH_LEN 300
|
|
/** Maximum length of a string of SUT arguments */
|
|
#define MAX_SUT_ARGS_LEN 600
|
|
|
|
/* Set up for C function definitions, even when using C++ */
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* Stores the state of the test harness.
|
|
*/
|
|
typedef struct SDLVisualTest_HarnessState
|
|
{
|
|
/*! Path to the System Under Test (SUT) executable */
|
|
char sutapp[MAX_PATH_LEN];
|
|
/*! Command line arguments to be passed to the SUT */
|
|
char sutargs[MAX_SUT_ARGS_LEN];
|
|
/*! Time in milliseconds after which to kill the SUT */
|
|
int timeout;
|
|
/*! Configuration object for the SUT */
|
|
SDLVisualTest_SUTConfig sut_config;
|
|
/*! What type of variator to use to generate argument strings */
|
|
SDLVisualTest_VariatorType variator_type;
|
|
/*! The number of variations to generate */
|
|
int num_variations;
|
|
/*! If true, the test harness will just print the different variations
|
|
without launching the SUT for each one */
|
|
SDL_bool no_launch;
|
|
/*! A queue with actions to be performed while the SUT is running */
|
|
SDLVisualTest_ActionQueue action_queue;
|
|
/*! Output directory to save the screenshots */
|
|
char output_dir[MAX_PATH_LEN];
|
|
/*! Path to directory with the verification images */
|
|
char verify_dir[MAX_PATH_LEN];
|
|
} SDLVisualTest_HarnessState;
|
|
|
|
/**
|
|
* Parse command line paramters to the test harness and populate a state object.
|
|
*
|
|
* \param argv The array of command line parameters.
|
|
* \param state Pointer to the state object to be populated.
|
|
*
|
|
* \return Non-zero on success, zero on failure.
|
|
*/
|
|
int SDLVisualTest_ParseHarnessArgs(char** argv, SDLVisualTest_HarnessState* state);
|
|
|
|
/**
|
|
* Frees any resources associated with the state object pointed to by \c state.
|
|
*/
|
|
void SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState* state);
|
|
|
|
/* Ends C function definitions when using C++ */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _SDL_visualtest_harness_argparser_h */
|