EME test page application.
[chromium-blink-merge.git] / ui / gl / gl_fence.h
blob021f3456f132c831417cb80f0a9f90f3b1d8709d
1 // Copyright (c) 2012 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.
5 #ifndef UI_GL_GL_FENCE_H_
6 #define UI_GL_GL_FENCE_H_
8 #include "base/basictypes.h"
9 #include "ui/gl/gl_export.h"
11 namespace gfx {
13 class GL_EXPORT GLFence {
14 public:
15 GLFence();
16 virtual ~GLFence();
18 static GLFence* Create();
20 // Creates a fence that is not guaranteed to signal until the current context
21 // is flushed. It is illegal to call Client/ServerWait() on a fence without
22 // having explicitly called glFlush() or glFinish() in the originating
23 // context.
24 static GLFence* CreateWithoutFlush();
26 virtual bool HasCompleted() = 0;
27 virtual void ClientWait() = 0;
29 // Will block the server if supported, but might fall back to blocking the
30 // client.
31 virtual void ServerWait() = 0;
33 protected:
34 static bool IsContextLost();
36 private:
37 DISALLOW_COPY_AND_ASSIGN(GLFence);
40 } // namespace gfx
42 #endif // UI_GL_GL_FENCE_H_