From 5dba20c49e27d3e3a6aecd35789dc8a90e26fc23 Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Sun, 30 Apr 2006 14:10:27 +0000 Subject: removed the last remains of SDL --- src/SDL_win32_main.c | 364 ---------------------------------------------- src/connectionhandler.cpp | 129 ---------------- src/main.cpp | 16 -- src/netsession.cpp | 7 - 4 files changed, 516 deletions(-) delete mode 100644 src/SDL_win32_main.c (limited to 'src') diff --git a/src/SDL_win32_main.c b/src/SDL_win32_main.c deleted file mode 100644 index 4bfce9cf..00000000 --- a/src/SDL_win32_main.c +++ /dev/null @@ -1,364 +0,0 @@ -/* - SDL_main.c, placed in the public domain by Sam Lantinga 4/13/98 - - The WinMain function -- calls your program's main() function -*/ - -#define NO_STDIO_REDIRECT - -#include -#include -#include -#include - -#include -#include /* For _alloca() */ - -#ifdef _WIN32_WCE -# define DIR_SEPERATOR TEXT("\\") -# undef _getcwd -# define _getcwd(str,len) wcscpy(str,TEXT("")) -# define setbuf(f,b) -# define setvbuf(w,x,y,z) -# define fopen _wfopen -# define freopen _wfreopen -# define remove(x) DeleteFile(x) -# define strcat wcscat -#else -# define DIR_SEPERATOR TEXT("/") -# include -#endif - -/* Include the SDL main definition header */ -#include "SDL.h" -#include "SDL_main.h" - -#ifdef main -# ifndef _WIN32_WCE_EMULATION -# undef main -# endif /* _WIN32_WCE_EMULATION */ -#endif /* main */ - -/* The standard output files */ -#define STDOUT_FILE TEXT("stdout.txt") -#define STDERR_FILE TEXT("stderr.txt") - -#ifndef NO_STDIO_REDIRECT -# ifdef _WIN32_WCE - static wchar_t stdoutPath[MAX_PATH]; - static wchar_t stderrPath[MAX_PATH]; -# else - static char stdoutPath[MAX_PATH]; - static char stderrPath[MAX_PATH]; -# endif -#endif - -#if defined(_WIN32_WCE) && _WIN32_WCE < 300 -/* seems to be undefined in Win CE although in online help */ -#define isspace(a) (((CHAR)a == ' ') || ((CHAR)a == '\t')) - -/* seems to be undefined in Win CE although in online help */ -char *strrchr(char *str, int c) -{ - char *p; - - /* Skip to the end of the string */ - p=str; - while (*p) - p++; - - /* Look for the given character */ - while ( (p >= str) && (*p != (CHAR)c) ) - p--; - - /* Return NULL if character not found */ - if ( p < str ) { - p = NULL; - } - return p; -} -#endif /* _WIN32_WCE < 300 */ - -/* Parse a command line buffer into arguments */ -static int ParseCommandLine(char *cmdline, char **argv) -{ - char *bufp; - int argc; - - argc = 0; - for ( bufp = cmdline; *bufp; ) { - /* Skip leading whitespace */ - while ( isspace(*bufp) ) { - ++bufp; - } - /* Skip over argument */ - if ( *bufp == '"' ) { - ++bufp; - if ( *bufp ) { - if ( argv ) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while ( *bufp && (*bufp != '"') ) { - ++bufp; - } - } else { - if ( *bufp ) { - if ( argv ) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while ( *bufp && ! isspace(*bufp) ) { - ++bufp; - } - } - if ( *bufp ) { - if ( argv ) { - *bufp = '\0'; - } - ++bufp; - } - } - if ( argv ) { - argv[argc] = NULL; - } - return(argc); -} - -/* Show an error message */ -static void ShowError(const char *title, const char *message) -{ -/* If USE_MESSAGEBOX is defined, you need to link with user32.lib */ -#ifdef USE_MESSAGEBOX - MessageBox(NULL, message, title, MB_ICONEXCLAMATION|MB_OK); -#else - fprintf(stderr, "%s: %s\n", title, message); -#endif -} - -/* Pop up an out of memory message, returns to Windows */ -static BOOL OutOfMemory(void) -{ - ShowError("Fatal Error", "Out of memory - aborting"); - return FALSE; -} - -/* Remove the output files if there was no output written */ -static void __cdecl cleanup_output(void) -{ -#ifndef NO_STDIO_REDIRECT - FILE *file; - int empty; -#endif - - /* Flush the output in case anything is queued */ - fclose(stdout); - fclose(stderr); - -#ifndef NO_STDIO_REDIRECT - /* See if the files have any output in them */ - if ( stdoutPath[0] ) { - file = fopen(stdoutPath, TEXT("rb")); - if ( file ) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if ( empty ) { - remove(stdoutPath); - } - } - } - if ( stderrPath[0] ) { - file = fopen(stderrPath, TEXT("rb")); - if ( file ) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if ( empty ) { - remove(stderrPath); - } - } - } -#endif -} - -#if defined(_MSC_VER) && !defined(_WIN32_WCE) -/* The VC++ compiler needs main defined */ -#define console_main main -#endif - -/* This is where execution begins [console apps] */ -int console_main(int argc, char *argv[]) -{ - int n; - char *bufp, *appname; - - /* Get the class name from argv[0] */ - appname = argv[0]; - if ( (bufp=strrchr(argv[0], '\\')) != NULL ) { - appname = bufp+1; - } else - if ( (bufp=strrchr(argv[0], '/')) != NULL ) { - appname = bufp+1; - } - - if ( (bufp=strrchr(appname, '.')) == NULL ) - n = strlen(appname); - else - n = (bufp-appname); - - bufp = (char *)alloca(n+1); - if ( bufp == NULL ) { - return OutOfMemory(); - } - strncpy(bufp, appname, n); - bufp[n] = '\0'; - appname = bufp; - - /* Load SDL dynamic link library */ - if ( SDL_Init(SDL_INIT_NOPARACHUTE) < 0 ) { - ShowError("WinMain() error", SDL_GetError()); - return(FALSE); - } - atexit(cleanup_output); - atexit(SDL_Quit); - -#ifndef DISABLE_VIDEO -#if 0 - /* Create and register our class * - DJM: If we do this here, the user nevers gets a chance to - putenv(SDL_WINDOWID). This is already called later by - the (DIB|DX5)_CreateWindow function, so it should be - safe to comment it out here. - if ( SDL_RegisterApp(appname, CS_BYTEALIGNCLIENT, - GetModuleHandle(NULL)) < 0 ) { - ShowError("WinMain() error", SDL_GetError()); - exit(1); - }*/ -#else - /* Sam: - We still need to pass in the application handle so that - DirectInput will initialize properly when SDL_RegisterApp() - is called later in the video initialization. - */ - SDL_SetModuleHandle(GetModuleHandle(NULL)); -#endif /* 0 */ -#endif /* !DISABLE_VIDEO */ - - /* Run the application main() code */ - SDL_main(argc, argv); - - /* Exit cleanly, calling atexit() functions */ - exit(0); - - /* Hush little compiler, don't you cry... */ - return(0); -} - -/* This is where execution begins [windowed apps] */ -#ifdef _WIN32_WCE -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw) -#else -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) -#endif -{ - HINSTANCE handle; - char **argv; - int argc; - char *cmdline; -#ifdef _WIN32_WCE - wchar_t *bufp; - int nLen; -#else - char *bufp; -#endif -#ifndef NO_STDIO_REDIRECT - FILE *newfp; -#endif - - /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't - keep them open. This is a hack.. hopefully it will be fixed - someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded. - */ - handle = LoadLibrary(TEXT("DDRAW.DLL")); - if ( handle != NULL ) { - FreeLibrary(handle); - } - -#ifndef NO_STDIO_REDIRECT - _getcwd( stdoutPath, sizeof( stdoutPath ) ); - strcat( stdoutPath, DIR_SEPERATOR STDOUT_FILE ); - - /* Redirect standard input and standard output */ - newfp = freopen(stdoutPath, TEXT("w"), stdout); - -#ifndef _WIN32_WCE - if ( newfp == NULL ) { /* This happens on NT */ -#if !defined(stdout) - stdout = fopen(stdoutPath, TEXT("w")); -#else - newfp = fopen(stdoutPath, TEXT("w")); - if ( newfp ) { - *stdout = *newfp; - } -#endif - } -#endif /* _WIN32_WCE */ - - _getcwd( stderrPath, sizeof( stderrPath ) ); - strcat( stderrPath, DIR_SEPERATOR STDERR_FILE ); - - newfp = freopen(stderrPath, TEXT("w"), stderr); -#ifndef _WIN32_WCE - if ( newfp == NULL ) { /* This happens on NT */ -#if !defined(stderr) - stderr = fopen(stderrPath, TEXT("w")); -#else - newfp = fopen(stderrPath, TEXT("w")); - if ( newfp ) { - *stderr = *newfp; - } -#endif - } -#endif /* _WIN32_WCE */ - - setvbuf(stdout, NULL, _IOLBF, BUFSIZ); /* Line buffered */ - setbuf(stderr, NULL); /* No buffering */ -#endif /* !NO_STDIO_REDIRECT */ - -#ifdef _WIN32_WCE - nLen = wcslen(szCmdLine)+128+1; - bufp = (wchar_t *)alloca(nLen*2); - wcscpy (bufp, TEXT("\"")); - GetModuleFileName(NULL, bufp+1, 128-3); - wcscpy (bufp+wcslen(bufp), TEXT("\" ")); - wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); - nLen = wcslen(bufp)+1; - cmdline = (char *)alloca(nLen); - if ( cmdline == NULL ) { - return OutOfMemory(); - } - WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL); -#else - /* Grab the command line (use alloca() on Windows) */ - bufp = GetCommandLine(); - cmdline = (char *)alloca(strlen(bufp)+1); - if ( cmdline == NULL ) { - return OutOfMemory(); - } - strcpy(cmdline, bufp); -#endif - - /* Parse it into argv and argc */ - argc = ParseCommandLine(cmdline, NULL); - argv = (char **)alloca((argc+1)*(sizeof *argv)); - if ( argv == NULL ) { - return OutOfMemory(); - } - ParseCommandLine(cmdline, argv); - - /* Run the main program (after a little SDL initialization) */ - return(console_main(argc, argv)); -} diff --git a/src/connectionhandler.cpp b/src/connectionhandler.cpp index c70f34e4..b0a85f71 100644 --- a/src/connectionhandler.cpp +++ b/src/connectionhandler.cpp @@ -100,135 +100,6 @@ ConnectionHandler::ConnectionHandler() void ConnectionHandler::startListen(ListenThreadData *ltd) { - /* - // Allocate a socket set - SDLNet_SocketSet set = SDLNet_AllocSocketSet(MAX_CLIENTS); - if (!set) { - LOG_FATAL("SDLNet_AllocSocketSet: " << SDLNet_GetError(), 0) - exit(1); - } - - // Add the server socket to the socket set - if (SDLNet_TCP_AddSocket(set, ltd->socket) < 0) { - LOG_FATAL("SDLNet_AddSocket: " << SDLNet_GetError(), 0) - exit(1); - } - - // Keep checking for socket activity while running - while (ltd->running) { - int numready = SDLNet_CheckSockets(set, 100); - - if (numready == -1) { - LOG_ERROR("SDLNet_CheckSockets: " << SDLNet_GetError(), 0) - // When this is a system error, perror may help us - perror("SDLNet_CheckSockets"); - } - else if (numready > 0) { - LOG_INFO(numready << " socket(s) with activity!", 0) - - // Check server socket - if (SDLNet_SocketReady(ltd->socket)) { - TCPsocket client = SDLNet_TCP_Accept(ltd->socket); - - if (client) { - // Add the client socket to the socket set - if (SDLNet_TCP_AddSocket(set, client) < 0) { - LOG_ERROR("SDLNet_AddSocket: " << SDLNet_GetError(), 0) - } - else { - NetComputer *comp = new NetComputer(this, client); - clients.push_back(comp); - computerConnected(comp); - LOG_INFO(clients.size() << " client(s) connected", 0) - } - } - } - - // Check client sockets - NetComputers::iterator i; - - for (i = clients.begin(); i != clients.end(); ) - { - NetComputer *comp = *i; - TCPsocket s = (*i)->getSocket(); - - if (SDLNet_SocketReady(s)) - { - char buffer[1024]; - int result = SDLNet_TCP_Recv(s, buffer, 1024); - if (result <= 0) { - SDLNet_TCP_DelSocket(set, s); - SDLNet_TCP_Close(s); - computerDisconnected(comp); - delete comp; - comp = NULL; - } - else { - // Copy the incoming data to the in buffer of this - // client - //buffer[result] = 0; - //LOG_INFO("Received: " << buffer << ", Length: " - // << result); - LOG_INFO("Received length: " << result, 2); - -#ifdef SCRIPT_SUPPORT - // This could be good if you wanted to extend the - // server protocol using a scripting language. This - // could be attained by using allowing scripts to - // "hook" certain messages. - - //script->message(buffer); -#endif - - // If the scripting subsystem didn't hook the message - // it will be handled by the default message handler. - - // Convert the client IP address to string - // representation - std::string ipaddr = ip4ToString( - SDLNet_TCP_GetPeerAddress(s)->host); - - // Make sure that the packet is big enough (> short) - if (result >= 2) - { - Packet *packet = new Packet(buffer, result); - MessageIn msg(packet); // (MessageIn frees packet) - - short messageId = msg.getId(); - - if (handlers.find(messageId) != handlers.end()) - { - // send message to appropriate handler - handlers[messageId]->receiveMessage( - *comp, msg); - } - else { - // bad message (no registered handler) - LOG_ERROR("Unhandled message (" << messageId - << ") received from " << ipaddr, 0); - } - } - else { - LOG_ERROR("Message too short from " << ipaddr, 0); - } - } - } - - // Traverse to next client, possibly deleting current - if (comp == NULL) { - i = clients.erase(i); - } - else { - i++; - } - } - } - } - - // - Disconnect all clients (close sockets) - - SDLNet_FreeSocketSet(set);*/ - while (ltd->running) { ENetEvent event; diff --git a/src/main.cpp b/src/main.cpp index a0922202..fb0497be 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #if (defined __USE_UNIX98 || defined __FreeBSD__) @@ -167,21 +166,9 @@ void initialize() accountHandler = new AccountHandler(); gameHandler = new GameHandler(); connectionHandler = new ConnectionHandler(); - - // Make SDL use a dummy videodriver so that it doesn't require an X server - //putenv("SDL_VIDEODRIVER=dummy"); - - // Initialize SDL - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1) { - LOG_FATAL("SDL_Init: " << SDL_GetError(), 0) - exit(1); - } // Reset to default segmentation fault handling for debugging purposes signal(SIGSEGV, SIG_DFL); - - // set SDL to quit on exit. - atexit(SDL_Quit); // set enet to quit on exit. atexit(enet_deinitialize); @@ -242,9 +229,6 @@ void deinitialize() // Stop world timer worldTimer.stop(); - - // Quit SDL - SDL_Quit(); // Quit ENet enet_deinitialize(); diff --git a/src/netsession.cpp b/src/netsession.cpp index 260a649f..8ce5c8ad 100644 --- a/src/netsession.cpp +++ b/src/netsession.cpp @@ -85,12 +85,6 @@ void NetSession::startListen(ConnectionHandler *handler, enet_uint16 port) LOG_ERROR("pthread_create: " << rc, 0); exit(4); } - /*data->thread = SDL_CreateThread(startListenThread, data); - - if (data->thread == NULL) { - LOG_ERROR("SDL_CreateThread: " << SDL_GetError(), 0); - exit(4); - }*/ listeners[port] = data; } @@ -110,7 +104,6 @@ void NetSession::stopListen(enet_uint16 port) // Wait for listen thread to stop and close socket // Note: Somewhere in this process the ConnectionHandler should receive // disconnect notifications about all the connected clients. - //SDL_WaitThread(data->thread, NULL); enet_host_destroy(data->host); delete data; listeners.erase(threadDataI); -- cgit v1.2.3-70-g09d2