vclptr: add isDisposed method - and assert for it here & there.

Change-Id: I2b154e0ed9eee0a45900ada7f805a1d444a31bc0
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index b9d542f..f5875b7 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -390,6 +390,7 @@ protected:
public:
    /// call the dispose() method if we have not already been disposed.
    void                                disposeOnce();
    bool                                isDisposed() const { return mbDisposed; }

public:

diff --git a/sw/source/core/doc/DocumentDeviceManager.cxx b/sw/source/core/doc/DocumentDeviceManager.cxx
index 5d38a93..a8ef613 100644
--- a/sw/source/core/doc/DocumentDeviceManager.cxx
+++ b/sw/source/core/doc/DocumentDeviceManager.cxx
@@ -65,6 +65,7 @@ SfxPrinter* DocumentDeviceManager::getPrinter(/*[in]*/ bool bCreate ) const

void DocumentDeviceManager::setPrinter(/*[in]*/ SfxPrinter *pP,/*[in]*/ bool bDeleteOld,/*[in]*/ bool bCallPrtDataChanged )
{
    assert ( !pP->isDisposed() );
    if ( pP != mpPrt )
    {
        if ( bDeleteOld )
@@ -100,11 +101,15 @@ VirtualDevice* DocumentDeviceManager::getVirtualDevice(/*[in]*/ bool bCreate ) c
    else
        pRet = &CreateVirtualDevice_();

    assert ( !pRet->isDisposed() );

    return pRet;
}

void DocumentDeviceManager::setVirtualDevice(/*[in]*/ VirtualDevice* pVd,/*[in]*/ bool bDeleteOld, /*[in]*/ bool )
{
    assert ( !pVd->isDisposed() );

    if ( mpVirDev.get() != pVd )
    {
        if ( bDeleteOld )
@@ -133,6 +138,8 @@ OutputDevice* DocumentDeviceManager::getReferenceDevice(/*[in]*/ bool bCreate ) 
        pRet = getVirtualDevice( bCreate );
    }

    assert ( !pRet->isDisposed() );

    return pRet;
}

diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx
index 6b94722..9ae2d42 100644
--- a/sw/source/uibase/uno/SwXDocumentSettings.cxx
+++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx
@@ -389,6 +389,7 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
                    if ( OUString ( pPrinter->GetName()) != sPrinterName )
                    {
                        VclPtr<SfxPrinter> pNewPrinter = new SfxPrinter ( pPrinter->GetOptions().Clone(), sPrinterName );
                        assert (! pNewPrinter->isDisposed() );
                        if( pNewPrinter->IsKnown() )
                        {
                            // set printer only once; in _postSetValues
@@ -426,7 +427,7 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
                    };
                    SfxItemSet *pItemSet = new SfxItemSet( mpDoc->GetAttrPool(), nRange );
                    VclPtr<SfxPrinter> pPrinter = SfxPrinter::Create ( aStream, pItemSet );

                    assert (! pPrinter->isDisposed() );
                    // set printer only once; in _postSetValues
                    mpPrinter.disposeAndClear();
                    mpPrinter = pPrinter;
diff --git a/vcl/README.lifecycle b/vcl/README.lifecycle
index 1ee7eab..0edd0c8 100644
--- a/vcl/README.lifecycle
+++ b/vcl/README.lifecycle
@@ -144,11 +144,13 @@ or:
	  their constructors.

	* Pass 'const VclPtr<> &' instead of pointers everywhere
		+ add 'explicit' keywords to VclPtr constructors to
		  accelerate compilation etc.

	* Cleanup common existing methods such that they continue to
	  work post-dispose.

	* Dispose functions shoudl be audited to:
	* Dispose functions should be audited to:
		+ not leave dangling pointsr
		+ shrink them - some work should incrementally
		  migrate back to destructors.
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 1bf2df8..27810d4 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -91,7 +91,12 @@ vcl::FontInfo OutputDevice::GetDevFont( int nDevFontIndex ) const
int OutputDevice::GetDevFontCount() const
{
    if( !mpGetDevFontList )
    {
        if (!mpFontCollection)
            return 0;

        mpGetDevFontList = mpFontCollection->GetDevFontList();
    }
    return mpGetDevFontList->Count();
}