Changeset 13191 for OpenSceneGraph/trunk/src/osgDB/ImagePager.cpp
- Timestamp:
- 05/16/13 17:52:29 (2 days ago)
- Files:
-
- 1 modified
-
OpenSceneGraph/trunk/src/osgDB/ImagePager.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osgDB/ImagePager.cpp
r13159 r13191 84 84 // note this will mean that only one ImageSequence can be properly managed at one time, 85 85 // this hack will be removed once a better system for managing expiry of requests is introduced. 86 clear();86 // clear(); 87 87 88 88 OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_requestMutex); … … 91 91 databaseRequest->_requestQueue = this; 92 92 93 OSG_INFO<<"ImagePager::ReadQueue::add( ..), size()="<<_requestList.size()<<std::endl;93 OSG_INFO<<"ImagePager::ReadQueue::add("<<databaseRequest->_fileName<<"), size()="<<_requestList.size()<<std::endl; 94 94 95 95 updateBlock(); … … 207 207 if (imageRequest.valid()) 208 208 { 209 osg::ref_ptr<osg::Image> image = osgDB::readImageFile(imageRequest->_fileName); 209 // OSG_NOTICE<<"doing readImageFile("<<imageRequest->_fileName<<") index to assign = "<<imageRequest->_attachmentIndex<<std::endl; 210 osg::ref_ptr<osg::Image> image = osgDB::readImageFile(imageRequest->_fileName, imageRequest->_readOptions.get()); 210 211 if (image.valid()) 211 212 { 213 // OSG_NOTICE<<" successful readImageFile("<<imageRequest->_fileName<<") index to assign = "<<imageRequest->_attachmentIndex<<std::endl; 214 212 215 osg::ImageSequence* is = dynamic_cast<osg::ImageSequence*>(imageRequest->_attachmentPoint.get()); 213 216 if (is) … … 267 270 _completedQueue = new RequestQueue; 268 271 _imageThreads.push_back(new ImageThread(this, ImageThread::HANDLE_ALL_REQUESTS, "Image Thread 1")); 272 #if 1 269 273 _imageThreads.push_back(new ImageThread(this, ImageThread::HANDLE_ALL_REQUESTS, "Image Thread 2")); 270 274 _imageThreads.push_back(new ImageThread(this, ImageThread::HANDLE_ALL_REQUESTS, "Image Thread 3")); … … 272 276 _imageThreads.push_back(new ImageThread(this, ImageThread::HANDLE_ALL_REQUESTS, "Image Thread 5")); 273 277 _imageThreads.push_back(new ImageThread(this, ImageThread::HANDLE_ALL_REQUESTS, "Image Thread 6")); 274 278 #endif 275 279 // 1 second 276 280 _preLoadTime = 1.0; … … 315 319 } 316 320 317 void ImagePager::requestImageFile(const std::string& fileName,osg::Object* attachmentPoint, int attachmentIndex, double timeToMergeBy, const osg::FrameStamp*) 318 { 319 OSG_INFO<<"ImagePager::requestNodeFile("<<fileName<<")"<<std::endl; 321 void ImagePager::requestImageFile(const std::string& fileName, osg::Object* attachmentPoint, int attachmentIndex, double timeToMergeBy, const osg::FrameStamp* framestamp, osg::ref_ptr<osg::Referenced>& imageRequest, const osg::Referenced* options) 322 { 323 324 osgDB::Options* readOptions = dynamic_cast<osgDB::Options*>(const_cast<osg::Referenced*>(options)); 325 if (!readOptions) 326 { 327 readOptions = Registry::instance()->getOptions(); 328 } 329 330 bool alreadyAssigned = dynamic_cast<ImageRequest*>(imageRequest.get()) && (imageRequest->referenceCount()>1); 331 if (alreadyAssigned) 332 { 333 // OSG_NOTICE<<"ImagePager::requestImageFile("<<fileName<<") alreadyAssigned"<<std::endl; 334 return; 335 } 320 336 321 337 osg::ref_ptr<ImageRequest> request = new ImageRequest; … … 325 341 request->_attachmentIndex = attachmentIndex; 326 342 request->_requestQueue = _readQueue.get(); 343 request->_readOptions = readOptions; 344 345 imageRequest = request; 346 347 // OSG_NOTICE<<"ImagePager::requestImageFile("<<fileName<<") new request."<<std::endl; 327 348 328 349 _readQueue->add(request.get());
