Add move semantics to sf::RenderTarget
and sf::RenderTexture
This commit is contained in:
parent
d304d1e57b
commit
332d11be41
@ -57,7 +57,7 @@ public:
|
|||||||
/// \brief Destructor
|
/// \brief Destructor
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
virtual ~RenderTarget();
|
virtual ~RenderTarget() = default;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Deleted copy constructor
|
/// \brief Deleted copy constructor
|
||||||
@ -71,6 +71,18 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
RenderTarget& operator=(const RenderTarget&) = delete;
|
RenderTarget& operator=(const RenderTarget&) = delete;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Move constructor
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTarget(RenderTarget&&) noexcept = default;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Move assignment
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTarget& operator=(RenderTarget&&) noexcept = default;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Clear the entire target with a single color
|
/// \brief Clear the entire target with a single color
|
||||||
///
|
///
|
||||||
@ -396,7 +408,7 @@ protected:
|
|||||||
/// \brief Default constructor
|
/// \brief Default constructor
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
RenderTarget();
|
RenderTarget() = default;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Performs the common initialization step after creation
|
/// \brief Performs the common initialization step after creation
|
||||||
@ -496,7 +508,7 @@ private:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
View m_defaultView; //!< Default view
|
View m_defaultView; //!< Default view
|
||||||
View m_view; //!< Current view
|
View m_view; //!< Current view
|
||||||
StatesCache m_cache; //!< Render states cache
|
StatesCache m_cache{}; //!< Render states cache
|
||||||
std::uint64_t m_id{}; //!< Unique number that identifies the RenderTarget
|
std::uint64_t m_id{}; //!< Unique number that identifies the RenderTarget
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -525,6 +537,12 @@ private:
|
|||||||
/// OpenGL states are not messed up by calling the
|
/// OpenGL states are not messed up by calling the
|
||||||
/// pushGLStates/popGLStates functions.
|
/// pushGLStates/popGLStates functions.
|
||||||
///
|
///
|
||||||
|
/// While render targets are moveable, it is not valid to move them
|
||||||
|
/// between threads. This will cause your program to crash. The
|
||||||
|
/// problem boils down to OpenGL being limited with regard to how it
|
||||||
|
/// works in multithreaded environments. Please ensure you only move
|
||||||
|
/// render targets within the same thread.
|
||||||
|
///
|
||||||
/// \see sf::RenderWindow, sf::RenderTexture, sf::View
|
/// \see sf::RenderWindow, sf::RenderTexture, sf::View
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
@ -68,6 +68,30 @@ public:
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
~RenderTexture() override;
|
~RenderTexture() override;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Deleted copy constructor
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTexture(const RenderTexture&) = delete;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Deleted copy assignment
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTexture& operator=(const RenderTexture&) = delete;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Move constructor
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTexture(RenderTexture&&) noexcept;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
/// \brief Move assignment operator
|
||||||
|
///
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTexture& operator=(RenderTexture&&) noexcept;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Create the render-texture
|
/// \brief Create the render-texture
|
||||||
///
|
///
|
||||||
|
@ -153,14 +153,6 @@ std::uint32_t equationToGlConstant(sf::BlendMode::Equation blendEquation)
|
|||||||
|
|
||||||
namespace sf
|
namespace sf
|
||||||
{
|
{
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
RenderTarget::RenderTarget() = default;
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
RenderTarget::~RenderTarget() = default;
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void RenderTarget::clear(const Color& color)
|
void RenderTarget::clear(const Color& color)
|
||||||
{
|
{
|
||||||
|
@ -45,6 +45,14 @@ RenderTexture::RenderTexture() = default;
|
|||||||
RenderTexture::~RenderTexture() = default;
|
RenderTexture::~RenderTexture() = default;
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTexture::RenderTexture(RenderTexture&&) noexcept = default;
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
RenderTexture& RenderTexture::operator=(RenderTexture&&) noexcept = default;
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
bool RenderTexture::create(const Vector2u& size, const ContextSettings& settings)
|
bool RenderTexture::create(const Vector2u& size, const ContextSettings& settings)
|
||||||
{
|
{
|
||||||
|
@ -8,6 +8,10 @@
|
|||||||
|
|
||||||
class RenderTarget : public sf::RenderTarget
|
class RenderTarget : public sf::RenderTarget
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
RenderTarget() = default;
|
||||||
|
|
||||||
|
private:
|
||||||
sf::Vector2u getSize() const override
|
sf::Vector2u getSize() const override
|
||||||
{
|
{
|
||||||
return {640, 480};
|
return {640, 480};
|
||||||
@ -22,7 +26,7 @@ TEST_CASE("[Graphics] sf::RenderTarget")
|
|||||||
STATIC_CHECK(!std::is_copy_constructible_v<sf::RenderTarget>);
|
STATIC_CHECK(!std::is_copy_constructible_v<sf::RenderTarget>);
|
||||||
STATIC_CHECK(!std::is_copy_assignable_v<sf::RenderTarget>);
|
STATIC_CHECK(!std::is_copy_assignable_v<sf::RenderTarget>);
|
||||||
STATIC_CHECK(!std::is_nothrow_move_constructible_v<sf::RenderTarget>);
|
STATIC_CHECK(!std::is_nothrow_move_constructible_v<sf::RenderTarget>);
|
||||||
STATIC_CHECK(!std::is_nothrow_move_assignable_v<sf::RenderTarget>);
|
STATIC_CHECK(std::is_nothrow_move_assignable_v<sf::RenderTarget>);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("Construction")
|
SECTION("Construction")
|
||||||
|
@ -11,8 +11,8 @@ TEST_CASE("[Graphics] sf::RenderTexture", runDisplayTests())
|
|||||||
{
|
{
|
||||||
STATIC_CHECK(!std::is_copy_constructible_v<sf::RenderTexture>);
|
STATIC_CHECK(!std::is_copy_constructible_v<sf::RenderTexture>);
|
||||||
STATIC_CHECK(!std::is_copy_assignable_v<sf::RenderTexture>);
|
STATIC_CHECK(!std::is_copy_assignable_v<sf::RenderTexture>);
|
||||||
STATIC_CHECK(!std::is_nothrow_move_constructible_v<sf::RenderTexture>);
|
STATIC_CHECK(std::is_nothrow_move_constructible_v<sf::RenderTexture>);
|
||||||
STATIC_CHECK(!std::is_nothrow_move_assignable_v<sf::RenderTexture>);
|
STATIC_CHECK(std::is_nothrow_move_assignable_v<sf::RenderTexture>);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("Construction")
|
SECTION("Construction")
|
||||||
|
Loading…
Reference in New Issue
Block a user