/** * Add the given _EGLScreen to the display's list of screens. */ void _eglAddScreen(_EGLDisplay *display, _EGLScreen *screen) { EGLint n; assert(display); assert(screen); screen->Handle = _eglAllocScreenHandle(); n = display->NumScreens; display->Screens = realloc(display->Screens, (n+1) * sizeof(_EGLScreen *)); display->Screens[n] = screen; display->NumScreens++; }
/** * Add the given _EGLScreen to the display's list of screens. */ void _eglAddScreen(_EGLDisplay *display, _EGLScreen *screen) { assert(display); assert(screen); if (!display->Screens) { display->Screens = _eglCreateArray("Screen", 4); if (!display->Screens) return; } screen->Handle = _eglAllocScreenHandle(); _eglAppendArray(display->Screens, (void *) screen); }
/** * Link a screen to its display and return the handle of the link. * The handle can be passed to client directly. */ EGLScreenMESA _eglLinkScreen(_EGLScreen *screen) { _EGLDisplay *display; EGLint i; assert(screen && screen->Display); display = screen->Display; if (!display->Screens) { display->Screens = _eglCreateArray("Screen", 4); if (!display->Screens) return (EGLScreenMESA) 0; } screen->Handle = _eglAllocScreenHandle(); for (i = 0; i < screen->NumModes; i++) screen->Modes[i].Handle = screen->Handle + i; _eglAppendArray(display->Screens, (void *) screen); return screen->Handle; }