diff --git a/src/js/media/media.js b/src/js/media/media.js index 80f4c18de2..4c7a50d8c6 100644 --- a/src/js/media/media.js +++ b/src/js/media/media.js @@ -53,20 +53,14 @@ vjs.MediaTechController = vjs.Component.extend({ * any controls will still keep the user active */ vjs.MediaTechController.prototype.initControlsListeners = function(){ - var player, activateControls; + var player; player = this.player(); - activateControls = function(){ - if (player.controls() && !player.usingNativeControls()) { - this.addControlsListeners(); - } - }; - // Set up event listeners once the tech is ready and has an element to apply // listeners to - this.ready(activateControls); - this.on(player, 'controlsenabled', activateControls); + this.ready(this.activateControls); + this.on(player, 'controlsenabled', this.activateControls); this.on(player, 'controlsdisabled', this.removeControlsListeners); // if we're loading the playback object after it has started loading or playing the @@ -81,6 +75,15 @@ vjs.MediaTechController.prototype.initControlsListeners = function(){ }); }; +vjs.MediaTechController.prototype.desactivateControls = function () { + var player; + + player = this.player(); + + this.off(player, 'controlsenabled', this.activateControls); + this.off(player, 'controlsdisabled', this.removeControlsListeners); +}; + vjs.MediaTechController.prototype.addControlsListeners = function(){ var userWasActive; @@ -133,6 +136,19 @@ vjs.MediaTechController.prototype.removeControlsListeners = function(){ this.off('mousedown'); }; +/** + * Activate contols listeners handler + */ +vjs.MediaTechController.prototype.activateControls = function () { + var player; + + player = this.player(); + + if (player.controls() && !player.usingNativeControls()) { + this.addControlsListeners(); + } +}; + /** * Handle a click on the media element. By default will play/pause the media. */ @@ -218,6 +234,7 @@ vjs.MediaTechController.prototype.manualTimeUpdatesOff = function(){ var player = this.player_; this.manualTimeUpdates = false; + this.stopTrackingCurrentTime(); this.off(player, 'play', this.trackCurrentTime); this.off(player, 'pause', this.stopTrackingCurrentTime); @@ -239,7 +256,8 @@ vjs.MediaTechController.prototype.stopTrackingCurrentTime = function(){ this.player().trigger('timeupdate'); }; -vjs.MediaTechController.prototype.dispose = function() { +vjs.MediaTechController.prototype.dispose = function(){ + this.desactivateControls(); // Turn off any manual progress or timeupdate tracking if (this.manualProgress) { this.manualProgressOff(); } @@ -248,7 +266,7 @@ vjs.MediaTechController.prototype.dispose = function() { vjs.Component.prototype.dispose.call(this); }; -vjs.MediaTechController.prototype.setCurrentTime = function() { +vjs.MediaTechController.prototype.setCurrentTime = function(){ // improve the accuracy of manual timeupdates if (this.manualTimeUpdates) { this.player().trigger('timeupdate'); } };