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() { |