SDLMain.m
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*   SDLMain.m - main entry point for our Cocoa-ized SDL app
  2.        Darrell Walisser - dwaliss1@purdue.edu
  3.     Feel free to customize this file to suit your needs
  4. */
  5. #import "SDL.h"
  6. #import "SDLMain.h"
  7. #import <sys/param.h> /* for MAXPATHLEN */
  8. #import <unistd.h>
  9. static int    gArgc;
  10. static char  **gArgv;
  11. @implementation SDLMain
  12. /* Invoked from the Quit menu item */
  13. - (void) quit:(id)sender
  14. {
  15. SDL_Event event;
  16. event.type = SDL_QUIT;
  17. SDL_PushEvent(&event);
  18. exit(0);
  19. }
  20. /* Set the working directory to the .app's parent directory */
  21. - (void) setupWorkingDirectory
  22. {
  23.     char parentdir[MAXPATHLEN];
  24.     char *c;
  25.     
  26.     strncpy ( parentdir, gArgv[0], MAXPATHLEN );
  27.     c = (char*) parentdir;
  28.     
  29.     while (*c != '')     /* go to end */
  30.         c++;
  31.     
  32.     while (*c != '/')      /* back up to parent */
  33.         c--;
  34.     
  35.     *c = '';             /* cut off last part (binary name) */
  36.     
  37.     assert ( chdir (parentdir) == 0 );   /* chdir to the binary app's parent */
  38.     assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */
  39. }
  40. /* Called when the internal event loop has just started running */
  41. - (void) applicationDidFinishLaunching: (NSNotification *) note
  42. {
  43.     /* Set the working directory to the .app's parent directory */
  44.     [ self setupWorkingDirectory ];
  45. }
  46. @end
  47. #ifdef main
  48. #  undef main
  49. #endif
  50. /*
  51. int SDL_HasAudioDelayMsec(void) { return 0; }
  52. int SDL_AudioDelayMsec(void) { return 0; }
  53. */
  54. /* Main entry point to executible - should *not* be SDL_main! */
  55. int main (int argc, char **argv) {
  56.     /* Copy the arguments into a global variable */
  57.     int i;
  58.     
  59.     /* This is passed if we are launched by double-clicking */
  60.     if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
  61.         gArgc = 1;
  62.     } else {
  63.         gArgc = argc;
  64.     }
  65.     gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1));
  66.     assert (gArgv != NULL);
  67.     for (i = 0; i < gArgc; i++) {
  68.         gArgv[i] = argv[i];
  69.     }
  70.     gArgv[i] = NULL;
  71.     NSApplicationMain (argc, argv);
  72.     return 0;
  73. }