void CPVRGUIInfo::Process(void) { unsigned int iLoop = 0; int toggleInterval = CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_iPVRInfoToggleInterval / 1000; /* updated on request */ CServiceBroker::GetPVRManager().RegisterObserver(this); UpdateTimersCache(); /* update the backend cache once initially */ m_updateBackendCacheRequested = true; while (!g_application.m_bStop && !m_bStop) { if (!m_bRegistered) { CGUIComponent* gui = CServiceBroker::GetGUI(); if (gui) { gui->GetInfoManager().RegisterInfoProvider(this); m_bRegistered = true; } } if (!m_bStop) UpdateQualityData(); Sleep(0); if (!m_bStop) UpdateDescrambleData(); Sleep(0); if (!m_bStop) UpdateMisc(); Sleep(0); if (!m_bStop) UpdateTimeshiftData(); Sleep(0); if (!m_bStop) UpdateTimersToggle(); Sleep(0); if (!m_bStop) UpdateNextTimer(); Sleep(0); // Update the backend cache every toggleInterval seconds if (!m_bStop && iLoop % toggleInterval == 0) UpdateBackendCache(); if (++iLoop == 1000) iLoop = 0; if (!m_bStop) Sleep(500); } }
void CPVRGUIInfo::Stop(void) { StopThread(); CServiceBroker::GetPVRManager().UnregisterObserver(this); CGUIComponent* gui = CServiceBroker::GetGUI(); if (gui) { gui->GetInfoManager().UnregisterInfoProvider(this); m_bRegistered = false; } }
bool CProfilesManager::LoadProfile(size_t index) { CSingleLock lock(m_critical); // check if the index is valid or not if (index >= m_profiles.size()) return false; // check if the profile is already active if (m_currentProfile == index) return true; // save any settings of the currently used skin but only if the (master) // profile hasn't just been loaded as a temporary profile for login if (g_SkinInfo != nullptr && !m_profileLoadedForLogin) g_SkinInfo->SaveSettings(); // unload any old settings CServiceBroker::GetSettings().Unload(); SetCurrentProfileId(index); m_profileLoadedForLogin = false; // load the new settings if (!CServiceBroker::GetSettings().Load()) { CLog::Log(LOGFATAL, "CProfilesManager: unable to load settings for profile \"%s\"", m_profiles.at(index).getName().c_str()); return false; } CServiceBroker::GetSettings().SetLoaded(); CreateProfileFolders(); CServiceBroker::GetDatabaseManager().Initialize(); CServiceBroker::GetInputManager().LoadKeymaps(); CServiceBroker::GetInputManager().SetMouseEnabled(CServiceBroker::GetSettings().GetBool(CSettings::SETTING_INPUT_ENABLEMOUSE)); CGUIComponent* gui = CServiceBroker::GetGUI(); if (gui) { CGUIInfoManager& infoMgr = gui->GetInfoManager(); infoMgr.ResetCache(); infoMgr.GetInfoProviders().GetGUIControlsInfoProvider().ResetContainerMovingCache(); infoMgr.GetInfoProviders().GetLibraryInfoProvider().ResetLibraryBools(); } if (m_currentProfile != 0) { CXBMCTinyXML doc; if (doc.LoadFile(URIUtils::AddFileToFolder(GetUserDataFolder(), "guisettings.xml"))) { CServiceBroker::GetSettings().LoadSetting(doc.RootElement(), CSettings::SETTING_MASTERLOCK_MAXRETRIES); CServiceBroker::GetSettings().LoadSetting(doc.RootElement(), CSettings::SETTING_MASTERLOCK_STARTUPLOCK); } } CPasswordManager::GetInstance().Clear(); // to set labels - shares are reloaded #if !defined(TARGET_WINDOWS) && defined(HAS_DVD_DRIVE) MEDIA_DETECT::CDetectDVDMedia::UpdateState(); #endif // init windows CGUIMessage msg(GUI_MSG_NOTIFY_ALL, 0, 0, GUI_MSG_WINDOW_RESET); CServiceBroker::GetGUI()->GetWindowManager().SendMessage(msg); CUtil::DeleteDirectoryCache(); g_directoryCache.Clear(); return true; }