libcamera: timer: Fix 32 bit wrap
The msec parameter was multiplied as a 32 bit value when converting to
nanosecond resolution. This wraps at 4.2949 seconds, and causes timers
longer than this to fail.
Fix the multiplication to upcast to 64 bit using an unsigned long long
specifier on the multiplier.
While we're here, initialise the two integer class members in the
constructor initialiser list.
Fixes: 1a57bcb8d1
("libcamera: Add event notification infrastructure")
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
74fb6ec3dc
commit
5651334119
1 changed files with 2 additions and 1 deletions
|
@ -36,6 +36,7 @@ namespace libcamera {
|
|||
* \brief Construct a timer
|
||||
*/
|
||||
Timer::Timer()
|
||||
: interval_(0), deadline_(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -51,7 +52,7 @@ void Timer::start(unsigned int msec)
|
|||
clock_gettime(CLOCK_MONOTONIC, &tp);
|
||||
|
||||
interval_ = msec;
|
||||
deadline_ = tp.tv_sec * 1000000000ULL + tp.tv_nsec + msec * 1000000;
|
||||
deadline_ = tp.tv_sec * 1000000000ULL + tp.tv_nsec + msec * 1000000ULL;
|
||||
|
||||
LOG(Debug) << "Starting timer " << this << " with interval " << msec
|
||||
<< ": deadline " << deadline_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue