From 03fdc94d2c3a1df03dd10fc303a309ee3a4b64f7 Mon Sep 17 00:00:00 2001 From: vakrilov Date: Thu, 6 Oct 2016 10:49:47 +0300 Subject: [PATCH] Make fps-meter callback execute in the same zone as they are created --- tns-core-modules/fps-meter/fps-meter.ts | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tns-core-modules/fps-meter/fps-meter.ts b/tns-core-modules/fps-meter/fps-meter.ts index cba2d6c7d..8fc2e8011 100644 --- a/tns-core-modules/fps-meter/fps-meter.ts +++ b/tns-core-modules/fps-meter/fps-meter.ts @@ -1,16 +1,16 @@ import fpsNative = require("fps-meter/fps-native"); -var callbacks = {}, - idCounter = 0, - _minFps = 1000, - framesRendered = 0, - frameStartTime = 0; +const callbacks = {}; +let idCounter = 0; +let _minFps = 1000; +let framesRendered = 0; +let frameStartTime = 0; function doFrame(currentTimeMillis: number) { - var fps = 0; + let fps = 0; if (frameStartTime > 0) { // take the span in milliseconds - var timeSpan = (currentTimeMillis - frameStartTime); + const timeSpan = (currentTimeMillis - frameStartTime); framesRendered++; if (timeSpan > 1000) { @@ -29,7 +29,7 @@ function doFrame(currentTimeMillis: number) { } } -var native: fpsNative.FPSCallback; +let native: fpsNative.FPSCallback; function ensureNative() { if (!native) { native = new fpsNative.FPSCallback(doFrame); @@ -69,9 +69,10 @@ export function stop() { } 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++; return id; @@ -84,8 +85,8 @@ export function removeCallback(id: number) { } function notify(fps) { - var callback: Function; - for (var id in callbacks) { + let callback: Function; + for (let id in callbacks) { callback = callbacks[id]; callback(fps, _minFps); }