Package: release.debian.org Severity: normal X-Debbugs-Cc: lomiri-camera-...@packages.debian.org Control: affects -1 + src:lomiri-camera-app User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package lomiri-camera-app I added two more patches from upstream, one fixing a file access bug / race condition and another fixing a usability issue. [ Reason ] + * debian/patches: + + Add 0006_qml-Viewfinder-fix-content-export-preview-corruption.patch. + qml/Viewfinder: Fix content export preview corruption in !hasEXIF mode. -> Fix for two threads possibly trying to write to an image file simultaneously, causing its corruption. + + Add 0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch. + Support white QR codes in barcode reader app. -> Support scanning white QR codes. [ Impact ] Above mentioned problems remain in Lomiri's Camera App in trixie. [ Tests ] Manual tests. [ Risks ] Minimal, only for users of Lomiri Camera App. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing [ Other info ] Relevant for Lomiri in Debian. unblock lomiri-camera-app/4.0.8+dfsg-5
diff -Nru lomiri-camera-app-4.0.8+dfsg/debian/changelog lomiri-camera-app-4.0.8+dfsg/debian/changelog --- lomiri-camera-app-4.0.8+dfsg/debian/changelog 2025-05-30 16:14:07.000000000 +0200 +++ lomiri-camera-app-4.0.8+dfsg/debian/changelog 2025-06-15 21:14:56.000000000 +0200 @@ -1,3 +1,13 @@ +lomiri-camera-app (4.0.8+dfsg-5) unstable; urgency=medium + + * debian/patches: + + Add 0006_qml-Viewfinder-fix-content-export-preview-corruption.patch. + qml/Viewfinder: Fix content export preview corruption in !hasEXIF mode. + + Add 0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch. + Support white QR codes in barcode reader app. + + -- Mike Gabriel <sunwea...@debian.org> Sun, 15 Jun 2025 21:14:56 +0200 + lomiri-camera-app (4.0.8+dfsg-4) unstable; urgency=medium * debian/patches: diff -Nru lomiri-camera-app-4.0.8+dfsg/debian/patches/0006_qml-Viewfinder-fix-content-export-preview-corruption.patch lomiri-camera-app-4.0.8+dfsg/debian/patches/0006_qml-Viewfinder-fix-content-export-preview-corruption.patch --- lomiri-camera-app-4.0.8+dfsg/debian/patches/0006_qml-Viewfinder-fix-content-export-preview-corruption.patch 1970-01-01 01:00:00.000000000 +0100 +++ lomiri-camera-app-4.0.8+dfsg/debian/patches/0006_qml-Viewfinder-fix-content-export-preview-corruption.patch 2025-06-06 19:21:41.000000000 +0200 @@ -0,0 +1,103 @@ +From f3f7476729771137ea510f81357fef98d9d3b9bb Mon Sep 17 00:00:00 2001 +From: Ratchanan Srirattanamet <ratcha...@ubports.com> +Date: Fri, 30 May 2025 20:56:44 +0700 +Subject: [PATCH] qml/Viewfinder: fix content export preview corruption in + !hasEXIF mode + +Because of signal connection order, content export preview will start +rendering image while `deleteEXIF()` re-writes the file. This causes +preview image to corrupt. + +Move all imageSaved() signal handler code from `ViewFinderOverlay` to +`ViewFinderView` so that we can control the ordering. Order it so that +(synchronous) `deleteEXIF()` happens before content export preview +renders image. + +#While we're at it, remove call to non-existent `fileOperations. +#setEXIFData()` (which is redundant with another part of code in +#`ViewFinderOverlay`); the exception thrown will prevent the rest of the +#code to run. + +Finally, add a few comments so that we turn `deleteEXIF()` to be +asynchronous in the future. + +Fixes: https://gitlab.com/ubports/development/apps/lomiri-camera-app/-/issues/217 +Fixes: e38dbba16647 ("add fixes to barcodereader app and drop obsolete imports") +Signed-off-by: Mike Gabriel <mike.gabr...@das-netzwerkteam.de> +--- + ViewFinderOverlay.qml | 35 ---------------------------- + ViewFinderView.qml | 23 +++++++++++++++++- + 2 files changed, 22 insertions(+), 36 deletions(-) + +--- a/ViewFinderOverlay.qml ++++ b/ViewFinderOverlay.qml +@@ -1008,10 +1008,6 @@ + position.horizontalAccuracy <= 100) + } + +- PostProcessOperations { +- id: postProcessOperations +- } +- + Connections { + target: camera.imageCapture + onReadyChanged: { +@@ -1021,19 +1017,6 @@ + } + } + } +- onImageSaved : { +- if(path &&!settings.hasEXIF) +- { +- postProcessOperations.deleteEXIFdata(path); +- } +- if(path && settings.dateStampImages && !main.contentExportMode) { +- postProcessOperations.addDateStamp(path, +- viewFinderOverlay.settings.dateStampFormat, +- viewFinderOverlay.settings.dateStampColor, +- viewFinderOverlay.settings.dateStampOpacity, +- viewFinderOverlay.settings.dateStampAlign); +- } +- } + } + + CircleButton { +--- a/ViewFinderView.qml ++++ b/ViewFinderView.qml +@@ -131,7 +131,24 @@ + } + + onImageSaved: { +- if (main.contentExportMode) viewFinderExportConfirmation.mediaPath = path; ++ if(!viewFinderOverlay.settings.hasEXIF) { ++ // TODO: make this operation asynchronous. ++ postProcessOperations.deleteEXIFdata(path); ++ } ++ ++ if(viewFinderOverlay.settings.dateStampImages && !main.contentExportMode) { ++ postProcessOperations.addDateStamp(path, ++ viewFinderOverlay.settings.dateStampFormat, ++ viewFinderOverlay.settings.dateStampColor, ++ viewFinderOverlay.settings.dateStampOpacity, ++ viewFinderOverlay.settings.dateStampAlign); ++ } ++ ++ // TODO: make it so that asynchronous operations signals to us ++ // on finished and only then proceed to the code below. ++ ++ if (main.contentExportMode) ++ viewFinderExportConfirmation.mediaPath = path; + + viewFinderView.photoTaken(path); + metricPhotos.increment(); +@@ -369,6 +386,10 @@ + sourceComponent: viewFinderExportConfirmationComp + } + ++ PostProcessOperations { ++ id: postProcessOperations ++ } ++ + property alias viewFinderExportConfirmation: viewFinderExportConfirmationLoader.item + + Component { diff -Nru lomiri-camera-app-4.0.8+dfsg/debian/patches/0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch lomiri-camera-app-4.0.8+dfsg/debian/patches/0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch --- lomiri-camera-app-4.0.8+dfsg/debian/patches/0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch 1970-01-01 01:00:00.000000000 +0100 +++ lomiri-camera-app-4.0.8+dfsg/debian/patches/0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch 2025-06-15 21:14:56.000000000 +0200 @@ -0,0 +1,24 @@ +From 993643af0ab88243fe76b13f7ed2f4abee823072 Mon Sep 17 00:00:00 2001 +From: Alfred Neumayer <dev.be...@gmail.com> +Date: Fri, 13 Jun 2025 19:02:18 +0200 +Subject: [PATCH] qml: Activate QZXing.SourceFilter_ImageInverted for + imageSourceFilter + +Let the viewfinder be color inverted by QZXing. Fixes scanning +white QR Codes on black backgrounds. +--- + barcode-reader-app.qml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/barcode-reader-app.qml ++++ b/barcode-reader-app.qml +@@ -72,7 +72,8 @@ + active: true + decoder { + enabledDecoders: QZXing.DecoderFormat_QR_CODE +- imageSourceFilter: QZXing.SourceFilter_ImageNormal ++ imageSourceFilter: QZXing.SourceFilter_ImageNormal | ++ QZXing.SourceFilter_ImageInverted + + onTagFoundAdvanced: { + viewFinderView.recentlyScannedTag = tag diff -Nru lomiri-camera-app-4.0.8+dfsg/debian/patches/series lomiri-camera-app-4.0.8+dfsg/debian/patches/series --- lomiri-camera-app-4.0.8+dfsg/debian/patches/series 2025-05-30 15:45:23.000000000 +0200 +++ lomiri-camera-app-4.0.8+dfsg/debian/patches/series 2025-06-15 21:13:35.000000000 +0200 @@ -5,3 +5,5 @@ 0003_fix-spelling-of-background-color-in-AdvancedOptions-qml.patch 0004_Save-orientation-when-erasing-metadata.patch 0005_add-left-margin-between-icon-and-label-in-options-selector.patch +0006_qml-Viewfinder-fix-content-export-preview-corruption.patch +0007_qml-Support-scanning-white-QR-codes-in-BarcodeReaderApp.patch