| 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);
|
| };
|
|
|
|
|