Have to use task manager to abort program

What am I doing wrong here? This is lifted code. When the program runs it produces a black screen with a geometric pattern which is fine. But it sticks, it can only abort with task manager:
Second, it has no border (which is what I want) but I would like to be able to toggle that rather than just watch it disappear b/c I use use 1920 x 1080 res.

using namespace std;

int main(int argc, char* argv[])
if (SDL_Init(SDL_INIT_VIDEO) == 0) {
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;

        if (SDL_CreateWindowAndRenderer(1920, 1080, 0, &window, &renderer) == 0) {
            SDL_bool done = SDL_FALSE;

            while (!done) {
                SDL_Event event;

                SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);

                SDL_SetRenderDrawColor(renderer, 0, 0, 255, SDL_ALPHA_OPAQUE);
                SDL_RenderDrawLine(renderer, 320, 200, 300, 240);
                SDL_RenderDrawLine(renderer, 300, 240, 340, 240);
                SDL_RenderDrawLine(renderer, 340, 240, 320, 200);

                while (SDL_PollEvent(&event)) {
                    if (event.type == SDL_QUIT) {
                        done = SDL_TRUE;

        if (renderer) {
        if (window) {
    return 0;


The code looks pretty straightforward.? There are three reasons why it might not be quitting for you.

  1. Most likely: you’re never getting the SDL_QUIT event.2) SDL_DestroyRenderer is never returning for some reason.
  2. SDL_DestroyWindow is never returning for some reason.
    Probably #1 though.? Have you tried running it under a debugger to check on what’s happening?

I made done= SDL_True put in a delay and it worked well, thanks. Also,
there is no border which is great. I think its because of my chosen
resolution. Is there any was to actually turn it off? Murphy’s Law.–

Gray Family


Run it with a debugger or add some prints inside the loops.