diff options
Diffstat (limited to 'o3d/core')
-rw-r--r-- | o3d/core/cross/client.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/o3d/core/cross/client.cc b/o3d/core/cross/client.cc index a6f9c32..271df8e42 100644 --- a/o3d/core/cross/client.cc +++ b/o3d/core/cross/client.cc @@ -252,6 +252,16 @@ void Client::RenderClientInner(bool present, bool send_callback) { profiler_->ProfileStart("Render callback"); if (send_callback) render_callback_manager_.Run(render_event_); + + // Calling back to JavaScript may have caused the plugin to be + // torn down. Guard carefully against this. + if (!profiler_.IsAvailable()) { + if (renderer_.IsAvailable()) { + renderer_->FinishRendering(); + } + return; + } + profiler_->ProfileStop("Render callback"); if (!render_tree_called_) { |