uint qHash(const FadeChannel& key) { uint hash = key.fixture() << 16; hash = hash | (key.channel() & 0xFFFF); hash = hash & (~0U); return hash; }
void CueStack::writeDMX(MasterTimer* timer, QList<Universe*> ua) { Q_UNUSED(timer); if (isFlashing() == true && m_cues.size() > 0) { QHashIterator <uint,uchar> it(m_cues.first().values()); while (it.hasNext() == true) { it.next(); FadeChannel fc; fc.setChannel(it.key()); fc.setTarget(it.value()); int uni = floor(fc.channel() / 512); if (uni < ua.size()) ua[uni]->write(fc.channel() - (uni * 512), fc.target()); } } }
void RGBMatrix::postRun(MasterTimer* timer, QList<Universe *> universes) { if (m_fader != NULL) { QHashIterator <FadeChannel,FadeChannel> it(m_fader->channels()); while (it.hasNext() == true) { it.next(); FadeChannel fc = it.value(); // fade out only intensity channels if (fc.group(doc()) != QLCChannel::Intensity) continue; bool canFade = true; Fixture *fixture = doc()->fixture(fc.fixture()); if (fixture != NULL) canFade = fixture->channelCanFade(fc.channel()); fc.setStart(fc.current(getAttributeValue(Intensity))); fc.setCurrent(fc.current(getAttributeValue(Intensity))); fc.setElapsed(0); fc.setReady(false); if (canFade == false) { fc.setFadeTime(0); fc.setTarget(fc.current(getAttributeValue(Intensity))); } else { if (overrideFadeOutSpeed() == defaultSpeed()) fc.setFadeTime(fadeOutSpeed()); else fc.setFadeTime(overrideFadeOutSpeed()); fc.setTarget(0); } timer->faderAdd(fc); } delete m_fader; m_fader = NULL; } { QMutexLocker algorithmLocker(&m_algorithmMutex); if (m_algorithm != NULL) m_algorithm->postRun(); } Function::postRun(timer, universes); }