slouken@0
|
1 |
/*
|
slouken@5535
|
2 |
Simple DirectMedia Layer
|
slouken@6885
|
3 |
Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
|
slouken@0
|
4 |
|
slouken@5535
|
5 |
This software is provided 'as-is', without any express or implied
|
slouken@5535
|
6 |
warranty. In no event will the authors be held liable for any damages
|
slouken@5535
|
7 |
arising from the use of this software.
|
slouken@0
|
8 |
|
slouken@5535
|
9 |
Permission is granted to anyone to use this software for any purpose,
|
slouken@5535
|
10 |
including commercial applications, and to alter it and redistribute it
|
slouken@5535
|
11 |
freely, subject to the following restrictions:
|
slouken@0
|
12 |
|
slouken@5535
|
13 |
1. The origin of this software must not be misrepresented; you must not
|
slouken@5535
|
14 |
claim that you wrote the original software. If you use this software
|
slouken@5535
|
15 |
in a product, an acknowledgment in the product documentation would be
|
slouken@5535
|
16 |
appreciated but is not required.
|
slouken@5535
|
17 |
2. Altered source versions must be plainly marked as such, and must not be
|
slouken@5535
|
18 |
misrepresented as being the original software.
|
slouken@5535
|
19 |
3. This notice may not be removed or altered from any source distribution.
|
slouken@0
|
20 |
*/
|
slouken@0
|
21 |
|
slouken@0
|
22 |
#ifndef _SDL_main_h
|
slouken@0
|
23 |
#define _SDL_main_h
|
slouken@0
|
24 |
|
slouken@1356
|
25 |
#include "SDL_stdinc.h"
|
slouken@1356
|
26 |
|
slouken@3407
|
27 |
/**
|
slouken@3407
|
28 |
* \file SDL_main.h
|
slouken@7191
|
29 |
*
|
slouken@3407
|
30 |
* Redefine main() on some platforms so that it is called by SDL.
|
slouken@3407
|
31 |
*/
|
slouken@0
|
32 |
|
slouken@5320
|
33 |
#ifndef SDL_MAIN_HANDLED
|
slouken@7335
|
34 |
#if defined(__WIN32__)
|
slouken@7335
|
35 |
/* On Windows SDL provides WinMain(), which parses the command line and passes
|
slouken@7335
|
36 |
the arguments to your main function.
|
slouken@7335
|
37 |
|
slouken@7335
|
38 |
If you provide your own WinMain(), you may define SDL_MAIN_HANDLED
|
slouken@7335
|
39 |
*/
|
slouken@7335
|
40 |
#define SDL_MAIN_AVAILABLE
|
slouken@7335
|
41 |
|
dludwig@8480
|
42 |
#elif defined(__WINRT__)
|
dludwig@8500
|
43 |
/* On WinRT, SDL provides a main function that initializes CoreApplication,
|
dludwig@8480
|
44 |
creating an instance of IFrameworkView in the process.
|
dludwig@8480
|
45 |
|
dludwig@8480
|
46 |
Please note that #include'ing SDL_main.h is not enough to get a main()
|
dludwig@8531
|
47 |
function working. In non-XAML apps, the file,
|
dludwig@8531
|
48 |
src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
|
dludwig@8531
|
49 |
into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be
|
dludwig@8531
|
50 |
called, with a pointer to the Direct3D-hosted XAML control passed in.
|
dludwig@8480
|
51 |
*/
|
dludwig@8480
|
52 |
#define SDL_MAIN_NEEDED
|
dludwig@8480
|
53 |
|
slouken@7335
|
54 |
#elif defined(__IPHONEOS__)
|
slouken@7335
|
55 |
/* On iOS SDL provides a main function that creates an application delegate
|
slouken@7335
|
56 |
and starts the iOS application run loop.
|
slouken@7335
|
57 |
|
slouken@7335
|
58 |
See src/video/uikit/SDL_uikitappdelegate.m for more details.
|
slouken@7335
|
59 |
*/
|
slouken@5320
|
60 |
#define SDL_MAIN_NEEDED
|
slouken@7335
|
61 |
|
slouken@7335
|
62 |
#elif defined(__ANDROID__)
|
slouken@7335
|
63 |
/* On Android SDL provides a Java class in SDLActivity.java that is the
|
slouken@7335
|
64 |
main activity entry point.
|
slouken@7335
|
65 |
|
slouken@7335
|
66 |
See README-android.txt for more details on extending that class.
|
slouken@7335
|
67 |
*/
|
slouken@7335
|
68 |
#define SDL_MAIN_NEEDED
|
slouken@7335
|
69 |
|
slouken@5320
|
70 |
#endif
|
slouken@7335
|
71 |
#endif /* SDL_MAIN_HANDLED */
|
slouken@0
|
72 |
|
slouken@0
|
73 |
#ifdef __cplusplus
|
slouken@7191
|
74 |
#define C_LINKAGE "C"
|
slouken@0
|
75 |
#else
|
slouken@0
|
76 |
#define C_LINKAGE
|
slouken@0
|
77 |
#endif /* __cplusplus */
|
slouken@0
|
78 |
|
slouken@3407
|
79 |
/**
|
slouken@3407
|
80 |
* \file SDL_main.h
|
slouken@3407
|
81 |
*
|
slouken@3407
|
82 |
* The application's main() function must be called with C linkage,
|
slouken@3407
|
83 |
* and should be declared like this:
|
slouken@3407
|
84 |
* \code
|
slouken@3407
|
85 |
* #ifdef __cplusplus
|
slouken@3407
|
86 |
* extern "C"
|
slouken@3407
|
87 |
* #endif
|
slouken@3407
|
88 |
* int main(int argc, char *argv[])
|
slouken@3407
|
89 |
* {
|
slouken@3407
|
90 |
* }
|
slouken@3407
|
91 |
* \endcode
|
slouken@0
|
92 |
*/
|
slouken@3407
|
93 |
|
slouken@7335
|
94 |
#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
|
slouken@7191
|
95 |
#define main SDL_main
|
slouken@5320
|
96 |
#endif
|
slouken@0
|
97 |
|
slouken@3407
|
98 |
/**
|
slouken@3407
|
99 |
* The prototype for the application's main() function
|
slouken@3407
|
100 |
*/
|
slouken@0
|
101 |
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
|
slouken@0
|
102 |
|
slouken@0
|
103 |
|
slouken@0
|
104 |
#include "begin_code.h"
|
slouken@0
|
105 |
#ifdef __cplusplus
|
slouken@0
|
106 |
extern "C" {
|
slouken@0
|
107 |
#endif
|
slouken@0
|
108 |
|
philipp@7653
|
109 |
/**
|
slouken@7281
|
110 |
* This is called by the real SDL main function to let the rest of the
|
slouken@7281
|
111 |
* library know that initialization was done properly.
|
slouken@7281
|
112 |
*
|
slouken@7281
|
113 |
* Calling this yourself without knowing what you're doing can cause
|
slouken@7281
|
114 |
* crashes and hard to diagnose problems with your application.
|
slouken@7281
|
115 |
*/
|
slouken@7281
|
116 |
extern DECLSPEC void SDL_SetMainReady(void);
|
slouken@7281
|
117 |
|
slouken@5320
|
118 |
#ifdef __WIN32__
|
slouken@5320
|
119 |
|
slouken@3407
|
120 |
/**
|
slouken@3407
|
121 |
* This can be called to set the application class at startup
|
slouken@3407
|
122 |
*/
|
slouken@1895
|
123 |
extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style,
|
slouken@1895
|
124 |
void *hInst);
|
slouken@1466
|
125 |
extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
|
slouken@1895
|
126 |
|
slouken@5320
|
127 |
#endif /* __WIN32__ */
|
slouken@5320
|
128 |
|
slouken@5320
|
129 |
|
dludwig@8531
|
130 |
#ifdef __WINRT__
|
dludwig@8531
|
131 |
|
dludwig@8531
|
132 |
/**
|
dludwig@8531
|
133 |
* \brief Initializes and launches an SDL/WinRT application.
|
dludwig@8531
|
134 |
*
|
dludwig@8531
|
135 |
* \param mainFunction The SDL app's C-style main().
|
dludwig@8531
|
136 |
* \param xamlBackgroundPanel An optional, XAML-based, background panel.
|
dludwig@8531
|
137 |
* For Non-XAML apps, this value must be set to NULL. For XAML apps,
|
dludwig@8531
|
138 |
* pass in a pointer to a SwapChainBackgroundPanel, casted to an
|
dludwig@8531
|
139 |
* IInspectable (via reinterpret_cast).
|
dludwig@8531
|
140 |
* \ret 0 on success, -1 on failure. On failure, use SDL_GetError to retrieve more
|
dludwig@8531
|
141 |
* information on the failure.
|
dludwig@8531
|
142 |
*/
|
dludwig@8531
|
143 |
extern DECLSPEC int SDLCALL SDL_WinRTRunApp(int (*mainFunction)(int, char **), void * xamlBackgroundPanel);
|
dludwig@8531
|
144 |
|
dludwig@8531
|
145 |
#endif /* __WINRT__ */
|
dludwig@8531
|
146 |
|
dludwig@8531
|
147 |
|
slouken@0
|
148 |
#ifdef __cplusplus
|
slouken@0
|
149 |
}
|
slouken@0
|
150 |
#endif
|
slouken@0
|
151 |
#include "close_code.h"
|
slouken@0
|
152 |
|
slouken@0
|
153 |
#endif /* _SDL_main_h */
|
slouken@1895
|
154 |
|
slouken@1895
|
155 |
/* vi: set ts=4 sw=4 expandtab: */
|