From 11138513bee8b3896847d326dbee54ed9aefe2c3 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 3 Jul 2005 02:37:49 +0000 Subject: [PATCH] implement copy ctor. fixes assertion failure after gameplay, due to a RageTexturePreloader being inside an Actor which is copied --- stepmania/src/RageTexturePreloader.cpp | 16 ++++++++++++++++ stepmania/src/RageTexturePreloader.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/stepmania/src/RageTexturePreloader.cpp b/stepmania/src/RageTexturePreloader.cpp index 5508ad5ea8..271ace6280 100644 --- a/stepmania/src/RageTexturePreloader.cpp +++ b/stepmania/src/RageTexturePreloader.cpp @@ -9,6 +9,22 @@ #include "RageTexturePreloader.h" #include "RageTextureManager.h" +RageTexturePreloader &RageTexturePreloader::operator=( const RageTexturePreloader &rhs ) +{ + if( &rhs == this ) + return *this; + + UnloadAll(); + + for( unsigned i = 0; i < rhs.m_apTextures.size(); ++i ) + { + RageTexture *pTexture = TEXTUREMAN->CopyTexture( rhs.m_apTextures[i] ); + m_apTextures.push_back( pTexture ); + } + + return *this; +} + void RageTexturePreloader::Load( const RageTextureID &ID ) { ASSERT( TEXTUREMAN ); diff --git a/stepmania/src/RageTexturePreloader.h b/stepmania/src/RageTexturePreloader.h index 3782f31302..a7bfb04805 100644 --- a/stepmania/src/RageTexturePreloader.h +++ b/stepmania/src/RageTexturePreloader.h @@ -9,6 +9,9 @@ struct RageTextureID; class RageTexturePreloader { public: + RageTexturePreloader() { } + RageTexturePreloader( const RageTexturePreloader &cpy ) { *this = cpy; } + RageTexturePreloader &operator=( const RageTexturePreloader &rhs ); ~RageTexturePreloader(); void Load( const RageTextureID &ID ); void UnloadAll();