From 76e20869b5d43aa7015d43a5732bd785a358db66 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Thu, 5 Jun 2014 22:05:32 +0200 Subject: [PATCH] [DEV] add main start for Other platform (not tested) --- sources/ewol/context/Android/Context.cpp | 20 ++++++++++++++------ sources/ewol/context/IOs/Context.cpp | 8 ++++---- sources/ewol/context/MacOs/Context.cpp | 8 ++++---- sources/ewol/context/Windows/Context.cpp | 8 ++++---- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/sources/ewol/context/Android/Context.cpp b/sources/ewol/context/Android/Context.cpp index 5721857e..bf2339ec 100644 --- a/sources/ewol/context/Android/Context.cpp +++ b/sources/ewol/context/Android/Context.cpp @@ -87,7 +87,8 @@ class AndroidContext : public ewol::Context { return true; } public: - AndroidContext(JNIEnv* _env, jclass _classBase, jobject _objCallback, enum application _typeAPPL) : + AndroidContext(ewol::context::Application* _application, JNIEnv* _env, jclass _classBase, jobject _objCallback, enum application _typeAPPL) : + ewol::Context(_application), m_javaApplicationType(_typeAPPL), m_JavaVirtualMachinePointer(nullptr), m_javaClassEwol(0), @@ -639,6 +640,7 @@ class AndroidContext : public ewol::Context { }; static std::vector s_listInstance; +ewol::context::Application* s_applicationInit = NULL; extern "C" { // JNI onLoad @@ -693,10 +695,16 @@ extern "C" { EWOL_DEBUG("** Creating EWOL context **"); EWOL_DEBUG("*******************************************"); AndroidContext* tmpContext = nullptr; + s_applicationInit = NULL; + ewol::context::Application* localApplication = NULL; + // call the basic init of all application (that call us ...) + main(0,NULL); + localApplication = s_applicationInit; + s_applicationInit = NULL; if (org_ewol_EwolConstants_EWOL_APPL_TYPE_ACTIVITY == _typeApplication) { - tmpContext = new AndroidContext(_env, _classBase, _objCallback, AndroidContext::appl_application); + tmpContext = new AndroidContext(localApplication, _env, _classBase, _objCallback, AndroidContext::appl_application); } else if (org_ewol_EwolConstants_EWOL_APPL_TYPE_WALLPAPER == _typeApplication) { - tmpContext = new AndroidContext(_env, _classBase, _objCallback, AndroidContext::appl_wallpaper); + tmpContext = new AndroidContext(localApplication, _env, _classBase, _objCallback, AndroidContext::appl_wallpaper); } else { EWOL_CRITICAL(" try to create an instance with no apply type: " << _typeApplication); return -1; @@ -1106,7 +1114,7 @@ extern "C" { }; -int ewol::run(int _argc, const char *_argv[]) { - // Never call but needed ... - return -1; +int ewol::run(ewol::context::Application* _application, int _argc, const char *_argv[]) { + s_applicationInit = _application; + return 0; } diff --git a/sources/ewol/context/IOs/Context.cpp b/sources/ewol/context/IOs/Context.cpp index 5e4ee0eb..12fd4131 100644 --- a/sources/ewol/context/IOs/Context.cpp +++ b/sources/ewol/context/IOs/Context.cpp @@ -53,8 +53,8 @@ class MacOSInterface : public ewol::Context { private: ewol::key::Special m_guiKeyBoardMode; public: - MacOSInterface(int32_t _argc, const char* _argv[]) : - ewol::Context(_argc, _argv) { + MacOSInterface(ewol::context::Application* _application, int32_t _argc, const char* _argv[]) : + ewol::Context(_application, _argc, _argv) { // nothing to do ... } @@ -237,10 +237,10 @@ static const char **l_argv = nullptr; * @param std IO * @return std IO */ -int ewol::run(int _argc, const char *_argv[]) { +int ewol::run(ewol::context::Application* _application, int _argc, const char *_argv[]) { l_argc = _argc; l_argv = _argv; - return mm_main(_argc, _argv); + return mm_main(_application, _argc, _argv); } // Creat and relaese ewol::Context interface: diff --git a/sources/ewol/context/MacOs/Context.cpp b/sources/ewol/context/MacOs/Context.cpp index 01ec1aac..bf562b89 100644 --- a/sources/ewol/context/MacOs/Context.cpp +++ b/sources/ewol/context/MacOs/Context.cpp @@ -53,8 +53,8 @@ class MacOSInterface : public ewol::Context { private: ewol::key::Special m_guiKeyBoardMode; public: - MacOSInterface(int32_t _argc, const char* _argv[]) : - ewol::Context(_argc, _argv) { + MacOSInterface(ewol::context::Application* _application, int32_t _argc, const char* _argv[]) : + ewol::Context(_application, _argc, _argv) { mm_main(_argc, _argv); } @@ -172,9 +172,9 @@ void MacOs::setKeyboardMove(ewol::key::Special& _keyboardMode, enum ewol::key::k * @param std IO * @return std IO */ -int ewol::run(int _argc, const char *_argv[]) { +int ewol::run(ewol::context::Application* _application, int _argc, const char *_argv[]) { etk::setArgZero(_argv[0]); - interface = new MacOSInterface(_argc, _argv); + interface = new MacOSInterface(_application, _argc, _argv); if (nullptr == interface) { EWOL_CRITICAL("Can not create the X11 interface ... MEMORY allocation error"); return -2; diff --git a/sources/ewol/context/Windows/Context.cpp b/sources/ewol/context/Windows/Context.cpp index 5e2579d9..f9030f7d 100644 --- a/sources/ewol/context/Windows/Context.cpp +++ b/sources/ewol/context/Windows/Context.cpp @@ -47,8 +47,8 @@ class WindowsContext : public ewol::eContext { bool m_run = true; bool m_clipBoardOwnerStd = false; public: - WindowsContext(int32_t _argc, char* _argv[]) : - ewol::eContext(_argc, _argv) { + WindowsContext(ewol::context::Application* _application, int32_t _argc, char* _argv[]) : + ewol::eContext(_application, _argc, _argv) { for (int32_t iii=0; iii