aboutsummaryrefslogtreecommitdiffstats
path: root/distrib/sdl-1.2.12/src/main/epoc/SDL_main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'distrib/sdl-1.2.12/src/main/epoc/SDL_main.cpp')
-rw-r--r--distrib/sdl-1.2.12/src/main/epoc/SDL_main.cpp129
1 files changed, 129 insertions, 0 deletions
diff --git a/distrib/sdl-1.2.12/src/main/epoc/SDL_main.cpp b/distrib/sdl-1.2.12/src/main/epoc/SDL_main.cpp
new file mode 100644
index 0000000..0139c70
--- /dev/null
+++ b/distrib/sdl-1.2.12/src/main/epoc/SDL_main.cpp
@@ -0,0 +1,129 @@
+/*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Sam Lantinga
+ slouken@libsdl.org
+*/
+
+/*
+ SDL_main.cpp
+ The Epoc executable startup functions
+
+ Epoc version by Hannu Viitala (hannu.j.viitala@mbnet.fi)
+*/
+
+#include <e32std.h>
+#include <e32def.h>
+#include <e32svr.h>
+#include <e32base.h>
+#include <estlib.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <w32std.h>
+#include <apgtask.h>
+
+#include "SDL_error.h"
+
+#ifndef EXPORT_C
+# ifdef __VC32__
+# define IMPORT_C __declspec(dllexport)
+# define EXPORT_C __declspec(dllexport)
+# endif
+# ifdef __GCC32__
+# define IMPORT_C
+# define EXPORT_C __declspec(dllexport)
+# endif
+#endif
+
+#if defined(__WINS__)
+#include <estw32.h>
+IMPORT_C void RegisterWsExe(const TDesC &aName);
+#endif
+
+/* The prototype for the application's main() function */
+#define main SDL_main
+extern "C" int main (int argc, char *argv[], char *envp[]);
+extern "C" void exit (int ret);
+
+
+/* Epoc main function */
+
+GLDEF_C TInt E32Main()
+ {
+ /* Get the clean-up stack */
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+
+ #if defined(__WINS__)
+ /* arrange for access to Win32 stdin/stdout/stderr */
+ RWin32Stream::StartServer();
+ #endif
+
+ /* Arrange for multi-threaded operation */
+ SpawnPosixServerThread();
+
+ /* Get args and environment */
+ int argc=0;
+ char** argv=0;
+ char** envp=0;
+ __crt0(argc,argv,envp);
+
+ #if defined(__WINS__)
+ /* Cause the graphical Window Server to come into existence */
+ RSemaphore sem;
+ sem.CreateGlobal(_L("WsExeSem"),0);
+ RegisterWsExe(sem.FullName());
+ #endif
+
+
+ /* Start the application! */
+
+ /* Create stdlib */
+ _REENT;
+
+ /* Set process and thread priority */
+ RThread currentThread;
+
+ currentThread.Rename(_L("SdlProgram"));
+ currentThread.SetProcessPriority(EPriorityLow);
+ currentThread.SetPriority(EPriorityMuchLess);
+
+ /* Call stdlib main */
+ int ret = main(argc, argv, envp); /* !! process exits here if there is "exit()" in main! */
+
+ /* Call exit */
+ exit(ret); /* !! process exits here! */
+
+ /* Free resources and return */
+ CloseSTDLIB();
+ delete cleanup;
+ return(KErrNone);
+ }
+
+/* Epoc dll entry point */
+#if defined(__WINS__)
+GLDEF_C TInt E32Dll(TDllReason)
+ {
+ return(KErrNone);
+ }
+
+EXPORT_C TInt WinsMain(TAny *)
+ {
+ E32Main();
+ return KErrNone;
+ }
+#endif