Index: ui/gl/gl_context.cc |
diff --git a/ui/gl/gl_context.cc b/ui/gl/gl_context.cc |
index baa20fa3d71a3aa0386eab59249eff5253f81fa4..533b7d3146e89de6242720d611f9d967bde6dd94 100644 |
--- a/ui/gl/gl_context.cc |
+++ b/ui/gl/gl_context.cc |
@@ -38,6 +38,20 @@ void GLContext::ScopedReleaseCurrent::Cancel() { |
canceled_ = true; |
} |
+GLContext::FlushEvent::FlushEvent() { |
+} |
+ |
+GLContext::FlushEvent::~FlushEvent() { |
+} |
+ |
+void GLContext::FlushEvent::Signal() { |
+ flag_.Set(); |
+} |
+ |
+bool GLContext::FlushEvent::IsSignaled() { |
+ return flag_.IsSet(); |
+} |
+ |
GLContext::GLContext(GLShareGroup* share_group) : share_group_(share_group) { |
if (!share_group_.get()) |
share_group_ = new GLShareGroup; |
@@ -52,6 +66,13 @@ GLContext::~GLContext() { |
} |
} |
+scoped_refptr<GLContext::FlushEvent> GLContext::SignalFlush() { |
+ DCHECK(IsCurrent(NULL)); |
+ scoped_refptr<FlushEvent> flush_event = new FlushEvent(); |
+ flush_events_.push_back(flush_event); |
+ return flush_event; |
+} |
+ |
bool GLContext::GetTotalGpuMemory(size_t* bytes) { |
DCHECK(bytes); |
*bytes = 0; |
@@ -190,6 +211,12 @@ void GLContext::SetRealGLApi() { |
SetGLToRealGLApi(); |
} |
+void GLContext::OnFlush() { |
+ for (size_t n = 0; n < flush_events_.size(); n++) |
+ flush_events_[n]->Signal(); |
+ flush_events_.clear(); |
+} |
+ |
GLContextReal::GLContextReal(GLShareGroup* share_group) |
: GLContext(share_group) {} |