void CoreObjectManager::notifyDependenciesDirty(CoreObject* object) { Vector<CoreObject*> dependencies; object->getCoreDependencies(dependencies); updateDependencies(object, &dependencies); }
void InputBool::setEnabled(bool b) { m_enabled = b; m_cb->setEnabled(b); m_lab->setEnabled(b); updateDefault(); updateDependencies(); }
void InputBool::update() { QString v = m_value.toString().toLower(); m_state = (v==QString::fromLatin1("yes") || v==QString::fromLatin1("true") || v==QString::fromLatin1("1")); m_cb->setChecked( m_state ); updateDefault(); updateDependencies(); }
void InputBool::setValue( bool s ) { if (m_state!=s) { m_state=s; updateDefault(); updateDependencies(); m_cb->setChecked( s ); m_value = m_state; emit changed(); } }
void CoreObjectManager::unregisterObject(CoreObject* object) { assert(object != nullptr); UINT64 internalId = object->getInternalID(); // If dirty, we generate sync data before it is destroyed { Lock lock(mObjectsMutex); bool isDirty = object->isCoreDirty() || (mDirtyObjects.find(internalId) != mDirtyObjects.end()); if (isDirty) { SPtr<CoreObjectCore> coreObject = object->getCore(); if (coreObject != nullptr) { CoreSyncData objSyncData = object->syncToCore(gCoreThread().getFrameAlloc()); mDestroyedSyncData.push_back(CoreStoredSyncObjData(coreObject, internalId, objSyncData)); DirtyObjectData& dirtyObjData = mDirtyObjects[internalId]; dirtyObjData.syncDataId = (INT32)mDestroyedSyncData.size() - 1; dirtyObjData.object = nullptr; } else { DirtyObjectData& dirtyObjData = mDirtyObjects[internalId]; dirtyObjData.syncDataId = -1; dirtyObjData.object = nullptr; } } mObjects.erase(internalId); } updateDependencies(object, nullptr); // Clear dependencies from dependants { Lock lock(mObjectsMutex); auto iterFind = mDependants.find(internalId); if (iterFind != mDependants.end()) { Vector<CoreObject*>& dependants = iterFind->second; for (auto& entry : dependants) { auto iterFind2 = mDependencies.find(entry->getInternalID()); if (iterFind2 != mDependencies.end()) { Vector<CoreObject*>& dependencies = iterFind2->second; auto iterFind3 = std::find(dependencies.begin(), dependencies.end(), object); if (iterFind3 != dependencies.end()) dependencies.erase(iterFind3); if (dependencies.size() == 0) mDependencies.erase(iterFind2); } } mDependants.erase(iterFind); } } }