diff --git a/components/ili9340/ili9340.c b/components/ili9340/ili9340.c index 51850bb..1bc8a14 100644 --- a/components/ili9340/ili9340.c +++ b/components/ili9340/ili9340.c @@ -534,6 +534,11 @@ void lcdInit(TFT_t * dev, uint16_t model, int width, int height, int offsetx, in } +// Get framebuffer status +bool lcdIsFrameBuffer(TFT_t * dev) { + return dev->_use_frame_buffer; +} + // Disable framebuffer void lcdDisableFrameBuffer(TFT_t * dev) { dev->_use_frame_buffer_evacuate = dev->_use_frame_buffer; @@ -547,12 +552,16 @@ void lcdResumeFrameBuffer(TFT_t * dev) { // Get frame buffer void lcdGetFrameBuffer(TFT_t * dev, uint16_t *buffer) { - memcpy((char *)buffer, (char *)dev->_frame_buffer, sizeof(uint16_t)*dev->_width*dev->_height); + if (dev->_use_frame_buffer) { + memcpy((char *)buffer, (char *)dev->_frame_buffer, sizeof(uint16_t)*dev->_width*dev->_height); + } } // Set frame buffer void lcdSetFrameBuffer(TFT_t * dev, uint16_t *buffer) { - memcpy((char *)dev->_frame_buffer, (char *)buffer, sizeof(uint16_t)*dev->_width*dev->_height); + if (dev->_use_frame_buffer) { + memcpy((char *)dev->_frame_buffer, (char *)buffer, sizeof(uint16_t)*dev->_width*dev->_height); + } } // Draw pixel diff --git a/components/ili9340/ili9340.h b/components/ili9340/ili9340.h index e1917cf..edfef6c 100644 --- a/components/ili9340/ili9340.h +++ b/components/ili9340/ili9340.h @@ -68,6 +68,7 @@ void delayMS(int ms); void lcdWriteRegisterWord(TFT_t * dev, uint16_t addr, uint16_t data); void lcdWriteRegisterByte(TFT_t * dev, uint8_t addr, uint16_t data); void lcdInit(TFT_t * dev, uint16_t model, int width, int height, int offsetx, int offsety); +bool lcdIsFrameBuffer(TFT_t * dev); void lcdDisableFrameBuffer(TFT_t * dev); void lcdResumeFrameBuffer(TFT_t * dev); void lcdGetFrameBuffer(TFT_t * dev, uint16_t *buffer);