From b6a5754127557b6c3ef47f766b7513cdb38ae6a4 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 14 Apr 2010 13:39:43 +0000 Subject: [PATCH] Added minimum frame delay of 1/100th second when using on demand rendering to avoid creating a CPU lock. --- src/osgViewer/ViewerBase.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/osgViewer/ViewerBase.cpp b/src/osgViewer/ViewerBase.cpp index e85d9d30a..37dec743d 100644 --- a/src/osgViewer/ViewerBase.cpp +++ b/src/osgViewer/ViewerBase.cpp @@ -599,7 +599,17 @@ int ViewerBase::run() osg::Timer_t startFrameTick = osg::Timer::instance()->tick(); if (_runFrameScheme==ON_DEMAND) { - if (checkNeedToDoFrame()) frame(); + if (checkNeedToDoFrame()) + { + frame(); + } + else + { + // we don't need to render a frame but we don't want to spin the run loop so make sure the minimum + // loop time is 1/100th of second, if not otherwise set, so enabling the frame microSleep below to + // avoid consume excessive CPU resources. + if (minFrameTime==0.0) minFrameTime=0.01; + } } else {