@@ -227,16 +227,21 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_display_show_obj, displayio_display_obj_show
227
227
//| When auto refresh is on, updates the display immediately. (The display will also update
228
228
//| without calls to this.)
229
229
//|
230
+ //| When auto refresh is off, refresh() or refresh(target_frames_per_second=None) will update
231
+ //| the display immediately.
232
+ //|
230
233
//| :param int target_frames_per_second: How many times a second `refresh` should be called and the screen updated.
231
234
//| :param int minimum_frames_per_second: The minimum number of times the screen should be updated per second."""
232
235
//| ...
233
236
//|
234
237
STATIC mp_obj_t displayio_display_obj_refresh (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
235
238
enum { ARG_target_frames_per_second , ARG_minimum_frames_per_second };
236
239
static const mp_arg_t allowed_args [] = {
237
- { MP_QSTR_target_frames_per_second , MP_ARG_KW_ONLY | MP_ARG_INT , {.u_int
8000
span> = 60 } },
240
+ //{ MP_QSTR_target_frames_per_second, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 60} },
241
+ { MP_QSTR_target_frames_per_second , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_OBJ_NEW_SMALL_INT (60 )} },
238
242
{ MP_QSTR_minimum_frames_per_second , MP_ARG_KW_ONLY | MP_ARG_INT , {.u_int = 1 } },
239
243
};
244
+
240
245
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
241
246
mp_arg_parse_all (n_args - 1 , pos_args + 1 , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
242
247
@@ -246,8 +251,18 @@ STATIC mp_obj_t displayio_display_obj_refresh(size_t n_args, const mp_obj_t *pos
246
251
if (minimum_frames_per_second > 0 ) {
247
252
maximum_ms_per_real_frame = 1000 / minimum_frames_per_second ;
248
253
}
249
- return mp_obj_new_bool (common_hal_displayio_display_refresh (self , 1000 / args [ARG_target_frames_per_second ].u_int , maximum_ms_per_real_frame ));
254
+
255
+ uint32_t target_ms_per_frame ;
256
+ if ( (args [ARG_target_frames_per_second ].u_obj == mp_const_none ) || (n_args == 1 ) ) { // if None or no arguments
257
+ target_ms_per_frame = 0xffffffff ;
258
+ }
259
+ else {
260
+ target_ms_per_frame = 1000 / mp_obj_get_int (args [ARG_target_frames_per_second ].u_obj );
261
+ }
262
+
263
+ return mp_obj_new_bool (common_hal_displayio_display_refresh (self , target_ms_per_frame , maximum_ms_per_real_frame ));
250
264
}
265
+
251
266
MP_DEFINE_CONST_FUN_OBJ_KW (displayio_display_refresh_obj , 1 , displayio_display_obj_refresh );
252
267
253
268
//| auto_refresh: bool
0 commit comments