mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
Add move semantics to 'Sound'
This commit is contained in:
parent
b2644e5c3f
commit
a68743aa61
@ -68,6 +68,14 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Sound(const Sound& copy);
|
Sound(const Sound& copy);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Move constructor
|
||||||
|
///
|
||||||
|
/// \param other Instance to move
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Sound(Sound&& other) noexcept;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Destructor
|
/// \brief Destructor
|
||||||
///
|
///
|
||||||
@ -192,7 +200,7 @@ public:
|
|||||||
Status getStatus() const override;
|
Status getStatus() const override;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Overload of assignment operator
|
/// \brief Overload of copy assignment operator
|
||||||
///
|
///
|
||||||
/// \param right Instance to assign
|
/// \param right Instance to assign
|
||||||
///
|
///
|
||||||
@ -201,6 +209,16 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Sound& operator =(const Sound& right);
|
Sound& operator =(const Sound& right);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Overload of move assignment operator
|
||||||
|
///
|
||||||
|
/// \param right Instance to assign
|
||||||
|
///
|
||||||
|
/// \return Reference to self
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Sound& operator =(Sound&& right) noexcept;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Reset the internal buffer of the sound
|
/// \brief Reset the internal buffer of the sound
|
||||||
///
|
///
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <SFML/Audio/Sound.hpp>
|
#include <SFML/Audio/Sound.hpp>
|
||||||
#include <SFML/Audio/SoundBuffer.hpp>
|
#include <SFML/Audio/SoundBuffer.hpp>
|
||||||
#include <SFML/Audio/ALCheck.hpp>
|
#include <SFML/Audio/ALCheck.hpp>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
#if defined(__clang__)
|
#if defined(__clang__)
|
||||||
@ -65,6 +66,14 @@ m_buffer (nullptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Sound::Sound(Sound&& other) noexcept :
|
||||||
|
SoundSource(std::move(other)),
|
||||||
|
m_buffer (std::exchange(other.m_buffer, nullptr))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Sound::~Sound()
|
Sound::~Sound()
|
||||||
{
|
{
|
||||||
@ -108,7 +117,7 @@ void Sound::setBuffer(const SoundBuffer& buffer)
|
|||||||
// Assign and use the new buffer
|
// Assign and use the new buffer
|
||||||
m_buffer = &buffer;
|
m_buffer = &buffer;
|
||||||
m_buffer->attachSound(this);
|
m_buffer->attachSound(this);
|
||||||
alCheck(alSourcei(m_source, AL_BUFFER, static_cast<ALint>(m_buffer->m_buffer)));
|
alCheck(alSourcei(m_source, AL_BUFFER, static_cast<ALint>(m_buffer->m_uniqueBufferId.get())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -191,6 +200,18 @@ Sound& Sound::operator =(const Sound& right)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
Sound& Sound::operator =(Sound&& right) noexcept
|
||||||
|
{
|
||||||
|
if (this == &right)
|
||||||
|
return *this;
|
||||||
|
|
||||||
|
SoundSource::operator=(std::move(right));
|
||||||
|
m_buffer = std::exchange(right.m_buffer, nullptr);
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void Sound::resetBuffer()
|
void Sound::resetBuffer()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user