mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-24 12:46:45 +00:00
fix camera selection issues on linux
This commit is contained in:
parent
ada45ee75b
commit
422713ff53
2 changed files with 26 additions and 2 deletions
|
@ -131,6 +131,9 @@ public class QRScanDialog extends Dialog<QRScanDialog.Result> {
|
||||||
if(org.controlsfx.tools.Platform.getCurrent() == org.controlsfx.tools.Platform.WINDOWS &&
|
if(org.controlsfx.tools.Platform.getCurrent() == org.controlsfx.tools.Platform.WINDOWS &&
|
||||||
nested.getMessage().startsWith("Library 'OpenIMAJGrabber' was not loaded successfully from file")) {
|
nested.getMessage().startsWith("Library 'OpenIMAJGrabber' was not loaded successfully from file")) {
|
||||||
exception = new WebcamDependencyException("Your system is missing a dependency required for the webcam. Follow the link below for more details.\n\n[https://sparrowwallet.com/docs/faq.html#your-system-is-missing-a-dependency-for-the-webcam]", exception);
|
exception = new WebcamDependencyException("Your system is missing a dependency required for the webcam. Follow the link below for more details.\n\n[https://sparrowwallet.com/docs/faq.html#your-system-is-missing-a-dependency-for-the-webcam]", exception);
|
||||||
|
} else if(nested.getMessage().startsWith("Cannot start native grabber") && Config.get().getWebcamDevice() != null) {
|
||||||
|
exception = new WebcamOpenException("Cannot open configured webcam " + Config.get().getWebcamDevice() + ", reverting to the default webcam");
|
||||||
|
Config.get().setWebcamDevice(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Throwable result = exception;
|
final Throwable result = exception;
|
||||||
|
@ -597,7 +600,7 @@ public class QRScanDialog extends Dialog<QRScanDialog.Result> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(button instanceof Region) {
|
if(button instanceof Region) {
|
||||||
((Region)button).setMaxWidth(140);
|
((Region)button).setMaxWidth(150);
|
||||||
}
|
}
|
||||||
|
|
||||||
button.disableProperty().bind(webcamService.openingProperty());
|
button.disableProperty().bind(webcamService.openingProperty());
|
||||||
|
@ -783,6 +786,24 @@ public class QRScanDialog extends Dialog<QRScanDialog.Result> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class WebcamOpenException extends ScanException {
|
||||||
|
public WebcamOpenException() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebcamOpenException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebcamOpenException(Throwable cause) {
|
||||||
|
super(cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebcamOpenException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class ScanDelayCalculator implements WebcamUpdater.DelayCalculator {
|
public static class ScanDelayCalculator implements WebcamUpdater.DelayCalculator {
|
||||||
public long calculateDelay(long snapshotDuration, double deviceFps) {
|
public long calculateDelay(long snapshotDuration, double deviceFps) {
|
||||||
return Math.max(SCAN_PERIOD_MILLIS - snapshotDuration, 0L);
|
return Math.max(SCAN_PERIOD_MILLIS - snapshotDuration, 0L);
|
||||||
|
|
|
@ -20,7 +20,10 @@ public class WebcamScanDriver extends WebcamDefaultDriver {
|
||||||
List<WebcamDevice> scanDevices = new ArrayList<>();
|
List<WebcamDevice> scanDevices = new ArrayList<>();
|
||||||
for(WebcamDevice device : devices) {
|
for(WebcamDevice device : devices) {
|
||||||
WebcamDefaultDevice defaultDevice = (WebcamDefaultDevice)device;
|
WebcamDefaultDevice defaultDevice = (WebcamDefaultDevice)device;
|
||||||
scanDevices.add(new WebcamScanDevice(defaultDevice.getDeviceRef()));
|
WebcamScanDevice scanDevice = new WebcamScanDevice(defaultDevice.getDeviceRef());
|
||||||
|
if(scanDevices.stream().noneMatch(dev -> ((WebcamScanDevice)dev).getDeviceName().equals(scanDevice.getDeviceName()))) {
|
||||||
|
scanDevices.add(scanDevice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<WebcamDevice> newDevices = new ArrayList<>(scanDevices);
|
List<WebcamDevice> newDevices = new ArrayList<>(scanDevices);
|
||||||
|
|
Loading…
Reference in a new issue