diff --git a/src/qcam/qt_event_dispatcher.cpp b/src/qcam/qt_event_dispatcher.cpp
index 6b332f6265d01fe0..fcde374c9936d1f9 100644
--- a/src/qcam/qt_event_dispatcher.cpp
+++ b/src/qcam/qt_event_dispatcher.cpp
@@ -132,9 +132,19 @@ void QtEventDispatcher::unregisterTimer(Timer *timer)
 void QtEventDispatcher::timerEvent(QTimerEvent *event)
 {
 	auto it = timers_.find(event->timerId());
-	timerIds_.erase(it->second);
+
+	if (it == timers_.end()) {
+		std::cout << "Can't find timer for event" << std::endl;
+		return;
+	}
+
+	Timer *timer = it->second;
+
+	timerIds_.erase(timer);
 	killTimer(it->first);
 	timers_.erase(it);
+
+	timer->timeout.emit(timer);
 }
 
 void QtEventDispatcher::processEvents()
