void ShaderEffectItem::setActive(bool enable) { if (m_active == enable) return; if (m_active) { for (int i = 0; i < m_sources.size(); ++i) { ShaderEffectSource *source = m_sources.at(i).source; if (!source) continue; disconnect(source, SIGNAL(repaintRequired()), this, SLOT(markDirty())); source->derefFromEffectItem(); } } m_active = enable; if (m_active) { for (int i = 0; i < m_sources.size(); ++i) { ShaderEffectSource *source = m_sources.at(i).source; if (!source) continue; source->refFromEffectItem(); connect(source, SIGNAL(repaintRequired()), this, SLOT(markDirty())); } } emit activeChanged(); markDirty(); }
void ShaderEffectItem::setActive(bool enable) { if (m_active == enable) return; if (m_active) { for (int i = 0; i < m_sources.size(); ++i) { ShaderEffectSource *source = m_sources.at(i).source; if (!source) continue; disconnect(source, SIGNAL(repaintRequired()), this, SLOT(markDirty())); source->derefFromEffectItem(); } } m_active = enable; if (m_active) { for (int i = 0; i < m_sources.size(); ++i) { ShaderEffectSource *source = m_sources.at(i).source; if (!source) continue; source->refFromEffectItem(); connect(source, SIGNAL(repaintRequired()), this, SLOT(markDirty())); } } // QGLShaderProgram is deleted when not active (to minimize GPU memory usage). if (!m_active && m_program) { delete m_program; m_program = 0; } emit activeChanged(); markDirty(); }