aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/sdl/main.cpp
diff options
context:
space:
mode:
authorMax Horn2007-08-11 08:44:43 +0000
committerMax Horn2007-08-11 08:44:43 +0000
commit940298151777bf63bbb32d4f6ed07b8d6a86d962 (patch)
tree27c45cebb1721a805c1f49206564dcdfd0af2113 /backends/platform/sdl/main.cpp
parent3f22960a65523dc6c8fb7d0b238145d4ebe42be7 (diff)
downloadscummvm-rg350-940298151777bf63bbb32d4f6ed07b8d6a86d962.tar.gz
scummvm-rg350-940298151777bf63bbb32d4f6ed07b8d6a86d962.tar.bz2
scummvm-rg350-940298151777bf63bbb32d4f6ed07b8d6a86d962.zip
SDL backend cleanup (minor)
svn-id: r28520
Diffstat (limited to 'backends/platform/sdl/main.cpp')
-rw-r--r--backends/platform/sdl/main.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/backends/platform/sdl/main.cpp b/backends/platform/sdl/main.cpp
new file mode 100644
index 0000000000..4ef41d99f2
--- /dev/null
+++ b/backends/platform/sdl/main.cpp
@@ -0,0 +1,112 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "backends/platform/sdl/sdl.h"
+#include "base/main.h"
+
+#if defined(WIN32)
+#include <windows.h>
+// winnt.h defines ARRAYSIZE, but we want our own one...
+#undef ARRAYSIZE
+#endif
+
+#if defined(__SYMBIAN32__)
+#include "SymbianOs.h"
+#endif
+
+#if !defined(__MAEMO__) && !defined(_WIN32_WCE)
+
+#if defined (WIN32)
+int __stdcall WinMain(HINSTANCE /*hInst*/, HINSTANCE /*hPrevInst*/, LPSTR /*lpCmdLine*/, int /*iShowCmd*/) {
+ SDL_SetModuleHandle(GetModuleHandle(NULL));
+ return main(__argc, __argv);
+}
+#endif
+
+int main(int argc, char *argv[]) {
+
+#if defined(__SYMBIAN32__)
+ //
+ // Set up redirects for stdout/stderr under Windows and Symbian.
+ // Code copied from SDL_main.
+ //
+
+ // Symbian does not like any output to the console through any *print* function
+ char STDOUT_FILE[256], STDERR_FILE[256]; // shhh, don't tell anybody :)
+ strcpy(STDOUT_FILE, Symbian::GetExecutablePath());
+ strcpy(STDERR_FILE, Symbian::GetExecutablePath());
+ strcat(STDOUT_FILE, "scummvm.stdout.txt");
+ strcat(STDERR_FILE, "scummvm.stderr.txt");
+
+ /* Flush the output in case anything is queued */
+ fclose(stdout);
+ fclose(stderr);
+
+ /* Redirect standard input and standard output */
+ FILE *newfp = freopen(STDOUT_FILE, "w", stdout);
+ if (newfp == NULL) { /* This happens on NT */
+#if !defined(stdout)
+ stdout = fopen(STDOUT_FILE, "w");
+#else
+ newfp = fopen(STDOUT_FILE, "w");
+ if (newfp) {
+ *stdout = *newfp;
+ }
+#endif
+ }
+ newfp = freopen(STDERR_FILE, "w", stderr);
+ if (newfp == NULL) { /* This happens on NT */
+#if !defined(stderr)
+ stderr = fopen(STDERR_FILE, "w");
+#else
+ newfp = fopen(STDERR_FILE, "w");
+ if (newfp) {
+ *stderr = *newfp;
+ }
+#endif
+ }
+ setbuf(stderr, NULL); /* No buffering */
+
+#endif // defined(__SYMBIAN32__)
+
+ // Create our OSystem instance
+#if defined(__SYMBIAN32__)
+ g_system = new OSystem_SDL_Symbian();
+#else
+ g_system = new OSystem_SDL();
+#endif
+ assert(g_system);
+
+#ifdef DYNAMIC_MODULES
+ PluginManager::instance().addPluginProvider(new SDLPluginProvider());
+#endif
+
+ // Invoke the actual ScummVM main entry point:
+ int res = scummvm_main(argc, argv);
+ g_system->quit(); // TODO: Consider removing / replacing this!
+ return res;
+}
+
+#endif