aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-08-19 19:22:29 +0100
committermrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-08-19 19:22:29 +0100
commitd9e2f85f98cd794c8288d0cd76697fb49ec7c666 (patch)
treeb026b242ad4c641e6dfe8e742af4dd59f4d10d58
parentb6cbfce5dd3c99969eee8d506a6f9ecabbd81910 (diff)
Revert "Merge branch 'master' of https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA"
This reverts commit b6cbfce5dd3c99969eee8d506a6f9ecabbd81910, reversing changes made to c5227fd15eb6138ed6dce9a3504110eed04cb938.
-rw-r--r--ESP32-HUB75-MatrixPanel-I2S-DMA.h34
-rw-r--r--ESP32-VirtualMatrixPanel-I2S-DMA.h4
2 files changed, 21 insertions, 17 deletions
diff --git a/ESP32-HUB75-MatrixPanel-I2S-DMA.h b/ESP32-HUB75-MatrixPanel-I2S-DMA.h
index 927d428..f8648a1 100644
--- a/ESP32-HUB75-MatrixPanel-I2S-DMA.h
+++ b/ESP32-HUB75-MatrixPanel-I2S-DMA.h
@@ -388,7 +388,7 @@ class MatrixPanel_I2S_DMA {
// Setup the ESP32 DMA Engine. Sprite_TM built this stuff.
configureDMA(m_cfg); //DMA and I2S configuration and setup
- flipDMABuffer(); // show backbuf_id of 0
+ showDMABuffer(); // show backbuf_id of 0
#if SERIAL_DEBUG
if (!initialized)
@@ -495,27 +495,33 @@ class MatrixPanel_I2S_DMA {
inline void flipDMABuffer()
{
if ( !m_cfg.double_buff) return;
-
- #if SERIAL_DEBUG
- Serial.printf_P(PSTR("Showtime for buffer: %d\n"), back_buffer_id);
- #endif
-
- i2s_parallel_flip_to_buffer(I2S_NUM_0, back_buffer_id);
-
+
// Flip to other buffer as the backbuffer. i.e. Graphic changes happen to this buffer (but aren't displayed until showDMABuffer())
back_buffer_id ^= 1;
- #if SERIAL_DEBUG
+ #if SERIAL_DEBUG
Serial.printf_P(PSTR("Set back buffer to: %d\n"), back_buffer_id);
- #endif
+ #endif
+
+ // Wait before we allow any writing to the buffer. Stop flicker.
+ while(!i2s_parallel_is_previous_buffer_free()) { delay(1); }
}
- // stub function for compatibility
- void showDMABuffer(){}
+ inline void showDMABuffer()
+ {
+
+ if (!m_cfg.double_buff) return;
- // check if backbuffer still has DMA transfer in progress or is it safe to write there
- bool backbuffready(){ return i2s_parallel_is_previous_buffer_free(); }
+ #if SERIAL_DEBUG
+ Serial.printf_P(PSTR("Showtime for buffer: %d\n"), back_buffer_id);
+ #endif
+
+ i2s_parallel_flip_to_buffer(I2S_NUM_0, back_buffer_id);
+ // Wait before we allow any writing to the buffer. Stop flicker.
+ while(!i2s_parallel_is_previous_buffer_free()) { delay(1); }
+ }
+
inline void setPanelBrightness(int b)
{
// Change to set the brightness of the display, range of 1 to matrixWidth (i.e. 1 - 64)
diff --git a/ESP32-VirtualMatrixPanel-I2S-DMA.h b/ESP32-VirtualMatrixPanel-I2S-DMA.h
index 5ae1dac..c7b6a13 100644
--- a/ESP32-VirtualMatrixPanel-I2S-DMA.h
+++ b/ESP32-VirtualMatrixPanel-I2S-DMA.h
@@ -98,9 +98,7 @@ class VirtualMatrixPanel
}
void flipDMABuffer() { display->flipDMABuffer(); }
- void showDMABuffer() {}
- bool backbuffready(){ return display->backbuffready(); }
-
+ void showDMABuffer() { display->showDMABuffer(); }
void drawDisplayTest();