Remove GLUT usage in HTML5 platform

This commit is contained in:
L. Krause 2017-04-27 15:34:46 +02:00
parent 5993a5fac9
commit 847bd33fdf
3 changed files with 27 additions and 75 deletions

View file

@ -31,94 +31,50 @@
#include "io/resource_loader.h"
#include "main/main.h"
#include "os_javascript.h"
#include <GL/glut.h>
#include <string.h>
OS_JavaScript *os = NULL;
static void _gfx_init(void *ud, bool gl2, int w, int h, bool fs) {
static void main_loop() {
glutInitWindowSize(w, h);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("godot");
os->main_loop_iterate();
}
static void _gfx_idle() {
extern "C" void main_after_fs_sync() {
glutPostRedisplay();
}
int start_step = 0;
static void _godot_draw(void) {
if (start_step == 1) {
start_step = 2;
Main::start();
os->main_loop_begin();
}
if (start_step == 2) {
os->main_loop_iterate();
}
glutSwapBuffers();
}
extern "C" {
void main_after_fs_sync() {
start_step = 1;
}
// Ease up compatibility
ResourceLoader::set_abort_on_missing_resources(false);
Main::start();
os->main_loop_begin();
emscripten_set_main_loop(main_loop, 0, false);
}
int main(int argc, char *argv[]) {
/* Initialize the window */
printf("let it go dude!\n");
glutInit(&argc, argv);
os = new OS_JavaScript(argv[0], _gfx_init, NULL, NULL);
Error err = Main::setup(argv[0], argc - 1, &argv[1]);
ResourceLoader::set_abort_on_missing_resources(false); //ease up compatibility
/* Set up glut callback functions */
glutIdleFunc(_gfx_idle);
// glutReshapeFunc(gears_reshape);
glutDisplayFunc(_godot_draw);
//glutSpecialFunc(gears_special);
//mount persistent file system
// sync from persistent state into memory and then
// run the 'main_after_fs_sync' function
/* clang-format off */
EM_ASM(
Module.noExitRuntime = true;
FS.mkdir('/userfs');
FS.mount(IDBFS, {}, '/userfs');
// sync from persistent state into memory and then
// run the 'main_after_fs_sync' function
FS.syncfs(true, function(err) {
if (err) {
Module.setStatus('Failed to load persistent data\nPlease allow (third-party) cookies');
Module.printErr('Failed to populate IDB file system: ' + err.message);
Module.exit();
Module.noExitRuntime = false;
} else {
Module.print('Successfully populated IDB file system');
ccall('main_after_fs_sync', 'void', []);
ccall('main_after_fs_sync', null);
}
});
);
/* clang-format on */
glutMainLoop();
os = new OS_JavaScript(argv[0], NULL);
Error err = Main::setup(argv[0], argc - 1, &argv[1]);
return 0;
// continued async in main_after_fs_sync() from syncfs() callback
}
/*
*
*09] <azakai|2__> reduz: yes, define TOTAL_MEMORY on Module. for example var Module = { TOTAL_MEMORY: 12345.. }; before the main
*
*/