diff options
author | dmichael <dmichael@chromium.org> | 2014-11-10 16:55:46 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-11 00:56:08 +0000 |
commit | edf95fc829884968fa65b88220c5058fb072bb8c (patch) | |
tree | 9d9ca1333c8e18d7400f2d00a9441e5d59352938 /ppapi | |
parent | af64c15d35dac312f9af8f14634b1e41c059949e (diff) | |
download | chromium_src-edf95fc829884968fa65b88220c5058fb072bb8c.zip chromium_src-edf95fc829884968fa65b88220c5058fb072bb8c.tar.gz chromium_src-edf95fc829884968fa65b88220c5058fb072bb8c.tar.bz2 |
PPAPI: Make GetProxiedInterface not re-enter the plugin
It's important that we never re-enter the plugin when it is blocked on
synchronous calls to the renderer (unless they are scripting messages, which
have to be re-entrant). This especially breaks assumptions in OpenGL usage.
This required making the plugin side of the PPB_VideoDecoder_Dev lazier about looking up the interface, so that it wouldn't request the interface while the plugin is blocked on the Create message. I audited
all the other uses of GetProxiedInterface from the renderer, and none of the
others happen as a result of a sync plugin->renderer message.
BUG=418651
Committed: https://crrev.com/a17de8faa97ca33d1e58e08392dbdc3e316d6cbe
Cr-Commit-Position: refs/heads/master@{#303247}
Review URL: https://codereview.chromium.org/704913002
Cr-Commit-Position: refs/heads/master@{#303552}
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/proxy/host_dispatcher.cc | 3 | ||||
-rw-r--r-- | ppapi/proxy/ppapi_messages.h | 6 |
2 files changed, 3 insertions, 6 deletions
diff --git a/ppapi/proxy/host_dispatcher.cc b/ppapi/proxy/host_dispatcher.cc index ee7e919..fb4c909 100644 --- a/ppapi/proxy/host_dispatcher.cc +++ b/ppapi/proxy/host_dispatcher.cc @@ -224,10 +224,7 @@ const void* HostDispatcher::GetProxiedInterface(const std::string& iface_name) { // Need to query. Cache the result so we only do this once. bool supported = false; - bool previous_reentrancy_value = allow_plugin_reentrancy_; - allow_plugin_reentrancy_ = true; Send(new PpapiMsg_SupportsInterface(iface_name, &supported)); - allow_plugin_reentrancy_ = previous_reentrancy_value; std::pair<PluginSupportedMap::iterator, bool> iter_success_pair; iter_success_pair = plugin_supported_.insert( diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h index 484e6c7..766180b 100644 --- a/ppapi/proxy/ppapi_messages.h +++ b/ppapi/proxy/ppapi_messages.h @@ -1180,9 +1180,9 @@ IPC_SYNC_MESSAGE_ROUTED3_1( IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBTesting_GetLiveObjectsForInstance, PP_Instance /* instance */, uint32 /* result */) -IPC_SYNC_MESSAGE_ROUTED2_0(PpapiHostMsg_PPBTesting_SimulateInputEvent, - PP_Instance /* instance */, - ppapi::InputEventData /* input_event */) +IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBTesting_SimulateInputEvent, + PP_Instance /* instance */, + ppapi::InputEventData /* input_event */) IPC_SYNC_MESSAGE_ROUTED1_0( PpapiHostMsg_PPBTesting_SetMinimumArrayBufferSizeForShmem, uint32_t /* threshold */) |