Sign in to follow this  
That One Guy

Microsoft Windows, SDL, and closing a Window @_@;

Recommended Posts

That One Guy    100
Hi... After having to install Windows 7, I've set up Codeblocks with MinGW and SDL. Now, then, I've been trying to get some things working. I've gotten a window open (just a simple, stupid test program) and can keep it open, but it won't close unless I use Task Manager to force it shut. I've tried everything I could think of and I never had this particular problem on Linux.

It closes on its own, like any other window, if I don't have a loop to keep it open, but with the loop? Complete and total failure to terminate.

[CODE]
#include "SDL.h"
#include <stdio.h>
#include <stdlib.h>
#define WINDOW_WIDTH 640
#define WINDOW_HEIGHT 480
SDL_Surface *window;
union SDL_Event event;
int main(int argc,char *argv[]){
if(SDL_Init(SDL_INIT_VIDEO)!=0){
printf("Unable to initialise SDL: %s\n",SDL_GetError());
return 1;
atexit(SDL_Quit);
return 1;
}
SDL_WM_SetCaption("Windows SDL Test",NULL);
window=SDL_SetVideoMode(WINDOW_WIDTH,WINDOW_HEIGHT,32,SDL_DOUBLEBUF);
if(window==NULL){
printf("Unable to set video mode: %s\n",SDL_GetError());
return 1;
}
while(1){
while(SDL_WaitEvent(&event)==0){
switch(event.type){
case SDL_QUIT:
SDL_Quit();
}
}
}
}
[/CODE]

As with other code I've shown on this site, there are things I wouldn't want to do in a program I plan to release. I can't move onto the next bit of SDL testing on Windows until I get this issue resolved, though, and searching for hours has revealed nothing helpful. The outer loop is there because, without it, the window closes instantly.

Share this post


Link to post
Share on other sites
SiCrane    11839
SDL_Quit() doesn't cause the program to end. It only performs cleanup for SDL. If you want to end the program you can return from the main() function, call exit() or do something similar.

Share this post


Link to post
Share on other sites
That One Guy    100
As I stated, I've tried multiple things. The first I tried was 'return 0;' which didn't work, and exit() was also tried. I've tried them separately and together, as well as an atexit() thing which also did nothing.

EDIT: Nevermind, I just noticed my typo (aka: (&event)==0) ) and a couple of other issues. I fixed it, lol

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this