QTimer: restore BC with Qt 6.7 for MSVC
When I ported the QTimer::defaultTypeFor() helper from ms to ns granularity, I failed to account for MSVC, in which inline functions of exported classes are themselves exported. As a consequence, the private QTimer::defaultTypeFor(milliseconds) symbol went missing. To fix, re-add it as REMOVED_SINCE API. We don't need to play tricks with QT6_*_NEW_OVERLOAD here, since the overloads have a different signature and the only callers¹ are either passing an exact ms or ns argument² or are in dependent names in templates³ which removed_api.cpp does not instantiate. ¹ this is a private function, so we don't need to look very far... ² the string-based singleShot() overloads ³ and so name lookup (and therefore overload resolution) happens only at instantiation time, not at template parse time (so Integrity and VxWorks compilers will, that is) Amends a60e341145a3b8a106e556e17ae62d2f45ac5d74. Pick-to: 6.8 Fixes: QTBUG-135578 Change-Id: I375e6f04a3af3824f980fe59775d3eea94250987 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 27ed0014b491f457469914847f0a41926af998f4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
c5beecbcc0
commit
bb46df6a7a
@ -1165,6 +1165,7 @@ auto QStringConverter::encodingForName(const char *name) noexcept -> std::option
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "qtimer.h" // inlined API
|
#include "qtimer.h" // inlined API
|
||||||
|
// removed inline API (MSVC)
|
||||||
|
|
||||||
void QTimer::singleShot(std::chrono::milliseconds interval, Qt::TimerType timerType,
|
void QTimer::singleShot(std::chrono::milliseconds interval, Qt::TimerType timerType,
|
||||||
const QObject *receiver, const char *member)
|
const QObject *receiver, const char *member)
|
||||||
|
@ -160,6 +160,13 @@ private:
|
|||||||
static constexpr Qt::TimerType defaultTypeFor(int msecs) noexcept
|
static constexpr Qt::TimerType defaultTypeFor(int msecs) noexcept
|
||||||
{ return defaultTypeFor(std::chrono::milliseconds{msecs}); }
|
{ return defaultTypeFor(std::chrono::milliseconds{msecs}); }
|
||||||
|
|
||||||
|
#if QT_CORE_REMOVED_SINCE(6, 8)
|
||||||
|
static constexpr Qt::TimerType defaultTypeFor(std::chrono::milliseconds interval) noexcept
|
||||||
|
{
|
||||||
|
return defaultTypeFor(std::chrono::nanoseconds{interval});
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static constexpr Qt::TimerType defaultTypeFor(std::chrono::nanoseconds interval) noexcept
|
static constexpr Qt::TimerType defaultTypeFor(std::chrono::nanoseconds interval) noexcept
|
||||||
{
|
{
|
||||||
// coarse timers are worst in their first firing
|
// coarse timers are worst in their first firing
|
||||||
|
Loading…
x
Reference in New Issue
Block a user