|
From: Tapio V. <aa...@us...> - 2010-08-21 18:24:59
|
Module: performous
Branch: master
Commit: 0274a98f338e73b4f07c7f8667f4e0e4d58a5e9b
Author: Tapio Vierros <tap...@gm...>
Date: Sat Aug 21 21:24:03 2010 +0300
Catch exceptions in webcam frame capturing.
---
game/webcam.cc | 24 +++++++++++++-----------
1 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/game/webcam.cc b/game/webcam.cc
index f1372aa..b1e1991 100644
--- a/game/webcam.cc
+++ b/game/webcam.cc
@@ -63,17 +63,19 @@ void Webcam::operator()() {
m_running = true;
while (!m_quit) {
if (m_running) {
- // Get a new frame
- cv::Mat frame;
- *m_capture >> frame;
- if (m_writer) *m_writer << frame;
- boost::mutex::scoped_lock l(m_mutex);
- // Copy the frame to storage
- m_frame.width = frame.cols;
- m_frame.height = frame.rows;
- m_frame.data.assign(frame.data, frame.data + (m_frame.width * m_frame.height * 3));
- // Notify renderer
- m_frameAvailable = true;
+ try {
+ // Get a new frame
+ cv::Mat frame;
+ *m_capture >> frame;
+ if (m_writer) *m_writer << frame;
+ boost::mutex::scoped_lock l(m_mutex);
+ // Copy the frame to storage
+ m_frame.width = frame.cols;
+ m_frame.height = frame.rows;
+ m_frame.data.assign(frame.data, frame.data + (m_frame.width * m_frame.height * 3));
+ // Notify renderer
+ m_frameAvailable = true;
+ } catch (std::exception&) { std::cerr << "Error capturing webcam frame!" << std::endl; }
}
// Sleep a little, much if the cam isn't active
boost::thread::sleep(now() + (m_running ? 0.015 : 0.5));
|