surfaceflinger: add RenderEngine::setCurrentSurface
setCurrentSurface is a wrapper to eglMakeCurrent and it uses the EGL
context implied by the RenderEngine. This also allows us to
simplify DisplayDevice::makeCurrent.
Test: SurfaceFlinger_test
Change-Id: Idab581f0ef79af7263159a558d8fad493a198ce7
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.cpp b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
index 1d22f84..332f2e0 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
@@ -187,6 +187,14 @@
return mEGLContext;
}
+bool RenderEngine::setCurrentSurface(EGLSurface surface) {
+ return eglMakeCurrent(mEGLDisplay, surface, surface, mEGLContext) == EGL_TRUE;
+}
+
+void RenderEngine::resetCurrentSurface() {
+ eglMakeCurrent(mEGLDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+}
+
void RenderEngine::checkErrors() const {
do {
// there could be more than one error flag
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.h b/services/surfaceflinger/RenderEngine/RenderEngine.h
index b28454a..bd5eac2 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.h
@@ -99,6 +99,9 @@
int getStatus() const;
};
+ bool setCurrentSurface(EGLSurface surface);
+ void resetCurrentSurface();
+
// set-up
virtual void checkErrors() const;
virtual void setViewportAndProjection(size_t vpw, size_t vph,