From 6e42cf503198026a00e6f23494eec3c2824b30eb Mon Sep 17 00:00:00 2001 From: matlabbe Date: Sun, 24 Jun 2012 20:31:31 +0000 Subject: [PATCH] fixed freezing bug when changing image rate of the camera to 0 when capturing git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@564 f169173b-cf89-36c8-b27e-44dbe73f0c83 --- corelib/src/Camera.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/corelib/src/Camera.cpp b/corelib/src/Camera.cpp index 73dd1f84..66eb7968 100644 --- a/corelib/src/Camera.cpp +++ b/corelib/src/Camera.cpp @@ -236,23 +236,24 @@ cv::Mat Camera::takeImage(cv::Mat & descriptors, std::vector & key { descriptors = cv::Mat(); keypoints.clear(); - if(_imageRate>0) + float imageRate = _imageRate; + if(imageRate>0) { - int sleepTime = (1000.0f/_imageRate - 1000.0f*_frameRateTimer.getElapsedTime()); + int sleepTime = (1000.0f/imageRate - 1000.0f*_frameRateTimer.getElapsedTime()); if(sleepTime > 2) { uSleep(sleepTime-2); } // Add precision at the cost of a small overhead - while(_frameRateTimer.getElapsedTime() < 1.0/double(_imageRate)-0.000001) + while(_frameRateTimer.getElapsedTime() < 1.0/double(imageRate)-0.000001) { // } double slept = _frameRateTimer.getElapsedTime(); _frameRateTimer.start(); - UDEBUG("slept=%fs vs target=%fs", slept, 1.0/double(_imageRate)); + UDEBUG("slept=%fs vs target=%fs", slept, 1.0/double(imageRate)); } cv::Mat img;