| Index: webkit/plugins/ppapi/ppb_audio_impl.cc
|
| diff --git a/webkit/plugins/ppapi/ppb_audio_impl.cc b/webkit/plugins/ppapi/ppb_audio_impl.cc
|
| index 6cc1cd0ce8ecdd7c0c29db1cda1fd5001129d418..c92c9b14a48764547f15dd507ce245dbfa5160e3 100644
|
| --- a/webkit/plugins/ppapi/ppb_audio_impl.cc
|
| +++ b/webkit/plugins/ppapi/ppb_audio_impl.cc
|
| @@ -28,10 +28,7 @@ namespace ppapi {
|
|
|
| PPB_Audio_Impl::PPB_Audio_Impl(PP_Instance instance)
|
| : Resource(instance),
|
| - audio_(NULL),
|
| - create_callback_pending_(false),
|
| - shared_memory_size_for_create_callback_(0) {
|
| - create_callback_ = PP_MakeCompletionCallback(NULL, NULL);
|
| + audio_(NULL) {
|
| }
|
|
|
| PPB_Audio_Impl::~PPB_Audio_Impl() {
|
| @@ -44,13 +41,6 @@ PPB_Audio_Impl::~PPB_Audio_Impl() {
|
| audio_->ShutDown();
|
| audio_ = NULL;
|
| }
|
| -
|
| - // If the completion callback hasn't fired yet, do so here
|
| - // with an error condition.
|
| - if (create_callback_pending_) {
|
| - PP_RunCompletionCallback(&create_callback_, PP_ERROR_ABORTED);
|
| - create_callback_pending_ = false;
|
| - }
|
| }
|
|
|
| // static
|
| @@ -141,67 +131,25 @@ int32_t PPB_Audio_Impl::OpenTrusted(PP_Resource config,
|
| // At this point, we are guaranteeing ownership of the completion
|
| // callback. Audio promises to fire the completion callback
|
| // once and only once.
|
| - create_callback_ = create_callback;
|
| - create_callback_pending_ = true;
|
| + SetCallbackInfo(true, create_callback);
|
| +
|
| return PP_OK_COMPLETIONPENDING;
|
| }
|
|
|
| int32_t PPB_Audio_Impl::GetSyncSocket(int* sync_socket) {
|
| - if (socket_for_create_callback_.get()) {
|
| -#if defined(OS_POSIX)
|
| - *sync_socket = socket_for_create_callback_->handle();
|
| -#elif defined(OS_WIN)
|
| - *sync_socket = reinterpret_cast<int>(socket_for_create_callback_->handle());
|
| -#else
|
| - #error "Platform not supported."
|
| -#endif
|
| - return PP_OK;
|
| - }
|
| - return PP_ERROR_FAILED;
|
| + return GetSyncSocketImpl(sync_socket);
|
| }
|
|
|
| -int32_t PPB_Audio_Impl::GetSharedMemory(int* shm_handle, uint32_t* shm_size) {
|
| - if (shared_memory_for_create_callback_.get()) {
|
| -#if defined(OS_POSIX)
|
| - *shm_handle = shared_memory_for_create_callback_->handle().fd;
|
| -#elif defined(OS_WIN)
|
| - *shm_handle = reinterpret_cast<int>(
|
| - shared_memory_for_create_callback_->handle());
|
| -#else
|
| - #error "Platform not supported."
|
| -#endif
|
| - *shm_size = shared_memory_size_for_create_callback_;
|
| - return PP_OK;
|
| - }
|
| - return PP_ERROR_FAILED;
|
| +int32_t PPB_Audio_Impl::GetSharedMemory(int* shm_handle,
|
| + uint32_t* shm_size) {
|
| + return GetSharedMemoryImpl(shm_handle, shm_size);
|
| }
|
|
|
| -void PPB_Audio_Impl::StreamCreated(
|
| +void PPB_Audio_Impl::OnSetStreamInfo(
|
| base::SharedMemoryHandle shared_memory_handle,
|
| size_t shared_memory_size,
|
| base::SyncSocket::Handle socket_handle) {
|
| - if (create_callback_pending_) {
|
| - // Trusted side of proxy can specify a callback to recieve handles. In
|
| - // this case we don't need to map any data or start the thread since it
|
| - // will be handled by the proxy.
|
| - shared_memory_for_create_callback_.reset(
|
| - new base::SharedMemory(shared_memory_handle, false));
|
| - shared_memory_size_for_create_callback_ = shared_memory_size;
|
| - socket_for_create_callback_.reset(new base::SyncSocket(socket_handle));
|
| -
|
| - PP_RunCompletionCallback(&create_callback_, 0);
|
| - create_callback_pending_ = false;
|
| -
|
| - // It might be nice to close the handles here to free up some system
|
| - // resources, but we can't since there's a race condition. The handles must
|
| - // be valid until they're sent over IPC, which is done from the I/O thread
|
| - // which will often get done after this code executes. We could do
|
| - // something more elaborate like an ACK from the plugin or post a task to
|
| - // the I/O thread and back, but this extra complexity doesn't seem worth it
|
| - // just to clean up these handles faster.
|
| - } else {
|
| - SetStreamInfo(shared_memory_handle, shared_memory_size, socket_handle);
|
| - }
|
| + SetStreamInfo(shared_memory_handle, shared_memory_size, socket_handle);
|
| }
|
|
|
| } // namespace ppapi
|
|
|