Index: ui/gl/gl_context.h |
diff --git a/ui/gl/gl_context.h b/ui/gl/gl_context.h |
index f40b1bba78647ab9ef7090ffa420e4c5ba1b739c..38e5ea8454b8ad5dac7cfbfc6ec9e9b0e56dbfcf 100644 |
--- a/ui/gl/gl_context.h |
+++ b/ui/gl/gl_context.h |
@@ -6,7 +6,9 @@ |
#define UI_GL_GL_CONTEXT_H_ |
#include <string> |
+#include <vector> |
+#include "base/atomicops.h" |
#include "base/basictypes.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
@@ -32,6 +34,22 @@ class GL_EXPORT GLContext : public base::RefCounted<GLContext> { |
virtual bool Initialize( |
GLSurface* compatible_surface, GpuPreference gpu_preference) = 0; |
+ class FlushEvent : public base::RefCountedThreadSafe<FlushEvent> { |
+ public: |
+ bool IsSignaled(); |
+ |
+ private: |
+ friend class base::RefCountedThreadSafe<FlushEvent>; |
+ friend class GLContext; |
+ FlushEvent(); |
+ virtual ~FlushEvent(); |
+ void Signal(); |
+ |
+ base::subtle::Atomic32 state_; |
+ }; |
+ |
+ scoped_refptr<FlushEvent> SignalFlush(); |
+ |
// Destroys the GL context. |
virtual void Destroy() = 0; |
@@ -114,6 +132,9 @@ class GL_EXPORT GLContext : public base::RefCounted<GLContext> { |
// Returns the GL renderer string. The context must be current. |
virtual std::string GetGLRenderer(); |
+ // Called when glFlush()/glFinish() is called with this context current. |
+ void OnFlush(); |
+ |
protected: |
virtual ~GLContext(); |
@@ -140,6 +161,8 @@ class GL_EXPORT GLContext : public base::RefCounted<GLContext> { |
scoped_ptr<GLStateRestorer> state_restorer_; |
scoped_ptr<GLVersionInfo> version_info_; |
+ std::vector<scoped_refptr<FlushEvent> > flush_events_; |
+ |
DISALLOW_COPY_AND_ASSIGN(GLContext); |
}; |