Display *Display::getDisplay(EGLNativeDisplayType displayId, const AttributeMap &attribMap) { // Initialize the global platform if not already InitDefaultPlatformImpl(); Display *display = NULL; DisplayMap *displays = GetDisplayMap(); DisplayMap::const_iterator iter = displays->find(displayId); if (iter != displays->end()) { display = iter->second; } if (display == nullptr) { // Validate the native display if (!Display::isValidNativeDisplay(displayId)) { return NULL; } display = new Display(displayId); displays->insert(std::make_pair(displayId, display)); } // Apply new attributes if the display is not initialized yet. if (!display->isInitialized()) { rx::DisplayImpl* impl = CreateDisplayImpl(attribMap); display->setAttributes(impl, attribMap); } return display; }
Display::~Display() { terminate(); DisplayMap *displays = GetDisplayMap(); DisplayMap::iterator iter = displays->find(mDisplayId); if (iter != displays->end()) { displays->erase(iter); } }
Display::~Display() { terminate(); DisplayMap *displays = GetDisplayMap(); DisplayMap::iterator iter = displays->find(mDisplayId); if (iter != displays->end()) { displays->erase(iter); } SafeDelete(mDevice); SafeDelete(mImplementation); }
egl::Display *Display::getDisplay(EGLNativeDisplayType displayId, EGLint displayType) { DisplayMap *displays = GetDisplayMap(); DisplayMap::const_iterator iter = displays->find(displayId); if (iter != displays->end()) { return iter->second; } // FIXME: Check if displayId is a valid display device context egl::Display *display = new egl::Display(displayId, displayType); displays->insert(std::make_pair(displayId, display)); return display; }