office-gobmx/svtools/source/misc/itemdel.cxx
Caolán McNamara 7480f766e9 remove now pointless pItemDesruptList
This pItemDesruptList is pointless now. We're registering the delete-when-idle
items in their ctor's and deregistering in their dtor's which get called from
the idle callback. The idea of pItemDesruptList appears to be for use in
deleting any items at exit time whose idle callback didn't get called already.

Which was done by DeleteOnIdleItems which itself was removed a while ago
because nothing was calling it (for years). Some experiments in making it a
simple singleton and/or one that hooks off default component dispose or
XDesktop dispose shows that its crash city, so lets just remove the unused
stuff outright rather than trying to fight to get some 12+ year unused appendix
used.

Change-Id: Ie0256d6987cf89a2a12db297065af09674547b3e
2012-08-02 09:07:47 +01:00

102 lines
3.2 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#include <svtools/itemdel.hxx>
#include <vcl/svapp.hxx>
#include <tools/errcode.hxx>
#include <limits.h>
#include <vector>
#include <svl/itempool.hxx>
// STATIC DATA -----------------------------------------------------------
DBG_NAME(SfxItemDesruptor_Impl);
// -----------------------------------------------------------------------
class SfxItemDesruptor_Impl
{
SfxPoolItem *pItem;
Link aLink;
private:
DECL_LINK( Delete, void * );
SfxItemDesruptor_Impl( const SfxItemDesruptor_Impl& ); // n.i.
public:
SfxItemDesruptor_Impl( SfxPoolItem *pItemToDesrupt );
~SfxItemDesruptor_Impl();
};
// ------------------------------------------------------------------------
SfxItemDesruptor_Impl::SfxItemDesruptor_Impl( SfxPoolItem *pItemToDesrupt ):
pItem(pItemToDesrupt),
aLink( LINK(this, SfxItemDesruptor_Impl, Delete) )
{
DBG_CTOR(SfxItemDesruptor_Impl, 0);
DBG_ASSERT( 0 == pItem->GetRefCount(), "desrupting pooled item" );
pItem->SetKind( SFX_ITEMS_DELETEONIDLE );
// im Idle abarbeiten
GetpApp()->InsertIdleHdl( aLink, 1 );
}
// ------------------------------------------------------------------------
SfxItemDesruptor_Impl::~SfxItemDesruptor_Impl()
{
DBG_DTOR(SfxItemDesruptor_Impl, 0);
// aus Idle-Handler austragen
GetpApp()->RemoveIdleHdl( aLink );
// reset RefCount (was set to SFX_ITEMS_SPECIAL before!)
pItem->SetRefCount( 0 );
//DBG_CHKOBJ( pItem, SfxPoolItem, 0 );
delete pItem;
}
// ------------------------------------------------------------------------
IMPL_LINK_NOARG(SfxItemDesruptor_Impl, Delete)
{
{DBG_CHKTHIS(SfxItemDesruptor_Impl, 0);}
delete this;
return 0;
}
// ------------------------------------------------------------------------
SfxPoolItem* DeleteItemOnIdle( SfxPoolItem* pItem )
{
DBG_ASSERT( 0 == pItem->GetRefCount(), "deleting item in use" );
new SfxItemDesruptor_Impl( pItem );
return pItem;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */