Index: plugin/cross/o3d_glue.cc |
=================================================================== |
--- plugin/cross/o3d_glue.cc (revision 75475) |
+++ plugin/cross/o3d_glue.cc (working copy) |
@@ -257,6 +257,7 @@ |
} |
void PluginObject::CreateRenderer(const o3d::DisplayWindow& display_window) { |
+#if !defined(FORCE_CAIRO) |
if (!o3d::CheckConfig(npp_)) { |
renderer_init_status_ = o3d::Renderer::GPU_NOT_UP_TO_SPEC; |
} else { |
@@ -269,6 +270,27 @@ |
DeleteRenderer(); |
} |
} |
+#else |
+ // To force cairo, pretend all previous renderer initialization has failed. |
Tristan Schmelcher 2
2011/02/23 19:27:30
You shouldn't need this, because renderer_init_sta
|
+ renderer_init_status_ = o3d::Renderer::GPU_NOT_UP_TO_SPEC; |
+#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_) { |
+ if (renderer_->Init(display_window, false) != o3d::Renderer::SUCCESS) { |
Tristan Schmelcher 2
2011/02/23 19:27:30
I think we might as well just assign this result d
|
+ DeleteRenderer(); |
+ } else { |
+ renderer_init_status_ = o3d::Renderer::SUCCESS; |
+ ClientInfoManager* client_info_manager = |
+ service_locator()->GetService<ClientInfoManager>(); |
+ client_info_manager->SetRender2d(true); |
+ } |
+ } |
+ } |
+#endif |
} |
void PluginObject::DeleteRenderer() { |