зеркало из https://github.com/mozilla/gecko-dev.git
breaking cycle between crawler and browser window to fix a leak, using NS_WITH_SERVICE to manage metacharset service.
This commit is contained in:
Родитель
edd009bad1
Коммит
a3886abf5a
|
@ -157,11 +157,22 @@ nsViewerApp::QueryInterface(REFNSIID aIID, void** aInstancePtrResult)
|
||||||
void
|
void
|
||||||
nsViewerApp::Destroy()
|
nsViewerApp::Destroy()
|
||||||
{
|
{
|
||||||
|
nsresult rv;
|
||||||
|
|
||||||
// Close all of our windows
|
// Close all of our windows
|
||||||
nsBrowserWindow::CloseAllWindows();
|
nsBrowserWindow::CloseAllWindows();
|
||||||
|
|
||||||
// Release the crawler
|
// Release the crawler
|
||||||
NS_IF_RELEASE(mCrawler);
|
if (nsnull != mCrawler) {
|
||||||
|
// break cycle between crawler and window.
|
||||||
|
mCrawler->SetBrowserWindow(nsnull);
|
||||||
|
NS_RELEASE(mCrawler);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_WITH_SERVICE(nsIMetaCharsetService, metacharset, kMetaCharsetCID, &rv);
|
||||||
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
rv = metacharset->End();
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef NECKO
|
#ifndef NECKO
|
||||||
// Only shutdown if Initialize has been called...
|
// Only shutdown if Initialize has been called...
|
||||||
|
@ -193,18 +204,11 @@ nsViewerApp::SetupRegistry()
|
||||||
|
|
||||||
NS_SetupRegistry();
|
NS_SetupRegistry();
|
||||||
|
|
||||||
nsIMetaCharsetService* metacharset;
|
NS_WITH_SERVICE(nsIMetaCharsetService, metacharset, kMetaCharsetCID, &rv);
|
||||||
rv = nsServiceManager::GetService(kMetaCharsetCID,
|
if (NS_SUCCEEDED(rv)) {
|
||||||
kIMetaCharsetServiceIID,
|
|
||||||
(nsISupports **) &metacharset);
|
|
||||||
if(!NS_FAILED(rv)) {
|
|
||||||
rv = metacharset->Start();
|
rv = metacharset->Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!NS_FAILED(rv)) {
|
|
||||||
rv = nsServiceManager::ReleaseService(kMetaCharsetCID, metacharset);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register our browser window factory
|
// Register our browser window factory
|
||||||
nsIFactory* bwf;
|
nsIFactory* bwf;
|
||||||
NS_NewBrowserWindowFactory(&bwf);
|
NS_NewBrowserWindowFactory(&bwf);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче