From 331be8dc452bf47705556d2a7f7f5988973930ca Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 7 Apr 2013 13:01:34 +0200 Subject: Fixed crashbug on drumkit reload. --- src/drumgizmo.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/drumgizmo.cc') diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index 219ec7b..5391cdd 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -143,6 +143,8 @@ bool DrumGizmo::loadkit(std::string file) DEBUG(drumgizmo, "loadkit(%s)\n", kitfile.c_str()); + kit.clear(); + DrumKitParser parser(kitfile, kit); if(parser.parse()) { ERR(drumgizmo, "Drumkit parser failed: %s\n", kitfile.c_str()); @@ -233,6 +235,8 @@ bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples) // Handle engine messages, at most one in each iteration: handleEngineEvents(); + if(!samples) return true; + ie->pre(); oe->pre(nsamples); @@ -255,9 +259,13 @@ bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples) } */ + if(!kit.isValid()) continue; + if(d < (int)kit.instruments.size()) { i = kit.instruments[d]; } + + if(!i->isValid()) continue; if(i == NULL) { ERR(drumgizmo, "Missing Instrument %d.\n", evs[e].instrument); -- cgit v1.2.3