void cbox_adhoc_pattern_destroy(struct cbox_adhoc_pattern *ap) { // XXXKF decide on pattern ownership and general object lifetime issues cbox_midi_pattern_playback_destroy(ap->playback.pattern); cbox_master_destroy(ap->master); free(ap); }
void cbox_engine_destroyfunc(struct cbox_objhdr *obj_ptr) { struct cbox_engine *engine = (struct cbox_engine *)obj_ptr; while(engine->scene_count) CBOX_DELETE(engine->scenes[0]); if (engine->master->song) { CBOX_DELETE(engine->master->song); engine->master->song = NULL; } cbox_master_destroy(engine->master); engine->master = NULL; free(engine); }