Segment reset
This commit is contained in:
parent
084070475d
commit
9832fbe042
@ -487,6 +487,9 @@ typedef struct Segment {
|
|||||||
_t(nullptr)
|
_t(nullptr)
|
||||||
{
|
{
|
||||||
//refreshLightCapabilities();
|
//refreshLightCapabilities();
|
||||||
|
#ifdef WLED_DEBUG
|
||||||
|
//Serial.printf("-- Creating segment: %p\n", this);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Segment(uint16_t sStartX, uint16_t sStopX, uint16_t sStartY, uint16_t sStopY) : Segment(sStartX, sStopX) {
|
Segment(uint16_t sStartX, uint16_t sStopX, uint16_t sStartY, uint16_t sStopY) : Segment(sStartX, sStopX) {
|
||||||
@ -499,7 +502,7 @@ typedef struct Segment {
|
|||||||
|
|
||||||
~Segment() {
|
~Segment() {
|
||||||
#ifdef WLED_DEBUG
|
#ifdef WLED_DEBUG
|
||||||
Serial.printf("-- Destroying segment: %p\n", this);
|
//Serial.printf("-- Destroying segment: %p\n", this);
|
||||||
//if (name) Serial.printf(" %s (%p)", name, name);
|
//if (name) Serial.printf(" %s (%p)", name, name);
|
||||||
//if (data) Serial.printf(" %d (%p)", (int)_dataLen, data);
|
//if (data) Serial.printf(" %d (%p)", (int)_dataLen, data);
|
||||||
//Serial.println();
|
//Serial.println();
|
||||||
|
@ -175,7 +175,7 @@ bool Segment::allocateData(size_t len) {
|
|||||||
|
|
||||||
void Segment::deallocateData() {
|
void Segment::deallocateData() {
|
||||||
if (!data) return;
|
if (!data) return;
|
||||||
DEBUG_PRINTF("--- Released data (%d/%d): %p -> %p\n", _dataLen, Segment::getUsedSegmentData(), this, data);
|
DEBUG_PRINTF("--- Released data (%p): %d/%d -> %p\n", this, _dataLen, Segment::getUsedSegmentData(), data);
|
||||||
free(data);
|
free(data);
|
||||||
data = nullptr;
|
data = nullptr;
|
||||||
// WARNING it looks like we have a memory leak somewhere
|
// WARNING it looks like we have a memory leak somewhere
|
||||||
@ -193,7 +193,6 @@ void Segment::deallocateData() {
|
|||||||
void Segment::resetIfRequired() {
|
void Segment::resetIfRequired() {
|
||||||
if (!reset) return;
|
if (!reset) return;
|
||||||
//DEBUG_PRINTF("-- Segment reset: %p\n", this);
|
//DEBUG_PRINTF("-- Segment reset: %p\n", this);
|
||||||
startTransition(0); // stop pending transition
|
|
||||||
deallocateData();
|
deallocateData();
|
||||||
next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0;
|
next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0;
|
||||||
reset = false;
|
reset = false;
|
||||||
@ -307,7 +306,7 @@ void Segment::startTransition(uint16_t dur) {
|
|||||||
if (_dataLen > 0 && data) {
|
if (_dataLen > 0 && data) {
|
||||||
_t->_tmpSeg._dataT = (byte *)malloc(_dataLen);
|
_t->_tmpSeg._dataT = (byte *)malloc(_dataLen);
|
||||||
if (_t->_tmpSeg._dataT) {
|
if (_t->_tmpSeg._dataT) {
|
||||||
//DEBUG_PRINTF("-- Allocated duplicate data (%d): %p\n", _dataLen, _t->_tmpSeg._dataT);
|
DEBUG_PRINTF("-- Allocated duplicate data (%d): %p\n", _dataLen, _t->_tmpSeg._dataT);
|
||||||
memcpy(_t->_tmpSeg._dataT, data, _dataLen);
|
memcpy(_t->_tmpSeg._dataT, data, _dataLen);
|
||||||
_t->_tmpSeg._dataLenT = _dataLen;
|
_t->_tmpSeg._dataLenT = _dataLen;
|
||||||
}
|
}
|
||||||
@ -321,7 +320,7 @@ void Segment::stopTransition() {
|
|||||||
//DEBUG_PRINTF("-- Stopping transition: %p\n", this);
|
//DEBUG_PRINTF("-- Stopping transition: %p\n", this);
|
||||||
if (_t) {
|
if (_t) {
|
||||||
if (_t->_tmpSeg._dataT && _t->_tmpSeg._dataLenT > 0) {
|
if (_t->_tmpSeg._dataT && _t->_tmpSeg._dataLenT > 0) {
|
||||||
//DEBUG_PRINTF("-- Released duplicate data (%d): %p\n", _t->_tmpSeg._dataLenT, _t->_tmpSeg._dataT);
|
DEBUG_PRINTF("-- Released duplicate data (%d): %p\n", _t->_tmpSeg._dataLenT, _t->_tmpSeg._dataT);
|
||||||
free(_t->_tmpSeg._dataT);
|
free(_t->_tmpSeg._dataT);
|
||||||
_t->_tmpSeg._dataT = nullptr;
|
_t->_tmpSeg._dataT = nullptr;
|
||||||
}
|
}
|
||||||
@ -380,6 +379,7 @@ void Segment::restoreSegenv(tmpsegd_t *tmpSeg) {
|
|||||||
_t->_tmpSeg._stepT = step;
|
_t->_tmpSeg._stepT = step;
|
||||||
_t->_tmpSeg._callT = call;
|
_t->_tmpSeg._callT = call;
|
||||||
if (_t->_tmpSeg._dataT != data) DEBUG_PRINTF("--- data re-allocated: (%p) %p -> %p\n", this, _t->_tmpSeg._dataT, data);
|
if (_t->_tmpSeg._dataT != data) DEBUG_PRINTF("--- data re-allocated: (%p) %p -> %p\n", this, _t->_tmpSeg._dataT, data);
|
||||||
|
//if (_t->_tmpSeg._dataT && _t->_tmpSeg._dataLenT > 0) free(_t->_tmpSeg._dataT); // not good
|
||||||
_t->_tmpSeg._dataT = data; // sometimes memory gets re-allocated (!! INVESTIGATE WHY !!)
|
_t->_tmpSeg._dataT = data; // sometimes memory gets re-allocated (!! INVESTIGATE WHY !!)
|
||||||
_t->_tmpSeg._dataLenT = _dataLen; // sometimes memory gets re-allocated (!! INVESTIGATE WHY !!)
|
_t->_tmpSeg._dataLenT = _dataLen; // sometimes memory gets re-allocated (!! INVESTIGATE WHY !!)
|
||||||
}
|
}
|
||||||
@ -557,6 +557,7 @@ void Segment::setMode(uint8_t fx, bool loadDefaults) {
|
|||||||
sOpt = extractModeDefaults(fx, "mY"); if (sOpt >= 0) mirror_y = (bool)sOpt; // NOTE: setting this option is a risky business
|
sOpt = extractModeDefaults(fx, "mY"); if (sOpt >= 0) mirror_y = (bool)sOpt; // NOTE: setting this option is a risky business
|
||||||
sOpt = extractModeDefaults(fx, "pal"); if (sOpt >= 0) setPalette(sOpt); //else setPalette(0);
|
sOpt = extractModeDefaults(fx, "pal"); if (sOpt >= 0) setPalette(sOpt); //else setPalette(0);
|
||||||
}
|
}
|
||||||
|
markForReset();
|
||||||
stateChanged = true; // send UDP/WS broadcast
|
stateChanged = true; // send UDP/WS broadcast
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// version code in format yymmddb (b = daily build)
|
// version code in format yymmddb (b = daily build)
|
||||||
#define VERSION 2308050
|
#define VERSION 2308080
|
||||||
|
|
||||||
//uncomment this if you have a "my_config.h" file you'd like to use
|
//uncomment this if you have a "my_config.h" file you'd like to use
|
||||||
//#define WLED_USE_MY_CONFIG
|
//#define WLED_USE_MY_CONFIG
|
||||||
|
Loading…
Reference in New Issue
Block a user