[DEBUG] track an android access memory error
This commit is contained in:
parent
504dc26fa6
commit
28bf683bbf
2
build
2
build
@ -1 +1 @@
|
||||
Subproject commit f52e3e6f5e20c2dc24fe4838af8b843270feeb13
|
||||
Subproject commit 397f9eb1241bc87c5c4df4412e76b92fd87c93e4
|
2
external/etk
vendored
2
external/etk
vendored
@ -1 +1 @@
|
||||
Subproject commit 923319e6f7d62bcd5be6d7b7ef391bb0a3ce2645
|
||||
Subproject commit 91198bd19564c6aa44f81c27d8fc380b65eedd92
|
@ -228,8 +228,8 @@ void ewol::compositing::Image::printPart(const vec2& _size,
|
||||
|
||||
void ewol::compositing::Image::setSource(const std::string& _newFile, const vec2& _size) {
|
||||
clear();
|
||||
// remove old one
|
||||
ewol::resource::TextureFile::release(m_resource);
|
||||
ewol::resource::TextureFile* resource = m_resource;
|
||||
m_resource = NULL;
|
||||
ivec2 tmpSize(_size.x(),_size.y());
|
||||
// note that no image can be loaded...
|
||||
if (_newFile != "") {
|
||||
@ -239,10 +239,20 @@ void ewol::compositing::Image::setSource(const std::string& _newFile, const vec2
|
||||
EWOL_ERROR("Can not get Image resource");
|
||||
}
|
||||
}
|
||||
if (m_resource == NULL) {
|
||||
if (resource != NULL) {
|
||||
EWOL_WARNING("Retrive previous resource");
|
||||
m_resource = resource;
|
||||
}
|
||||
} else {
|
||||
if (resource != NULL) {
|
||||
ewol::resource::TextureFile::release(resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ewol::compositing::Image::hasSources(void) {
|
||||
return m_resource!=NULL;
|
||||
return m_resource != NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,12 +97,15 @@ int32_t ewol::object::Manager::getNumberObject(void) {
|
||||
void ewol::object::Manager::informOneObjectIsRemoved(ewol::Object* _object) {
|
||||
for (size_t iii=0; iii<m_eObjectList.size(); iii++) {
|
||||
if (m_eObjectList[iii] != NULL) {
|
||||
EWOL_DEBUG("inform " << iii << "/" << m_eObjectList.size());
|
||||
EWOL_DEBUG(" named '" << m_eObjectList[iii]->getName() << "' type=" << m_eObjectList[iii]->getObjectType());
|
||||
m_eObjectList[iii]->onObjectRemove(_object);
|
||||
}
|
||||
}
|
||||
for (size_t iii=0; iii<m_eObjectAutoRemoveList.size(); iii++) {
|
||||
if( m_eObjectAutoRemoveList[iii] != NULL
|
||||
&& m_eObjectAutoRemoveList[iii] != _object) {
|
||||
EWOL_DEBUG("inform2 " << iii << "/" << m_eObjectList.size());
|
||||
m_eObjectAutoRemoveList[iii]->onObjectRemove(_object);
|
||||
}
|
||||
}
|
||||
@ -149,6 +152,7 @@ void ewol::object::Manager::autoRemove(ewol::Object* _object) {
|
||||
informOneObjectIsRemoved(_object);
|
||||
m_eObjectAutoRemoveList.push_back(_object);
|
||||
ewol::getContext().forceRedrawAll();
|
||||
EWOL_DEBUG("Auto-Remove Object ... done");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -159,7 +163,7 @@ void ewol::object::Manager::autoRemove(ewol::Object* _object) {
|
||||
void ewol::object::Manager::removeAllAutoRemove(void) {
|
||||
//EWOL_DEBUG("Auto-Remove Object section : " << m_eObjectAutoRemoveList.size() << " elemeents");
|
||||
while(0<m_eObjectAutoRemoveList.size()) {
|
||||
if (m_eObjectAutoRemoveList[0]!=NULL) {
|
||||
if (m_eObjectAutoRemoveList[0] != NULL) {
|
||||
EWOL_DEBUG("Real Auto-Remove Object type=\"" << m_eObjectAutoRemoveList[0]->getObjectType() << "\"");
|
||||
delete(m_eObjectAutoRemoveList[0]);
|
||||
m_eObjectAutoRemoveList[0] = NULL;
|
||||
|
@ -19,13 +19,15 @@
|
||||
|
||||
ewol::resource::TextureFile::TextureFile(const std::string& _genName) :
|
||||
Texture(_genName) {
|
||||
EWOL_DEBUG("create a new resource::Image : _genName=" << _genName << " _tmpfileName=--- size=---");
|
||||
|
||||
}
|
||||
|
||||
|
||||
ewol::resource::TextureFile::TextureFile(std::string _genName, const std::string& _tmpfileName, const ivec2& _size) :
|
||||
ewol::resource::Texture(_genName) {
|
||||
addObjectType("ewol::compositing::TextureFile");
|
||||
addObjectType("ewol::resource::Image");
|
||||
EWOL_DEBUG("create a new resource::Image : _genName=" << _genName << " _tmpfileName=" << _tmpfileName << " size=" << _size);
|
||||
if (false == egami::load(m_data, _tmpfileName, _size)) {
|
||||
EWOL_ERROR("ERROR when loading the image : " << _tmpfileName);
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ namespace ewol {
|
||||
private:
|
||||
TextureFile(const std::string& _genName);
|
||||
TextureFile(std::string _genName, const std::string& _fileName, const ivec2& _size);
|
||||
~TextureFile(void) { };
|
||||
virtual ~TextureFile(void) { };
|
||||
public:
|
||||
const vec2& getRealSize(void) {
|
||||
return m_realImageSize;
|
||||
|
@ -195,15 +195,17 @@ bool ewol::resource::Manager::release(ewol::Resource*& _object) {
|
||||
if(m_resourceList[iii] != _object) {
|
||||
continue;
|
||||
}
|
||||
// insidiously remove the pointer for the caller ...
|
||||
_object = NULL;
|
||||
if (true == m_resourceList[iii]->decrement()) {
|
||||
// delete element
|
||||
delete(m_resourceList[iii]);
|
||||
if (m_resourceList[iii]->decrement() == true) {
|
||||
// remove element from the list :
|
||||
m_resourceList[iii] = NULL;
|
||||
// delete element
|
||||
_object->removeObject();
|
||||
// insidiously remove the pointer for the caller ...
|
||||
_object = NULL;
|
||||
return true; // object really removed
|
||||
}
|
||||
// insidiously remove the pointer for the caller ...
|
||||
_object = NULL;
|
||||
return false; // just decrement ...
|
||||
}
|
||||
EWOL_ERROR("Can not find the resources in the list : " << (int64_t)_object);
|
||||
@ -211,3 +213,19 @@ bool ewol::resource::Manager::release(ewol::Resource*& _object) {
|
||||
_object = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
// in case of error ...
|
||||
void ewol::resource::Manager::onObjectRemove(ewol::Object * _removeObject) {
|
||||
for (size_t iii=0; iii<m_resourceList.size(); ++iii) {
|
||||
if (m_resourceList[iii] == _removeObject) {
|
||||
EWOL_WARNING("Remove Resource that is not removed ... ");
|
||||
m_resourceList[iii] = NULL;
|
||||
}
|
||||
}
|
||||
for (size_t iii=0; iii<m_resourceListToUpdate.size(); ++iii) {
|
||||
if (m_resourceListToUpdate[iii] == _removeObject) {
|
||||
EWOL_WARNING("Remove Resource that is not removed .2. ");
|
||||
m_resourceListToUpdate[iii] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -67,6 +67,8 @@ namespace ewol {
|
||||
* @return true, if element is removed, and false for just decreasing counter
|
||||
*/
|
||||
bool release(ewol::Resource*& _object);
|
||||
public: // herited function
|
||||
virtual void onObjectRemove(ewol::Object * _removeObject);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -35,7 +35,7 @@ static int32_t nextP2(int32_t _value) {
|
||||
|
||||
ewol::resource::Texture::Texture(const std::string& _filename) :
|
||||
ewol::Resource(_filename) {
|
||||
addObjectType("ewol::compositing::Texture");
|
||||
addObjectType("ewol::resource::Texture");
|
||||
m_loaded = false;
|
||||
m_texId = 0;
|
||||
m_endPointSize.setValue(1.0,1.0);
|
||||
|
@ -171,7 +171,7 @@ ewol::Widget* ewol::widget::ContainerN::getWidgetNamed(const std::string& _widge
|
||||
}
|
||||
|
||||
void ewol::widget::ContainerN::onObjectRemove(ewol::Object* _removeObject) {
|
||||
// First step call parrent :
|
||||
// First step call parrent :
|
||||
ewol::Widget::onObjectRemove(_removeObject);
|
||||
// second step find if in all the elements ...
|
||||
for (int64_t iii=m_subWidget.size()-1; iii >= 0; iii--) {
|
||||
|
@ -238,7 +238,7 @@ void ewol::widget::Menu::onReceiveMessage(const ewol::object::Message& _msg) {
|
||||
ewol::widget::Windows* currentWindows = getWindows();
|
||||
if (NULL == currentWindows) {
|
||||
EWOL_ERROR("Can not get the curent Windows...");
|
||||
delete(m_widgetContextMenu);
|
||||
m_widgetContextMenu->removeObject();
|
||||
m_widgetContextMenu=NULL;
|
||||
} else {
|
||||
currentWindows->popUpWidgetPush(m_widgetContextMenu);
|
||||
|
@ -223,12 +223,12 @@ ewol::widget::FileChooser::FileChooser(void) {
|
||||
EWOL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
mySizerVert->subWidgetAdd(mySizerHori);
|
||||
myImage = new ewol::widget::Image("THEME:GUI:File.svg");
|
||||
myImage = new ewol::widget::Image("THEME:GUI:File.svg", ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
if (NULL == myImage) {
|
||||
EWOL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
myImage->setImageSize(ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
//myImage->setExpand(bvec2(false,true));
|
||||
//myImage->setImageSize(ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
myImage->setExpand(bvec2(false,false));
|
||||
mySizerHori->subWidgetAdd(myImage);
|
||||
}
|
||||
m_widgetCurrentFileName = new ewol::widget::Entry(m_file);
|
||||
@ -248,12 +248,12 @@ ewol::widget::FileChooser::FileChooser(void) {
|
||||
EWOL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
mySizerVert->subWidgetAdd(mySizerHori);
|
||||
myImage = new ewol::widget::Image("THEME:GUI:Folder.svg");
|
||||
myImage = new ewol::widget::Image("THEME:GUI:Folder.svg", ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
if (NULL == myImage) {
|
||||
EWOL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
myImage->setImageSize(ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
//myImage->setExpand(bvec2(false,true));
|
||||
//myImage->setImageSize(ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
myImage->setExpand(bvec2(false,false));
|
||||
mySizerHori->subWidgetAdd(myImage);
|
||||
}
|
||||
|
||||
@ -268,13 +268,13 @@ ewol::widget::FileChooser::FileChooser(void) {
|
||||
//m_widgetCurrentFolder->setWidth(200);
|
||||
mySizerHori->subWidgetAdd(m_widgetCurrentFolder);
|
||||
}
|
||||
myImage = new ewol::widget::Image("THEME:GUI:Home.svg");
|
||||
myImage = new ewol::widget::Image("THEME:GUI:Home.svg", ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
if (NULL == myImage) {
|
||||
EWOL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
myImage->setImageSize(ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
//myImage->setImageSize(ewol::Dimension(vec2(8,8),ewol::Dimension::Millimeter));
|
||||
myImage->registerOnEvent(this, ewol::widget::Image::eventPressed, ewolEventFileChooserHome);
|
||||
//myImage->setExpand(bvec2(false,true));
|
||||
myImage->setExpand(bvec2(false,false));
|
||||
mySizerHori->subWidgetAdd(myImage);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user