cpu module: Reuse getLoad of load module
This commit is contained in:
parent
d1602e383c
commit
8d7341da6e
|
@ -21,8 +21,6 @@ class Cpu : public ALabel {
|
||||||
auto update() -> void override;
|
auto update() -> void override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double getCpuLoad();
|
|
||||||
|
|
||||||
std::vector<std::tuple<size_t, size_t>> prev_times_;
|
std::vector<std::tuple<size_t, size_t>> prev_times_;
|
||||||
|
|
||||||
util::SleeperThread thread_;
|
util::SleeperThread thread_;
|
||||||
|
|
|
@ -20,8 +20,10 @@ class Load : public ALabel {
|
||||||
virtual ~Load() = default;
|
virtual ~Load() = default;
|
||||||
auto update() -> void override;
|
auto update() -> void override;
|
||||||
|
|
||||||
|
// This is a static member because it is also used by the cpu module.
|
||||||
|
static std::tuple<double, double, double> getLoad();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::tuple<double, double, double> getLoad();
|
|
||||||
|
|
||||||
util::SleeperThread thread_;
|
util::SleeperThread thread_;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "modules/cpu.hpp"
|
#include "modules/cpu.hpp"
|
||||||
#include "modules/cpu_frequency.hpp"
|
#include "modules/cpu_frequency.hpp"
|
||||||
#include "modules/cpu_usage.hpp"
|
#include "modules/cpu_usage.hpp"
|
||||||
|
#include "modules/load.hpp"
|
||||||
|
|
||||||
// In the 80000 version of fmt library authors decided to optimize imports
|
// In the 80000 version of fmt library authors decided to optimize imports
|
||||||
// and moved declarations required for fmt::dynamic_format_arg_store in new
|
// and moved declarations required for fmt::dynamic_format_arg_store in new
|
||||||
|
@ -21,7 +22,7 @@ waybar::modules::Cpu::Cpu(const std::string& id, const Json::Value& config)
|
||||||
|
|
||||||
auto waybar::modules::Cpu::update() -> void {
|
auto waybar::modules::Cpu::update() -> void {
|
||||||
// TODO: as creating dynamic fmt::arg arrays is buggy we have to calc both
|
// TODO: as creating dynamic fmt::arg arrays is buggy we have to calc both
|
||||||
auto cpu_load = getCpuLoad();
|
auto [load1, load5, load15] = Load::getLoad();
|
||||||
auto [cpu_usage, tooltip] = CpuUsage::getCpuUsage(prev_times_);
|
auto [cpu_usage, tooltip] = CpuUsage::getCpuUsage(prev_times_);
|
||||||
auto [max_frequency, min_frequency, avg_frequency] = CpuFrequency::getCpuFrequency();
|
auto [max_frequency, min_frequency, avg_frequency] = CpuFrequency::getCpuFrequency();
|
||||||
if (tooltipEnabled()) {
|
if (tooltipEnabled()) {
|
||||||
|
@ -40,7 +41,7 @@ auto waybar::modules::Cpu::update() -> void {
|
||||||
event_box_.show();
|
event_box_.show();
|
||||||
auto icons = std::vector<std::string>{state};
|
auto icons = std::vector<std::string>{state};
|
||||||
fmt::dynamic_format_arg_store<fmt::format_context> store;
|
fmt::dynamic_format_arg_store<fmt::format_context> store;
|
||||||
store.push_back(fmt::arg("load", cpu_load));
|
store.push_back(fmt::arg("load", load1));
|
||||||
store.push_back(fmt::arg("usage", total_usage));
|
store.push_back(fmt::arg("usage", total_usage));
|
||||||
store.push_back(fmt::arg("icon", getIcon(total_usage, icons)));
|
store.push_back(fmt::arg("icon", getIcon(total_usage, icons)));
|
||||||
store.push_back(fmt::arg("max_frequency", max_frequency));
|
store.push_back(fmt::arg("max_frequency", max_frequency));
|
||||||
|
@ -59,11 +60,3 @@ auto waybar::modules::Cpu::update() -> void {
|
||||||
// Call parent update
|
// Call parent update
|
||||||
ALabel::update();
|
ALabel::update();
|
||||||
}
|
}
|
||||||
|
|
||||||
double waybar::modules::Cpu::getCpuLoad() {
|
|
||||||
double load[1];
|
|
||||||
if (getloadavg(load, 1) != -1) {
|
|
||||||
return std::ceil(load[0] * 100.0) / 100.0;
|
|
||||||
}
|
|
||||||
throw std::runtime_error("Can't get Cpu load");
|
|
||||||
}
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ waybar::modules::Load::Load(const std::string& id, const Json::Value& config)
|
||||||
|
|
||||||
auto waybar::modules::Load::update() -> void {
|
auto waybar::modules::Load::update() -> void {
|
||||||
// TODO: as creating dynamic fmt::arg arrays is buggy we have to calc both
|
// TODO: as creating dynamic fmt::arg arrays is buggy we have to calc both
|
||||||
auto [load1, load5, load15] = getLoad();
|
auto [load1, load5, load15] = Load::getLoad();
|
||||||
if (tooltipEnabled()) {
|
if (tooltipEnabled()) {
|
||||||
auto tooltip = fmt::format("Load 1: {}\nLoad 5: {}\nLoad 15: {}", load1, load5, load15);
|
auto tooltip = fmt::format("Load 1: {}\nLoad 5: {}\nLoad 15: {}", load1, load5, load15);
|
||||||
label_.set_tooltip_text(tooltip);
|
label_.set_tooltip_text(tooltip);
|
||||||
|
|
Loading…
Reference in New Issue