[libcamera-devel] [PATCH] qcam: fix Qt5.15.0 compile
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jun 8 23:32:32 CEST 2020
Hi Peter,
On Mon, Jun 08, 2020 at 11:11:02PM +0200, Peter Seiderer wrote:
> On Mon, 8 Jun 2020 04:18:56 +0300, Laurent Pinchart <laurent.pinchart at ideasonboard.com> wrote:
> > On Sun, Jun 07, 2020 at 11:58:26PM +0200, Peter Seiderer wrote:
> >> On Sun, 7 Jun 2020 20:17:29 +0300, Laurent Pinchart <laurent.pinchart at ideasonboard.com> wrote:
> >>> On Sun, Jun 07, 2020 at 06:56:55PM +0200, Peter Seiderer wrote:
> >>>> Fixes:
> >>>>
> >>>> ../src/qcam/main_window.cpp:634:16: error: ‘QTextStream& QTextStreamFunctions::fixed(QTextStream&)’ is deprecated: Use Qt::fixed [-Werror=deprecated-declarations]
> >>>> 634 | << "fps:" << fixed << qSetRealNumberPrecision(2) << fps;
> >>>> | ^~~~~
> >>>> Signed-off-by: Peter Seiderer <ps.report at gmx.net>
> >>>> ---
> >>>> src/qcam/main_window.cpp | 2 +-
> >>>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
> >>>> index 7de0895..1f3bdc1 100644
> >>>> --- a/src/qcam/main_window.cpp
> >>>> +++ b/src/qcam/main_window.cpp
> >>>> @@ -631,7 +631,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer)
> >>>> << QString("seq: %1").arg(metadata.sequence, 6, 10, QLatin1Char('0'))
> >>>> << "bytesused:" << metadata.planes[0].bytesused
> >>>> << "timestamp:" << metadata.timestamp
> >>>> - << "fps:" << fixed << qSetRealNumberPrecision(2) << fps;
> >>>> + << "fps:" << Qt::fixed << qSetRealNumberPrecision(2) << fps;
> >>>
> >>> Hasn't Qt::fixed been introduced in Qt v5.14, wouldn't this break
> >>> compatibility with all older Qt versions ?
> >>
> >> Yes, you are right...
> >>
> >>> One option I haven't tested would be to keep Qt::fixed here, and add, at
> >>> the top of this file, something along those lines.
> >>>
> >>> #if QT_VERSION <= QT_VERSION_CHECK(5, 14, 0)
> >>> /*
> >>> * Qt::fixed was introduced in v5.14, and ::fixed deprecated in v5.15. Allow
> >>> * usage of Qt::fixed unconditionally.
> >>> */
> >>> namespace Qt {
> >>> using fixed = ::fixed;
> >>> } /* namespace Qt */
> >>> #endif
> >>>
> >>> Would you be able to test this ?
> >>
> >> Did try with Qt5.10.1 (with a standalone test program), leads to:
> >>
> >> test-qt-fixed.cpp:10:17: error: ‘fixed’ in namespace ‘::’ does not name a type
> >> 10 | using fixed = ::fixed;
> >> | ^~~~~
> >>
> >>
> >> Alternative would be:
> >>
> >> [...]
> >> #if QT_VERSION <= QT_VERSION_CHECK(5, 14, 0)
> >> << fixed
> >> #else
> >> << Qt::fixed
> >> #endif
> >> [...]
> >
> > That would require an #if for every usage of fixed, which isn't very
> > nice (even if we use it in a single place only). I've tested the
> > following v5.14 but can't easily test on older Qt versions. Could you
> > test v5.10 ?
>
> Yes, can do...
>
> > #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
> > /*
> > * Qt::fixed was introduced in v5.14, and ::fixed deprecated in v5.15. Allow
> > * usage of Qt::fixed unconditionally.
> > */
> > namespace Qt {
> > constexpr auto fixed = ::fixed;
> > } /* namespace Qt */
> > #endif
>
> This one works with Qt5.10.1...
Great ! Thank you for testing.
Are you fine with the following patch ? If so there's no need to send a
new version.
commit 3dd6902e12c73cdcb5ef1a0ce0aceee5c9008306
Author: Peter Seiderer <ps.report at gmx.net>
Date: Sun Jun 7 18:56:55 2020 +0200
qcam: Fix compilation with Qt v5.15.0
Starting from Qt v5.15.0, the QTextStreamFunctions::fixed function
used to configure formatting on QTextStream is deprecated in favour of
Qt::fixed. This causes a compilation error:
../src/qcam/main_window.cpp:634:16: error: ‘QTextStream& QTextStreamFunctions::fixed(QTextStream&)’ is deprecated: Use Qt::fixed [-Werror=deprecated-declarations]
634 | << "fps:" << fixed << qSetRealNumberPrecision(2) << fps;
| ^~~~~
Fix it by using Qt::fixed, and provide backward compatibility with Qt
versions older than v5.14.0 that didn't provide Qt::fixed.
Signed-off-by: Peter Seiderer <ps.report at gmx.net>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index 7de089571234..2960259f4213 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -31,6 +31,16 @@
using namespace libcamera;
+#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
+/*
+ * Qt::fixed was introduced in v5.14, and ::fixed deprecated in v5.15. Allow
+ * usage of Qt::fixed unconditionally.
+ */
+namespace Qt {
+constexpr auto fixed = ::fixed;
+} /* namespace Qt */
+#endif
+
/**
* \brief Custom QEvent to signal capture completion
*/
@@ -631,7 +641,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer)
<< QString("seq: %1").arg(metadata.sequence, 6, 10, QLatin1Char('0'))
<< "bytesused:" << metadata.planes[0].bytesused
<< "timestamp:" << metadata.timestamp
- << "fps:" << fixed << qSetRealNumberPrecision(2) << fps;
+ << "fps:" << Qt::fixed << qSetRealNumberPrecision(2) << fps;
/* Render the frame on the viewfinder. */
viewfinder_->render(buffer, &mappedBuffers_[buffer]);
> >> Should I re-spin the patch?
> >>
> >>>>
> >>>> /* Render the frame on the viewfinder. */
> >>>> viewfinder_->render(buffer, &mappedBuffers_[buffer]);
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list