Chromium Code Reviews| Index: plugin/cross/o3d_glue.cc |
| =================================================================== |
| --- plugin/cross/o3d_glue.cc (revision 75475) |
| +++ plugin/cross/o3d_glue.cc (working copy) |
| @@ -257,9 +257,9 @@ |
| } |
| void PluginObject::CreateRenderer(const o3d::DisplayWindow& display_window) { |
| - if (!o3d::CheckConfig(npp_)) { |
| - renderer_init_status_ = o3d::Renderer::GPU_NOT_UP_TO_SPEC; |
| - } else { |
| + renderer_init_status_ = o3d::Renderer::GPU_NOT_UP_TO_SPEC; |
|
Tristan Schmelcher 2
2011/02/23 02:08:51
I preferred the previous code structure where this
|
| +#if !defined(FORCE_CAIRO) |
| + if (o3d::CheckConfig(npp_)) { |
| renderer_ = o3d::Renderer::CreateDefaultRenderer(&service_locator_); |
| DCHECK(renderer_); |
| @@ -269,6 +269,25 @@ |
| DeleteRenderer(); |
| } |
| } |
| +#endif |
| +#if defined(SUPPORT_CAIRO) |
| + if (renderer_init_status_ != o3d::Renderer::SUCCESS) { |
| + // Attempt to fall back to o2d renderer |
| + renderer_ = o3d::Renderer::Create2DRenderer(&service_locator_); |
| + if (renderer_) { |
| + Renderer::InitStatus temp_status = renderer_->Init(display_window, |
|
Tristan Schmelcher 2
2011/02/23 02:08:51
I don't think you need this temp_status variable.
|
| + false); |
| + if (temp_status != o3d::Renderer::SUCCESS) { |
| + DeleteRenderer(); |
| + } else { |
| + renderer_init_status_ = o3d::Renderer::SUCCESS; |
| + ClientInfoManager* client_info_manager = |
| + service_locator()->GetService<ClientInfoManager>(); |
| + client_info_manager->SetRenderer2d(true); |
| + } |
| + } |
| + } |
| +#endif |
| } |
| void PluginObject::DeleteRenderer() { |