/*static*/ status_t Overlay::drawInfoPage( const sp<IGraphicBufferProducer>& outputSurface) { status_t err; EglWindow window; err = window.createWindow(outputSurface); if (err != NO_ERROR) { return err; } window.makeCurrent(); int width = window.getWidth(); int height = window.getHeight(); glViewport(0, 0, width, height); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); // Shaders for rendering. Program texProgram; err = texProgram.setup(Program::PROGRAM_TEXTURE_2D); if (err != NO_ERROR) { return err; } TextRenderer textRenderer; err = textRenderer.loadIntoTexture(); if (err != NO_ERROR) { return err; } textRenderer.setScreenSize(width, height); doDrawInfoPage(window, texProgram, textRenderer); // Destroy the surface. This causes a disconnect. texProgram.release(); window.release(); return NO_ERROR; }