Bug 408355: Better fix for bug 396024 that doesn't leak (as much). r+sr=roc, a=beltzner
git-svn-id: svn://10.0.0.236/trunk@249888 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -1425,23 +1425,6 @@ DocumentViewerImpl::Destroy()
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NS_PRINTING
|
||||
if (mPrintEngine) {
|
||||
// This code was moved earlier to fix a crash when a document was
|
||||
// destroyed while it was in print preview mode, see bug 396024
|
||||
#ifdef NS_PRINT_PREVIEW
|
||||
PRBool doingPrintPreview;
|
||||
mPrintEngine->GetDoingPrintPreview(&doingPrintPreview);
|
||||
if (doingPrintPreview) {
|
||||
mPrintEngine->FinishPrintPreview();
|
||||
}
|
||||
#endif
|
||||
|
||||
mPrintEngine->Destroy();
|
||||
mPrintEngine = nsnull;
|
||||
}
|
||||
#endif
|
||||
|
||||
Hide();
|
||||
|
||||
// This is after Hide() so that the user doesn't see the inputs clear.
|
||||
@@ -1501,6 +1484,21 @@ DocumentViewerImpl::Destroy()
|
||||
// destructor might never be called (especially if we're being
|
||||
// used from JS.
|
||||
|
||||
#ifdef NS_PRINTING
|
||||
if (mPrintEngine) {
|
||||
#ifdef NS_PRINT_PREVIEW
|
||||
PRBool doingPrintPreview;
|
||||
mPrintEngine->GetDoingPrintPreview(&doingPrintPreview);
|
||||
if (doingPrintPreview) {
|
||||
mPrintEngine->FinishPrintPreview();
|
||||
}
|
||||
#endif
|
||||
|
||||
mPrintEngine->Destroy();
|
||||
mPrintEngine = nsnull;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Avoid leaking the old viewer.
|
||||
if (mPreviousViewer) {
|
||||
mPreviousViewer->Destroy();
|
||||
|
||||
@@ -3127,6 +3127,11 @@ nsPrintEngine::FinishPrintPreview()
|
||||
|
||||
#ifdef NS_PRINT_PREVIEW
|
||||
|
||||
if (!mPrt) {
|
||||
/* we're already finished with print preview */
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = DocumentReadyForPrinting();
|
||||
|
||||
SetIsCreatingPrintPreview(PR_FALSE);
|
||||
|
||||
Reference in New Issue
Block a user