Warning: session_start(): open(/var/lib/php/sessions/sess_qiu0h2qe6blpva5iht888nfco7, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
cm GazelleV > DynPrintLogAndEnabled {
switchable int x1;
switchable int y1;
switchable int w = screenWidth();
switchable int h = screenHeight();
switchable double maxFPS = 10;
switchable int previewWidth = 200;
switchable double statsEvery = 5;
PersistableThrowable lastProcessingError;
transient WithTimestamp> lastScreen;
transient new Average screenShotTime;
transient new Average iiTime;
transient Timestamp loopStarted;
transient new RestartableCountdown screenShotCountdown;
transient BWIntegralImage ii;
transient ImageSurface imageSurface;
transient Throwable currentProcessingError;
transient BufferedImage previewImage;
Rect area() { ret rect(x1, y1, w, h); }
start-thread {
dm_watchField enabled(r { if (enabled) dm_reload(); });
print("Screen bounds: " + allScreenBounds());
dm_doEvery(min(statsEvery, 10.0), statsEvery, r { if (enabled) printStats(); });
loopStarted = tsNow();
shoot();
}
void shoot enter {
if (!enabled) ret;
long targetTime = sysNow()+iround(1000/maxFPS);
long time = nanoTime();
try {
lastScreen = withTimestamp(okOrError(-> screenshot(area())));
screenShotTime.add(nanosToSeconds(nanoTime()-time));
if (lastScreen->isOK()) {
time = nanoTime();
//ii = BWIntegralImage(lastScreen!!);
ii = BWIntegralImage_luminosity(lastScreen!!);
iiTime.add(nanosToSeconds(nanoTime()-time));
previewImage = scaledBufferedImageFromBWIntegralImage(ii, previewWidth);
imageSurface?.setImage(previewImage);
}
currentProcessingError = null;
} catch print e {
setField(lastProcessingError := currentProcessingError = e);
sleepSeconds(60); // errors in processing are no good
}
screenShotCountdown.setTargetTime(targetTime, r shoot);
}
void printStats() { print(stats()); }
S stats() {
var screen = lastScreen?!;
ret formatColonProperties_noNulls(
"Monitored area", area(),
"Error", screen?.getError(),
"Last screenshot taken", lastScreen?.timeStamp(),
"Average time to take a screenshot", screenShotTime,
"Average time to make integral image", iiTime,
"Capacity left in first core", percentRatioStrOneDigit(freeInCore()),
"Total CPU used", percentRatioStrOneDigit((1-freeInCore())/numberOfCores()),
);
}
double freeInCore() {
ret ratio(toSeconds(screenShotCountdown.totalSleepTime),
elapsedSeconds(loopStarted));
}
visual hsplit(super, jscroll_center(imageSurface = doubleBufferedImageSurface_noAlpha()));
}