summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2015-05-13 10:51:30 +0200
committerNoel Grandin <noel@peralex.com>2015-05-13 12:21:19 +0200
commit6850e9b855d3d367ae51111e48cbdb2c28000424 (patch)
treeef1b7a98a8cb890106ef2ea9a045c511f78b184a
parent274c836cf82ce3929141e03a28cfb840f4c724cb (diff)
first step towards removing LazyDeletor
convert it from a template to a concrete class, since we only have one use-site for it anyway Change-Id: I7209243cc744c7ddb727d6136795d8628b91ff6f
-rw-r--r--include/vcl/lazydelete.hxx18
-rw-r--r--vcl/source/helper/lazydelete.cxx4
-rw-r--r--vcl/source/window/window.cxx4
3 files changed, 13 insertions, 13 deletions
diff --git a/include/vcl/lazydelete.hxx b/include/vcl/lazydelete.hxx
index ccefc6285b56..2b746a8bcbce 100644
--- a/include/vcl/lazydelete.hxx
+++ b/include/vcl/lazydelete.hxx
@@ -22,6 +22,7 @@
#include <vcl/dllapi.h>
#include <vcl/vclptr.hxx>
+#include <vcl/window.hxx>
#include <unordered_map>
#include <vector>
@@ -95,14 +96,13 @@ namespace vcl
virtual ~LazyDeletorBase();
};
- template < typename T >
class VCL_DLLPUBLIC LazyDeletor : public LazyDeletorBase
{
- static LazyDeletor< T >* s_pOneInstance;
+ static LazyDeletor* s_pOneInstance;
struct DeleteObjectEntry
{
- VclPtr<T> m_pObject;
+ VclPtr<vcl::Window> m_pObject;
bool m_bDeleted;
DeleteObjectEntry() :
@@ -110,7 +110,7 @@ namespace vcl
m_bDeleted( false )
{}
- DeleteObjectEntry( T* i_pObject ) :
+ DeleteObjectEntry( vcl::Window* i_pObject ) :
m_pObject( i_pObject ),
m_bDeleted( false )
{}
@@ -123,7 +123,7 @@ namespace vcl
/** strict weak ordering function to bring objects to be destroyed lazily
in correct order, e.g. for Window objects children before parents
*/
- static bool is_less( T* left, T* right );
+ static bool is_less( vcl::Window* left, vcl::Window* right );
LazyDeletor() { LazyDelete::addDeletor( this ); }
virtual ~LazyDeletor()
@@ -137,7 +137,7 @@ namespace vcl
// do the actual work
unsigned int nCount = m_aObjects.size();
- std::vector< VclPtr < T > > aRealDelete;
+ std::vector< VclPtr < vcl::Window > > aRealDelete;
aRealDelete.reserve( nCount );
for( unsigned int i = 0; i < nCount; i++ )
{
@@ -167,10 +167,10 @@ namespace vcl
public:
/** mark an object for lazy deletion
*/
- static void Delete( T* i_pObject )
+ static void Delete( vcl::Window* i_pObject )
{
if( s_pOneInstance == NULL )
- s_pOneInstance = new LazyDeletor<T>();
+ s_pOneInstance = new LazyDeletor();
// is this object already in the list ?
// if so mark it as not to be deleted; else insert it
@@ -187,7 +187,7 @@ namespace vcl
}
/** unmark an object already marked for lazy deletion
*/
- static void Undelete( T* i_pObject )
+ static void Undelete( vcl::Window* i_pObject )
{
if( s_pOneInstance )
{
diff --git a/vcl/source/helper/lazydelete.cxx b/vcl/source/helper/lazydelete.cxx
index 2594ad47c22a..3b79b5f87565 100644
--- a/vcl/source/helper/lazydelete.cxx
+++ b/vcl/source/helper/lazydelete.cxx
@@ -33,7 +33,7 @@ LazyDeletorBase::~LazyDeletorBase()
}
// instantiate instance pointer for LazyDeletor<Window>
-template<> LazyDeletor<vcl::Window>* LazyDeletor<vcl::Window>::s_pOneInstance = NULL;
+LazyDeletor* LazyDeletor::s_pOneInstance = NULL;
// a list for all LazyeDeletor<T> singletons
static std::vector< LazyDeletorBase* > lcl_aDeletors;
@@ -54,7 +54,7 @@ void LazyDelete::flush()
}
// specialized is_less function for Window
-template<> bool LazyDeletor<vcl::Window>::is_less( vcl::Window* left, vcl::Window* right )
+bool LazyDeletor::is_less( vcl::Window* left, vcl::Window* right )
{
return left != right && right->IsChild( left, true );
}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 1b95b9a98749..4a589c38e1ce 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -578,7 +578,7 @@ void Window::dispose()
Window::~Window()
{
// FIXME: we should kill all LazyDeletor usage.
- vcl::LazyDeletor<vcl::Window>::Undelete( this );
+ vcl::LazyDeletor::Undelete( this );
disposeOnce();
}
@@ -1892,7 +1892,7 @@ void Window::doLazyDelete()
Show( false );
SetParent( ImplGetDefaultWindow() );
}
- vcl::LazyDeletor<vcl::Window>::Delete( this );
+ vcl::LazyDeletor::Delete( this );
}
KeyIndicatorState Window::GetIndicatorState() const