Skip to content

Commit

Permalink
Fix camera ratio/resolution change on Qt < 6.7
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvn committed Sep 6, 2024
1 parent 64168e8 commit ce6eb65
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions src/qml/QFieldCamera.qml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Popup {
if (!cameraPicked) {
camera.cameraDevice = mediaDevices.defaultVideoInput;
}
camera.applyCameraFormat();
camera.applyCameraFormat(false);
}

QfCameraPermission {
Expand Down Expand Up @@ -113,9 +113,10 @@ Popup {
camera: Camera {
id: camera

active: cameraItem.visible && cameraPermission.status === Qt.PermissionStatus.Granted
property bool restarting: false
active: cameraItem.visible && cameraPermission.status === Qt.PermissionStatus.Granted && !restarting

function applyCameraFormat() {
function applyCameraFormat(restart) {
if (cameraSettings.pixelFormat != 0) {
let fallbackIndex = -1;
let i = 0;
Expand All @@ -133,6 +134,10 @@ Popup {
if (fallbackIndex >= 0) {
camera.cameraFormat = camera.cameraDevice.videoFormats[fallbackIndex];
}
if (restart) {
camera.restarting = true;
camera.restarting = false;
}
}
}

Expand Down Expand Up @@ -663,7 +668,7 @@ Popup {
if (checked && cameraSettings.deviceId !== modelData.id) {
cameraSettings.deviceId = modelData.id;
camera.cameraDevice = modelData;
camera.applyCameraFormat();
camera.applyCameraFormat(true);
}
}
}
Expand Down Expand Up @@ -747,7 +752,7 @@ Popup {
if (checked && (cameraSettings.resolution != resolution || cameraSettings.pixelFormat != pixelFormat)) {
cameraSettings.resolution = resolution;
cameraSettings.pixelFormat = pixelFormat;
camera.applyCameraFormat();
camera.applyCameraFormat(true);
}
}
}
Expand Down

0 comments on commit ce6eb65

Please sign in to comment.