Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: content/renderer/pepper/ppb_video_decoder_impl.cc

Issue 704913002: PPAPI: Make GetProxiedInterface not re-enter the plugin (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Oops, make SimulateInputEvent async again Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/pepper/ppb_video_decoder_impl.h ('k') | ppapi/proxy/host_dispatcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/pepper/ppb_video_decoder_impl.cc
diff --git a/content/renderer/pepper/ppb_video_decoder_impl.cc b/content/renderer/pepper/ppb_video_decoder_impl.cc
index 53b2ef96b911a8bf4774d8f96b7282c324ed4d25..ca052ea8b560547db6a45438d73ce99cfc253107 100644
--- a/content/renderer/pepper/ppb_video_decoder_impl.cc
+++ b/content/renderer/pepper/ppb_video_decoder_impl.cc
@@ -95,12 +95,6 @@ namespace content {
PPB_VideoDecoder_Impl::PPB_VideoDecoder_Impl(PP_Instance instance)
: PPB_VideoDecoder_Shared(instance), ppp_videodecoder_(NULL) {
- PluginModule* plugin_module =
- HostGlobals::Get()->GetInstance(pp_instance())->module();
- if (plugin_module) {
- ppp_videodecoder_ = static_cast<const PPP_VideoDecoder_Dev*>(
- plugin_module->GetPluginInterface(PPP_VIDEODECODER_DEV_INTERFACE));
- }
}
PPB_VideoDecoder_Impl::~PPB_VideoDecoder_Impl() { Destroy(); }
@@ -140,6 +134,18 @@ bool PPB_VideoDecoder_Impl::Init(PP_Resource graphics_context,
return (decoder_ && decoder_->Initialize(PPToMediaProfile(profile), this));
}
+const PPP_VideoDecoder_Dev* PPB_VideoDecoder_Impl::GetPPP() {
+ if (!ppp_videodecoder_) {
+ PluginModule* plugin_module =
+ HostGlobals::Get()->GetInstance(pp_instance())->module();
+ if (plugin_module) {
+ ppp_videodecoder_ = static_cast<const PPP_VideoDecoder_Dev*>(
+ plugin_module->GetPluginInterface(PPP_VIDEODECODER_DEV_INTERFACE));
+ }
+ }
+ return ppp_videodecoder_;
+}
+
int32_t PPB_VideoDecoder_Impl::Decode(
const PP_VideoBitstreamBuffer_Dev* bitstream_buffer,
scoped_refptr<TrackedCallback> callback) {
@@ -234,46 +240,44 @@ void PPB_VideoDecoder_Impl::ProvidePictureBuffers(
const gfx::Size& dimensions,
uint32 texture_target) {
DCHECK(RenderThreadImpl::current());
- if (!ppp_videodecoder_)
+ if (!GetPPP())
return;
PP_Size out_dim = PP_MakeSize(dimensions.width(), dimensions.height());
- ppp_videodecoder_->ProvidePictureBuffers(pp_instance(),
- pp_resource(),
- requested_num_of_buffers,
- &out_dim,
- texture_target);
+ GetPPP()->ProvidePictureBuffers(pp_instance(), pp_resource(),
+ requested_num_of_buffers, &out_dim,
+ texture_target);
}
void PPB_VideoDecoder_Impl::PictureReady(const media::Picture& picture) {
// So far picture.visible_rect is not used. If used, visible_rect should
// be validated since it comes from GPU process and may not be trustworthy.
DCHECK(RenderThreadImpl::current());
- if (!ppp_videodecoder_)
+ if (!GetPPP())
return;
PP_Picture_Dev output;
output.picture_buffer_id = picture.picture_buffer_id();
output.bitstream_buffer_id = picture.bitstream_buffer_id();
- ppp_videodecoder_->PictureReady(pp_instance(), pp_resource(), &output);
+ GetPPP()->PictureReady(pp_instance(), pp_resource(), &output);
}
void PPB_VideoDecoder_Impl::DismissPictureBuffer(int32 picture_buffer_id) {
DCHECK(RenderThreadImpl::current());
- if (!ppp_videodecoder_)
+ if (!GetPPP())
return;
- ppp_videodecoder_->DismissPictureBuffer(
- pp_instance(), pp_resource(), picture_buffer_id);
+ GetPPP()->DismissPictureBuffer(pp_instance(), pp_resource(),
+ picture_buffer_id);
}
void PPB_VideoDecoder_Impl::NotifyError(
media::VideoDecodeAccelerator::Error error) {
DCHECK(RenderThreadImpl::current());
- if (!ppp_videodecoder_)
+ if (!GetPPP())
return;
PP_VideoDecodeError_Dev pp_error = MediaToPPError(error);
- ppp_videodecoder_->NotifyError(pp_instance(), pp_resource(), pp_error);
+ GetPPP()->NotifyError(pp_instance(), pp_resource(), pp_error);
UMA_HISTOGRAM_ENUMERATION("Media.PepperVideoDecoderError",
error,
media::VideoDecodeAccelerator::LARGEST_ERROR_ENUM);
« no previous file with comments | « content/renderer/pepper/ppb_video_decoder_impl.h ('k') | ppapi/proxy/host_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698