aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-08-18 14:32:51 +0100
committermrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-08-18 14:32:51 +0100
commitf6584dd321fcf5e54ffd4429ab6b06ab7adb2b34 (patch)
treed14ffe1cded7971a850534dcb54e5943857d6e9f
parentab641b964272d121c5f7db6212324f5bfbd1650b (diff)
Attempted clearScreen() syncronisation fix
No idea if this will work.
-rw-r--r--ESP32-HUB75-MatrixPanel-I2S-DMA.cpp6
-rw-r--r--ESP32-HUB75-MatrixPanel-I2S-DMA.h7
2 files changed, 8 insertions, 5 deletions
diff --git a/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp b/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp
index 0570079..a9bc531 100644
--- a/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp
+++ b/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp
@@ -532,9 +532,9 @@ void IRAM_ATTR MatrixPanel_I2S_DMA::updateMatrixDMABuffer(int16_t x_coord, int16
/* Update the entire buffer with a single specific colour - quicker */
-void MatrixPanel_I2S_DMA::updateMatrixDMABuffer(uint8_t red, uint8_t green, uint8_t blue)
+bool MatrixPanel_I2S_DMA::updateMatrixDMABuffer(uint8_t red, uint8_t green, uint8_t blue)
{
- if ( !initialized ) return;
+ if ( !initialized ) return false;
/* https://ledshield.wordpress.com/2012/11/13/led-brightness-to-your-eye-gamma-correction-no/ */
#ifndef NO_CIE1931
@@ -585,6 +585,8 @@ void MatrixPanel_I2S_DMA::updateMatrixDMABuffer(uint8_t red, uint8_t green, uint
} while(matrix_frame_parallel_row); // end row iteration
} // colour depth loop (8)
+
+ return true;
} // updateMatrixDMABuffer (full frame paint)
/**
diff --git a/ESP32-HUB75-MatrixPanel-I2S-DMA.h b/ESP32-HUB75-MatrixPanel-I2S-DMA.h
index 065c47c..89dc0a9 100644
--- a/ESP32-HUB75-MatrixPanel-I2S-DMA.h
+++ b/ESP32-HUB75-MatrixPanel-I2S-DMA.h
@@ -425,9 +425,10 @@ class MatrixPanel_I2S_DMA {
virtual void fillScreen(uint16_t color); // overwrite adafruit implementation
/**
- * A wrapper to fill whatever selected DMA buffer / screen with black
+ * A wrapper to fill whatever selected DMA buffer / screen with black.
+ * Returns true when operation is completed for syncronisation reasons.
*/
- inline void clearScreen(){ updateMatrixDMABuffer(0,0,0); };
+ inline bool clearScreen(){ return updateMatrixDMABuffer(0,0,0); };
#ifndef NO_FAST_FUNCTIONS
/**
@@ -597,7 +598,7 @@ class MatrixPanel_I2S_DMA {
void updateMatrixDMABuffer(int16_t x, int16_t y, uint8_t red, uint8_t green, uint8_t blue);
/* Update the entire DMA buffer (aka. The RGB Panel) a certain colour (wipe the screen basically) */
- void updateMatrixDMABuffer(uint8_t red, uint8_t green, uint8_t blue);
+ bool updateMatrixDMABuffer(uint8_t red, uint8_t green, uint8_t blue);
/**
* wipes DMA buffer(s) and reset all color/service bits