void CoreObjectManager::notifyDependenciesDirty(CoreObject* object)
	{
		Vector<CoreObject*> dependencies;
		object->getCoreDependencies(dependencies);

		updateDependencies(object, &dependencies);
	}
Exemple #2
0
void InputBool::setEnabled(bool b)
{ 
  m_enabled = b;
  m_cb->setEnabled(b); 
  m_lab->setEnabled(b); 
  updateDefault();
  updateDependencies();
}
Exemple #3
0
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();
}
Exemple #4
0
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);
			}
		}
	}