Skip to content

Commit ef33984

Browse files
committed
allow set_root_group for FrameBufferDisplay instead of show()
1 parent e3cae22 commit ef33984

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

shared-bindings/framebufferio/FramebufferDisplay.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,24 @@ STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_root_group(mp_obj_t sel
328328
}
329329
MP_DEFINE_CONST_FUN_OBJ_1(framebufferio_framebufferdisplay_get_root_group_obj, framebufferio_framebufferdisplay_obj_get_root_group);
330330

331-
MP_PROPERTY_GETTER(framebufferio_framebufferdisplay_root_group_obj,
332-
(mp_obj_t)&framebufferio_framebufferdisplay_get_root_group_obj);
331+
STATIC mp_obj_t framebufferio_framebufferdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) {
332+
framebufferio_framebufferdisplay_obj_t *self = native_display(self_in);
333+
displayio_group_t *group = NULL;
334+
if (group_in != mp_const_none) {
335+
group = MP_OBJ_TO_PTR(native_group(group_in));
336+
}
337+
338+
bool ok = common_hal_framebufferio_framebufferdisplay_set_root_group(self, group);
339+
if (!ok) {
340+
mp_raise_ValueError(translate("Group already used"));
341+
}
342+
return mp_const_none;
343+
}
344+
MP_DEFINE_CONST_FUN_OBJ_2(framebufferio_framebufferdisplay_set_root_group_obj, framebufferio_framebufferdisplay_obj_set_root_group);
345+
346+
MP_PROPERTY_GETSET(framebufferio_framebufferdisplay_root_group_obj,
347+
(mp_obj_t)&framebufferio_framebufferdisplay_get_root_group_obj,
348+
(mp_obj_t)&framebufferio_framebufferdisplay_set_root_group_obj);
333349

334350
STATIC const mp_rom_map_elem_t framebufferio_framebufferdisplay_locals_dict_table[] = {
335351
{ MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&framebufferio_framebufferdisplay_show_obj) },

shared-bindings/framebufferio/FramebufferDisplay.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,6 @@ bool common_hal_framebufferio_framebufferdisplay_set_brightness(framebufferio_fr
6161
mp_obj_t common_hal_framebufferio_framebufferdisplay_framebuffer(framebufferio_framebufferdisplay_obj_t *self);
6262

6363
mp_obj_t common_hal_framebufferio_framebufferdisplay_get_root_group(framebufferio_framebufferdisplay_obj_t *self);
64+
mp_obj_t common_hal_framebufferio_framebufferdisplay_set_root_group(framebufferio_framebufferdisplay_obj_t *self, displayio_group_t *root_group);
6465

6566
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_FRAMEBUFFERDISPLAY_H

shared-module/framebufferio/FramebufferDisplay.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,3 +362,11 @@ void framebufferio_framebufferdisplay_reset(framebufferio_framebufferdisplay_obj
362362
mp_obj_t common_hal_framebufferio_framebufferdisplay_get_root_group(framebufferio_framebufferdisplay_obj_t *self) {
363363
return self->core.current_group;
364364
}
365+
366+
mp_obj_t common_hal_framebufferio_framebufferdisplay_set_root_group(framebufferio_framebufferdisplay_obj_t *self, displayio_group_t *root_group) {
367+
bool ok = displayio_display_core_set_root_group(&self->core, root_group);
368+
if (!ok) {
369+
mp_raise_ValueError(translate("Group already used"));
370+
}
371+
return mp_const_none;
372+
}

0 commit comments

Comments
 (0)