Fixing/testing microphone dispose method

Fixes #46
This commit is contained in:
Yotam Mann 2014-12-19 12:20:26 -05:00
parent a730873ff1
commit 9e140a7605
2 changed files with 21 additions and 7 deletions

View file

@ -19,16 +19,18 @@ define(["Tone/core/Tone", "Tone/source/Source"], function(Tone){
* @private
*/
this._mediaStream = null;
/**
* @type {LocalMediaStream}
* @private
*/
this._stream = null;
/**
* @type {Object}
* @private
*/
this.constraints = {"audio" : true};
this._constraints = {"audio" : true};
//get the option
var self = this;
@ -49,7 +51,7 @@ define(["Tone/core/Tone", "Tone/source/Source"], function(Tone){
Tone.Microphone.prototype.start = function(){
if (this.state === Tone.Source.State.STOPPED){
this.state = Tone.Source.State.STARTED;
navigator.getUserMedia(this.constraints,
navigator.getUserMedia(this._constraints,
this._onStream.bind(this), this._onStreamError.bind(this));
}
};
@ -90,10 +92,12 @@ define(["Tone/core/Tone", "Tone/source/Source"], function(Tone){
*/
Tone.Microphone.prototype.dispose = function() {
Tone.Source.prototype.dispose.call(this);
this._stream.disconnect();
if (this._mediaStream){
this._mediaStream.disconnect();
this._stream = null;
this._mediaStream = null;
}
this._stream = null;
this._constraints = null;
};
//polyfill

View file

@ -2,8 +2,9 @@
define(["chai", "Tone/source/Player", "Tone/core/Master", "Tone/source/Oscillator",
"Tone/component/Recorder", "Tone/source/Noise", "tests/Core", "Tone/source/PulseOscillator", "tests/Common",
"Tone/source/PWMOscillator", "Tone/source/OmniOscillator"],
function(chai, Player, Master, Oscillator, Recorder, Noise, core, PulseOscillator, Test, PWMOscillator, OmniOscillator){
"Tone/source/PWMOscillator", "Tone/source/OmniOscillator", "Tone/source/Microphone"],
function(chai, Player, Master, Oscillator, Recorder, Noise, core, PulseOscillator, Test,
PWMOscillator, OmniOscillator, Microphone){
var expect = chai.expect;
@ -617,4 +618,13 @@ function(chai, Player, Master, Oscillator, Recorder, Noise, core, PulseOscillato
});
});
describe("Tone.Microphone", function(){
this.timeout(maxTimeout);
it("can be created and disposed", function(){
var mic = new Microphone();
mic.dispose();
Test.wasDisposed(mic);
});
});
});