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

Side by Side Diff: ppapi/proxy/ppb_audio_proxy.cc

Issue 7082036: Convert more interfaces to the new thunk system. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/proxy/ppb_audio_proxy.h" 5 #include "ppapi/proxy/ppb_audio_proxy.h"
6 6
7 #include "base/threading/simple_thread.h" 7 #include "base/threading/simple_thread.h"
8 #include "ppapi/c/pp_errors.h" 8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/c/ppb_audio.h" 9 #include "ppapi/c/ppb_audio.h"
10 #include "ppapi/c/ppb_audio_config.h" 10 #include "ppapi/c/ppb_audio_config.h"
11 #include "ppapi/c/ppb_var.h" 11 #include "ppapi/c/ppb_var.h"
12 #include "ppapi/c/trusted/ppb_audio_trusted.h" 12 #include "ppapi/c/trusted/ppb_audio_trusted.h"
13 #include "ppapi/proxy/enter_proxy.h"
13 #include "ppapi/proxy/interface_id.h" 14 #include "ppapi/proxy/interface_id.h"
14 #include "ppapi/proxy/plugin_dispatcher.h" 15 #include "ppapi/proxy/plugin_dispatcher.h"
15 #include "ppapi/proxy/plugin_resource.h" 16 #include "ppapi/proxy/plugin_resource.h"
16 #include "ppapi/proxy/ppapi_messages.h" 17 #include "ppapi/proxy/ppapi_messages.h"
17 #include "ppapi/shared_impl/audio_impl.h" 18 #include "ppapi/shared_impl/audio_impl.h"
18 #include "ppapi/thunk/ppb_audio_config_api.h" 19 #include "ppapi/thunk/ppb_audio_config_api.h"
19 #include "ppapi/thunk/ppb_audio_trusted_api.h" 20 #include "ppapi/thunk/ppb_audio_trusted_api.h"
20 #include "ppapi/thunk/enter.h" 21 #include "ppapi/thunk/enter.h"
21 #include "ppapi/thunk/resource_creation_api.h" 22 #include "ppapi/thunk/resource_creation_api.h"
22 #include "ppapi/thunk/thunk.h" 23 #include "ppapi/thunk/thunk.h"
23 24
25 using ::ppapi::thunk::PPB_Audio_API;
26
24 namespace pp { 27 namespace pp {
25 namespace proxy { 28 namespace proxy {
26 29
27 class Audio : public PluginResource, public ppapi::AudioImpl { 30 class Audio : public PluginResource, public ppapi::AudioImpl {
28 public: 31 public:
29 Audio(const HostResource& audio_id, 32 Audio(const HostResource& audio_id,
30 PP_Resource config_id, 33 PP_Resource config_id,
31 PPB_Audio_Callback callback, 34 PPB_Audio_Callback callback,
32 void* user_data); 35 void* user_data);
33 virtual ~Audio(); 36 virtual ~Audio();
34 37
35 // ResourceObjectBase overrides. 38 // ResourceObjectBase overrides.
36 virtual ::ppapi::thunk::PPB_Audio_API* AsAudio_API(); 39 virtual PPB_Audio_API* AsPPB_Audio_API();
37 40
38 // PPB_Audio_API implementation. 41 // PPB_Audio_API implementation.
39 virtual PP_Resource GetCurrentConfig() OVERRIDE; 42 virtual PP_Resource GetCurrentConfig() OVERRIDE;
40 virtual PP_Bool StartPlayback() OVERRIDE; 43 virtual PP_Bool StartPlayback() OVERRIDE;
41 virtual PP_Bool StopPlayback() OVERRIDE; 44 virtual PP_Bool StopPlayback() OVERRIDE;
42 45
43 private: 46 private:
44 // Owning reference to the current config object. This isn't actually used, 47 // Owning reference to the current config object. This isn't actually used,
45 // we just dish it out as requested by the plugin. 48 // we just dish it out as requested by the plugin.
46 PP_Resource config_; 49 PP_Resource config_;
47 50
48 DISALLOW_COPY_AND_ASSIGN(Audio); 51 DISALLOW_COPY_AND_ASSIGN(Audio);
49 }; 52 };
50 53
51 Audio::Audio(const HostResource& audio_id, 54 Audio::Audio(const HostResource& audio_id,
52 PP_Resource config_id, 55 PP_Resource config_id,
53 PPB_Audio_Callback callback, 56 PPB_Audio_Callback callback,
54 void* user_data) 57 void* user_data)
55 : PluginResource(audio_id), 58 : PluginResource(audio_id),
56 config_(config_id) { 59 config_(config_id) {
57 SetCallback(callback, user_data); 60 SetCallback(callback, user_data);
58 PluginResourceTracker::GetInstance()->AddRefResource(config_); 61 PluginResourceTracker::GetInstance()->AddRefResource(config_);
59 } 62 }
60 63
61 Audio::~Audio() { 64 Audio::~Audio() {
62 PluginResourceTracker::GetInstance()->ReleaseResource(config_); 65 PluginResourceTracker::GetInstance()->ReleaseResource(config_);
63 } 66 }
64 67
65 ::ppapi::thunk::PPB_Audio_API* Audio::AsAudio_API() { 68 PPB_Audio_API* Audio::AsPPB_Audio_API() {
66 return this; 69 return this;
67 } 70 }
68 71
69 PP_Resource Audio::GetCurrentConfig() { 72 PP_Resource Audio::GetCurrentConfig() {
70 // AddRef for the caller. 73 // AddRef for the caller.
71 PluginResourceTracker::GetInstance()->AddRefResource(config_); 74 PluginResourceTracker::GetInstance()->AddRefResource(config_);
72 return config_; 75 return config_;
73 } 76 }
74 77
75 PP_Bool Audio::StartPlayback() { 78 PP_Bool Audio::StartPlayback() {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 ppb_audio_target()->StopPlayback(audio_id.host_resource()); 228 ppb_audio_target()->StopPlayback(audio_id.host_resource());
226 } 229 }
227 230
228 // Processed in the plugin (message from host). 231 // Processed in the plugin (message from host).
229 void PPB_Audio_Proxy::OnMsgNotifyAudioStreamCreated( 232 void PPB_Audio_Proxy::OnMsgNotifyAudioStreamCreated(
230 const HostResource& audio_id, 233 const HostResource& audio_id,
231 int32_t result_code, 234 int32_t result_code,
232 IPC::PlatformFileForTransit socket_handle, 235 IPC::PlatformFileForTransit socket_handle,
233 base::SharedMemoryHandle handle, 236 base::SharedMemoryHandle handle,
234 uint32_t length) { 237 uint32_t length) {
235 PP_Resource plugin_resource = 238 EnterPluginFromHostResource<PPB_Audio_API> enter(audio_id);
236 PluginResourceTracker::GetInstance()->PluginResourceForHostResource(
237 audio_id);
238 ppapi::thunk::EnterResource<ppapi::thunk::PPB_Audio_API> enter(
239 plugin_resource, false);
240 if (enter.failed() || result_code != PP_OK) { 239 if (enter.failed() || result_code != PP_OK) {
241 // The caller may still have given us these handles in the failure case. 240 // The caller may still have given us these handles in the failure case.
242 // The easiest way to clean these up is to just put them in the objects 241 // The easiest way to clean these up is to just put them in the objects
243 // and then close them. This failure case is not performance critical. 242 // and then close them. This failure case is not performance critical.
244 base::SyncSocket temp_socket( 243 base::SyncSocket temp_socket(
245 IPC::PlatformFileForTransitToPlatformFile(socket_handle)); 244 IPC::PlatformFileForTransitToPlatformFile(socket_handle));
246 base::SharedMemory temp_mem(handle, false); 245 base::SharedMemory temp_mem(handle, false);
247 return; 246 } else {
247 static_cast<Audio*>(enter.object())->SetStreamInfo(
248 handle, length,
249 IPC::PlatformFileForTransitToPlatformFile(socket_handle));
248 } 250 }
249 Audio* audio = static_cast<Audio*>(enter.object());
250 audio->SetStreamInfo(
251 handle, length, IPC::PlatformFileForTransitToPlatformFile(socket_handle));
252 } 251 }
253 252
254 void PPB_Audio_Proxy::AudioChannelConnected( 253 void PPB_Audio_Proxy::AudioChannelConnected(
255 int32_t result, 254 int32_t result,
256 const HostResource& resource) { 255 const HostResource& resource) {
257 IPC::PlatformFileForTransit socket_handle = 256 IPC::PlatformFileForTransit socket_handle =
258 IPC::InvalidPlatformFileForTransit(); 257 IPC::InvalidPlatformFileForTransit();
259 base::SharedMemoryHandle shared_memory = IPC::InvalidPlatformFileForTransit(); 258 base::SharedMemoryHandle shared_memory = IPC::InvalidPlatformFileForTransit();
260 uint32_t shared_memory_length = 0; 259 uint32_t shared_memory_length = 0;
261 260
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 *foreign_shared_memory_handle = dispatcher()->ShareHandleWithRemote( 309 *foreign_shared_memory_handle = dispatcher()->ShareHandleWithRemote(
311 IntToPlatformFile(shared_memory_handle), false); 310 IntToPlatformFile(shared_memory_handle), false);
312 if (*foreign_shared_memory_handle == IPC::InvalidPlatformFileForTransit()) 311 if (*foreign_shared_memory_handle == IPC::InvalidPlatformFileForTransit())
313 return PP_ERROR_FAILED; 312 return PP_ERROR_FAILED;
314 313
315 return PP_OK; 314 return PP_OK;
316 } 315 }
317 316
318 } // namespace proxy 317 } // namespace proxy
319 } // namespace pp 318 } // namespace pp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698