Index: ppapi/cpp/audio.cc |
diff --git a/ppapi/cpp/audio.cc b/ppapi/cpp/audio.cc |
index 89702be0072dcbea78dfe038445d6f3c3f4e0265..04a3062cb18cdf14a9abf99965077f96a3f6dc70 100644 |
--- a/ppapi/cpp/audio.cc |
+++ b/ppapi/cpp/audio.cc |
@@ -15,13 +15,30 @@ template <> const char* interface_name<PPB_Audio_1_0>() { |
return PPB_AUDIO_INTERFACE_1_0; |
} |
+template <> const char* interface_name<PPB_Audio_1_1>() { |
+ return PPB_AUDIO_INTERFACE_1_1; |
+} |
+ |
} // namespace |
Audio::Audio(const InstanceHandle& instance, |
const AudioConfig& config, |
PPB_Audio_Callback callback, |
void* user_data) |
- : config_(config) { |
+ : config_(config), |
+ use_1_0_interface_(false) { |
+ if (has_interface<PPB_Audio_1_1>()) { |
+ PassRefFromConstructor(get_interface<PPB_Audio_1_1>()->Create( |
+ instance.pp_instance(), config.pp_resource(), callback, user_data)); |
+ } |
+} |
+ |
+Audio::Audio(const InstanceHandle& instance, |
+ const AudioConfig& config, |
+ PPB_Audio_Callback_1_0 callback, |
+ void* user_data) |
+ : config_(config), |
+ use_1_0_interface_(true) { |
if (has_interface<PPB_Audio_1_0>()) { |
PassRefFromConstructor(get_interface<PPB_Audio_1_0>()->Create( |
instance.pp_instance(), config.pp_resource(), callback, user_data)); |
@@ -29,13 +46,27 @@ Audio::Audio(const InstanceHandle& instance, |
} |
bool Audio::StartPlayback() { |
- return has_interface<PPB_Audio_1_0>() && |
- get_interface<PPB_Audio_1_0>()->StartPlayback(pp_resource()); |
+ if (has_interface<PPB_Audio_1_1>() && !use_1_0_interface_) { |
+ return PP_ToBool(get_interface<PPB_Audio_1_1>()->StartPlayback( |
+ pp_resource())); |
+ } |
+ if (has_interface<PPB_Audio_1_0>()) { |
+ return PP_ToBool(get_interface<PPB_Audio_1_0>()->StartPlayback( |
+ pp_resource())); |
+ } |
+ return false; |
} |
bool Audio::StopPlayback() { |
- return has_interface<PPB_Audio_1_0>() && |
- get_interface<PPB_Audio_1_0>()->StopPlayback(pp_resource()); |
+ if (has_interface<PPB_Audio_1_1>() && !use_1_0_interface_) { |
+ return PP_ToBool(get_interface<PPB_Audio_1_1>()->StopPlayback( |
+ pp_resource())); |
+ } |
+ if (has_interface<PPB_Audio_1_0>()) { |
+ return PP_ToBool(get_interface<PPB_Audio_1_0>()->StopPlayback( |
+ pp_resource())); |
+ } |
+ return false; |
} |
} // namespace pp |