para que sea mas facil lo haremos haci
while (SDL_PollEvent(&tecla) != 0) {
if (tecla.type == SDL_QUIT) {
exit(0);
}
}
ya que
int SDL_PollEvent(SDL_Event* event)
es una funcion que devuelve 1 si hay un evento pendiente o 0 si no hay ninguno disponible.
y en el while cundo capturabas el evento te decía que quedaban eventos pendientes por
procesar de ese modo al no tratarlos el bucle se estancava dentro de sa parte del codigo
ademas te recomindo que agas una funcion booleana que te permita salir del gameLoop asi
bool quit = false;
while(!quit){
SDL_UpdateWindowSurface(window);
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
while (SDL_PollEvent(&tecla)) {
if (tecla.type == SDL_QUIT) {
quit = true;
}
}
return 0;
de ese modo no cierras la ejecución del programa inesperada mente, de esa forma dejas que la función main finalice correcta mente sin errores ademas de permitirte destruir los
SDL_Window *window
SDL_Surface*windowSurface
SDL_Surface*fondo
como es devido y no dejarlos almacenados en la memoria ram