diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-07 03:13:31 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-07 03:13:31 +0000 |
commit | 4c6c09479dfd42b666218d793f1750d82194b6a5 (patch) | |
tree | 0bd05937a936a179216d99f44b4d8ce8ad2b7a2a /ppapi | |
parent | eb2942c05adc81f5e1af0559b959bc4d71cb8c79 (diff) | |
download | chromium_src-4c6c09479dfd42b666218d793f1750d82194b6a5.zip chromium_src-4c6c09479dfd42b666218d793f1750d82194b6a5.tar.gz chromium_src-4c6c09479dfd42b666218d793f1750d82194b6a5.tar.bz2 |
Pepper: Make C++ wrappers for PPB_AudioConfig backwards compatible.
This makes the wrappers work transparently with both versions 1.1 and 1.0 of the
interface.
(The compatibility is needed for Pepper Flash to use the wrappers; Pepper Flash
needs to work with M18 until M19 ships, at which point we can remove the
1.0-compatibility.)
Review URL: http://codereview.chromium.org/9617018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125310 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/cpp/audio_config.cc | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/ppapi/cpp/audio_config.cc b/ppapi/cpp/audio_config.cc index ef03922..eaf019c 100644 --- a/ppapi/cpp/audio_config.cc +++ b/ppapi/cpp/audio_config.cc @@ -12,8 +12,12 @@ namespace pp { namespace { -template <> const char* interface_name<PPB_AudioConfig>() { - return PPB_AUDIO_CONFIG_INTERFACE; +template <> const char* interface_name<PPB_AudioConfig_1_1>() { + return PPB_AUDIO_CONFIG_INTERFACE_1_1; +} + +template <> const char* interface_name<PPB_AudioConfig_1_0>() { + return PPB_AUDIO_CONFIG_INTERFACE_1_0; } } // namespace @@ -28,9 +32,13 @@ AudioConfig::AudioConfig(const InstanceHandle& instance, uint32_t sample_frame_count) : sample_rate_(sample_rate), sample_frame_count_(sample_frame_count) { - if (has_interface<PPB_AudioConfig>()) { + if (has_interface<PPB_AudioConfig_1_1>()) { + PassRefFromConstructor( + get_interface<PPB_AudioConfig_1_1>()->CreateStereo16Bit( + instance.pp_instance(), sample_rate, sample_frame_count)); + } else if (has_interface<PPB_AudioConfig_1_0>()) { PassRefFromConstructor( - get_interface<PPB_AudioConfig>()->CreateStereo16Bit( + get_interface<PPB_AudioConfig_1_0>()->CreateStereo16Bit( instance.pp_instance(), sample_rate, sample_frame_count)); } } @@ -38,10 +46,11 @@ AudioConfig::AudioConfig(const InstanceHandle& instance, // static PP_AudioSampleRate AudioConfig::RecommendSampleRate( const InstanceHandle& instance) { - if (!has_interface<PPB_AudioConfig>()) - return PP_AUDIOSAMPLERATE_NONE; - return get_interface<PPB_AudioConfig>()-> - RecommendSampleRate(instance.pp_instance()); + if (has_interface<PPB_AudioConfig_1_1>()) { + return get_interface<PPB_AudioConfig_1_1>()-> + RecommendSampleRate(instance.pp_instance()); + } + return PP_AUDIOSAMPLERATE_NONE; } // static @@ -49,13 +58,18 @@ uint32_t AudioConfig::RecommendSampleFrameCount( const InstanceHandle& instance, PP_AudioSampleRate sample_rate, uint32_t requested_sample_frame_count) { - if (!has_interface<PPB_AudioConfig>()) - return 0; - return get_interface<PPB_AudioConfig>()-> - RecommendSampleFrameCount(instance.pp_instance(), - sample_rate, - requested_sample_frame_count); + if (has_interface<PPB_AudioConfig_1_1>()) { + return get_interface<PPB_AudioConfig_1_1>()-> + RecommendSampleFrameCount(instance.pp_instance(), + sample_rate, + requested_sample_frame_count); + } + if (has_interface<PPB_AudioConfig_1_0>()) { + return get_interface<PPB_AudioConfig_1_0>()-> + RecommendSampleFrameCount(sample_rate, + requested_sample_frame_count); + } + return 0; } } // namespace pp - |