summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authordmichael <dmichael@chromium.org>2014-11-10 16:55:46 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-11 00:56:08 +0000
commitedf95fc829884968fa65b88220c5058fb072bb8c (patch)
tree9d9ca1333c8e18d7400f2d00a9441e5d59352938 /ppapi
parentaf64c15d35dac312f9af8f14634b1e41c059949e (diff)
downloadchromium_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.cc3
-rw-r--r--ppapi/proxy/ppapi_messages.h6
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 */)