Closed luis-pereira closed 3 years ago
Hm... the "std::chrono::duration" QDeadlineTimer
constructor is in Qt for a long time (since v5.8) https://doc.qt.io/qt-5/qdeadlinetimer.html#QDeadlineTimer-4, https://github.com/qt/qtbase/blame/dev/src/corelib/kernel/qdeadlinetimer.h#L145
The question for me is why isn't the QDeadlineTimer object implicitly constructed? Maybe in qt5.15 the \<QDeadlineTimer> is somehow transitively included and in 5.12 not. @luis-pereira @darkshram Can you, please, check if only including the QDeadlineTimer makes the trick for 5.12?
$ git diff
diff --git a/lxqt-session/src/procreaper.cpp b/lxqt-session/src/procreaper.cpp
index a45afeb..89cf1d5 100644
--- a/lxqt-session/src/procreaper.cpp
+++ b/lxqt-session/src/procreaper.cpp
@@ -34,6 +34,7 @@
#include <cstring>
#include <cerrno>
#include <sys/wait.h>
+#include <QDeadlineTimer>
ProcReaper::ProcReaper()
: mShouldRun{true}
@palinek If I find the time to build the dependencies with 5.12 I will do it. I wanted to do it yesterday, but I was time constrained.
The question for me is why isn't the QDeadlineTimer object implicitly constructed? Maybe in qt5.15 the
is somehow transitively included and in 5.12 not.
That's a possible explanation.
@palinek
Since Qt 5.12 doesn't have QThread::wait(QDeadlineTimer)
, I don't think adding of #include <QDeadlineTimer>
would change anything.
Qt 5.12 doesn't have
QThread::wait(QDeadlineTimer)
You're right. I missed that... I checked only QWaitCondition::wait
.
Sadly, Qt doc isn't completely reliable when it comes to checking versions.
@palinek So, can this be merged?
So, can this be merged?
Yes, it can... but I personally would stick with:
$ git diff
diff --git a/lxqt-session/src/procreaper.cpp b/lxqt-session/src/procreaper.cpp
index a45afeb..169dae9 100644
--- a/lxqt-session/src/procreaper.cpp
+++ b/lxqt-session/src/procreaper.cpp
@@ -35,6 +35,8 @@
#include <cerrno>
#include <sys/wait.h>
+namespace sc = std::chrono;
+
ProcReaper::ProcReaper()
: mShouldRun{true}
{
@@ -58,7 +60,7 @@ void ProcReaper::run()
if (pid <= 0)
{
QMutexLocker guard{&mMutex};
- mWait.wait(&mMutex, std::chrono::seconds(1));
+ mWait.wait(&mMutex, sc::duration_cast<sc::milliseconds>(sc::seconds(1)));
}
int status;
@@ -111,5 +113,5 @@ void ProcReaper::stop(const std::set<int64_t> & excludedPids)
QMutexLocker guard{&mMutex};
mShouldRun = false;
}
- QThread::wait(std::chrono::seconds(5));
+ QThread::wait(sc::duration_cast<sc::milliseconds>(sc::seconds(5)));
}
(avoiding plain numbers misinterpretation where possible)
I have tested the suggested patch by @palinek with Qt 5.12:
diff -Naur lxqt-session-0.17.0.orig/lxqt-session/src/procreaper.cpp lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp
--- lxqt-session-0.17.0.orig/lxqt-session/src/procreaper.cpp 2021-04-13 12:37:02.000000000 -0500
+++ lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp 2021-04-16 06:36:28.361113762 -0500
@@ -34,6 +34,7 @@
#include <cstring>
#include <cerrno>
#include <sys/wait.h>
+#include <QDeadlineTimer>
ProcReaper::ProcReaper()
: mShouldRun{true}
But fails to build with this output:
99%] Built target lxqt-leave
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
[ 99%] Built target lxqt-config-session
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp: In member function 'void ProcReaper::stop(const std::set<long long int>&)':
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:115:42: error: no matching function for call to 'ProcReaper::wait(std::chrono::seconds)'
QThread::wait(std::chrono::seconds(5));
^
In file included from /usr/include/qt5/QtCore/QThread:1:0,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.h:28,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:28:
/usr/include/qt5/QtCore/qthread.h:139:10: note: candidate: bool QThread::wait(long unsigned int)
bool wait(unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qthread.h:139:10: note: no known conversion for argument 1 from 'std::chrono::seconds {aka std::chrono::duration<long long int>}' to 'long unsigned int'
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
gmake[1]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
gmake[2]: *** [lxqt-session/CMakeFiles/lxqt-session.dir/build.make:386: lxqt-session/CMakeFiles/lxqt-session.dir/src/procreaper.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:224: lxqt-session/CMakeFiles/lxqt-session.dir/all] Error 2
gmake: *** [Makefile:152: all] Error 2
The second proposed patch:
diff --git a/lxqt-session/src/procreaper.cpp b/lxqt-session/src/procreaper.cpp
index a45afeb..169dae9 100644
--- a/lxqt-session/src/procreaper.cpp
+++ b/lxqt-session/src/procreaper.cpp
@@ -35,6 +35,8 @@
#include <cerrno>
#include <sys/wait.h>
+namespace sc = std::chrono;
+
ProcReaper::ProcReaper()
: mShouldRun{true}
{
@@ -58,7 +60,7 @@ void ProcReaper::run()
if (pid <= 0)
{
QMutexLocker guard{&mMutex};
- mWait.wait(&mMutex, std::chrono::seconds(1));
+ mWait.wait(&mMutex, sc::duration_cast<sc::milliseconds>(sc::seconds(1)));
}
int status;
@@ -111,5 +113,5 @@ void ProcReaper::stop(const std::set<int64_t> & excludedPids)
QMutexLocker guard{&mMutex};
mShouldRun = false;
}
- QThread::wait(std::chrono::seconds(5));
+ QThread::wait(sc::duration_cast<sc::milliseconds>(sc::seconds(5)));
}
Also fails to build with this other output:
[ 99%] Built target lxqt-leave
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
[ 99%] Built target lxqt-config-session
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp: In member function 'virtual void ProcReaper::run()':
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:63:84: error: no matching function for call to 'QWaitCondition::wait(QMutex*, std::enable_if<true, std::chrono::duration<long long int, std::ratio<1, 1000> > >::type)'
mWait.wait(&mMutex, sc::duration_cast<sc::milliseconds>(sc::seconds(1)));
^
In file included from /usr/include/qt5/QtCore/QWaitCondition:1:0,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.h:30,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:28:
/usr/include/qt5/QtCore/qwaitcondition.h:63:10: note: candidate: bool QWaitCondition::wait(QMutex*, long unsigned int)
bool wait(QMutex *lockedMutex, unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:63:10: note: no known conversion for argument 2 from 'std::enable_if<true, std::chrono::duration<long long int, std::ratio<1, 1000> > >::type {aka std::chrono::duration<long long int, std::ratio<1, 1000> >}' to 'long unsigned int'
/usr/include/qt5/QtCore/qwaitcondition.h:64:10: note: candidate: bool QWaitCondition::wait(QMutex*, QDeadlineTimer)
bool wait(QMutex *lockedMutex, QDeadlineTimer deadline);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:64:10: note: no known conversion for argument 2 from 'std::enable_if<true, std::chrono::duration<long long int, std::ratio<1, 1000> > >::type {aka std::chrono::duration<long long int, std::ratio<1, 1000> >}' to 'QDeadlineTimer'
/usr/include/qt5/QtCore/qwaitcondition.h:65:10: note: candidate: bool QWaitCondition::wait(QReadWriteLock*, long unsigned int)
bool wait(QReadWriteLock *lockedReadWriteLock, unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:65:10: note: no known conversion for argument 1 from 'QMutex*' to 'QReadWriteLock*'
/usr/include/qt5/QtCore/qwaitcondition.h:66:10: note: candidate: bool QWaitCondition::wait(QReadWriteLock*, QDeadlineTimer)
bool wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:66:10: note: no known conversion for argument 1 from 'QMutex*' to 'QReadWriteLock*'
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp: In member function 'void ProcReaper::stop(const std::set<long long int>&)':
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:116:70: error: no matching function for call to 'ProcReaper::wait(std::enable_if<true, std::chrono::duration<long long int, std::ratio<1, 1000> > >::type)'
QThread::wait(sc::duration_cast<sc::milliseconds>(sc::seconds(5)));
^
In file included from /usr/include/qt5/QtCore/QThread:1:0,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.h:28,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:28:
/usr/include/qt5/QtCore/qthread.h:139:10: note: candidate: bool QThread::wait(long unsigned int)
bool wait(unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qthread.h:139:10: note: no known conversion for argument 1 from 'std::enable_if<true, std::chrono::duration<long long int, std::ratio<1, 1000> > >::type {aka std::chrono::duration<long long int, std::ratio<1, 1000> >}' to 'long unsigned int'
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
gmake[1]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
gmake[2]: *** [lxqt-session/CMakeFiles/lxqt-session.dir/build.make:386: lxqt-session/CMakeFiles/lxqt-session.dir/src/procreaper.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:224: lxqt-session/CMakeFiles/lxqt-session.dir/all] Error 2
gmake: *** [Makefile:152: all] Error 2
For me, c7271cd60adf8d21da5a8e79865156dd6c3584d3 fixes the the build with Qt 5.12:
From c7271cd60adf8d21da5a8e79865156dd6c3584d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lu=C3=ADs=20Pereira?= <luis.artur.pereira@gmail.com>
Date: Thu, 15 Apr 2021 19:00:11 +0100
Subject: [PATCH] Fixes a time interval related FTBFS
Fixes https://github.com/lxqt/lxqt-session/issues/380.
---
lxqt-session/src/procreaper.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lxqt-session/src/procreaper.cpp b/lxqt-session/src/procreaper.cpp
index a45afeb..1ccbc78 100644
--- a/lxqt-session/src/procreaper.cpp
+++ b/lxqt-session/src/procreaper.cpp
@@ -58,7 +58,7 @@ void ProcReaper::run()
if (pid <= 0)
{
QMutexLocker guard{&mMutex};
- mWait.wait(&mMutex, std::chrono::seconds(1));
+ mWait.wait(&mMutex, 1000); // 1 second
}
int status;
@@ -111,5 +111,5 @@ void ProcReaper::stop(const std::set<int64_t> & excludedPids)
QMutexLocker guard{&mMutex};
mShouldRun = false;
}
- QThread::wait(std::chrono::seconds(5));
+ QThread::wait(5000000); // 5 seconds
}
For me, c7271cd fixes the the build with Qt 5.12
@darkshram Yes, but please use the final revision, namely https://github.com/lxqt/lxqt-session/commit/f0df56a39e62b1ce8916141ab78aee2e7a2b4a86 — "5000000" is fixed in it.
Also fails to build with this other output:
Heh... of course, the count()
is missing there
$ git diff
diff --git a/lxqt-session/src/procreaper.cpp b/lxqt-session/src/procreaper.cpp
index a45afeb..169dae9 100644
--- a/lxqt-session/src/procreaper.cpp
+++ b/lxqt-session/src/procreaper.cpp
@@ -35,6 +35,8 @@
#include <cerrno>
#include <sys/wait.h>
+namespace sc = std::chrono;
+
ProcReaper::ProcReaper()
: mShouldRun{true}
{
@@ -58,7 +60,7 @@ void ProcReaper::run()
if (pid <= 0)
{
QMutexLocker guard{&mMutex};
- mWait.wait(&mMutex, std::chrono::seconds(1));
+ mWait.wait(&mMutex, sc::duration_cast<sc::milliseconds>(sc::seconds(1)).count());
}
int status;
@@ -111,5 +113,5 @@ void ProcReaper::stop(const std::set<int64_t> & excludedPids)
QMutexLocker guard{&mMutex};
mShouldRun = false;
}
- QThread::wait(std::chrono::seconds(5));
+ QThread::wait(sc::duration_cast<sc::milliseconds>(sc::seconds(5)).count());
}
(avoiding plain numbers misinterpretation where possible)
@darkshram Yes, but please use the final revision, namely f0df56a — "5000000" is fixed in it.
Done.
Will proceed testing https://github.com/lxqt/lxqt-session/pull/381#issuecomment-821131943 in a few minutes.
Also fails to build with this other output:
Heh... of course, the
count()
is missing there ...(avoiding plain numbers misinterpretation where possible)
Built successfully without warnings.
I post the final output just as reference:
[ 98%] Building CXX object lxqt-config-session/CMakeFiles/lxqt-config-session.dir/LXQtAppTranslationLoader.cpp.o
cd /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session && /usr/lib/ccache/c++ -DLXQT_DATA_DIR=\"/usr/share\" -DLXQT_ETC_XDG_DIR=\"/etc/xdg\" -DLXQT_GRAPHICS_DIR=\"/usr/share/lxqt/graphics\" -DLXQT_MAJOR_VERSION=\"0\" -DLXQT_MINOR_VERSION=\"17\" -DLXQT_PATCH_VERSION=\"0\" -DLXQT_RELATIVE_SHARE_DIR=\"lxqt\" -DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"lxqt/translations\" -DLXQT_SESSION_VERSION=\"0.17.0\" -DLXQT_SHARE_DIR=\"/usr/share/lxqt\" -DLXQT_SHARE_TRANSLATIONS_DIR=\"/usr/share/lxqt/translations\" -DLXQT_VERSION=\"0.17.0\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_URL_CAST_FROM_STRING -DQT_SVG_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -DQT_XML_LIB -I/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session -I/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-config-session -I/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session/lxqt-config-session_autogen/include -isystem /usr/include/KF5/KWindowSystem -isystem /usr/include/KF5 -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -isystem /usr/lib/qt5/./mkspecs/linux-g++ -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtDBus -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/lxqt -isystem /usr/include/lxqt/LXQt -isystem /usr/include/qt5xdg -isystem /usr/include/qt5/QtXml -isystem /usr/include/qt5xdgiconloader -isystem /usr/include/qt5xdgiconloader/3.7.0 -isystem /usr/include/qt5/QtSvg -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fno-exceptions -Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic -DNDEBUG -fPIE -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -std=c++14 -o CMakeFiles/lxqt-config-session.dir/LXQtAppTranslationLoader.cpp.o -c /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session/LXQtAppTranslationLoader.cpp
[ 99%] Linking CXX executable lxqt-config-session
cd /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session && /usr/bin/cmake -E cmake_link_script CMakeFiles/lxqt-config-session.dir/link.txt --verbose=1
/usr/lib/ccache/c++ -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fno-exceptions -Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-Bsymbolic -Wl,-z,relro -rdynamic CMakeFiles/lxqt-config-session.dir/lxqt-config-session_autogen/mocs_compilation.cpp.o CMakeFiles/lxqt-config-session.dir/main.cpp.o CMakeFiles/lxqt-config-session.dir/sessionconfigwindow.cpp.o CMakeFiles/lxqt-config-session.dir/basicsettings.cpp.o CMakeFiles/lxqt-config-session.dir/modulemodel.cpp.o CMakeFiles/lxqt-config-session.dir/autostartpage.cpp.o CMakeFiles/lxqt-config-session.dir/autostartmodel.cpp.o CMakeFiles/lxqt-config-session.dir/autostartitem.cpp.o CMakeFiles/lxqt-config-session.dir/autostartedit.cpp.o CMakeFiles/lxqt-config-session.dir/autostartutils.cpp.o CMakeFiles/lxqt-config-session.dir/environmentpage.cpp.o CMakeFiles/lxqt-config-session.dir/userlocationspage.cpp.o CMakeFiles/lxqt-config-session.dir/__/lxqt-session/src/windowmanager.cpp.o CMakeFiles/lxqt-config-session.dir/LXQtAppTranslationLoader.cpp.o -o lxqt-config-session /usr/lib/liblxqt.so.0.17.0 /usr/lib/libKF5WindowSystem.so.5.76.0 /usr/lib/libQt5X11Extras.so.5.12.10 /usr/lib/libQt5Xdg.so.3.7.0 /usr/lib/libQt5DBus.so.5.12.10 /usr/lib/libQt5Xml.so.5.12.10 /usr/lib/libQt5XdgIconLoader.so.3.7.0 /usr/lib/libQt5Svg.so.5.12.10 /usr/lib/libQt5Widgets.so.5.12.10 /usr/lib/libQt5Gui.so.5.12.10 /usr/lib/libQt5Core.so.5.12.10 -lglib-2.0 -lgobject-2.0 -lgio-2.0
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
[ 99%] Built target lxqt-leave
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
[ 99%] Built target lxqt-config-session
[100%] Linking CXX executable lxqt-session
cd /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-session && /usr/bin/cmake -E cmake_link_script CMakeFiles/lxqt-session.dir/link.txt --verbose=1
/usr/lib/ccache/c++ -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fno-exceptions -Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-Bsymbolic -Wl,-z,relro -rdynamic CMakeFiles/lxqt-session.dir/lxqt-session_autogen/mocs_compilation.cpp.o CMakeFiles/lxqt-session.dir/src/main.cpp.o CMakeFiles/lxqt-session.dir/src/lxqtmodman.cpp.o CMakeFiles/lxqt-session.dir/src/wmselectdialog.cpp.o CMakeFiles/lxqt-session.dir/src/windowmanager.cpp.o CMakeFiles/lxqt-session.dir/src/sessionapplication.cpp.o CMakeFiles/lxqt-session.dir/src/lockscreenmanager.cpp.o CMakeFiles/lxqt-session.dir/src/numlock.cpp.o CMakeFiles/lxqt-session.dir/src/log.cpp.o CMakeFiles/lxqt-session.dir/src/procreaper.cpp.o CMakeFiles/lxqt-session.dir/src/UdevNotifier.cpp.o CMakeFiles/lxqt-session.dir/LXQtAppTranslationLoader.cpp.o -o lxqt-session /usr/lib/liblxqt.so.0.17.0 -lX11 -lXext /usr/lib/libKF5WindowSystem.so.5.76.0 -lprocps -ludev /usr/lib/libQt5X11Extras.so.5.12.10 /usr/lib/libQt5Xdg.so.3.7.0 /usr/lib/libQt5DBus.so.5.12.10 /usr/lib/libQt5Xml.so.5.12.10 /usr/lib/libQt5XdgIconLoader.so.3.7.0 /usr/lib/libQt5Svg.so.5.12.10 /usr/lib/libQt5Widgets.so.5.12.10 /usr/lib/libQt5Gui.so.5.12.10 /usr/lib/libQt5Core.so.5.12.10 -lglib-2.0 -lgobject-2.0 -lgio-2.0
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
[100%] Built target lxqt-session
gmake[1]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
/usr/bin/cmake -E cmake_progress_start /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/CMakeFiles 0
Either https://github.com/lxqt/lxqt-session/commit/f0df56a39e62b1ce8916141ab78aee2e7a2b4a86 or https://github.com/lxqt/lxqt-session/pull/381#issuecomment-821131943 fixes build for Qt 5.12. Which patch will be used for 0.17.1?
Either f0df56a or #381 (comment) fixes build for Qt 5.12. Which patch will be used for 0.17.1?
Both are correct.
@palinek
Any practical reason for complicating the code by using sc::duration_cast<sc::milliseconds>(sc::seconds(1)).count()
instead of 1000
?
Any practical reason for complicating the code
No, just the one reason I wrote up there: ...avoiding plain numbers misinterpretation where possible...
Note: As the expressions are constexpr
there is no runtime overhead even if the notation might seem long and/or complicated...
static_assert(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::seconds(1)).count() == 1000, "test");
there is no runtime overhead
OK but 1000 and 5000 cannot be misinterpreted in any way and Qt 5.15 does have overloads. Your patch may frighten code readers ;)
OK but 1000 and 5000 cannot be misinterpreted in any way
Did you see the first commit by Luis?
You know my opinion, but merge whatever you find more suitable.
IMHO, this place isn't different from other places where we use milliseconds inside a Qt method. The problem arose only because Qt doc wasn't specific in this regard.
Did you see the first commit by Luis?
QThread::wait(unsigned long time)
documentation doesn't state in what units time
is. That's the source of my mistake.
Let's not delay lxqt-session-0.17.1; some users may need it.
Fixes https://github.com/lxqt/lxqt-session/issues/380.