summaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-03-15 15:50:12 +0100
committerlouis <louis.braun@gmx.de>2015-03-15 15:50:12 +0100
commitb6e6065b0f6951042e78e6babe757393596a8a42 (patch)
treedbd09ffca5d46f13a091c849868b2b410236e646 /views
parenta7d01384fcae390e3e3534b92a288ba4f6f0bd44 (diff)
downloadvdr-plugin-skindesigner-b6e6065b0f6951042e78e6babe757393596a8a42.tar.gz
vdr-plugin-skindesigner-b6e6065b0f6951042e78e6babe757393596a8a42.tar.bz2
added <systemmemory> viewelement in main menu
Diffstat (limited to 'views')
-rw-r--r--views/displaymenuview.c40
-rw-r--r--views/displaymenuview.h2
2 files changed, 41 insertions, 1 deletions
diff --git a/views/displaymenuview.c b/views/displaymenuview.c
index 1921c95..22b6084 100644
--- a/views/displaymenuview.c
+++ b/views/displaymenuview.c
@@ -1,6 +1,7 @@
#define __STL_CONFIG_H
#include <fstream>
#include <iostream>
+#include <sys/sysinfo.h>
#include <vdr/menu.h>
#include <vdr/videodir.h>
#include "displaymenuview.h"
@@ -224,6 +225,7 @@ void cDisplayMenuView::Action(void) {
cDisplayMenuMainView::cDisplayMenuMainView(cTemplateView *tmplView, bool menuInit) : cDisplayMenuView(tmplView, menuInit) {
initial = true;
lastSystemLoad = 0.0;
+ lastMemUsage = -1;
InitDevices();
}
@@ -243,9 +245,10 @@ void cDisplayMenuMainView::DrawStaticViewElements(void) {
bool cDisplayMenuMainView::DrawDynamicViewElements(void) {
bool loadChanged = DrawLoad();
+ bool memChanged = DrawMemory();
bool devicesChanged = DrawDevices();
initial = false;
- return loadChanged || devicesChanged;
+ return loadChanged || memChanged || devicesChanged;
}
@@ -415,6 +418,41 @@ bool cDisplayMenuMainView::DrawLoad(void) {
return true;
}
+bool cDisplayMenuMainView::DrawMemory(void) {
+ if (!ExecuteViewElement(veSystemMemory)) {
+ return false;
+ }
+ struct sysinfo memInfo;
+ sysinfo (&memInfo);
+
+ long long totalMem = memInfo.totalram;
+ totalMem += memInfo.totalswap;
+ totalMem *= memInfo.mem_unit;
+ int totalMemMB = totalMem / 1024 / 1024;
+
+ long long usedMem = memInfo.totalram - memInfo.freeram;
+ usedMem += memInfo.totalswap - memInfo.freeswap;
+ usedMem *= memInfo.mem_unit;
+ int usedMemMB = usedMem / 1024 / 1024;
+
+ if (lastMemUsage == usedMemMB) {
+ return false;
+ }
+ lastMemUsage = usedMemMB;
+
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+ intTokens.insert(pair<string,int>("totalmem", totalMemMB));
+ intTokens.insert(pair<string,int>("usedmem", usedMemMB));
+ if (totalMemMB > 0)
+ intTokens.insert(pair<string,int>("usedmempercent", usedMemMB * 100 / totalMemMB));
+
+ ClearViewElement(veSystemMemory);
+ DrawViewElement(veSystemMemory, &stringTokens, &intTokens);
+
+ return true;
+}
+
void cDisplayMenuMainView::DrawTemperatures(void) {
if (!ExecuteViewElement(veTemperatures)) {
return;
diff --git a/views/displaymenuview.h b/views/displaymenuview.h
index c7aa7eb..3bc64b8 100644
--- a/views/displaymenuview.h
+++ b/views/displaymenuview.h
@@ -38,9 +38,11 @@ class cDisplayMenuMainView : public cDisplayMenuView {
private:
bool initial;
double lastSystemLoad;
+ int lastMemUsage;
void DrawTimers(void);
void DrawDiscUsage(void);
bool DrawLoad(void);
+ bool DrawMemory(void);
void DrawTemperatures(void);
bool DrawDevices(void);
void DrawCurrentSchedule(void);