Skip to content

Commit 079d9ff

Browse files
webcam: less errors
1 parent 5ac6c7b commit 079d9ff

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

c_mpos/src/webcam.c

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -224,24 +224,26 @@ static mp_obj_t webcam_deinit(mp_obj_t self_in) {
224224
}
225225
MP_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-
240243
static 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
260262
MP_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

Comments
 (0)