Merge pull request #2851 from NativeScript/zoned-fps-meter

Make fps-meter callback execute in the same zone as they are created
This commit is contained in:
Alexander Vakrilov
2016-10-07 16:28:13 +03:00
committed by GitHub

View File

@ -1,16 +1,16 @@
import fpsNative = require("fps-meter/fps-native"); import fpsNative = require("fps-meter/fps-native");
var callbacks = {}, const callbacks = {};
idCounter = 0, let idCounter = 0;
_minFps = 1000, let _minFps = 1000;
framesRendered = 0, let framesRendered = 0;
frameStartTime = 0; let frameStartTime = 0;
function doFrame(currentTimeMillis: number) { function doFrame(currentTimeMillis: number) {
var fps = 0; let fps = 0;
if (frameStartTime > 0) { if (frameStartTime > 0) {
// take the span in milliseconds // take the span in milliseconds
var timeSpan = (currentTimeMillis - frameStartTime); const timeSpan = (currentTimeMillis - frameStartTime);
framesRendered++; framesRendered++;
if (timeSpan > 1000) { if (timeSpan > 1000) {
@ -29,7 +29,7 @@ function doFrame(currentTimeMillis: number) {
} }
} }
var native: fpsNative.FPSCallback; let native: fpsNative.FPSCallback;
function ensureNative() { function ensureNative() {
if (!native) { if (!native) {
native = new fpsNative.FPSCallback(doFrame); native = new fpsNative.FPSCallback(doFrame);
@ -69,9 +69,10 @@ export function stop() {
} }
export function addCallback(callback: (fps: number, minFps?: number) => void): number { export function addCallback(callback: (fps: number, minFps?: number) => void): number {
var id = idCounter; const id = idCounter;
callbacks[id] = callback; // Wrap all calback in zonedCallback so that they work with the current zone.
callbacks[id] = zonedCallback(callback);
idCounter++; idCounter++;
return id; return id;
@ -84,8 +85,8 @@ export function removeCallback(id: number) {
} }
function notify(fps) { function notify(fps) {
var callback: Function; let callback: Function;
for (var id in callbacks) { for (let id in callbacks) {
callback = callbacks[id]; callback = callbacks[id];
callback(fps, _minFps); callback(fps, _minFps);
} }