Changeset 4025 for trunk/packages
- Timestamp:
- Oct 30, 2013, 11:56:27 AM (11 years ago)
- Location:
- trunk/packages/vizservers/geovis
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/geovis/RenderServer.cpp
r4014 r4025 484 484 // Start main server loop 485 485 for (;;) { 486 if (processCommands(interp, NULL, g_inBufPtr, g_fdOut) < 0) 486 long timeout = g_renderer->getTimeout(); 487 if (processCommands(interp, NULL, g_inBufPtr, g_fdOut, timeout) < 0) 487 488 break; 488 489 -
trunk/packages/vizservers/geovis/Renderer.cpp
r4015 r4025 43 43 _bgColor[1] = 0; 44 44 _bgColor[2] = 0; 45 _minFrameTime = 1.0/30.0; 46 _lastFrameTime = _minFrameTime; 45 47 _viewer = new osgViewer::Viewer(); 46 48 _viewer->setThreadingModel(osgViewer::ViewerBase::SingleThreaded); … … 323 325 } 324 326 327 long Renderer::getTimeout() 328 { 329 if (_lastFrameTime < _minFrameTime) { 330 (long)1000000.0*(_minFrameTime - _lastFrameTime); 331 } else { 332 return 0L; 333 } 334 } 335 336 bool isPagerIdle() 337 { 338 return (!_viewer->getDatabasePager()->requiresUpdateSceneGraph() && 339 !_viewer->getDatabasePager()->getRequestsInProgress()); 340 } 341 325 342 /** 326 343 * \brief Cause the rendering to render a new image if needed … … 333 350 TRACE("Enter needsRedraw=%d", _needsRedraw ? 1 : 0); 334 351 335 if (_needsRedraw) { 336 double _runMaxFrameRate = 60.0; 337 double minFrameTime = _runMaxFrameRate>0.0 ? 1.0/_runMaxFrameRate : 0.0; 352 if (_needsRedraw || !isPagerIdle()) { 338 353 osg::Timer_t startFrameTick = osg::Timer::instance()->tick(); 339 354 TRACE("Before frame()"); … … 341 356 TRACE("After frame()"); 342 357 osg::Timer_t endFrameTick = osg::Timer::instance()->tick(); 343 double frameTime = osg::Timer::instance()->delta_s(startFrameTick, endFrameTick); 344 TRACE("Frame time: %g sec", frameTime); 358 _lastFrameTime = osg::Timer::instance()->delta_s(startFrameTick, endFrameTick); 359 TRACE("Frame time: %g sec", _lastFrameTime); 360 #if 0 345 361 if (frameTime < minFrameTime) { 346 362 TRACE("Sleeping for %g secs", minFrameTime-frameTime); 347 363 OpenThreads::Thread::microSleep(static_cast<unsigned int>(1000000.0*(minFrameTime-frameTime))); 348 364 } 365 #endif 349 366 if (_viewer->getViewerStats() != NULL) { 350 367 _viewer->getViewerStats()->report(std::cerr, _viewer->getViewerStats()->getLatestFrameNumber()); -
trunk/packages/vizservers/geovis/Renderer.h
r4014 r4025 212 212 } 213 213 214 long getTimeout(); 215 216 bool isPagerIdle(); 217 214 218 private: 215 219 void initCamera(); … … 218 222 int _windowWidth, _windowHeight; 219 223 float _bgColor[3]; 224 225 double _minFrameTime; 226 double _lastFrameTime; 220 227 221 228 osg::ref_ptr<osg::Node> _sceneRoot; -
trunk/packages/vizservers/geovis/RendererCmd.cpp
r4014 r4025 543 543 ClientData clientData, 544 544 ReadBuffer *inBufPtr, 545 int fdOut) 545 int fdOut, 546 long timeout) 546 547 { 547 548 int ret = 1; … … 558 559 * that we don't spin when no data is 559 560 * available. */ 561 if (timeout >= 0L) { 562 tv.tv_sec = 0L; 563 tv.tv_usec = timeout; 564 tvPtr = &tv; 565 } 560 566 while (inBufPtr->isLineAvailable() || 561 567 (select(1, &readFds, NULL, NULL, tvPtr) > 0)) { -
trunk/packages/vizservers/geovis/RendererCmd.h
r3998 r4025 28 28 ClientData clientData, 29 29 ReadBuffer *inBufPtr, 30 int fdOut); 30 int fdOut, 31 long timeout = -1); 31 32 32 33 extern int handleError(Tcl_Interp *interp,
Note: See TracChangeset
for help on using the changeset viewer.