Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: ui/gl/gl_surface_ozone.cc

Issue 312393002: ozone: Move the factory interfaces into a common target. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tot-merge-r278697 Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/gl/gl_surface_egl.cc ('k') | ui/ozone/ozone.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gl/gl_surface.h" 5 #include "ui/gl/gl_surface.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "ui/gfx/native_widget_types.h" 9 #include "ui/gfx/native_widget_types.h"
10 #include "ui/gfx/ozone/surface_factory_ozone.h"
11 #include "ui/gfx/ozone/surface_ozone_egl.h"
12 #include "ui/gl/gl_implementation.h" 10 #include "ui/gl/gl_implementation.h"
13 #include "ui/gl/gl_surface_egl.h" 11 #include "ui/gl/gl_surface_egl.h"
14 #include "ui/gl/gl_surface_osmesa.h" 12 #include "ui/gl/gl_surface_osmesa.h"
15 #include "ui/gl/gl_surface_stub.h" 13 #include "ui/gl/gl_surface_stub.h"
14 #include "ui/ozone/public/surface_factory_ozone.h"
15 #include "ui/ozone/public/surface_ozone_egl.h"
16 16
17 namespace gfx { 17 namespace gfx {
18 18
19 namespace { 19 namespace {
20 20
21 // A thin wrapper around GLSurfaceEGL that owns the EGLNativeWindow 21 // A thin wrapper around GLSurfaceEGL that owns the EGLNativeWindow
22 class GL_EXPORT GLSurfaceOzoneEGL : public NativeViewGLSurfaceEGL { 22 class GL_EXPORT GLSurfaceOzoneEGL : public NativeViewGLSurfaceEGL {
23 public: 23 public:
24 GLSurfaceOzoneEGL(scoped_ptr<SurfaceOzoneEGL> ozone_surface) 24 GLSurfaceOzoneEGL(scoped_ptr<ui::SurfaceOzoneEGL> ozone_surface)
25 : NativeViewGLSurfaceEGL(ozone_surface->GetNativeWindow()), 25 : NativeViewGLSurfaceEGL(ozone_surface->GetNativeWindow()),
26 ozone_surface_(ozone_surface.Pass()) {} 26 ozone_surface_(ozone_surface.Pass()) {}
27 27
28 virtual bool Resize(const gfx::Size& size) OVERRIDE { 28 virtual bool Resize(const gfx::Size& size) OVERRIDE {
29 if (!ozone_surface_->ResizeNativeWindow(size)) 29 if (!ozone_surface_->ResizeNativeWindow(size))
30 return false; 30 return false;
31 31
32 return NativeViewGLSurfaceEGL::Resize(size); 32 return NativeViewGLSurfaceEGL::Resize(size);
33 } 33 }
34 virtual bool SwapBuffers() OVERRIDE { 34 virtual bool SwapBuffers() OVERRIDE {
35 if (!NativeViewGLSurfaceEGL::SwapBuffers()) 35 if (!NativeViewGLSurfaceEGL::SwapBuffers())
36 return false; 36 return false;
37 37
38 return ozone_surface_->OnSwapBuffers(); 38 return ozone_surface_->OnSwapBuffers();
39 } 39 }
40 40
41 private: 41 private:
42 virtual ~GLSurfaceOzoneEGL() { 42 virtual ~GLSurfaceOzoneEGL() {
43 Destroy(); // EGL surface must be destroyed before SurfaceOzone 43 Destroy(); // EGL surface must be destroyed before SurfaceOzone
44 } 44 }
45 45
46 // The native surface. Deleting this is allowed to free the EGLNativeWindow. 46 // The native surface. Deleting this is allowed to free the EGLNativeWindow.
47 scoped_ptr<SurfaceOzoneEGL> ozone_surface_; 47 scoped_ptr<ui::SurfaceOzoneEGL> ozone_surface_;
48 48
49 DISALLOW_COPY_AND_ASSIGN(GLSurfaceOzoneEGL); 49 DISALLOW_COPY_AND_ASSIGN(GLSurfaceOzoneEGL);
50 }; 50 };
51 51
52 } // namespace 52 } // namespace
53 53
54 // static 54 // static
55 bool GLSurface::InitializeOneOffInternal() { 55 bool GLSurface::InitializeOneOffInternal() {
56 switch (GetGLImplementation()) { 56 switch (GetGLImplementation()) {
57 case kGLImplementationEGLGLES2: 57 case kGLImplementationEGLGLES2:
58 if (gfx::SurfaceFactoryOzone::GetInstance()->InitializeHardware() != 58 if (ui::SurfaceFactoryOzone::GetInstance()->InitializeHardware() !=
59 gfx::SurfaceFactoryOzone::INITIALIZED) { 59 ui::SurfaceFactoryOzone::INITIALIZED) {
60 LOG(ERROR) << "Ozone failed to initialize hardware"; 60 LOG(ERROR) << "Ozone failed to initialize hardware";
61 return false; 61 return false;
62 } 62 }
63 63
64 if (!GLSurfaceEGL::InitializeOneOff()) { 64 if (!GLSurfaceEGL::InitializeOneOff()) {
65 LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed."; 65 LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
66 return false; 66 return false;
67 } 67 }
68 68
69 return true; 69 return true;
70 case kGLImplementationOSMesaGL: 70 case kGLImplementationOSMesaGL:
71 case kGLImplementationMockGL: 71 case kGLImplementationMockGL:
72 return true; 72 return true;
73 default: 73 default:
74 return false; 74 return false;
75 } 75 }
76 } 76 }
77 77
78 // static 78 // static
79 scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface( 79 scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
80 gfx::AcceleratedWidget window) { 80 gfx::AcceleratedWidget window) {
81 if (GetGLImplementation() == kGLImplementationOSMesaGL) { 81 if (GetGLImplementation() == kGLImplementationOSMesaGL) {
82 scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless()); 82 scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless());
83 if (!surface->Initialize()) 83 if (!surface->Initialize())
84 return NULL; 84 return NULL;
85 return surface; 85 return surface;
86 } 86 }
87 DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2); 87 DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2);
88 if (window != kNullAcceleratedWidget) { 88 if (window != kNullAcceleratedWidget) {
89 scoped_ptr<SurfaceOzoneEGL> surface_ozone = 89 scoped_ptr<ui::SurfaceOzoneEGL> surface_ozone =
90 SurfaceFactoryOzone::GetInstance()->CreateEGLSurfaceForWidget(window); 90 ui::SurfaceFactoryOzone::GetInstance()->CreateEGLSurfaceForWidget(
91 window);
91 if (!surface_ozone) 92 if (!surface_ozone)
92 return NULL; 93 return NULL;
93 94
94 scoped_ptr<VSyncProvider> vsync_provider = 95 scoped_ptr<VSyncProvider> vsync_provider =
95 surface_ozone->CreateVSyncProvider(); 96 surface_ozone->CreateVSyncProvider();
96 scoped_refptr<GLSurfaceOzoneEGL> surface = 97 scoped_refptr<GLSurfaceOzoneEGL> surface =
97 new GLSurfaceOzoneEGL(surface_ozone.Pass()); 98 new GLSurfaceOzoneEGL(surface_ozone.Pass());
98 if (!surface->Initialize(vsync_provider.Pass())) 99 if (!surface->Initialize(vsync_provider.Pass()))
99 return NULL; 100 return NULL;
100 return surface; 101 return surface;
(...skipping 28 matching lines...) Expand all
129 return NULL; 130 return NULL;
130 return surface; 131 return surface;
131 } 132 }
132 default: 133 default:
133 NOTREACHED(); 134 NOTREACHED();
134 return NULL; 135 return NULL;
135 } 136 }
136 } 137 }
137 138
138 EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() { 139 EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
139 return SurfaceFactoryOzone::GetInstance()->GetNativeDisplay(); 140 return ui::SurfaceFactoryOzone::GetInstance()->GetNativeDisplay();
140 } 141 }
141 142
142 } // namespace gfx 143 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gl/gl_surface_egl.cc ('k') | ui/ozone/ozone.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698