Added Effect::start()
and Effect::stop()
to allow effects to reserve memory on start and free it afterwards.
This commit is contained in:
@ -6,10 +6,21 @@ void CycleEffect::changeEffect() {
|
||||
int new_id = random8(cycle_effects->size());
|
||||
new_effect = cycle_effects->get(new_id);
|
||||
} while (&new_effect == &effect);
|
||||
if (effect) effect->stop();
|
||||
effect = new_effect;
|
||||
effect->start();
|
||||
effectSince = millis();
|
||||
}
|
||||
|
||||
void CycleEffect::start() {
|
||||
if (!effect) changeEffect();
|
||||
else effect->start();
|
||||
}
|
||||
|
||||
void CycleEffect::stop() {
|
||||
if (effect) effect->stop();
|
||||
}
|
||||
|
||||
boolean CycleEffect::can_be_shown_with_clock() {
|
||||
return effect->can_be_shown_with_clock();
|
||||
};
|
||||
|
@ -22,7 +22,9 @@ void mqtt_callback(char* complete_topic, byte* pl, unsigned int length) {
|
||||
EffectEntry e = effects->get(i);
|
||||
if (strcmp(e.name, payload)==0) {
|
||||
//Serial.printf("Effect found in mqtt_callback: %p\n", (void *)&e->effect);
|
||||
current_effect->stop();
|
||||
current_effect = e.effect;
|
||||
current_effect->start();
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
|
@ -31,6 +31,8 @@ void setup() {
|
||||
ntpClient.begin();
|
||||
mqtt_setup();
|
||||
LOGln("Core * Setup complete");
|
||||
|
||||
current_effect->start();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
Reference in New Issue
Block a user