From e51ac384e3d0648c38d167b606b5614bb3517802 Mon Sep 17 00:00:00 2001 From: "dp%netscape.com" Date: Thu, 19 Aug 1999 14:55:52 +0000 Subject: [PATCH] - Adding a IID paramter to nsIModule::GetClassObject() --- modules/libimg/gifcom/nsGIFModule.cpp | 25 ++++++++++++------------- modules/libimg/gifcom/nsGIFModule.h | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/modules/libimg/gifcom/nsGIFModule.cpp b/modules/libimg/gifcom/nsGIFModule.cpp index 26e99b80bb58..ae2e06703235 100644 --- a/modules/libimg/gifcom/nsGIFModule.cpp +++ b/modules/libimg/gifcom/nsGIFModule.cpp @@ -139,27 +139,26 @@ nsGIFModule::~nsGIFModule(void) // NS_IMETHODIMP nsGIFModule::GetClassObject(nsIComponentManager *aCompMgr, const nsCID & aClass, - nsISupports **r_classObj) + const nsIID &aIID, void **r_classObj) { + nsresult rv; + if( !aClass.Equals(kGIFDecoderCID)) return NS_ERROR_FACTORY_NOT_REGISTERED; // If this aint the first time, return the cached class object - if (mClassObject) + if (mClassObject == NULL) { - NS_ADDREF(mClassObject); - *r_classObj = mClassObject; - return NS_OK; + nsCOMPtr fact; + rv = NS_NewGenericFactory(getter_AddRefs(fact), nsGIFDecoderCreateInstance); + if (NS_FAILED(rv)) return rv; + + // Store the class object in our global + rv = fact->QueryInterface(NS_GET_IID(nsISupports), (void **)&mClassObject); + if (NS_FAILED(rv)) return rv; } - nsCOMPtr fact; - nsresult rv = NS_NewGenericFactory(getter_AddRefs(fact), nsGIFDecoderCreateInstance); - if (NS_FAILED(rv)) return rv; - - rv = fact->QueryInterface(nsIFactory::GetIID(), (void **)&mClassObject); - if (NS_FAILED(rv)) return rv; - - rv = fact->QueryInterface(kISupportsIID, (void **)r_classObj); + rv = mClassObject->QueryInterface(aIID, r_classObj); return rv; } diff --git a/modules/libimg/gifcom/nsGIFModule.h b/modules/libimg/gifcom/nsGIFModule.h index 60cf5a16f17c..c979ec18d631 100644 --- a/modules/libimg/gifcom/nsGIFModule.h +++ b/modules/libimg/gifcom/nsGIFModule.h @@ -29,7 +29,7 @@ class nsGIFModule : public nsIModule // nsIModule Interfaces NS_IMETHOD GetClassObject(nsIComponentManager *aCompMgr, const nsCID & aClass, - nsISupports **r_classObj); + const nsIID &aIID, void **r_classObj); NS_IMETHOD RegisterSelf(nsIComponentManager *aCompMgr, nsIFileSpec *location); NS_IMETHOD UnregisterSelf(nsIComponentManager *aCompMgr, nsIFileSpec *location); NS_IMETHOD CanUnload(nsIComponentManager *aCompMgr, PRBool *okToUnload);