SDL_main.cpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. /*
  19.     SDL_main.cpp
  20.     The Epoc executable startup functions 
  21.     Epoc version by Hannu Viitala (hannu.j.viitala@mbnet.fi)
  22. */
  23. #include <e32std.h>
  24. #include <e32def.h>
  25. #include <e32svr.h>
  26. #include <e32base.h>
  27. #include <estlib.h>
  28. #include <stdlib.h>
  29. #include <stdio.h>
  30. #include <w32std.h>
  31. #include <apgtask.h>
  32. #include "SDL_error.h"
  33. #ifndef EXPORT_C
  34. # ifdef __VC32__
  35. #  define IMPORT_C __declspec(dllexport)
  36. #  define EXPORT_C __declspec(dllexport)
  37. # endif
  38. # ifdef __GCC32__
  39. #  define IMPORT_C
  40. #  define EXPORT_C __declspec(dllexport)
  41. # endif
  42. #endif
  43. #if defined(__WINS__)
  44. #include <estw32.h>
  45. IMPORT_C void RegisterWsExe(const TDesC &aName);
  46. #endif
  47. /* The prototype for the application's main() function */
  48. #define main SDL_main
  49. extern "C" int main (int argc, char *argv[], char *envp[]);
  50. extern "C" void exit (int ret);
  51. /* Epoc main function */
  52. GLDEF_C TInt E32Main() 
  53.     {
  54.     /*  Get the clean-up stack */
  55. CTrapCleanup* cleanup = CTrapCleanup::New();
  56.     #if defined(__WINS__)
  57.     /* arrange for access to Win32 stdin/stdout/stderr */
  58.     RWin32Stream::StartServer();
  59.     #endif
  60.     /* Arrange for multi-threaded operation */
  61. SpawnPosixServerThread();
  62.     /* Get args and environment */
  63. int argc=0;
  64. char** argv=0;
  65. char** envp=0;
  66. __crt0(argc,argv,envp);
  67.     #if defined(__WINS__)
  68. /* Cause the graphical Window Server to come into existence */
  69. RSemaphore sem;
  70. sem.CreateGlobal(_L("WsExeSem"),0);
  71. RegisterWsExe(sem.FullName());
  72.     #endif
  73.     /* Start the application! */
  74.     /* Create stdlib */
  75.     _REENT;
  76.     /* Set process and thread priority */
  77.     RThread currentThread;
  78.     currentThread.Rename(_L("SdlProgram"));
  79.     currentThread.SetProcessPriority(EPriorityLow);
  80.     currentThread.SetPriority(EPriorityMuchLess);
  81.     /* Call stdlib main */
  82.     int ret = main(argc, argv, envp); /* !! process exits here if there is "exit()" in main! */
  83.     /* Call exit */
  84.     exit(ret); /* !! process exits here! */
  85.     /* Free resources and return */
  86.     CloseSTDLIB();
  87.     delete cleanup;
  88.     return(KErrNone);
  89.     }
  90. /* Epoc dll entry point */
  91. #if defined(__WINS__)
  92. GLDEF_C TInt E32Dll(TDllReason)
  93. {
  94. return(KErrNone);
  95. }
  96. EXPORT_C TInt WinsMain(TAny *)
  97. {
  98.     E32Main();
  99. return KErrNone;
  100. }
  101. #endif