diff --git a/Build/Makefile.Android.mk b/Build/Makefile.Android.mk index 806943c6..d39e7875 100644 --- a/Build/Makefile.Android.mk +++ b/Build/Makefile.Android.mk @@ -18,6 +18,8 @@ all: @echo $(CADRE_COTERS) @echo $(CADRE_HAUT_BAS) + @rm -rf bin + @echo $(F_ROUGE)" (sh) Clear previous sources "$(F_NORMALE) @rm -rf src jni/ewolAndroidAbstraction.cpp @echo $(F_ROUGE)" (sh) Create folder : $(JAVA_FOLDER)/ "$(F_NORMALE) @@ -50,7 +52,7 @@ install: all @echo $(CADRE_HAUT_BAS) @# $(PROJECT_SDK)/platform-tools/adb kill-server @# install application - sudo $(PROJECT_SDK)/platform-tools/adb install -r ./bin/$(PROJECT_NAME)-debug.apk + $(PROJECT_SDK)/platform-tools/adb install -r ./bin/$(PROJECT_NAME)-debug.apk clean: @echo $(CADRE_HAUT_BAS) diff --git a/Java/ewolAndroidAbstraction.cpp b/Java/ewolAndroidAbstraction.cpp index 5ef061ed..14aeb478 100644 --- a/Java/ewolAndroidAbstraction.cpp +++ b/Java/ewolAndroidAbstraction.cpp @@ -57,35 +57,49 @@ extern "C" void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnCreate( JNIEnv* env ) { - EDN_DEBUG("Activity On Create"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Create **"); + EDN_DEBUG("*******************************************"); EWOL_SystemStart(); } void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnStart( JNIEnv* env ) { - EDN_DEBUG("Activity On Start"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Start **"); + EDN_DEBUG("*******************************************"); } void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnReStart( JNIEnv* env ) { - EDN_DEBUG("Activity On Re-Start"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Re-Start **"); + EDN_DEBUG("*******************************************"); } void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnResume( JNIEnv* env ) { - EDN_DEBUG("Activity On Resume"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Resume **"); + EDN_DEBUG("*******************************************"); } void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnPause( JNIEnv* env ) { - EDN_DEBUG("Activity On Pause"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Pause **"); + EDN_DEBUG("*******************************************"); // All the openGl has been destroyed ... // TODO : Mark all the texture to be reloaded ... EWOL_NativeGLDestroy(); } void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnStop( JNIEnv* env ) { - EDN_DEBUG("Activity On Stop"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Stop **"); + EDN_DEBUG("*******************************************"); } void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnDestroy( JNIEnv* env ) { - EDN_DEBUG("Activity On Destroy"); + EDN_DEBUG("*******************************************"); + EDN_DEBUG("** Activity On Destroy **"); + EDN_DEBUG("*******************************************"); EWOL_SystemStop(); } diff --git a/Sources/libewol/ewol/FontFreeType.cpp b/Sources/libewol/ewol/FontFreeType.cpp index cb6ee97a..21e0ec2b 100644 --- a/Sources/libewol/ewol/FontFreeType.cpp +++ b/Sources/libewol/ewol/FontFreeType.cpp @@ -80,13 +80,6 @@ static int32_t simpleSQRT(int32_t value) return val; } -void ewol::InitFont(void) -{ - int32_t error = FT_Init_FreeType( &library ); - if(0 != error) { - EWOL_CRITICAL(" when loading FreeType Librairy ..."); - } -} // keep only one instance of every font in freetype class FTFontInternal @@ -481,10 +474,41 @@ void ewol::SetFontFolder(etk::String folderName) EWOL_INFO("New default font folder name=\"" << s_currentFolderName << "\""); } +void ewol::InitFont(void) +{ + EWOL_DEBUG("==> Init Font-Manager"); + int32_t error = FT_Init_FreeType( &library ); + if(0 != error) { + EWOL_CRITICAL(" when loading FreeType Librairy ..."); + } + // prevent android error ==> can create memory leak but I prefer + s_currentFolderName = ""; + s_currentDefaultFontName = ""; + m_listLoadedTTFont.Clear(); + s_currentDefaultFontId = -1; +} void ewol::UnInitFont(void) { - EWOL_TODO("later"); + EWOL_DEBUG("==> Un-Init Font-Manager"); + /*int32_t error = FT_Done_FreeType( library ); + library = NULL; + if(0 != error) { + EWOL_CRITICAL(" when Un-loading FreeType Librairy ..."); + } + */ + /* + s_currentFolderName = ""; + s_currentDefaultFontName = ""; + s_currentDefaultFontId = -1; + for(int32_t iii=0; iii Init Texture-Manager"); // create interface mutex : int ret = pthread_mutex_init(&localMutex, NULL); EWOL_ASSERT(ret == 0, "Error creating Mutex ..."); @@ -350,6 +351,14 @@ void ewol::texture::Init(void) void ewol::texture::UnInit(void) { + EWOL_DEBUG("==> Un-Init Texture-Manager"); + for (int32_t iii=0; iiim_data) { listLoadedTexture[iii]->m_loaded = false; + EWOL_INFO("TEXTURE: Disable [" << iii << "]=(" << listLoadedTexture[iii]->m_width << "px," << + listLoadedTexture[iii]->m_height << "px) in file:" << + listLoadedTexture[iii]->m_filename << " OGl_Id=" <m_openGlTextureID); + //glDeleteTextures(1, &listLoadedTexture[iii]->m_openGlTextureID); } } pthread_mutex_unlock(&localMutex); @@ -394,8 +407,8 @@ void ewol::UpdateTextureContext(void) glTexParameteri(listLoadedTexture[iii]->m_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(listLoadedTexture[iii]->m_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); EWOL_INFO("TEXTURE: Add [" << iii << "]=(" << listLoadedTexture[iii]->m_width << "px," << - listLoadedTexture[iii]->m_height << "px) in file:" << - listLoadedTexture[iii]->m_filename << " OGl_Id=" <m_height << "px) in file:" << + listLoadedTexture[iii]->m_filename << " OGl_Id=" <m_target, listLoadedTexture[iii]->m_level, listLoadedTexture[iii]->m_internalFormat, diff --git a/Sources/libewol/ewol/WidgetManager.cpp b/Sources/libewol/ewol/WidgetManager.cpp index e482eb02..901bc2b2 100644 --- a/Sources/libewol/ewol/WidgetManager.cpp +++ b/Sources/libewol/ewol/WidgetManager.cpp @@ -45,15 +45,19 @@ static ewol::Widget * m_focusWidgetCurrent = NULL; void ewol::widgetManager::Init(void) { - EWOL_DEBUG("Init Widget manager"); + EWOL_DEBUG("==> Init Widget-Manager"); // create interface mutex : int ret = pthread_mutex_init(&localMutex, NULL); EWOL_ASSERT(ret == 0, "Error creating Mutex ..."); + // prevent android error ==> can create memory leak but I prefer + m_widgetList.Clear(); + m_focusWidgetDefault = NULL; + m_focusWidgetCurrent = NULL; } void ewol::widgetManager::UnInit(void) { - EWOL_DEBUG("Un-Init Widget manager"); + EWOL_DEBUG("==> Un-Init Widget-Manager"); EWOL_INFO("Realease all FOCUS"); ewol::widgetManager::FocusSetDefault(NULL); ewol::widgetManager::FocusRelease(); diff --git a/Sources/libewol/ewol/base/MainThread.cpp b/Sources/libewol/ewol/base/MainThread.cpp index eac1a494..a3453480 100644 --- a/Sources/libewol/ewol/base/MainThread.cpp +++ b/Sources/libewol/ewol/base/MainThread.cpp @@ -93,7 +93,7 @@ void EWOL_NativeResize(int w, int h ); static void* BaseAppEntry(void* param) { bool requestEndProcessing = false; - EWOL_DEBUG("BThread Init (START)"); + EWOL_DEBUG("==> Init BThread (START)"); EWOL_INFO("v" EWOL_VERSION_TAG_NAME); EWOL_INFO("Build Date: " VERSION_BUILD_TIME); @@ -103,7 +103,7 @@ static void* BaseAppEntry(void* param) ewol::InitFont(); APP_Init(); int32_t countNbEvent = 0; - EWOL_DEBUG("BThread Init (END)"); + EWOL_DEBUG("==> Init BThread (END)"); while(false == requestEndProcessing) { ewol::threadMsg::threadMsgContent_ts data; ewol::threadMsg::WaitMessage(androidJniMsg, data); @@ -178,7 +178,7 @@ static void* BaseAppEntry(void* param) } } } - EWOL_DEBUG("BThread Un-Init (START)"); + EWOL_DEBUG("==> Un-Init BThread (START)"); // unset all windows ewol::DisplayWindows(NULL); @@ -189,7 +189,7 @@ static void* BaseAppEntry(void* param) ewol::UnInitFont(); ewol::widgetManager::UnInit(); ewol::theme::UnInit(); - EWOL_DEBUG("BThread Un-Init (END)"); + EWOL_DEBUG("==> Un-Init BThread (END)"); pthread_exit(NULL); } diff --git a/Sources/libewol/ewol/themeManager.cpp b/Sources/libewol/ewol/themeManager.cpp index d2a4c723..ae2bb23d 100644 --- a/Sources/libewol/ewol/themeManager.cpp +++ b/Sources/libewol/ewol/themeManager.cpp @@ -29,37 +29,51 @@ #undef __class__ #define __class__ "ewol::theme" -static ewol::theme::Theme localTheme; +static ewol::theme::Theme * localTheme = NULL; void ewol::theme::Init(void) { - EWOL_INFO("Init theme system"); + EWOL_DEBUG("==> Init Theme-Manager"); + localTheme = new ewol::theme::Theme(); } void ewol::theme::UnInit(void) { - EWOL_INFO("Un-Init theme system"); + EWOL_DEBUG("==> Un-Init Theme-Manager"); + if (NULL != localTheme) { + delete(localTheme); + localTheme = NULL; + } } void ewol::theme::LoadDefault(etk::File filename) { EWOL_INFO("Load default Theme : " << filename); - localTheme.Load(filename, true); + if (NULL == localTheme) { + return; + } + localTheme->Load(filename, true); } void ewol::theme::Load(etk::File filename) { EWOL_INFO("Add personal theme : " << filename); - localTheme.Load(filename, false); + if (NULL == localTheme) { + return; + } + localTheme->Load(filename, false); } int32_t ewol::theme::GetObjectId(etk::String name) { - return localTheme.GetObjectId(name); + if (NULL == localTheme) { + return 0; + } + return localTheme->GetObjectId(name); } // ???? GetObjectType(int32_t id); @@ -67,27 +81,36 @@ int32_t ewol::theme::GetObjectId(etk::String name) void ewol::theme::Generate(int32_t id, int32_t frameId, ewol::OObject2DColored & newObject, etkFloat_t posX, etkFloat_t posY, etkFloat_t sizeX, etkFloat_t sizeY) { + if (NULL == localTheme) { + return; + } if (id<0) { return; } - localTheme.Generate(id, frameId, newObject, posX, posY, sizeX, sizeY); + localTheme->Generate(id, frameId, newObject, posX, posY, sizeX, sizeY); } int32_t ewol::theme::GetNbFrame(int32_t id) { + if (NULL == localTheme) { + return 0; + } if (id<0) { return 0; } - return localTheme.GetNbFrame(id); + return localTheme->GetNbFrame(id); } int32_t ewol::theme::GetFrameId(int32_t id, etk::String & frameName) { + if (NULL == localTheme) { + return 0; + } if (id<0) { return 0; } - return localTheme.GetFrameId(id, frameName); + return localTheme->GetFrameId(id, frameName); } diff --git a/Sources/libewol/ewol/widget/List.cpp b/Sources/libewol/ewol/widget/List.cpp index e857640f..48a2abab 100644 --- a/Sources/libewol/ewol/widget/List.cpp +++ b/Sources/libewol/ewol/widget/List.cpp @@ -34,7 +34,12 @@ void ewol::List::Init(void) { - m_paddingSize = 2; + m_paddingSizeX = 2; + #ifdef __PLATFORM__Android + m_paddingSizeY = 10; + #else + m_paddingSizeY = 2; + #endif SetCanHaveFocus(true); } @@ -78,8 +83,8 @@ void ewol::List::OnRegenerateDisplay(void) if (true==m_userFillY) { tmpOriginY = 0; }*/ - tmpOriginX += m_paddingSize; - tmpOriginY += m_paddingSize; + tmpOriginX += m_paddingSizeX; + tmpOriginY += m_paddingSizeY; int32_t fontId = GetDefaultFontId(); //int32_t minWidth = ewol::GetWidth(fontId, m_label.c_str()); @@ -95,7 +100,7 @@ void ewol::List::OnRegenerateDisplay(void) BGOObjects->SetColor(basicBG); BGOObjects->Rectangle(0, 0, m_size.x, m_size.y); - uint32_t displayableRaw = m_size.y / (minHeight + 2*m_paddingSize); + uint32_t displayableRaw = m_size.y / (minHeight + 2*m_paddingSizeY); // We display only compleate lines ... for(uint32_t iii=0; iiiSetColor(bg); - BGOObjects->Rectangle(0, tmpOriginYBG, m_size.x, minHeight+2*m_paddingSize); - tmpOriginYBG += minHeight+2*m_paddingSize; + BGOObjects->Rectangle(0, tmpOriginYBG, m_size.x, minHeight+2*m_paddingSizeY); + tmpOriginYBG += minHeight+2*m_paddingSizeY; ewol::OObject2DText * tmpText = new ewol::OObject2DText("", -1, fg); - tmpText->Text(tmpOriginX, tmpOriginY, myTextToWrite.c_str(), m_size.x - (2*m_paddingSize)); + tmpText->Text(tmpOriginX, tmpOriginY, myTextToWrite.c_str(), m_size.x - (2*m_paddingSizeX)); AddOObject(tmpText); - tmpOriginY += minHeight + 2* m_paddingSize; + tmpOriginY += minHeight + 2* m_paddingSizeY; } AddOObject(BGOObjects, "ListDeco", 0); //ewol::OObject2DText * tmpText = new ewol::OObject2DText("", -1, m_textColorFg); @@ -127,7 +132,7 @@ bool ewol::List::OnEventInput(int32_t IdInput, eventInputType_te typeEvent, etkF //int32_t minWidth = ewol::GetWidth(fontId, m_label.c_str()); int32_t minHeight = ewol::GetHeight(fontId); - int32_t rawID = (y - m_origin.y) / (minHeight + 2*m_paddingSize); + int32_t rawID = (y - m_origin.y) / (minHeight + 2*m_paddingSizeY); //EWOL_DEBUG("OnEventInput(" << IdInput << "," << typeEvent << "," << 0 << "," << rawID << "," << x <<"," << y << ");"); return OnItemEvent(IdInput, typeEvent, 0, rawID, x, y); } \ No newline at end of file diff --git a/Sources/libewol/ewol/widget/List.h b/Sources/libewol/ewol/widget/List.h index 4d103bb6..e7d58797 100644 --- a/Sources/libewol/ewol/widget/List.h +++ b/Sources/libewol/ewol/widget/List.h @@ -39,7 +39,8 @@ namespace ewol { virtual bool CalculateMinSize(void); void SetLabel(etk::String newLabel); private: - int32_t m_paddingSize; + int32_t m_paddingSizeX; + int32_t m_paddingSizeY; int32_t m_displayStartRaw; //!< Current starting diaplayed raw int32_t m_displayCurrentNbLine; //!< Number of line in the display public: diff --git a/Sources/libewol/ewol/widgetMeta/FileChooser.cpp b/Sources/libewol/ewol/widgetMeta/FileChooser.cpp index 2533c620..f3a4ff1c 100644 --- a/Sources/libewol/ewol/widgetMeta/FileChooser.cpp +++ b/Sources/libewol/ewol/widgetMeta/FileChooser.cpp @@ -337,10 +337,13 @@ ewol::FileChooser::FileChooser(void) FileChooserFileList * myListFile = NULL; FileChooserFolderList * myListFolder = NULL; ewol::Label * myLabel = NULL; - - m_folder = "/"; - - SetDisplayRatio(0.80); + #ifdef __PLATFORM__Android + m_folder = "/mnt/sdcard/"; + SetDisplayRatio(0.90); + #else + m_folder = "/home/"; + SetDisplayRatio(0.80); + #endif mySizerVert = new ewol::SizerVert(); mySizerVert->LockExpendContamination(true);