From 21998f5309be6b66b6729ded4d84e4d50a30d4c8 Mon Sep 17 00:00:00 2001 From: "dveditz%netscape.com" Date: Wed, 5 Apr 2000 06:02:58 +0000 Subject: [PATCH] fixing thread-safety issues git-svn-id: svn://10.0.0.236/trunk@65351 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xpinstall/public/nsPIXPIManagerCallbacks.idl | 5 ++--- mozilla/xpinstall/src/nsInstall.cpp | 13 +++++++------ mozilla/xpinstall/src/nsInstallProgressDialog.cpp | 2 +- mozilla/xpinstall/src/nsXPInstallManager.cpp | 13 +++---------- mozilla/xpinstall/src/nsXPInstallManager.h | 8 ++++---- 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/mozilla/xpinstall/public/nsPIXPIManagerCallbacks.idl b/mozilla/xpinstall/public/nsPIXPIManagerCallbacks.idl index a68cfe7dd2d..e7404557fc5 100644 --- a/mozilla/xpinstall/public/nsPIXPIManagerCallbacks.idl +++ b/mozilla/xpinstall/public/nsPIXPIManagerCallbacks.idl @@ -33,7 +33,6 @@ [scriptable, uuid(d63ed30a-a858-11d3-a446-0060b0eb5963)] interface nsPIXPIManagerCallbacks: nsISupports { - void DialogOpened(in nsISupports aWindow); - void DownloadNext(); - void CancelInstall(); + void dialogOpened(in nsISupports aWindow); + void cancelInstall(); }; diff --git a/mozilla/xpinstall/src/nsInstall.cpp b/mozilla/xpinstall/src/nsInstall.cpp index 006abad2694..a41f8a26fe8 100644 --- a/mozilla/xpinstall/src/nsInstall.cpp +++ b/mozilla/xpinstall/src/nsInstall.cpp @@ -81,7 +81,7 @@ static NS_DEFINE_IID(kIEventQueueServiceIID, NS_IEVENTQUEUESERVICE_IID); static NS_DEFINE_CID(kNetSupportDialogCID, NS_NETSUPPORTDIALOG_CID); -static NS_DEFINE_IID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); +static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); static NS_DEFINE_IID(kIStringBundleServiceIID, NS_ISTRINGBUNDLESERVICE_IID); #define XPINSTALL_BUNDLE_URL "chrome://xpinstall/locale/xpinstall.properties" @@ -176,16 +176,17 @@ nsInstall::nsInstall(nsIZipReader * theJARFile) // get the resourced xpinstall string bundle mStringBundle = nsnull; - nsIStringBundleService *service; - rv = nsServiceManager::GetService( kStringBundleServiceCID, - NS_GET_IID(nsIStringBundleService), - (nsISupports**) &service ); + NS_WITH_PROXIED_SERVICE( nsIStringBundleService, + service, + kStringBundleServiceCID, + NS_UI_THREAD_EVENTQ, + &rv ); + if (NS_SUCCEEDED(rv) && service) { nsILocale* locale = nsnull; rv = service->CreateBundle( XPINSTALL_BUNDLE_URL, locale, getter_AddRefs(mStringBundle) ); - nsServiceManager::ReleaseService( kStringBundleServiceCID, service ); } } diff --git a/mozilla/xpinstall/src/nsInstallProgressDialog.cpp b/mozilla/xpinstall/src/nsInstallProgressDialog.cpp index 640b0b506b3..18c463b0179 100644 --- a/mozilla/xpinstall/src/nsInstallProgressDialog.cpp +++ b/mozilla/xpinstall/src/nsInstallProgressDialog.cpp @@ -51,7 +51,7 @@ static NS_DEFINE_CID(kDialogParamBlockCID, NS_DialogParamBlock_CID); nsInstallProgressDialog::nsInstallProgressDialog(nsPIXPIManagerCallbacks *aManager) : mManager(aManager) { - NS_INIT_REFCNT(); + NS_INIT_ISUPPORTS(); } nsInstallProgressDialog::~nsInstallProgressDialog() diff --git a/mozilla/xpinstall/src/nsXPInstallManager.cpp b/mozilla/xpinstall/src/nsXPInstallManager.cpp index 1e8f483ad0c..42096ef4475 100644 --- a/mozilla/xpinstall/src/nsXPInstallManager.cpp +++ b/mozilla/xpinstall/src/nsXPInstallManager.cpp @@ -223,20 +223,20 @@ nsXPInstallManager::InitManager(nsXPITriggerInfo* aTriggers) if ( dlg ) { rv = dlg->QueryInterface( NS_GET_IID(nsIXPIProgressDlg), - getter_AddRefs(mDlg) ); + getter_AddRefs(Idlg) ); if (NS_SUCCEEDED(rv)) { NS_WITH_SERVICE( nsIProxyObjectManager, pmgr, kProxyObjectManagerCID, &rv); if (NS_SUCCEEDED(rv)) { rv = pmgr->GetProxyObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIXPIProgressDlg), - mDlg, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs(mProxy) ); + Idlg, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs(mProxy) ); } if (NS_SUCCEEDED(rv)) { - rv = mDlg->Open(ioParamBlock); + rv = mProxy->Open(ioParamBlock); } } } @@ -370,8 +370,6 @@ NS_IMETHODIMP nsXPInstallManager::DownloadNext() // can't cancel from here on cause we can't undo installs in a multitrigger if (mProxy) mProxy->StartInstallPhase(); - else if (mDlg) - mDlg->StartInstallPhase(); NS_WITH_SERVICE(nsISoftwareUpdate, softupdate, nsSoftwareUpdate::GetCID(), &rv); if (NS_SUCCEEDED(rv)) @@ -422,12 +420,7 @@ void nsXPInstallManager::Shutdown() { // proxy exists: we're being called from script thread mProxy->Close(); - mProxy = 0; } - else if (mDlg) - mDlg->Close(); - - mDlg = 0; // Clean up downloaded files nsXPITriggerItem* item; diff --git a/mozilla/xpinstall/src/nsXPInstallManager.h b/mozilla/xpinstall/src/nsXPInstallManager.h index 033b879e21e..794d904ba26 100644 --- a/mozilla/xpinstall/src/nsXPInstallManager.h +++ b/mozilla/xpinstall/src/nsXPInstallManager.h @@ -79,14 +79,15 @@ class nsXPInstallManager : public nsIXPINotifier, // nsIInterfaceRequestor NS_DECL_NSIINTERFACEREQUESTOR - + //nsPIXPIMANAGERCALLBACKS NS_DECL_NSPIXPIMANAGERCALLBACKS private: - void Shutdown(); - void LoadDialogWithNames(nsIDialogParamBlock* ioParamBlock); + NS_IMETHOD DownloadNext(); + void Shutdown(); + void LoadDialogWithNames(nsIDialogParamBlock* ioParamBlock); nsXPITriggerInfo* mTriggers; nsXPITriggerItem* mItem; @@ -96,7 +97,6 @@ class nsXPInstallManager : public nsIXPINotifier, PRBool mCancelled; PRInt32 mContentLength; - nsCOMPtr mDlg; nsCOMPtr mProxy; nsCOMPtr mStringBundle; };