From 9998978f1bc0c0aafeac29dd7adf5b2b0b6e078e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 10 Aug 2012 10:30:10 -0700 Subject: [PATCH] Module.preInit --- src/postamble.js | 7 +++++++ tests/runner.py | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/postamble.js b/src/postamble.js index 2944e6811..e1dd495a7 100644 --- a/src/postamble.js +++ b/src/postamble.js @@ -79,6 +79,13 @@ Module['run'] = run; // {{PRE_RUN_ADDITIONS}} +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + initRuntime(); #if INVOKE_RUN diff --git a/tests/runner.py b/tests/runner.py index c6c7cb2c0..70f7ba9d6 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7259,6 +7259,17 @@ f.close() open(os.path.join(self.get_dir(), 'a.out.js'), 'w').write(src) assert 'hello from main' in run_js(os.path.join(self.get_dir(), 'a.out.js')), 'main should print when called manually' + # Use postInit + open(os.path.join(self.get_dir(), 'pre.js'), 'w').write(''' + var Module = { + preRun: function() { Module.print('pre-run') }, + postRun: function() { Module.print('post-run') }, + preInit: function() { Module.print('pre-init') } + }; + ''') + Popen(['python', EMCC, os.path.join(self.get_dir(), 'main.cpp'), '--pre-js', 'pre.js']).communicate() + self.assertContained('pre-init\npre-run\nhello from main\npost-run\n', run_js(os.path.join(self.get_dir(), 'a.out.js'))) + def test_prepost2(self): open(os.path.join(self.get_dir(), 'main.cpp'), 'w').write(''' #include