From 7be9526f8fe18964c46f9463f61e4ff336c78393 Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Mon, 8 Mar 1999 00:01:02 +0000 Subject: [PATCH] Using the service manager to access the plugin manager, because it needs to be a singleton. git-svn-id: svn://10.0.0.236/trunk@23138 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsWebShell.cpp | 20 +++++++++++++------- mozilla/webshell/src/nsWebShell.cpp | 20 +++++++++++++------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 85831932f2c..367197c8e24 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -401,9 +401,9 @@ nsresult nsWebShell::CreatePluginHost(PRBool aAllowPlugins) { if (nsnull == mPluginManager) { - rv = nsRepository::CreateInstance(kCPluginManagerCID, nsnull, - kIPluginManagerIID, - (void**)&mPluginManager); + // use the service manager to obtain the plugin manager. + rv = nsServiceManager::GetService(kCPluginManagerCID, kIPluginManagerIID, + (nsISupports**)&mPluginManager); if (NS_OK == rv) { if (NS_OK == mPluginManager->QueryInterface(kIPluginHostIID, @@ -428,11 +428,17 @@ nsresult nsWebShell::DestroyPluginHost(void) if (0 == mPluginInitCnt) { - if (nsnull != mPluginHost) + if (nsnull != mPluginHost) { mPluginHost->Destroy(); - - NS_IF_RELEASE(mPluginManager); - NS_IF_RELEASE(mPluginHost); + mPluginHost->Release(); + mPluginHost = NULL; + } + + // use the service manager to release the plugin manager. + if (nsnull != mPluginManager) { + nsServiceManager::ReleaseService(kCPluginManagerCID, mPluginManager); + mPluginManager = NULL; + } } return NS_OK; diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 85831932f2c..367197c8e24 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -401,9 +401,9 @@ nsresult nsWebShell::CreatePluginHost(PRBool aAllowPlugins) { if (nsnull == mPluginManager) { - rv = nsRepository::CreateInstance(kCPluginManagerCID, nsnull, - kIPluginManagerIID, - (void**)&mPluginManager); + // use the service manager to obtain the plugin manager. + rv = nsServiceManager::GetService(kCPluginManagerCID, kIPluginManagerIID, + (nsISupports**)&mPluginManager); if (NS_OK == rv) { if (NS_OK == mPluginManager->QueryInterface(kIPluginHostIID, @@ -428,11 +428,17 @@ nsresult nsWebShell::DestroyPluginHost(void) if (0 == mPluginInitCnt) { - if (nsnull != mPluginHost) + if (nsnull != mPluginHost) { mPluginHost->Destroy(); - - NS_IF_RELEASE(mPluginManager); - NS_IF_RELEASE(mPluginHost); + mPluginHost->Release(); + mPluginHost = NULL; + } + + // use the service manager to release the plugin manager. + if (nsnull != mPluginManager) { + nsServiceManager::ReleaseService(kCPluginManagerCID, mPluginManager); + mPluginManager = NULL; + } } return NS_OK;