| 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
|
|
|