Browse Source

Audio: deinline potentially heavy functions.

Functions returning strings are awfully heavy :/
pull/231/head
Vladimír Vondruš 8 years ago
parent
commit
47f472365b
  1. 35
      src/Magnum/Audio/Context.cpp
  2. 27
      src/Magnum/Audio/Context.h

35
src/Magnum/Audio/Context.cpp

@ -177,6 +177,41 @@ std::vector<std::string> Context::extensionStrings() const {
return extensions; return extensions;
} }
bool Context::isHrtfEnabled() const {
Int enabled;
alcGetIntegerv(_device, ALC_HRTF_SOFT, 1, &enabled);
return enabled == ALC_TRUE;
}
Context::HrtfStatus Context::hrtfStatus() const {
if(!isExtensionSupported<Extensions::ALC::SOFT::HRTF>())
return isHrtfEnabled() ? HrtfStatus::Enabled : HrtfStatus::Disabled;
Int status;
alcGetIntegerv(_device, ALC_HRTF_STATUS_SOFT, 1, &status);
return Context::HrtfStatus(status);
}
std::string Context::hrtfSpecifier() const {
return alcGetString(_device, ALC_HRTF_SPECIFIER_SOFT);
}
std::string Context::deviceSpecifierString() const {
return alcGetString(_device, ALC_DEVICE_SPECIFIER);
}
std::string Context::vendorString() const {
return alGetString(AL_VENDOR);
}
std::string Context::rendererString() const {
return alGetString(AL_RENDERER);
}
std::string Context::versionString() const {
return alGetString(AL_VERSION);
}
bool Context::tryCreateContext(const Configuration& config) { bool Context::tryCreateContext(const Configuration& config) {
/* The following parameters are order dependent! /* The following parameters are order dependent!
Make sure to always add sufficient space at end of the attributes Make sure to always add sufficient space at end of the attributes

27
src/Magnum/Audio/Context.h

@ -205,9 +205,7 @@ class MAGNUM_AUDIO_EXPORT Context {
* @see @fn_al{GetString} with @def_alc{HRTF_SPECIFIER_SOFT} * @see @fn_al{GetString} with @def_alc{HRTF_SPECIFIER_SOFT}
* @requires_al_extension @alc_extension{SOFT,HRTF} * @requires_al_extension @alc_extension{SOFT,HRTF}
*/ */
std::string hrtfSpecifier() const { std::string hrtfSpecifier() const;
return alcGetString(_device, ALC_HRTF_SPECIFIER_SOFT);
}
/** /**
* @brief Device specifier string * @brief Device specifier string
@ -215,7 +213,7 @@ class MAGNUM_AUDIO_EXPORT Context {
* @see @ref deviceSpecifierStrings(), @ref vendorString(), @ref rendererString(), * @see @ref deviceSpecifierStrings(), @ref vendorString(), @ref rendererString(),
* @fn_al{GetString} with @def_alc{DEVICE_SPECIFIER} * @fn_al{GetString} with @def_alc{DEVICE_SPECIFIER}
*/ */
std::string deviceSpecifierString() const { return alcGetString(_device, ALC_DEVICE_SPECIFIER); } std::string deviceSpecifierString() const;
/** /**
* @brief Vendor string * @brief Vendor string
@ -223,7 +221,7 @@ class MAGNUM_AUDIO_EXPORT Context {
* @see @ref deviceSpecifierString(), @ref rendererString(), * @see @ref deviceSpecifierString(), @ref rendererString(),
* @fn_al{GetString} with @def_al{VENDOR} * @fn_al{GetString} with @def_al{VENDOR}
*/ */
std::string vendorString() const { return alGetString(AL_VENDOR); } std::string vendorString() const;
/** /**
* @brief Renderer string * @brief Renderer string
@ -231,14 +229,14 @@ class MAGNUM_AUDIO_EXPORT Context {
* @see @ref deviceSpecifierString(), @ref vendorString(), * @see @ref deviceSpecifierString(), @ref vendorString(),
* @fn_al{GetString} with @def_al{RENDERER} * @fn_al{GetString} with @def_al{RENDERER}
*/ */
std::string rendererString() const { return alGetString(AL_RENDERER); } std::string rendererString() const;
/** /**
* @brief Version string * @brief Version string
* *
* @see @fn_al{GetString} with @def_al{VERSION} * @see @fn_al{GetString} with @def_al{VERSION}
*/ */
std::string versionString() const { return alGetString(AL_VERSION); } std::string versionString() const;
/** /**
* @brief Extension strings * @brief Extension strings
@ -469,21 +467,6 @@ MAGNUM_ASSERT_AUDIO_EXTENSION_SUPPORTED(Extensions::ALC::SOFTX::HRTF);
/** @debugoperatorclassenum{Magnum::Audio::Context,Magnum::Audio::Context::HrtfStatus} */ /** @debugoperatorclassenum{Magnum::Audio::Context,Magnum::Audio::Context::HrtfStatus} */
MAGNUM_AUDIO_EXPORT Debug& operator<<(Debug& debug, Context::HrtfStatus value); MAGNUM_AUDIO_EXPORT Debug& operator<<(Debug& debug, Context::HrtfStatus value);
inline bool Context::isHrtfEnabled() const {
Int enabled;
alcGetIntegerv(_device, ALC_HRTF_SOFT, 1, &enabled);
return enabled == ALC_TRUE;
}
inline Context::HrtfStatus Context::hrtfStatus() const {
if(!isExtensionSupported<Extensions::ALC::SOFT::HRTF>())
return isHrtfEnabled() ? HrtfStatus::Enabled : HrtfStatus::Disabled;
Int status;
alcGetIntegerv(_device, ALC_HRTF_STATUS_SOFT, 1, &status);
return Context::HrtfStatus(status);
}
}} }}
#endif #endif

Loading…
Cancel
Save