Allow use of main instead of android_main

Inspired by #504.
Instead of requiring the user to do PLATFORM_ANDROID #ifdefery,
have the android_main entry point exported by raylib and call
the user-defined main. This way many games could (in theory)
run unmodified on Android and elsewhere.

This is untested!
This commit is contained in:
Ahmad Fatoum
2018-03-16 21:31:10 +01:00
parent 61e0e4b4f3
commit 2c219fb814
21 changed files with 77 additions and 315 deletions

View File

@@ -499,17 +499,33 @@ void InitWindow(int width, int height, void *data)
#endif
#if defined(PLATFORM_ANDROID)
/* To allow easier porting to android, we allow the user to define a main function
* which we call from android_main, that we define ourselves
*/
extern int main(int argc, char *argv[]);
void android_main(struct android_app *_app) {
char arg0[] = "raylib"; /* argv[] are mutable */
app = _app;
/* TODO should we maybe report != 0 return codes somewhere? */
(void)main(1, (char*[]){ arg0, NULL });
}
/* TODO add this to header, if apps really need it) */
struct android_app *GetAndroidApp(void)
{
return app;
}
// Initialize window and OpenGL context (and Android activity)
// NOTE: data parameter could be used to pass any kind of required data to the initialization
void InitWindow(int width, int height, void *data)
{
(void)data; // ignored
TraceLog(LOG_INFO, "Initializing raylib (v1.9.6-dev)");
screenWidth = width;
screenHeight = height;
// Input data is android app pointer
app = (struct android_app *)data;
internalDataPath = app->activity->internalDataPath;
// Set desired windows flags before initializing anything