summaryrefslogtreecommitdiff
path: root/extmod/modframebuf.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-12-09 12:58:45 +1100
committerDamien George <damien.p.george@gmail.com>2016-12-09 12:58:45 +1100
commitadf3cb50818636fdfb75e1a6a71b596565dcc90e (patch)
tree88ffaa2bcfb29a5fd4905be006e523ae792e08bb /extmod/modframebuf.c
parent5e393007b930359fbc42180ea4e4fb45b149af80 (diff)
extmod/modframebuf: Store underlying buffer object to prevent GC free.
Diffstat (limited to 'extmod/modframebuf.c')
-rw-r--r--extmod/modframebuf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/extmod/modframebuf.c b/extmod/modframebuf.c
index eb639c172..d6e686e07 100644
--- a/extmod/modframebuf.c
+++ b/extmod/modframebuf.c
@@ -37,6 +37,7 @@
typedef struct _mp_obj_framebuf_t {
mp_obj_base_t base;
+ mp_obj_t buf_obj; // need to store this to prevent GC from reclaiming buf
void *buf;
uint16_t width, height, stride;
uint8_t format;
@@ -133,6 +134,7 @@ STATIC mp_obj_t framebuf_make_new(const mp_obj_type_t *type, size_t n_args, size
mp_obj_framebuf_t *o = m_new_obj(mp_obj_framebuf_t);
o->base.type = type;
+ o->buf_obj = args[0];
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_WRITE);