Showing the changes to interface/src/PerformanceManager.cpp (1 of 3 files). Show all
Unified · Split
| @@ -10,14 +10,20 @@ · 9 unmodified lines | ||
| 10 | 10 | // |
| 11 | 11 | #include "PerformanceManager.h" |
| 12 | 12 | |
| 13 | +#include "scripting/RenderScriptingInterface.h" | |
| 14 | + | |
| 13 | 15 | PerformanceManager::PerformanceManager() |
| 14 | 16 | { |
| 15 | 17 | } |
| 16 | 18 | |
| 17 | 19 | void PerformanceManager::setPerformanceProfile(PerformanceManager::PerformanceProfile performanceProfile) { |
| 18 | − _performanceProfileSettingLock.withWriteLock([&] { | |
| 19 | − _performanceProfileSetting.set((int)performanceProfile); | |
| 20 | − }); | |
| 20 | + if (getPerformanceProfile() != performanceProfile) { | |
| 21 | + _performanceProfileSettingLock.withWriteLock([&] { | |
| 22 | + _performanceProfileSetting.set((int)performanceProfile); | |
| 23 | + }); | |
| 24 | + | |
| 25 | + applyPerformanceProfile(performanceProfile); | |
| 26 | + } | |
| 21 | 27 | } |
| 22 | 28 | |
| 23 | 29 | PerformanceManager::PerformanceProfile PerformanceManager::getPerformanceProfile() const { |
| @@ -28,4 +34,30 @@ PerformanceManager::PerformanceProfile PerformanceManager::getPerformanceProfile · 4 unmodified lines | ||
| 28 | 34 | }); |
| 29 | 35 | |
| 30 | 36 | return profile; |
| 31 | −} | |
| 37 | +} | |
| 38 | + | |
| 39 | +void PerformanceManager::applyPerformanceProfile(PerformanceManager::PerformanceProfile performanceProfile) { | |
| 40 | + | |
| 41 | + switch (performanceProfile) { | |
| 42 | + case PerformanceProfile::HIGH: | |
| 43 | + RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); | |
| 44 | + RenderScriptingInterface::getInstance()->setShadowsEnabled(true); | |
| 45 | + qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE); | |
| 46 | + | |
| 47 | + break; | |
| 48 | + case PerformanceProfile::MID: | |
| 49 | + RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::DEFERRED); | |
| 50 | + RenderScriptingInterface::getInstance()->setShadowsEnabled(false); | |
| 51 | + qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE); | |
| 52 | + | |
| 53 | + break; | |
| 54 | + case PerformanceProfile::LOW: | |
| 55 | + RenderScriptingInterface::getInstance()->setRenderMethod(RenderScriptingInterface::RenderMethod::FORWARD); | |
| 56 | + RenderScriptingInterface::getInstance()->setShadowsEnabled(false); | |
| 57 | + qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::ECO); | |
| 58 | + | |
| 59 | + break; | |
| 60 | + default: | |
| 61 | + break; | |
| 62 | + } | |
| 63 | +} | |