diff --git a/repos/os/src/drivers/timer/include/session_component.h b/repos/os/src/drivers/timer/include/session_component.h index e223fd81f0..0c324e69e3 100644 --- a/repos/os/src/drivers/timer/include/session_component.h +++ b/repos/os/src/drivers/timer/include/session_component.h @@ -57,7 +57,12 @@ class Timer::Session_component : public Genode::Rpc_object, void trigger_periodic(unsigned us) override { _timeout.schedule_periodic(Microseconds(us), *this); } - void sigh(Signal_context_capability sigh) override { _sigh = sigh; } + void sigh(Signal_context_capability sigh) override + { + _sigh = sigh; + if (!sigh.valid()) + _timeout_scheduler.discard(_timeout); + } unsigned long elapsed_ms() const override { return (_timeout_scheduler.curr_time().value - _init_time_us) / 1000; }