| Index: ui/gl/gl_fence_apple.cc
 | 
| diff --git a/ui/gl/gl_fence_apple.cc b/ui/gl/gl_fence_apple.cc
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..9df0cad7e13f9de4ceeef311f127ed1ecd5d9650
 | 
| --- /dev/null
 | 
| +++ b/ui/gl/gl_fence_apple.cc
 | 
| @@ -0,0 +1,47 @@
 | 
| +// Copyright 2014 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#include "ui/gl/gl_fence_apple.h"
 | 
| +
 | 
| +#include "ui/gl/gl_bindings.h"
 | 
| +#include "ui/gl/gl_context.h"
 | 
| +
 | 
| +namespace gfx {
 | 
| +
 | 
| +GLFenceAPPLE::GLFenceAPPLE(bool flush) {
 | 
| +  glGenFencesAPPLE(1, &fence_);
 | 
| +  glSetFenceAPPLE(fence_);
 | 
| +  DCHECK(glIsFenceAPPLE(fence_));
 | 
| +  if (flush) {
 | 
| +    glFlush();
 | 
| +  } else {
 | 
| +    flush_event_ = GLContext::GetCurrent()->SignalFlush();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +bool GLFenceAPPLE::HasCompleted() {
 | 
| +  DCHECK(glIsFenceAPPLE(fence_));
 | 
| +  return !!glTestFenceAPPLE(fence_);
 | 
| +}
 | 
| +
 | 
| +void GLFenceAPPLE::ClientWait() {
 | 
| +  DCHECK(glIsFenceAPPLE(fence_));
 | 
| +  if (!flush_event_.get() || flush_event_->IsSignaled()) {
 | 
| +    glFinishFenceAPPLE(fence_);
 | 
| +  } else {
 | 
| +    LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void GLFenceAPPLE::ServerWait() {
 | 
| +  DCHECK(glIsFenceAPPLE(fence_));
 | 
| +  ClientWait();
 | 
| +}
 | 
| +
 | 
| +GLFenceAPPLE::~GLFenceAPPLE() {
 | 
| +  DCHECK(glIsFenceAPPLE(fence_));
 | 
| +  glDeleteFencesAPPLE(1, &fence_);
 | 
| +}
 | 
| +
 | 
| +}  // namespace gfx
 | 
| 
 |