Skip to content

Commit f37a8f2

Browse files
committed
Implement startBuffering and endBuffering calls to let caller batch up screen updates.
1 parent 58e5a92 commit f37a8f2

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/Arduino_GigaDisplay_GFX.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,21 @@ void GigaDisplay_GFX::startWrite() {
4040

4141
void GigaDisplay_GFX::endWrite() {
4242
//refresh_sem.release();
43-
_refresh_thd->flags_set(0x1);
43+
if (!buffering)
44+
_refresh_thd->flags_set(0x1);
45+
}
46+
47+
// If buffering, defer endWrite calls until endBuffering is called.
48+
void GigaDisplay_GFX::startBuffering() {
49+
buffering = true;
50+
}
51+
52+
void GigaDisplay_GFX::endBuffering() {
53+
if (buffering)
54+
{
55+
buffering = false;
56+
endWrite();
57+
}
4458
}
4559

4660
void GigaDisplay_GFX::drawPixel(int16_t x, int16_t y, uint16_t color) {

src/Arduino_GigaDisplay_GFX.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class GigaDisplay_GFX : public Adafruit_GFX {
3131

3232
void startWrite();
3333
void endWrite();
34+
void startBuffering();
35+
void endBuffering();
3436

3537
uint16_t color565(uint8_t red, uint8_t green, uint8_t blue) {
3638
return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3);
@@ -45,7 +47,8 @@ class GigaDisplay_GFX : public Adafruit_GFX {
4547
private:
4648
Arduino_H7_Video* display;
4749
void refresh_if_needed();
48-
bool need_refresh = false;
50+
//bool need_refresh = false;
51+
bool buffering = false;
4952
uint32_t last_refresh = 0;
5053
rtos::Thread* _refresh_thd;
5154
};

0 commit comments

Comments
 (0)