7480f766e9
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
102 lines
3.2 KiB
C++
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: */
|