From 655bc6453ad05cf70b16d84835bf0e2e6a83a462 Mon Sep 17 00:00:00 2001 From: Laszlo Radics Date: Wed, 17 Dec 2014 03:54:27 +0100 Subject: [PATCH] Release camera when stop is called --- src/camera_access.js | 10 +++++++++- src/quagga.js | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/camera_access.js b/src/camera_access.js index 9d754bf..20ca97f 100644 --- a/src/camera_access.js +++ b/src/camera_access.js @@ -3,7 +3,8 @@ define(function() { "use strict"; - + var streamRef; + /** * Wraps browser-specific getUserMedia * @param {Object} constraints @@ -12,6 +13,7 @@ define(function() { */ function getUserMedia(constraints, success, failure) { navigator.getUserMedia(constraints, function(stream) { + streamRef = stream; var videoSrc = (window.URL && window.URL.createObjectURL(stream)) || stream; success.apply(null, [videoSrc]); }, failure); @@ -89,6 +91,12 @@ define(function() { return { request : function(video, callback) { request(video, callback); + }, + release : function() { + var tracks = streamRef && streamRef.getVideoTracks(); + if (tracks.length) + tracks[0].stop(); + streamRef = null; } }; }); \ No newline at end of file diff --git a/src/quagga.js b/src/quagga.js index f1de427..b7e55f1 100644 --- a/src/quagga.js +++ b/src/quagga.js @@ -191,6 +191,9 @@ function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, Ba }, stop : function() { _stopped = true; + if (_config.inputStream.type == "LiveStream") { + CameraAccess.release(); + } }, onDetected : function(callback) { Events.subscribe("detected", callback);