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

Side by Side Diff: ppapi/cpp/dev/graphics_3d_dev.cc

Issue 5927002: Moved the logic of maintaining the current context to gles2 helper library. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "ppapi/cpp/dev/graphics_3d_dev.h" 5 #include "ppapi/cpp/dev/graphics_3d_dev.h"
6 6
7 #include "ppapi/cpp/common.h" 7 #include "ppapi/cpp/common.h"
8 #include "ppapi/cpp/instance.h" 8 #include "ppapi/cpp/instance.h"
9 #include "ppapi/cpp/resource.h" 9 #include "ppapi/cpp/resource.h"
10 #include "ppapi/cpp/module.h" 10 #include "ppapi/cpp/module.h"
11 #include "ppapi/cpp/module_impl.h" 11 #include "ppapi/cpp/module_impl.h"
12 12
13 extern "C" {
14 const PPB_OpenGLES_Dev* pepper_opengl_interface = NULL;
15 }
16
17 namespace { 13 namespace {
18 14
19 DeviceFuncs<PPB_Graphics3D_Dev> graphics_3d_f(PPB_GRAPHICS_3D_DEV_INTERFACE); 15 DeviceFuncs<PPB_Graphics3D_Dev> graphics_3d_f(PPB_GRAPHICS_3D_DEV_INTERFACE);
20 DeviceFuncs<PPB_OpenGLES_Dev> opengles_f(PPB_OPENGLES_DEV_INTERFACE); 16 DeviceFuncs<PPB_OpenGLES2_Dev> opengles_f(PPB_OPENGLES2_DEV_INTERFACE);
21
22 inline void InitializeOpenGLCInterface() {
23 if (!pepper_opengl_interface)
24 pepper_opengl_interface = &(*opengles_f);
25 }
26 17
27 } // namespace 18 } // namespace
28 19
29 namespace pp { 20 namespace pp {
30 21
31 // static 22 // static
32 bool Graphics3D_Dev::GetConfigs(int32_t *configs, int32_t config_size, 23 bool Graphics3D_Dev::GetConfigs(int32_t *configs, int32_t config_size,
33 int32_t *num_config) { 24 int32_t *num_config) {
34 if (graphics_3d_f) { 25 if (graphics_3d_f) {
35 return PPBoolToBool(graphics_3d_f->GetConfigs(configs, 26 return PPBoolToBool(graphics_3d_f->GetConfigs(configs,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 return graphics_3d_f->GetProcAddress(name); 66 return graphics_3d_f->GetProcAddress(name);
76 return NULL; 67 return NULL;
77 } 68 }
78 69
79 Graphics3D_Dev Graphics3D_Dev::FromResource(PP_Resource resource_id) { 70 Graphics3D_Dev Graphics3D_Dev::FromResource(PP_Resource resource_id) {
80 if (graphics_3d_f && graphics_3d_f->IsGraphics3D(resource_id)) 71 if (graphics_3d_f && graphics_3d_f->IsGraphics3D(resource_id))
81 return Graphics3D_Dev(resource_id); 72 return Graphics3D_Dev(resource_id);
82 return Graphics3D_Dev(); 73 return Graphics3D_Dev();
83 } 74 }
84 75
85 bool Graphics3D_Dev::ResetCurrent() {
86 return graphics_3d_f && graphics_3d_f->MakeCurent(0);
87 }
88
89 Graphics3D_Dev Graphics3D_Dev::GetCurrentContext() {
90 if (graphics_3d_f)
91 return FromResource(graphics_3d_f->GetCurrentContext());
92 return Graphics3D_Dev();
93 }
94
95 uint32_t Graphics3D_Dev::GetError() { 76 uint32_t Graphics3D_Dev::GetError() {
96 if (graphics_3d_f) 77 if (graphics_3d_f)
97 return graphics_3d_f->GetError(); 78 return graphics_3d_f->GetError();
98 return PP_GRAPHICS_3D_ERROR_NOT_INITIALIZED; 79 return PP_GRAPHICS_3D_ERROR_NOT_INITIALIZED;
99 } 80 }
100 81
101 const PPB_OpenGLES_Dev* Graphics3D_Dev::GetImplementation() { 82 const PPB_OpenGLES2_Dev* Graphics3D_Dev::GetImplementation() {
102 return &(*opengles_f); 83 return &(*opengles_f);
103 } 84 }
104 85
105 Graphics3D_Dev::Graphics3D_Dev(const Instance& instance, 86 Graphics3D_Dev::Graphics3D_Dev(const Instance& instance,
106 int32_t config, 87 int32_t config,
107 int32_t share_context, 88 int32_t share_context,
108 const int32_t* attrib_list) { 89 const int32_t* attrib_list) {
109 if (graphics_3d_f && opengles_f) { 90 if (graphics_3d_f && opengles_f) {
110 InitializeOpenGLCInterface();
111 PassRefFromConstructor(graphics_3d_f->CreateContext(instance.pp_instance(), 91 PassRefFromConstructor(graphics_3d_f->CreateContext(instance.pp_instance(),
112 config, share_context, 92 config, share_context,
113 attrib_list)); 93 attrib_list));
114 } 94 }
115 } 95 }
116 96
117 bool Graphics3D_Dev::MakeCurrent() const {
118 InitializeOpenGLCInterface();
119 return graphics_3d_f && graphics_3d_f->MakeCurent(pp_resource());
120 }
121
122 bool Graphics3D_Dev::SwapBuffers() const { 97 bool Graphics3D_Dev::SwapBuffers() const {
123 return graphics_3d_f && graphics_3d_f->SwapBuffers(pp_resource()); 98 return graphics_3d_f && graphics_3d_f->SwapBuffers(pp_resource());
124 } 99 }
125 100
126 } // namespace pp 101 } // namespace pp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698