PassRefPtr<HRTFDatabaseLoader> HRTFDatabaseLoader::createAndLoadAsynchronouslyIfNecessary(float sampleRate) { ASSERT(isMainThread()); RefPtr<HRTFDatabaseLoader> loader = loaderMap().get(sampleRate); if (loader) { ASSERT(sampleRate == loader->databaseSampleRate()); return loader.release(); } loader = adoptRef(new HRTFDatabaseLoader(sampleRate)); loaderMap().add(sampleRate, loader.get()); loader->loadAsynchronously(); return loader.release(); }
HRTFDatabaseLoader::~HRTFDatabaseLoader() { ASSERT(isMainThread()); waitForLoaderThreadCompletion(); m_hrtfDatabase = nullptr; // Remove ourself from the map. loaderMap().remove(m_databaseSampleRate); }
HRTFDatabaseLoader::~HRTFDatabaseLoader() { ASSERT(isMainThread()); ASSERT(!m_thread); loaderMap().remove(m_databaseSampleRate); }