[DEV] correction of resource error when remove
This commit is contained in:
parent
8a48e529d4
commit
c50abe2032
@ -12,10 +12,16 @@ uniform int EW_SoftEdge;
|
||||
varying vec2 f_texcoord;
|
||||
varying vec4 f_color;
|
||||
|
||||
|
||||
void main(void) {
|
||||
vec4 color = texture2D(EW_texID, f_texcoord );
|
||||
float dist = color.r;
|
||||
#ifndef GL_ES
|
||||
float width = fwidth(dist);
|
||||
#else
|
||||
// float width = abs(dFdx(dist)) + abs(dFdy(dist))
|
||||
float width = dist;
|
||||
#endif
|
||||
float alpha = smoothstep(0.5-width, 0.5+width, dist);
|
||||
|
||||
// Smooth
|
||||
|
2
external/egami
vendored
2
external/egami
vendored
@ -1 +1 @@
|
||||
Subproject commit 2fe76f92055c61a11e84bafbecc4aa0488e0b16e
|
||||
Subproject commit 9ed82e01ab2bf9147adcb0a238db764cea162214
|
2
external/ege
vendored
2
external/ege
vendored
@ -1 +1 @@
|
||||
Subproject commit e23442beb1bec4fef48b9d7bb3aff8119a2909fd
|
||||
Subproject commit 2b31c01fabad98b6cdfc842e9ff646f37534b9f0
|
@ -265,7 +265,7 @@ void ewol::compositing::Image::setSource(const std::string& _newFile, const vec2
|
||||
EWOL_ERROR("Can not get Image resource");
|
||||
}
|
||||
} else {
|
||||
m_resourceDF = ewol::resource::ImageDF::keep(_newFile, tmpSize);
|
||||
m_resourceDF = ewol::resource::ImageDF::keep(m_filename, tmpSize);
|
||||
if (NULL == m_resourceDF) {
|
||||
EWOL_ERROR("Can not get Image resource DF");
|
||||
}
|
||||
@ -300,7 +300,9 @@ vec2 ewol::compositing::Image::getRealSize(void) {
|
||||
if (m_resource != NULL) {
|
||||
return m_resource->getRealSize();
|
||||
}
|
||||
if (m_resourceDF != NULL) {
|
||||
return m_resourceDF->getRealSize();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -440,6 +440,12 @@ void ewol::context::InputManager::state(enum ewol::key::type _type,
|
||||
<< " == >" << eventTable[_pointerID].destinationInputId
|
||||
<< " [UP] " << _pos);
|
||||
eventTable[_pointerID].posEvent = _pos;
|
||||
// send up event after the single event to prevent multiple widget getting elements
|
||||
localEventInput(_type,
|
||||
eventTable[_pointerID].curentWidgetEvent,
|
||||
_pointerID,
|
||||
ewol::key::statusUp,
|
||||
_pos);
|
||||
// generate event (single)
|
||||
if( abs(eventTable[_pointerID].downStart.x() - _pos.x()) < localLimit.DpiOffset
|
||||
&& abs(eventTable[_pointerID].downStart.y() - _pos.y()) < localLimit.DpiOffset ){
|
||||
@ -480,7 +486,7 @@ void ewol::context::InputManager::state(enum ewol::key::type _type,
|
||||
localEventInput(_type,
|
||||
eventTable[_pointerID].curentWidgetEvent,
|
||||
_pointerID,
|
||||
ewol::key::statusUp,
|
||||
ewol::key::statusUpAfter,
|
||||
_pos);
|
||||
// specific for tuch event
|
||||
if (_type == ewol::key::typeFinger) {
|
||||
|
@ -18,6 +18,7 @@ static const char* statusDescriptionString[ewol::key::statusCount+1] = {
|
||||
"statusQuad",
|
||||
"statusQuinte",
|
||||
"statusUp",
|
||||
"statusUpAfter",
|
||||
"statusEnter",
|
||||
"statusLeave",
|
||||
"statusAbort",
|
||||
|
@ -27,6 +27,7 @@ namespace ewol {
|
||||
statusQuad,
|
||||
statusQuinte,
|
||||
statusUp, // availlable on Keyboard too
|
||||
statusUpAfter, // mouse input & finger input this appear after the single event (depending on some case...)
|
||||
statusEnter,
|
||||
statusLeave,
|
||||
statusAbort, // Appeare when an event is tranfert betwwen widgets (the widget which receive this has lost the events)
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <ewol/object/Manager.h>
|
||||
#include <ewol/context/Context.h>
|
||||
#include <ewol/ewol.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "ewol::object::Manager"
|
||||
@ -95,20 +96,33 @@ 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());
|
||||
size_t mbElement = m_eObjectList.size();
|
||||
for (int64_t iii=0; iii<(int64_t)m_eObjectList.size(); ++iii) {
|
||||
if ( m_eObjectList[iii] != NULL
|
||||
&& m_eObjectList[iii] != _object) {
|
||||
//EWOL_DEBUG("inform " << iii+1 << "/" << m_eObjectList.size());
|
||||
//EWOL_DEBUG(" id=" << m_eObjectList[iii]->getId() << " named '" << m_eObjectList[iii]->getName() << "' type=" << m_eObjectList[iii]->getObjectType());
|
||||
m_eObjectList[iii]->onObjectRemove(_object);
|
||||
if (mbElement != m_eObjectList.size()) {
|
||||
iii = -1;
|
||||
mbElement = m_eObjectList.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
//EWOL_DEBUG("inform active done");
|
||||
mbElement = m_eObjectAutoRemoveList.size();
|
||||
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());
|
||||
//EWOL_DEBUG("inform2 " << iii+1 << "/" << m_eObjectAutoRemoveList.size());
|
||||
m_eObjectAutoRemoveList[iii]->onObjectRemove(_object);
|
||||
if (mbElement != m_eObjectAutoRemoveList.size()) {
|
||||
iii = -1;
|
||||
mbElement = m_eObjectAutoRemoveList.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
//EWOL_DEBUG("inform in-active done");
|
||||
// call input event manager to remove linked widget ...
|
||||
ewol::getContext().onObjectRemove(_object);
|
||||
}
|
||||
@ -148,8 +162,10 @@ void ewol::object::Manager::autoRemove(ewol::Object* _object) {
|
||||
// remove Element
|
||||
m_eObjectList[iii] = NULL;
|
||||
m_eObjectList.erase(m_eObjectList.begin()+iii);
|
||||
EWOL_DEBUG("Auto-Remove Object : [" << _object->getId() << "] type=\"" << _object->getObjectType() << "\"");
|
||||
EWOL_DEBUG("Auto-Remove Object : [" << _object->getId() << "] type='" << _object->getObjectType() << "'");
|
||||
if (_object->getStatusResource() == false) {
|
||||
informOneObjectIsRemoved(_object);
|
||||
}
|
||||
m_eObjectAutoRemoveList.push_back(_object);
|
||||
ewol::getContext().forceRedrawAll();
|
||||
EWOL_DEBUG("Auto-Remove Object ... done");
|
||||
@ -164,7 +180,7 @@ 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) {
|
||||
EWOL_DEBUG("Real Auto-Remove Object type=\"" << m_eObjectAutoRemoveList[0]->getObjectType() << "\"");
|
||||
EWOL_DEBUG("Real Auto-Remove Object [" << m_eObjectAutoRemoveList[0]->getId() << "]type='" << m_eObjectAutoRemoveList[0]->getObjectType() << "'");
|
||||
delete(m_eObjectAutoRemoveList[0]);
|
||||
m_eObjectAutoRemoveList[0] = NULL;
|
||||
} else {
|
||||
|
@ -447,7 +447,6 @@ namespace ewol {
|
||||
virtual void setMouseLimit(int32_t _numberState) {
|
||||
m_limitMouseEvent = _numberState;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------------------------------------------
|
||||
// -- keyboard event properties Area
|
||||
// ----------------------------------------------------------------------------------------------------------------
|
||||
|
@ -274,7 +274,7 @@ bool ewol::widget::WidgetScrooled::onEventInput(const ewol::event::Input& _event
|
||||
int32_t idTable = _event.getId()-1;
|
||||
if (_event.getStatus() == ewol::key::statusDown) {
|
||||
m_fingerPresent[idTable] = true;
|
||||
} else if (_event.getStatus() == ewol::key::statusUp) {
|
||||
} else if (_event.getStatus() == ewol::key::statusUpAfter) {
|
||||
m_fingerPresent[idTable] = false;
|
||||
}
|
||||
if (m_fingerScoolActivated == false) {
|
||||
@ -300,7 +300,7 @@ bool ewol::widget::WidgetScrooled::onEventInput(const ewol::event::Input& _event
|
||||
}
|
||||
if ( m_fingerPresent[0] == false
|
||||
&& m_fingerPresent[1] == false) {
|
||||
if (_event.getStatus() == ewol::key::statusUp) {
|
||||
if (_event.getStatus() == ewol::key::statusUpAfter) {
|
||||
// TODO : Reset event ...
|
||||
m_fingerScoolActivated = false;
|
||||
_event.reset();
|
||||
@ -317,7 +317,7 @@ bool ewol::widget::WidgetScrooled::onEventInput(const ewol::event::Input& _event
|
||||
m_highSpeedStartPos.setValue(relativePos.x(), relativePos.y());
|
||||
EWOL_DEBUG("SCROOL == > INIT");
|
||||
return true;
|
||||
} else if (_event.getStatus() == ewol::key::statusUp) {
|
||||
} else if (_event.getStatus() == ewol::key::statusUpAfter) {
|
||||
m_highSpeedMode = ewol::widget::Scroll::speedModeDisable;
|
||||
m_highSpeedType = ewol::key::typeUnknow;
|
||||
EWOL_DEBUG("SCROOL == > DISABLE");
|
||||
|
Loading…
x
Reference in New Issue
Block a user