Skip to content
Snippets Groups Projects
sdl_con.c 26.1 KiB
Newer Older
					/* Tell SDL to do various stuff... */
					switch(ev.user.code) {
						case SDL_USEREVENT_UPDATERECT:
							sdl_full_screen_redraw();
							break;
						case SDL_USEREVENT_SETTITLE:
							SDL_WM_SetCaption((char *)ev.user.data1,NULL);
							free(ev.user.data1);
							break;
						case SDL_USEREVENT_SETVIDMODE:
							FREE_AND_NULL(last_vmem);
							if(fullscreen)
								win=SDL_SetVideoMode(
									 vstat.charwidth*vstat.cols*vstat.scaling
									,vstat.charheight*vstat.rows*vstat.scaling
									,8
									,SDL_SWSURFACE|SDL_HWPALETTE|SDL_FULLSCREEN
								);
							else
								win=SDL_SetVideoMode(
									 vstat.charwidth*vstat.cols*vstat.scaling
									,vstat.charheight*vstat.rows*vstat.scaling
									,8
									,SDL_HWSURFACE|SDL_HWPALETTE|SDL_RESIZABLE
								);
								vstat.scaling=(int)(win->w/(vstat.charwidth*vstat.cols));
								if(vstat.scaling < 1)
									vstat.scaling=1;
								sdl_setup_colours(win,0);
								if(sdl_cursor!=NULL)
									SDL_FreeSurface(sdl_cursor);
								sdl_cursor=SDL_CreateRGBSurface(SDL_SWSURFACE|SDL_SRCCOLORKEY, vstat.charwidth, vstat.charheight, 8, 0, 0, 0, 0);
								/* Update font. */
								sdl_load_font(NULL);
								sdl_full_screen_redraw();
							}
							else if(sdl_init_good) {
								ev.type=SDL_QUIT;
								sdl_exitcode=1;
								SDL_PeepEvents(&ev, 1, SDL_ADDEVENT, 0xffffffff);
							}
							free(ev.user.data1);
							free(ev.user.data2);
							break;
						case SDL_USEREVENT_HIDEMOUSE:
							SDL_ShowCursor(SDL_DISABLE);
							break;
						case SDL_USEREVENT_SHOWMOUSE:
							SDL_ShowCursor(SDL_ENABLE);
							break;
						case SDL_USEREVENT_INIT:
							if(!sdl_init_good) {
								if(SDL_WasInit(SDL_INIT_VIDEO)==SDL_INIT_VIDEO) {
									if(win != NULL) {
										SDL_EnableUNICODE(1);
										SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);

										SDL_CreateThread(sdl_blinker_thread, NULL);
										SDL_CreateThread(sdl_mouse_thread, NULL);
										sdl_init_good=1;
									}
								}
							}
							SDL_SemPost(sdl_init_complete);
							break;
					}
					break;
				}
				/* Ignore this stuff */
				case SDL_SYSWMEVENT:			/* ToDo... This is where Copy/Paste needs doing */
				case SDL_JOYAXISMOTION:
				case SDL_JOYBALLMOTION:
				case SDL_JOYHATMOTION:
				case SDL_JOYBUTTONDOWN:
				case SDL_JOYBUTTONUP:
				default:
					break;
			}
		}
	}
}