Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FastLED/FastLED.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Guyer <sam.guyer@gmail.com>2021-04-29 18:04:21 +0300
committerGitHub <noreply@github.com>2021-04-29 18:04:21 +0300
commitcfffa1351497425931fb9ef5bad0eeb7b0cf8645 (patch)
tree67c89f31a76f2d2ce8254f259a91f71917f1c961
parent2785f3d81dc360f021613268b2bc6ca69f578326 (diff)
parentca13e105a28965459c133eb70634095a4ba07cc0 (diff)
Merge pull request #1230 from samguyer/master
Fix for ESP32 driver not properly handling setLeds
-rw-r--r--src/platforms/esp/32/clockless_rmt_esp32.cpp16
-rw-r--r--src/platforms/esp/32/clockless_rmt_esp32.h1
2 files changed, 14 insertions, 3 deletions
diff --git a/src/platforms/esp/32/clockless_rmt_esp32.cpp b/src/platforms/esp/32/clockless_rmt_esp32.cpp
index 42db3415..90ca046f 100644
--- a/src/platforms/esp/32/clockless_rmt_esp32.cpp
+++ b/src/platforms/esp/32/clockless_rmt_esp32.cpp
@@ -42,7 +42,8 @@ int ESP32RMTController::gMemBlocks;
ESP32RMTController::ESP32RMTController(int DATA_PIN, int T1, int T2, int T3, int maxChannel, int memBlocks)
: mPixelData(0),
mSize(0),
- mCur(0),
+ mCur(0),
+ mBufSize(0),
mWhichHalf(0),
mBuffer(0),
mBufferSize(0),
@@ -86,10 +87,19 @@ ESP32RMTController::ESP32RMTController(int DATA_PIN, int T1, int T2, int T3, int
// the PixelController object until show is called.
uint8_t * ESP32RMTController::getPixelBuffer(int size_in_bytes)
{
+ // -- Free the old buffer if it will be too small
+ if (mPixelData != 0 and mBufSize < size_in_bytes) {
+ free(mPixelData);
+ mPixelData = 0;
+ }
+
if (mPixelData == 0) {
- mSize = size_in_bytes;
- mPixelData = (uint8_t *) malloc(mSize);
+ mBufSize = size_in_bytes;
+ mPixelData = (uint8_t *) malloc(mBufSize);
}
+
+ mSize = size_in_bytes;
+
return mPixelData;
}
diff --git a/src/platforms/esp/32/clockless_rmt_esp32.h b/src/platforms/esp/32/clockless_rmt_esp32.h
index 2a8555ab..8f5690bb 100644
--- a/src/platforms/esp/32/clockless_rmt_esp32.h
+++ b/src/platforms/esp/32/clockless_rmt_esp32.h
@@ -221,6 +221,7 @@ private:
uint8_t * mPixelData;
int mSize;
int mCur;
+ int mBufSize;
// -- RMT memory
volatile uint32_t * mRMT_mem_ptr;