@@ -224,24 +224,26 @@ static mp_obj_t webcam_deinit(mp_obj_t self_in) {
224224}
225225MP_DEFINE_CONST_FUN_OBJ_1 (webcam_deinit_obj , webcam_deinit );
226226
227- // Make new webcam object (optional, for consistency)
228- static mp_obj_t webcam_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args ) {
229- mp_arg_check_num (n_args , n_kw , 0 , 0 , false);
230- return webcam_init ();
227+ // Method dispatch for webcam object
228+ static mp_obj_t webcam_call (mp_obj_t self_in , mp_obj_t attr , mp_obj_t * dest ) {
229+ if (dest [0 ] == MP_OBJ_NULL ) {
230+ // Lookup attribute
231+ if (attr == MP_QSTR_capture_grayscale ) {
232+ dest [0 ] = MP_OBJ_FROM_PTR (& webcam_capture_grayscale_obj );
233+ dest [1 ] = self_in ;
234+ } else if (attr == MP_QSTR_deinit ) {
235+ dest [0 ] = MP_OBJ_FROM_PTR (& webcam_deinit_obj );
236+ dest [1 ] = self_in ;
237+ }
238+ }
239+ return MP_OBJ_NULL ;
231240}
232241
233242// Webcam type definition
234- static const mp_rom_map_elem_t webcam_locals_dict_table [] = {
235- { MP_ROM_QSTR (MP_QSTR_capture_grayscale ), MP_ROM_PTR (& webcam_capture_grayscale_obj ) },
236- { MP_ROM_QSTR (MP_QSTR_deinit ), MP_ROM_PTR (& webcam_deinit_obj ) },
237- };
238- static MP_DEFINE_CONST_DICT (webcam_locals_dict , webcam_locals_dict_table ) ;
239-
240243static const mp_obj_type_t webcam_type = {
241244 { & mp_type_type },
242245 .name = MP_QSTR_webcam ,
243- .make_new = webcam_make_new ,
244- // Note: locals_dict is handled separately below
246+ .call = webcam_call ,
245247};
246248
247249// Module definition
@@ -258,10 +260,3 @@ const mp_obj_module_t webcam_user_cmodule = {
258260
259261// Register the module
260262MP_REGISTER_MODULE (MP_QSTR_webcam , webcam_user_cmodule );
261-
262- // Register the locals dict for the webcam type (post-definition)
263- static MP_DEFINE_CONST_OBJ (webcam_locals_dict_obj , & webcam_locals_dict ) ;
264- void webcam_type_init (void ) {
265- // Dynamically set the locals_dict after type definition
266- * (mp_obj_t * )& webcam_type .locals_dict = MP_OBJ_FROM_PTR (& webcam_locals_dict_obj );
267- }
0 commit comments