@@ -116,16 +116,6 @@ static void preflight_pins_or_throw(uint8_t clock_pin, uint8_t *rgb_pins, uint8_
116
116
#endif
117
117
}
118
118
119
- typedef struct {
120
- nlr_jump_callback_node_t callback ;
121
- mp_obj_base_t * base_ptr ;
122
- } nlr_jump_callback_node_clear_displaybus_t ;
123
-
124
- static void clear_display_bus (void * node_in ) {
125
- nlr_jump_callback_node_clear_displaybus_t * node = node_in ;
126
- node -> base_ptr -> type = & mp_type_NoneType ;
127
- }
128
-
129
119
//| def __init__(
130
120
//| self,
131
121
//| *,
@@ -227,13 +217,6 @@ static mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n
227
217
rgbmatrix_rgbmatrix_obj_t * self = & allocate_display_bus_or_raise ()-> rgbmatrix ;
228
218
self -> base .type = & rgbmatrix_RGBMatrix_type ;
229
219
230
- // If an exception is thrown, ensure the display bus object's type is set
231
- // back to the uninitialized/deinitialied type. **note that all other resource
232
- // deallocations must be handled by the shared-module code**
233
- nlr_jump_callback_node_clear_displaybus_t node ;
234
- node .base_ptr = & self -> base ;
235
- nlr_push_jump_callback (& node .callback , clear_display_bus );
236
-
237
220
uint8_t rgb_count , addr_count ;
238
221
uint8_t rgb_pins [MP_ARRAY_SIZE (self -> rgb_pins )];
239
222
uint8_t addr_pins [MP_ARRAY_SIZE (self -> addr_pins )];
@@ -271,6 +254,7 @@ static mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n
271
254
clock_pin , latch_pin , output_enable_pin ,
272
255
args [ARG_doublebuffer ].u_bool ,
273
256
args [ARG_framebuffer ].u_obj , tile , args [ARG_serpentine ].u_bool , NULL );
257
+
274
258
claim_and_never_reset_pins (args [ARG_rgb_list ].u_obj );
275
259
claim_and_never_reset_pins (args [ARG_addr_list ].u_obj );
276
260
claim_and_never_reset_pin (args [ARG_clock_pin ].u_obj );
0 commit comments