aw_gl_functor.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ANDROID_WEBVIEW_BROWSER_GFX_AW_GL_FUNCTOR_H_
  5. #define ANDROID_WEBVIEW_BROWSER_GFX_AW_GL_FUNCTOR_H_
  6. #include "android_webview/browser/gfx/compositor_frame_consumer.h"
  7. #include "android_webview/browser/gfx/render_thread_manager.h"
  8. #include "base/android/jni_weak_ref.h"
  9. struct AwDrawGLInfo;
  10. namespace android_webview {
  11. class AwGLFunctor {
  12. public:
  13. explicit AwGLFunctor(const JavaObjectWeakGlobalRef& java_ref);
  14. ~AwGLFunctor();
  15. void Destroy(JNIEnv* env);
  16. void DeleteHardwareRenderer(JNIEnv* env,
  17. const base::android::JavaParamRef<jobject>& obj);
  18. void RemoveFromCompositorFrameProducer(
  19. JNIEnv* env,
  20. const base::android::JavaParamRef<jobject>& obj);
  21. jlong GetCompositorFrameConsumer(
  22. JNIEnv* env,
  23. const base::android::JavaParamRef<jobject>& obj);
  24. jlong GetAwDrawGLFunction(JNIEnv* env,
  25. const base::android::JavaParamRef<jobject>& obj);
  26. void DrawGL(AwDrawGLInfo* draw_info);
  27. private:
  28. bool RequestInvokeGL(bool wait_for_completion);
  29. void DetachFunctorFromView();
  30. CompositorFrameConsumer* GetCompositorFrameConsumer() {
  31. return &render_thread_manager_;
  32. }
  33. JavaObjectWeakGlobalRef java_ref_;
  34. RenderThreadManager render_thread_manager_;
  35. };
  36. } // namespace android_webview
  37. #endif // ANDROID_WEBVIEW_BROWSER_GFX_AW_GL_FUNCTOR_H_