summaryrefslogtreecommitdiff
path: root/src/env.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-09-11 23:33:23 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-09-11 23:33:23 -0400
commit09f98576e882a5fef68cdefdff939834a8782eaa (patch)
treeb3094bf7e84d5479b2e6806b0c5103788cf871d5 /src/env.cpp
parent9c59c739d4ef9a4479ac849badc998b200fddb13 (diff)
added env::getFileSecurity()
Environment gets stuff on demand
Diffstat (limited to 'src/env.cpp')
-rw-r--r--src/env.cpp31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/env.cpp b/src/env.cpp
index 411443c5..e2b85560 100644
--- a/src/env.cpp
+++ b/src/env.cpp
@@ -57,10 +57,7 @@ Console::~Console()
Environment::Environment()
- : m_windows(new WindowsInfo), m_metrics(new Metrics)
{
- m_modules = getLoadedModules();
- m_security = getSecurityProducts();
}
// anchor
@@ -68,48 +65,64 @@ Environment::~Environment() = default;
const std::vector<Module>& Environment::loadedModules() const
{
+ if (m_modules.empty()){
+ m_modules = getLoadedModules();
+ }
+
return m_modules;
}
const WindowsInfo& Environment::windowsInfo() const
{
+ if (!m_windows) {
+ m_windows.reset(new WindowsInfo);
+ }
+
return *m_windows;
}
const std::vector<SecurityProduct>& Environment::securityProducts() const
{
+ if (m_security.empty()) {
+ m_security = getSecurityProducts();
+ }
+
return m_security;
}
const Metrics& Environment::metrics() const
{
+ if (!m_metrics) {
+ m_metrics.reset(new Metrics);
+ }
+
return *m_metrics;
}
void Environment::dump(const Settings& s) const
{
- log::debug("windows: {}", m_windows->toString());
+ log::debug("windows: {}", windowsInfo().toString());
- if (m_windows->compatibilityMode()) {
+ if (windowsInfo().compatibilityMode()) {
log::warn("MO seems to be running in compatibility mode");
}
log::debug("security products:");
- for (const auto& sp : m_security) {
+ for (const auto& sp : securityProducts()) {
log::debug(" . {}", sp.toString());
}
log::debug("modules loaded in process:");
- for (const auto& m : m_modules) {
+ for (const auto& m : loadedModules()) {
log::debug(" . {}", m.toString());
}
log::debug("displays:");
- for (const auto& d : m_metrics->displays()) {
+ for (const auto& d : metrics().displays()) {
log::debug(" . {}", d.toString());
}
- const auto r = m_metrics->desktopGeometry();
+ const auto r = metrics().desktopGeometry();
log::debug(
"desktop geometry: ({},{})-({},{})",
r.left(), r.top(), r.right(), r.bottom());