Jump to content
  • Advertisement
Sign in to follow this  
That One Guy

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

This topic is 2540 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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.


#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();
}
}
}
}


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
Advertisement
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
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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!