diff --git a/build.gradle b/build.gradle index 8a1f6985..bebb0bd8 100644 --- a/build.gradle +++ b/build.gradle @@ -87,7 +87,7 @@ dependencies { implementation('com.fasterxml.jackson.core:jackson-databind:2.17.2') implementation('com.sparrowwallet:hummingbird:1.7.4') implementation('co.nstant.in:cbor:0.9') - implementation('org.openpnp:openpnp-capture-java:0.0.28-3') + implementation('org.openpnp:openpnp-capture-java:0.0.28-4') implementation("io.matthewnelson.kotlin-components:kmp-tor:${vTor}-${vKmpTor}") { exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-common' } diff --git a/src/main/java/com/sparrowwallet/sparrow/control/WebcamService.java b/src/main/java/com/sparrowwallet/sparrow/control/WebcamService.java index 6ae03ce7..425aa2e9 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/WebcamService.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/WebcamService.java @@ -45,7 +45,7 @@ public class WebcamService extends ScheduledService { private static final int QR_SAMPLE_PERIOD_MILLIS = 200; - private final OpenPnpCapture capture; + private OpenPnpCapture capture; private CaptureStream stream; private PropertyLimits zoomLimits; private long lastQrSampleTime; @@ -82,7 +82,6 @@ public class WebcamService extends ScheduledService { } public WebcamService(WebcamResolution requestedResolution, CaptureDevice requestedDevice) { - this.capture = new OpenPnpCapture(); this.resolution = requestedResolution; this.device = requestedDevice; this.lastQrSampleTime = System.currentTimeMillis(); @@ -96,6 +95,8 @@ public class WebcamService extends ScheduledService { @Override protected Image call() throws Exception { try { + createCapture(); + if(stream == null) { devices = capture.getDevices(); @@ -178,6 +179,12 @@ public class WebcamService extends ScheduledService { }; } + private synchronized void createCapture() { + if(capture == null) { + capture = new OpenPnpCapture(); + } + } + @Override public void reset() { stream = null;