have to use task manager to abort program

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

have to use task manager to abort program

speartip
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.









Code:
#include
#include
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_RenderClear(renderer);

                   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);
                   SDL_RenderPresent(renderer);

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

           if (renderer) {
               SDL_DestroyRenderer(renderer);
           }
           if (window) {
               SDL_DestroyWindow(window);
           }
       }
       SDL_Quit();
        return 0;

}

_______________________________________________
SDL mailing list
[hidden email]
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
Reply | Threaded
Open this post in threaded view
|

Re: have to use task manager to abort program

Mason Wheeler
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.
3) 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?

Mason


From: speartip <[hidden email]>
To: [hidden email]
Sent: Wednesday, March 15, 2017 9:46 AM
Subject: [SDL] 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.









Code:
#include
#include
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_RenderClear(renderer);

                   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);
                   SDL_RenderPresent(renderer);

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

           if (renderer) {
               SDL_DestroyRenderer(renderer);
           }
           if (window) {
               SDL_DestroyWindow(window);
           }
       }
       SDL_Quit();
        return 0;

}
_______________________________________________
SDL mailing list
[hidden email]
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org



_______________________________________________
SDL mailing list
[hidden email]
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
Reply | Threaded
Open this post in threaded view
|

Re: have to use task manager to abort program

speartip
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



On Wed, Mar 15, 2017, at 11:23 AM, Mason Wheeler wrote:
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.
3) 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?

Mason

From: speartip <[hidden email]>
To: [hidden email]
Sent: Wednesday, March 15, 2017 9:46 AM
Subject: [SDL] 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.










Code:
#include
#include
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_RenderClear(renderer);

                   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);
                   SDL_RenderPresent(renderer);

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

           if (renderer) {
               SDL_DestroyRenderer(renderer);
           }
           if (window) {
               SDL_DestroyWindow(window);
           }
       }
       SDL_Quit();
        return 0;

}
_______________________________________________
SDL mailing list

_______________________________________________
SDL mailing list


_______________________________________________
SDL mailing list
[hidden email]
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
Reply | Threaded
Open this post in threaded view
|

Re: have to use task manager to abort program

capehill
In reply to this post by speartip
Run it with a debugger or add some prints inside the loops.

_______________________________________________
SDL mailing list
[hidden email]
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org