Repository: cordova-plugin-camera
Updated Branches:
  refs/heads/master 06fcbf05a -> e48a7e5c5


CB-10502 Fix camera plugin exception in Chrome when click capture.

The MediaStream.stop() method has been deprecated as of Chrome 47. We were 
using it, and it was generating an exception.

If stop() method is not found, instead stop each individual track (the new way 
of doing it).


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/commit/e48a7e5c
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/tree/e48a7e5c
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/diff/e48a7e5c

Branch: refs/heads/master
Commit: e48a7e5c5cffe8d9bab6eeff33feeb2747930ace
Parents: 06fcbf0
Author: Tim Barham <tbar...@microsoft.com>
Authored: Tue Feb 2 16:25:00 2016 +1000
Committer: Tim Barham <tbar...@microsoft.com>
Committed: Tue Feb 2 16:31:39 2016 +1000

----------------------------------------------------------------------
 src/browser/CameraProxy.js | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/blob/e48a7e5c/src/browser/CameraProxy.js
----------------------------------------------------------------------
diff --git a/src/browser/CameraProxy.js b/src/browser/CameraProxy.js
index 0944e58..15c3578 100644
--- a/src/browser/CameraProxy.js
+++ b/src/browser/CameraProxy.js
@@ -37,7 +37,7 @@ function takePicture(success, error, opts) {
                 var imageData = readerEvent.target.result;
 
                 return success(imageData.substr(imageData.indexOf(',') + 1));
-            }
+            };
 
             reader.readAsDataURL(inputEvent.target.files[0]);
         };
@@ -60,18 +60,25 @@ function capture(success, errorCallback) {
         // create a canvas and capture a frame from video stream
         var canvas = document.createElement('canvas');
         canvas.getContext('2d').drawImage(video, 0, 0, 320, 240);
-        
+
         // convert image stored in canvas to base64 encoded image
         var imageData = canvas.toDataURL('img/png');
         imageData = imageData.replace('data:image/png;base64,', '');
 
-        // stop video stream, remove video and button
-        localMediaStream.stop();
+        // stop video stream, remove video and button.
+        // Note that MediaStream.stop() is deprecated as of Chrome 47.
+        if (localMediaStream.stop) {
+            localMediaStream.stop();
+        } else {
+            localMediaStream.getTracks().forEach(function (track) {
+                track.stop();
+            });
+        }
         video.parentNode.removeChild(video);
         button.parentNode.removeChild(button);
 
         return success(imageData);
-    }
+    };
 
     navigator.getUserMedia = navigator.getUserMedia ||
                              navigator.webkitGetUserMedia ||
@@ -85,7 +92,7 @@ function capture(success, errorCallback) {
 
         document.body.appendChild(video);
         document.body.appendChild(button);
-    }
+    };
 
     if (navigator.getUserMedia) {
         navigator.getUserMedia({video: true, audio: true}, successCallback, 
errorCallback);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to