M pc/devvga.c => pc/devvga.c +2 -1
@@ 179,7 179,8 @@ vgaread(Chan* c, void* a, long n, vlong off)
physgscreenr.max.x, physgscreenr.max.y);
}
- len += snprint(p+len, READSTR-len, "blanktime %lud\n", blanktime);
+ len += snprint(p+len, READSTR-len, "blank time %lud idle %d state %s\n",
+ blanktime, drawidletime(), scr->isblank ? "off" : "on");
len += snprint(p+len, READSTR-len, "hwaccel %s\n", hwaccel ? "on" : "off");
len += snprint(p+len, READSTR-len, "hwblank %s\n", hwblank ? "on" : "off");
len += snprint(p+len, READSTR-len, "panning %s\n", panning ? "on" : "off");
M pc/screen.c => pc/screen.c +1 -0
@@ 385,6 385,7 @@ blankscreen(int blank)
VGAscr *scr;
scr = &vgascreen[0];
+ scr->isblank = blank;
if(hwblank){
if(scr->blank)
scr->blank(scr, blank);
M pc/screen.h => pc/screen.h +2 -0
@@ 114,6 114,7 @@ struct VGAscr {
int (*scroll)(VGAscr*, Rectangle, Rectangle);
void (*blank)(VGAscr*, int);
ulong id; /* internal identifier for driver use */
+ int isblank;
};
extern VGAscr vgascreen[];
@@ 146,6 147,7 @@ extern int drawhasclients(void);
extern ulong blanktime;
extern void setscreenimageclipr(Rectangle);
extern void drawflush(void);
+extern int drawidletime(void);
/* vga.c */
extern void vgascreenwin(VGAscr*);
M port/devdraw.c => port/devdraw.c +6 -0
@@ 2028,3 2028,9 @@ drawactive(int active)
sdraw.blanktime++;
}
}
+
+int
+drawidletime(void)
+{
+ return TK2SEC(sdraw.blanktime)/60;
+}