That is solved when using the unfinished OpenGL driver. But that isn't the only way!
Minimal C code
Code: Select all
#include <X11/extensions/scrnsaver.h>
#include <stdio.h>
int main(void) {
Display *dpy = XOpenDisplay(NULL);
if (!dpy) {
return(1);
}
XScreenSaverInfo *info = XScreenSaverAllocInfo();
XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
printf("%u\n", info->idle);
return(0);
}
Code: Select all
#!/bin/bash
idle=false
idleAfter=480000
while true; do
idleTimeMillis=$(./getIdle)
if [[ $idle = false && $idleTimeMillis -gt $idleAfter ]] ; then
idle=true
vcgencmd display_power 0
fi
if [[ $idle = true && $idleTimeMillis -lt $idleAfter ]] ; then
idle=false
vcgencmd display_power 1
fi
sleep 4 # polling interval
done
I hope something like this gets into Raspbian.