Add rotation to surfaceflingers screen cap.
+ This is needed so that activity manager does not
have to do cpu side rotations when capturing recents
thumbnails.
Change-Id: If998008e675ad01305db8399fd643cf4608b7025
diff --git a/services/surfaceflinger/RenderEngine/GLES11RenderEngine.cpp b/services/surfaceflinger/RenderEngine/GLES11RenderEngine.cpp
index d1e324c..c2768f3 100644
--- a/services/surfaceflinger/RenderEngine/GLES11RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/GLES11RenderEngine.cpp
@@ -21,6 +21,7 @@
#include <utils/String8.h>
#include <cutils/compiler.h>
+#include <gui/ISurfaceComposer.h>
#include "GLES11RenderEngine.h"
#include "Mesh.h"
@@ -74,7 +75,8 @@
}
void GLES11RenderEngine::setViewportAndProjection(
- size_t vpw, size_t vph, Rect sourceCrop, size_t hwh, bool yswap) {
+ size_t vpw, size_t vph, Rect sourceCrop, size_t hwh, bool yswap,
+ Transform::orientation_flags rotation) {
glViewport(0, 0, vpw, vph);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@@ -91,6 +93,23 @@
} else {
glOrthof(l, r, b, t, 0, 1);
}
+
+ switch (rotation) {
+ case Transform::ROT_0:
+ break;
+ case Transform::ROT_90:
+ glRotatef(90, 0, 0, 1);
+ break;
+ case Transform::ROT_180:
+ glRotatef(180, 0, 0, 1);
+ break;
+ case Transform::ROT_270:
+ glRotatef(270, 0, 0, 1);
+ break;
+ default:
+ break;
+ }
+
glMatrixMode(GL_MODELVIEW);
}