diff --git a/src/projectM-engine/InitCond.cpp b/src/projectM-engine/InitCond.cpp index 625a97d53..d7201b064 100755 --- a/src/projectM-engine/InitCond.cpp +++ b/src/projectM-engine/InitCond.cpp @@ -41,6 +41,8 @@ int InitCond::init_cond_string_buffer_index = 0; /* Creates a new initial condition */ InitCond::InitCond( Param * param, CValue init_val ) { + assert(param); + this->param = param; this->init_val = init_val; diff --git a/src/projectM-engine/InitCond.hpp b/src/projectM-engine/InitCond.hpp index 66cc46b33..41fac3f05 100755 --- a/src/projectM-engine/InitCond.hpp +++ b/src/projectM-engine/InitCond.hpp @@ -47,7 +47,7 @@ public: static char init_cond_string_buffer[STRING_BUFFER_SIZE]; static int init_cond_string_buffer_index; - InitCond( Param * param, CValue init_val ); + InitCond( Param * param, CValue init_val); ~InitCond(); void evaluate(); diff --git a/src/projectM-engine/Preset.cpp b/src/projectM-engine/Preset.cpp index 7dea5f5fd..25c250e23 100755 --- a/src/projectM-engine/Preset.cpp +++ b/src/projectM-engine/Preset.cpp @@ -65,11 +65,15 @@ Preset::~Preset() Algorithms::traverse >(user_param_tree); /// @note We do not clear the actual container itself and instead let whoever initializes the preset inputs class to do it - for (PresetOutputs::cwave_container::iterator pos = customWaves->begin(); pos != customWaves->end(); ++pos) + for (PresetOutputs::cwave_container::iterator pos = customWaves->begin(); pos != customWaves->end(); ++pos) { + assert(pos->second); delete(pos->second); +} - for (PresetOutputs::cshape_container::iterator pos = customShapes->begin(); pos != customShapes->end(); ++pos) + for (PresetOutputs::cshape_container::iterator pos = customShapes->begin(); pos != customShapes->end(); ++pos) { + assert(pos->second); delete(pos->second); + } } @@ -170,12 +174,15 @@ void Preset::evalCustomWavePerFrameEquations() { std::map & init_cond_tree = pos->second->init_cond_tree; - for (std::map::iterator _pos = init_cond_tree.begin(); _pos != init_cond_tree.end(); ++_pos) + for (std::map::iterator _pos = init_cond_tree.begin(); _pos != init_cond_tree.end(); ++_pos) { + assert(_pos->second); _pos->second->evaluate(); - +} std::map & per_frame_eqn_tree = pos->second->per_frame_eqn_tree; - for (std::map::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) + for (std::map::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) { + assert(_pos->second); _pos->second->evaluate(); + } } } @@ -187,32 +194,41 @@ void Preset::evalCustomShapePerFrameEquations() { std::map & init_cond_tree = pos->second->init_cond_tree; - for (std::map::iterator _pos = init_cond_tree.begin(); _pos != init_cond_tree.end(); ++_pos) + for (std::map::iterator _pos = init_cond_tree.begin(); _pos != init_cond_tree.end(); ++_pos) { + assert(_pos->second); _pos->second->evaluate(); - +} std::map & per_frame_eqn_tree = pos->second->per_frame_eqn_tree; - for (std::map::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) + for (std::map::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) { + assert(_pos->second); _pos->second->evaluate(); +} } } -void Preset::evalInitConditions() +void Preset::evalPerFrameInitEquations() { - for (std::map::iterator pos = per_frame_init_eqn_tree.begin(); pos != per_frame_init_eqn_tree.end(); ++pos) + for (std::map::iterator pos = per_frame_init_eqn_tree.begin(); pos != per_frame_init_eqn_tree.end(); ++pos) { + assert(pos->second); pos->second->evaluate(); +} } void Preset::evalPerFrameEquations() { - for (std::map::iterator pos = init_cond_tree.begin(); pos != init_cond_tree.end(); ++pos) + for (std::map::iterator pos = init_cond_tree.begin(); pos != init_cond_tree.end(); ++pos) { + assert(pos->second); pos->second->evaluate(); +} - for (std::map::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos) + for (std::map::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos) { +assert(pos->second); pos->second->evaluate(); +} } @@ -262,17 +278,22 @@ void Preset::initialize(const std::string & pathname) void Preset::load_custom_wave_init_conditions() { - for (PresetOutputs::cwave_container::iterator pos = customWaves->begin(); pos != customWaves->end(); ++pos) + for (PresetOutputs::cwave_container::iterator pos = customWaves->begin(); pos != customWaves->end(); ++pos) { + assert(pos->second); pos->second->load_unspecified_init_conds(); + +} } void Preset::load_custom_shape_init_conditions() { - for (PresetOutputs::cshape_container::iterator pos = customShapes->begin(); pos != customShapes->end(); ++pos) + for (PresetOutputs::cshape_container::iterator pos = customShapes->begin(); pos != customShapes->end(); ++pos) { + assert(pos->second); pos->second->load_custom_shape_init(); } +} @@ -282,10 +303,10 @@ void Preset::evaluateFrame() /* Evaluate all equation objects in same order as the renderer */ - evalInitConditions(); + evalPerFrameInitEquations(); evalPerFrameEquations(); evalPerPixelEqns(); - evalInitConditions(); + evalCustomWaveInitConditions(); evalCustomShapeInitConditions(); evalCustomWavePerFrameEquations(); evalCustomShapePerFrameEquations(); diff --git a/src/projectM-engine/Preset.hpp b/src/projectM-engine/Preset.hpp index 732660541..3a9fde94a 100644 --- a/src/projectM-engine/Preset.hpp +++ b/src/projectM-engine/Preset.hpp @@ -137,7 +137,7 @@ private: void evalCustomWavePerFrameEquations(); void evalCustomShapePerFrameEquations(); - void evalInitConditions(); + void evalPerFrameInitEquations(); void evalCustomWaveInitConditions(); void evalCustomShapeInitConditions(); void evalPerPixelEqns();