From e8256ef866effb8d24e81ec0672869de45df13ec Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Sun, 16 Sep 2012 01:22:21 -0700 Subject: [PATCH] Spark._currentRenderer not an EnvironmentVariable This isn't the kind of dynamic var that should persist into timer callbacks, it should just be on the stack. Also cuts dependence of spark on dynamics. --- admin/spark-standalone.sh | 1 - packages/spark/spark.js | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/admin/spark-standalone.sh b/admin/spark-standalone.sh index 1c68f3116b..2b38d4a5a3 100755 --- a/admin/spark-standalone.sh +++ b/admin/spark-standalone.sh @@ -8,7 +8,6 @@ PACKAGES_DIR=`dirname $0`/../packages echo 'Meteor = {};' cat $PACKAGES_DIR/uuid/uuid.js -cat $PACKAGES_DIR/meteor/dynamics_browser.js cat $PACKAGES_DIR/deps/deps.js cat $PACKAGES_DIR/liverange/liverange.js cat $PACKAGES_DIR/universal-events/listener.js diff --git a/packages/spark/spark.js b/packages/spark/spark.js index 304800ffc3..8d9a6efc33 100644 --- a/packages/spark/spark.js +++ b/packages/spark/spark.js @@ -29,7 +29,20 @@ Spark = {}; -Spark._currentRenderer = new Meteor.EnvironmentVariable; +Spark._currentRenderer = (function () { + var current = null; + return { + get: function () { + return current; + }, + withValue: function (v, func) { + var previous = current; + current = v; + try { return func(); } + finally { current = previous; } + } + }; +})(); Spark._TAG = "_spark_" + Meteor.uuid(); // XXX document contract for each type of annotation?