Skip to content

Commit 23a01e1

Browse files
committed
Fixed Struct never being allocated
Fixes issue with struct display_buffer_descriptor *buf_desc; never being allocated - see arduino/ArduinoCore-zephyr#274 (comment)
1 parent e05eb4e commit 23a01e1

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

src/GigaDisplay.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ bool Display::begin(DisplayPixelFormat pixformat) {
8888
if (capabilities.current_pixel_format != PIXEL_FORMAT_RGB_565) {
8989
ret = display_set_pixel_format(this->gdev, PIXEL_FORMAT_RGB_565);
9090
}
91+
printk("RGB565 set\n");
9192
format_spec = 1;
9293
break;
9394
case DISPLAY_RGB888:
@@ -253,32 +254,31 @@ bool Display::begin(DisplayPixelFormat pixformat) {
253254
int Display::write8(const uint16_t x,
254255
const uint16_t y,
255256
const void *buf) {
256-
257257

258258
// printk("Display::write8(%u %u %p) %p %x\n", x, y, buf,
259259
// &((struct display_driver_api *)gdev->api)->write, *((uint32_t*)(&((struct display_driver_api *)gdev->api)->write)));
260260

261-
return display_write(this->gdev, x, y, this->buf_desc, buf);
261+
return display_write(this->gdev, x, y, &buf_desc, buf);
262262

263263
}
264264

265265
void Display::setFrameDesc(uint16_t w, uint16_t h, uint16_t pitch, uint32_t buf_size) {
266-
this->buf_desc->buf_size = buf_size;
267-
this->buf_desc->width = w; /** Number of pixels between consecutive rows in the data buffer */
268-
this->buf_desc->height = h; /** Data buffer row width in pixels */
269-
this->buf_desc->pitch = pitch; /** Data buffer row height in pixels */
266+
buf_desc.buf_size = buf_size;
267+
buf_desc.width = w; /** Number of pixels between consecutive rows in the data buffer */
268+
buf_desc.height = h; /** Data buffer row width in pixels */
269+
buf_desc.pitch = pitch; /** Data buffer row height in pixels */
270270

271271
}
272272

273273
void Display::startFrameBuffering() {
274274

275-
this->buf_desc->frame_incomplete = false;
275+
buf_desc.frame_incomplete = false;
276276

277277
}
278278

279279
void Display::endFrameBuffering() {
280280

281-
this->buf_desc->frame_incomplete = true;
281+
buf_desc.frame_incomplete = true;
282282

283283
}
284284

src/GigaDisplay.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
#ifdef __ZEPHYR__
2222

2323
#include "Arduino.h"
24+
#include <zephyr/kernel.h>
25+
#include <zephyr/device.h>
26+
#include <zephyr/drivers/display.h>
2427

2528
#if __has_include ("HasIncludeArduinoGraphics.h")
2629
#include "SDRAM.h"
@@ -160,7 +163,7 @@ class Display
160163

161164
private:
162165
const struct device *gdev;
163-
struct display_buffer_descriptor *buf_desc;
166+
struct display_buffer_descriptor buf_desc;
164167
#if defined( HAS_ARDUINOGRAPHICS) || __has_include ("lvgl.h")
165168
uint16_t *buffer = nullptr;
166169
uint32_t sizeof_framebuffer;

0 commit comments

Comments
 (0)