drm_hwcomposer: make the gl worker compositor not nested

Change-Id: I06b75644408a570044499a9f603a478f3199661f
diff --git a/glworker.cpp b/glworker.cpp
index b2deb3e..0cb2bf7 100644
--- a/glworker.cpp
+++ b/glworker.cpp
@@ -407,11 +407,11 @@
   return 0;
 }
 
-GLWorker::Compositor::Compositor()
+GLWorkerCompositor::GLWorkerCompositor()
     : egl_display_(EGL_NO_DISPLAY), egl_ctx_(EGL_NO_CONTEXT) {
 }
 
-int GLWorker::Compositor::Init() {
+int GLWorkerCompositor::Init() {
   int ret = 0;
   const char *egl_extensions;
   const char *gl_extensions;
@@ -502,14 +502,14 @@
   return 0;
 }
 
-GLWorker::Compositor::~Compositor() {
+GLWorkerCompositor::~GLWorkerCompositor() {
   if (egl_display_ != EGL_NO_DISPLAY && egl_ctx_ != EGL_NO_CONTEXT)
     if (eglDestroyContext(egl_display_, egl_ctx_) == EGL_FALSE)
       ALOGE("Failed to destroy OpenGL ES Context: %s", GetEGLError());
 }
 
-int GLWorker::Compositor::Composite(hwc_layer_1 *layers, size_t num_layers,
-                                    sp<GraphicBuffer> framebuffer) {
+int GLWorkerCompositor::Composite(hwc_layer_1 *layers, size_t num_layers,
+                                  sp<GraphicBuffer> framebuffer) {
   ATRACE_CALL();
   int ret = 0;
   size_t i;
@@ -654,7 +654,7 @@
   return ret;
 }
 
-int GLWorker::DoComposition(Compositor &compositor, Work *work) {
+int GLWorker::DoComposition(GLWorkerCompositor &compositor, Work *work) {
   int ret =
       compositor.Composite(work->layers, work->num_layers, work->framebuffer);
 
@@ -800,7 +800,7 @@
 
   TRY(pthread_mutex_lock(&lock_), "lock GLThread", return );
 
-  Compositor compositor;
+  GLWorkerCompositor compositor;
 
   TRY(compositor.Init(), "initialize GL", goto out_signal_done);
 
diff --git a/glworker.h b/glworker.h
index 4ac0e7d..e9febec 100644
--- a/glworker.h
+++ b/glworker.h
@@ -30,6 +30,8 @@
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
 
+#include <ui/GraphicBuffer.h>
+
 struct hwc_layer_1;
 
 namespace android {
@@ -77,6 +79,24 @@
   }
 };
 
+class GLWorkerCompositor {
+ public:
+  GLWorkerCompositor();
+  ~GLWorkerCompositor();
+
+  int Init();
+
+  int Composite(hwc_layer_1 *layers, size_t num_layers,
+                sp<GraphicBuffer> framebuffer);
+
+ private:
+  EGLDisplay egl_display_;
+  EGLContext egl_ctx_;
+
+  std::vector<AutoGLProgram> blend_programs_;
+  AutoGLBuffer vertex_buffer_;
+};
+
 class GLWorker {
  public:
   struct Work {
@@ -89,24 +109,6 @@
     Work(const Work &rhs) = delete;
   };
 
-  class Compositor {
-   public:
-    Compositor();
-    ~Compositor();
-
-    int Init();
-
-    int Composite(hwc_layer_1 *layers, size_t num_layers,
-                  sp<GraphicBuffer> framebuffer);
-
-   private:
-    EGLDisplay egl_display_;
-    EGLContext egl_ctx_;
-
-    std::vector<AutoGLProgram> blend_programs_;
-    AutoGLBuffer vertex_buffer_;
-  };
-
   GLWorker();
   ~GLWorker();
 
@@ -126,7 +128,7 @@
   int worker_ret_;
 
   void WorkerRoutine();
-  int DoComposition(Compositor &compositor, Work *work);
+  int DoComposition(GLWorkerCompositor &compositor, Work *work);
 
   int SignalWorker(Work *work, bool worker_exit);