summaryrefslogtreecommitdiffstats
path: root/o3d/core
diff options
context:
space:
mode:
Diffstat (limited to 'o3d/core')
-rw-r--r--o3d/core/cross/client.cc10
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_) {