I'm trying to export SDL2 initialization routines to an external function
void initEngine(SDL_Window *window, SDL_Renderer *renderer)
{
if(SDL_Init(SDL_INIT_VIDEO)) {
fprintf(stderr, "Failed to initialize SDL2 library");
exit(1);
}
window = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 640, 0);
if(!window) {
fprintf(stderr, "Failed to create window");
exit(2);
}
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if(!renderer) {
fprintf(stderr, "Failed to create renderer");
exit(3);
}
}
Other functions involved have the following definition
SDL_bool doEvent(SDL_Window *window, SDL_Event *event);
void doRenderer(SDL_Renderer *renderer);
void doClean(SDL_Window *window, SDL_Renderer *renderer);
My main looks like this.
int main(void) {
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;
SDL_Event event;
SDL_bool done = SDL_FALSE;
initEngine(window, renderer); /* This line fails*/
while(!done) {
done = doEvent(window, &event);
doRenderer(renderer);
}
doClean(window, renderer);
return 0;
}
doRenderer()
function clears the screen to black and draws a white squre. However, when I execute my program the screen is black and no square is present. Everything works fine when I keep SDL2 initialization routines within main()
so, I guess, I made a mistake somewhere in calling initEngine()
. Please help.