Merge pull request #160 from Microsoft/sensorfixes
Sensor fixes. Fix race condition
This commit is contained in:
		@@ -94,6 +94,7 @@ namespace sensors {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        _update(prev: number, curr: number) {
 | 
			
		||||
            if (curr == null) return;
 | 
			
		||||
            if (this.mode == ColorSensorMode.Color)
 | 
			
		||||
                control.raiseEvent(this._id, this._colorEventValue(curr));
 | 
			
		||||
            else
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ namespace pxsim {
 | 
			
		||||
 | 
			
		||||
        protected mode: number;
 | 
			
		||||
        protected valueChanged: boolean;
 | 
			
		||||
        protected modeChanged: boolean;
 | 
			
		||||
 | 
			
		||||
        constructor(port: number) {
 | 
			
		||||
            super(port);
 | 
			
		||||
@@ -24,6 +25,8 @@ namespace pxsim {
 | 
			
		||||
 | 
			
		||||
        setMode(mode: number) {
 | 
			
		||||
            this.mode = mode;
 | 
			
		||||
            this.changed = true;
 | 
			
		||||
            this.modeChanged = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        getMode() {
 | 
			
		||||
@@ -44,6 +47,12 @@ namespace pxsim {
 | 
			
		||||
            return res;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        modeChange() {
 | 
			
		||||
            const res = this.modeChanged;
 | 
			
		||||
            this.modeChanged = false;
 | 
			
		||||
            return res;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        setChangedState() {
 | 
			
		||||
            this.changed = true;
 | 
			
		||||
            this.valueChanged = false;
 | 
			
		||||
 
 | 
			
		||||
@@ -183,8 +183,8 @@ namespace pxsim.visuals {
 | 
			
		||||
            this.layoutView.updateTheme(theme);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private getControlForNode(id: NodeType, port: number) {
 | 
			
		||||
            if (this.cachedControlNodes[id] && this.cachedControlNodes[id][port]) {
 | 
			
		||||
        private getControlForNode(id: NodeType, port: number, useCache = true) {
 | 
			
		||||
            if (useCache && this.cachedControlNodes[id] && this.cachedControlNodes[id][port]) {
 | 
			
		||||
                return this.cachedControlNodes[id][port];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -406,7 +406,7 @@ namespace pxsim.visuals {
 | 
			
		||||
                if (view) {
 | 
			
		||||
                    const isSelected = EV3View.isPreviousInputSelected(index, node.id) || view.getSelected();
 | 
			
		||||
                    if (isSelected && !view.getSelected()) view.setSelected(true);
 | 
			
		||||
                    const control = isSelected ? this.getControlForNode(node.id, index) : undefined;
 | 
			
		||||
                    const control = isSelected ? this.getControlForNode(node.id, index, !node.modeChange()) : undefined;
 | 
			
		||||
                    const closeIcon = control ? this.getCloseIconView() : undefined;
 | 
			
		||||
                    this.layoutView.setInput(index, view, control, closeIcon);
 | 
			
		||||
                    view.updateState();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user