Index: ppapi/proxy/plugin_dispatcher.cc |
diff --git a/ppapi/proxy/plugin_dispatcher.cc b/ppapi/proxy/plugin_dispatcher.cc |
index 2bed85969f0620eef890216a07a27a616c371de7..a45cc12d983bf0d95e144cfdde27aaf833a4c451 100644 |
--- a/ppapi/proxy/plugin_dispatcher.cc |
+++ b/ppapi/proxy/plugin_dispatcher.cc |
@@ -43,10 +43,18 @@ InstanceToDispatcherMap* g_instance_to_dispatcher = NULL; |
} // namespace |
InstanceData::InstanceData() |
- : fullscreen(PP_FALSE), flash_fullscreen(PP_FALSE) { |
+ : fullscreen(PP_FALSE), |
+ flash_fullscreen(PP_FALSE), |
+ mouse_lock_callback(PP_BlockUntilComplete()) { |
memset(&position, 0, sizeof(position)); |
} |
+InstanceData::~InstanceData() { |
+ // Run any pending mouse lock callback to prevent leaks. |
+ if (mouse_lock_callback.func) |
+ PP_RunAndClearCompletionCallback(&mouse_lock_callback, PP_ERROR_ABORTED); |
+} |
+ |
PluginDispatcher::PluginDispatcher(base::ProcessHandle remote_process_handle, |
GetInterfaceFunc get_interface) |
: Dispatcher(remote_process_handle, get_interface), |