tns-core-modules
Version:
Telerik NativeScript Core Modules
78 lines (77 loc) • 1.72 kB
JavaScript
var fpsNative = require("fps-meter/fps-native");
var callbacks = {}, idCounter = 0, _minFps = 1000, framesRendered = 0, frameStartTime = 0;
function doFrame(currentTimeMillis) {
var fps = 0;
if (frameStartTime > 0) {
var timeSpan = (currentTimeMillis - frameStartTime);
framesRendered++;
if (timeSpan > 1000) {
fps = framesRendered * 1000 / timeSpan;
if (fps < _minFps) {
_minFps = fps;
}
notify(fps);
frameStartTime = currentTimeMillis;
framesRendered = 0;
}
}
else {
frameStartTime = currentTimeMillis;
}
}
var native;
function ensureNative() {
if (!native) {
native = new fpsNative.FPSCallback(doFrame);
}
}
function reset() {
_minFps = 1000;
frameStartTime = 0;
framesRendered = 0;
}
exports.reset = reset;
function running() {
if (!native) {
return false;
}
return native.running;
}
exports.running = running;
function minFps() {
return _minFps;
}
exports.minFps = minFps;
function start() {
ensureNative();
native.start();
}
exports.start = start;
function stop() {
if (!native) {
return;
}
native.stop();
reset();
}
exports.stop = stop;
function addCallback(callback) {
var id = idCounter;
callbacks[id] = callback;
idCounter++;
return id;
}
exports.addCallback = addCallback;
function removeCallback(id) {
if (id in callbacks) {
delete callbacks[id];
}
}
exports.removeCallback = removeCallback;
function notify(fps) {
var callback;
for (var id in callbacks) {
callback = callbacks[id];
callback(fps, _minFps);
}
}