1 // Copyright (c) 2011 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.
4 
5 #ifndef GPU_GLES2_CONFORM_TEST_SURFACE_H_
6 #define GPU_GLES2_CONFORM_TEST_SURFACE_H_
7 
8 #include <EGL/egl.h>
9 
10 #include "base/macros.h"
11 #include "base/memory/ref_counted.h"
12 namespace gl {
13 class GLSurface;
14 }
15 namespace egl {
16 class Config;
17 
18 class Surface : public base::RefCountedThreadSafe<Surface> {
19  public:
20   explicit Surface(gl::GLSurface* gl_surface, const Config* config);
set_is_current_in_some_thread(bool flag)21   void set_is_current_in_some_thread(bool flag) {
22     is_current_in_some_thread_ = flag;
23   }
is_current_in_some_thread()24   bool is_current_in_some_thread() const { return is_current_in_some_thread_; }
25   gl::GLSurface* gl_surface() const;
26   const Config* config() const;
27   static bool ValidatePbufferAttributeList(const EGLint* attrib_list);
28   static bool ValidateWindowAttributeList(const EGLint* attrib_list);
29 
30  private:
31   friend class base::RefCountedThreadSafe<Surface>;
32   ~Surface();
33   bool is_current_in_some_thread_;
34   scoped_refptr<gl::GLSurface> gl_surface_;
35   const Config* config_;
36   DISALLOW_COPY_AND_ASSIGN(Surface);
37 };
38 
39 }  // namespace egl
40 
41 #endif  // GPU_GLES2_CONFORM_TEST_SURFACE_H_
42