void FlatStyle_RDM::updateRefs() { if(RsAutoUpdatePage::eventsLocked()) { _needs_update = true ; return ; } RetroshareDirModel::preMods() ; static const uint32_t MAX_REFS_PER_SECOND = 2000 ; uint32_t nb_treated_refs = 0 ; while(!_ref_stack.empty()) { void *ref = _ref_stack.back() ; #ifdef RDM_DEBUG std::cerr << "FlatStyle_RDM::postMods(): poped ref " << ref << std::endl; #endif _ref_stack.pop_back() ; uint32_t flags = DIR_FLAGS_DETAILS; DirDetails details ; if (requestDirDetails(ref, details, flags)) { if(details.type == DIR_TYPE_FILE) // only push files, not directories nor persons. _ref_entries.push_back(std::pair<void*,QString>(ref,computeDirectoryPath(details))); #ifdef RDM_DEBUG std::cerr << "FlatStyle_RDM::postMods(): addign ref " << ref << std::endl; #endif for(std::list<DirStub>::iterator it = details.children.begin(); it != details.children.end(); it++) _ref_stack.push_back(it->ref) ; } if(++nb_treated_refs > MAX_REFS_PER_SECOND) // we've done enough, let's give back hand to { // the user and setup a timer to finish the job later. _needs_update = true ; if(visible()) QTimer::singleShot(2000,this,SLOT(updateRefs())) ; else std::cerr << "Not visible: suspending update"<< std::endl; break ; } } std::cerr << "reference tab contains " << _ref_entries.size() << " files" << std::endl; if(_ref_stack.empty()) _needs_update = false ; RetroshareDirModel::postMods() ; }
void FlatStyle_RDM::postMods() { if(visible()) { _ref_entries.clear() ; _ref_stack.clear() ; _ref_stack.push_back(NULL) ; // init the stack with the topmost parent directory std::cerr << "FlatStyle_RDM::postMods(): cleared ref entries" << std::endl; _needs_update = false ; updateRefs() ; } else _needs_update = true ; }
void MFilesUpdate::update(void) { MEngine * engine = MEngine::getInstance(); MLevel * level = engine->getLevel(); MDataManager * textureManager = level->getTextureManager(); MDataManager * shaderManager = level->getShaderManager(); MDataManager * soundManager = level->getSoundManager(); MDataManager * meshManager = level->getMeshManager(); MDataManager * armatureAnimManager = level->getArmatureAnimManager(); MDataManager * texturesAnimManager = level->getTexturesAnimManager(); MDataManager * materialsAnimManager = level->getMaterialsAnimManager(); updateRefs(textureManager); updateRefs(shaderManager); updateRefs(meshManager); updateRefs(soundManager); updateRefs(armatureAnimManager); updateRefs(texturesAnimManager); updateRefs(materialsAnimManager); }