Index: ppapi/shared_impl/ppb_video_decoder_shared.cc |
diff --git a/ppapi/shared_impl/ppb_video_decoder_shared.cc b/ppapi/shared_impl/ppb_video_decoder_shared.cc |
index 190654e2f4f3ea9699d95aa224c761a083936c95..39a408882ba45a1b3a5ba398b7ccba21fbd9bee0 100644 |
--- a/ppapi/shared_impl/ppb_video_decoder_shared.cc |
+++ b/ppapi/shared_impl/ppb_video_decoder_shared.cc |
@@ -12,9 +12,15 @@ |
namespace ppapi { |
-PPB_VideoDecoder_Shared::PPB_VideoDecoder_Shared() |
- : flush_callback_(PP_MakeCompletionCallback(NULL, NULL)), |
- reset_callback_(PP_MakeCompletionCallback(NULL, NULL)), |
+PPB_VideoDecoder_Shared::PPB_VideoDecoder_Shared(PP_Instance instance) |
+ : Resource(instance), |
+ graphics_context_(0), |
+ gles2_impl_(NULL) { |
+} |
+ |
+PPB_VideoDecoder_Shared::PPB_VideoDecoder_Shared( |
+ const HostResource& host_resource) |
+ : Resource(host_resource), |
graphics_context_(0), |
gles2_impl_(NULL) { |
} |
@@ -22,6 +28,10 @@ PPB_VideoDecoder_Shared::PPB_VideoDecoder_Shared() |
PPB_VideoDecoder_Shared::~PPB_VideoDecoder_Shared() { |
} |
+thunk::PPB_VideoDecoder_API* PPB_VideoDecoder_Shared::AsPPB_VideoDecoder_API() { |
+ return this; |
+} |
+ |
void PPB_VideoDecoder_Shared::InitCommon( |
PP_Resource graphics_context, |
gpu::gles2::GLES2Implementation* gles2_impl) { |
@@ -40,34 +50,34 @@ void PPB_VideoDecoder_Shared::Destroy() { |
bool PPB_VideoDecoder_Shared::SetFlushCallback(PP_CompletionCallback callback) { |
CHECK(callback.func); |
- if (flush_callback_.func) |
+ if (flush_callback_.get()) |
return false; |
- flush_callback_ = callback; |
+ flush_callback_ = new TrackedCallback(this, callback); |
return true; |
} |
bool PPB_VideoDecoder_Shared::SetResetCallback(PP_CompletionCallback callback) { |
CHECK(callback.func); |
- if (reset_callback_.func) |
+ if (TrackedCallback::IsPending(reset_callback_)) |
return false; |
- reset_callback_ = callback; |
+ reset_callback_ = new TrackedCallback(this, callback); |
return true; |
} |
bool PPB_VideoDecoder_Shared::SetBitstreamBufferCallback( |
- int32 bitstream_buffer_id, PP_CompletionCallback callback) { |
+ int32 bitstream_buffer_id, |
+ PP_CompletionCallback callback) { |
return bitstream_buffer_callbacks_.insert( |
- std::make_pair(bitstream_buffer_id, callback)).second; |
+ std::make_pair(bitstream_buffer_id, |
+ new TrackedCallback(this, callback))).second; |
} |
void PPB_VideoDecoder_Shared::RunFlushCallback(int32 result) { |
- DCHECK(flush_callback_.func); |
- PP_RunAndClearCompletionCallback(&flush_callback_, result); |
+ TrackedCallback::ClearAndRun(&flush_callback_, result); |
} |
void PPB_VideoDecoder_Shared::RunResetCallback(int32 result) { |
- DCHECK(reset_callback_.func); |
- PP_RunAndClearCompletionCallback(&reset_callback_, result); |
+ TrackedCallback::ClearAndRun(&reset_callback_, result); |
} |
void PPB_VideoDecoder_Shared::RunBitstreamBufferCallback( |
@@ -75,9 +85,9 @@ void PPB_VideoDecoder_Shared::RunBitstreamBufferCallback( |
CallbackById::iterator it = |
bitstream_buffer_callbacks_.find(bitstream_buffer_id); |
DCHECK(it != bitstream_buffer_callbacks_.end()); |
- PP_CompletionCallback cc = it->second; |
+ scoped_refptr<TrackedCallback> cc = it->second; |
bitstream_buffer_callbacks_.erase(it); |
- PP_RunCompletionCallback(&cc, PP_OK); |
+ cc->Run(PP_OK); |
} |
void PPB_VideoDecoder_Shared::FlushCommandBuffer() { |