void CompositeViewer::getContexts(Contexts& contexts, bool onlyValid) { typedef std::set<osg::GraphicsContext*> ContextSet; ContextSet contextSet; contexts.clear(); for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { osgViewer::View* view = vitr->get(); osg::GraphicsContext* gc = view->getCamera() ? view->getCamera()->getGraphicsContext() : 0; if (gc && (gc->valid() || !onlyValid)) { if (contextSet.count(gc)==0) { contextSet.insert(gc); contexts.push_back(gc); } } for(unsigned int i=0; i<view->getNumSlaves(); ++i) { View::Slave& slave = view->getSlave(i); osg::GraphicsContext* sgc = slave._camera.valid() ? slave._camera->getGraphicsContext() : 0; if (sgc && (sgc->valid() || !onlyValid)) { if (contextSet.count(sgc)==0) { contextSet.insert(sgc); contexts.push_back(sgc); } } } } }