Skip to content

Commit c519c0e

Browse files
authored
Add global BufferOffset (ThingPulse#318)
1 parent b730115 commit c519c0e

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/OLEDDisplay.cpp

+9-7
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ bool OLEDDisplay::allocateBuffer() {
7171
}
7272

7373
if(this->buffer==NULL) {
74-
this->buffer = (uint8_t*) malloc((sizeof(uint8_t) * displayBufferSize) + getBufferOffset());
75-
this->buffer += getBufferOffset();
74+
this->buffer = (uint8_t*) malloc((sizeof(uint8_t) * displayBufferSize) + BufferOffset);
75+
this->buffer += BufferOffset;
7676

7777
if(!this->buffer) {
7878
DEBUG_OLEDDISPLAY("[OLEDDISPLAY][init] Not enough memory to create display\n");
@@ -82,12 +82,12 @@ bool OLEDDisplay::allocateBuffer() {
8282

8383
#ifdef OLEDDISPLAY_DOUBLE_BUFFER
8484
if(this->buffer_back==NULL) {
85-
this->buffer_back = (uint8_t*) malloc((sizeof(uint8_t) * displayBufferSize) + getBufferOffset());
86-
this->buffer_back += getBufferOffset();
85+
this->buffer_back = (uint8_t*) malloc((sizeof(uint8_t) * displayBufferSize) + BufferOffset);
86+
this->buffer_back += BufferOffset;
8787

8888
if(!this->buffer_back) {
8989
DEBUG_OLEDDISPLAY("[OLEDDISPLAY][init] Not enough memory to create back buffer\n");
90-
free(this->buffer - getBufferOffset());
90+
free(this->buffer - BufferOffset);
9191
return false;
9292
}
9393
}
@@ -98,6 +98,8 @@ bool OLEDDisplay::allocateBuffer() {
9898

9999
bool OLEDDisplay::init() {
100100

101+
BufferOffset = getBufferOffset();
102+
101103
if(!allocateBuffer()) {
102104
return false;
103105
}
@@ -109,9 +111,9 @@ bool OLEDDisplay::init() {
109111
}
110112

111113
void OLEDDisplay::end() {
112-
if (this->buffer) { free(this->buffer - getBufferOffset()); this->buffer = NULL; }
114+
if (this->buffer) { free(this->buffer - BufferOffset); this->buffer = NULL; }
113115
#ifdef OLEDDISPLAY_DOUBLE_BUFFER
114-
if (this->buffer_back) { free(this->buffer_back - getBufferOffset()); this->buffer_back = NULL; }
116+
if (this->buffer_back) { free(this->buffer_back - BufferOffset); this->buffer_back = NULL; }
115117
#endif
116118
if (this->logBuffer != NULL) { free(this->logBuffer); this->logBuffer = NULL; }
117119
}

src/OLEDDisplay.h

+1
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ class OLEDDisplay : public Stream {
359359

360360

361361
// the header size of the buffer used, e.g. for the SPI command header
362+
int BufferOffset;
362363
virtual int getBufferOffset(void) = 0;
363364

364365
// Send a command to the display (low level function)

0 commit comments

Comments
 (0)