CF_EXPORT Boolean CFPlugInUnregisterFactory(CFUUIDRef factoryID) { _CFPFactory *factory = _CFPFactoryFind(factoryID, true); if (!factory) { /* MF:!!! Error. No factory registered for this ID. */ } else { _CFPFactoryDisable(factory); } return true; }
__private_extern__ void _CFBundleDeallocatePlugIn(CFBundleRef bundle) { if (__CFBundleGetPlugInData(bundle)->_isPlugIn) { SInt32 c; /* Go through factories disabling them. Disabling these factories should cause them to dealloc since we wouldn't be deallocating if any of the factories had outstanding instances. So go backwards. */ c = CFArrayGetCount(__CFBundleGetPlugInData(bundle)->_factories); while (c-- > 0) _CFPFactoryDisable((_CFPFactory *)CFArrayGetValueAtIndex(__CFBundleGetPlugInData(bundle)->_factories, c)); CFRelease(__CFBundleGetPlugInData(bundle)->_factories); __CFBundleGetPlugInData(bundle)->_isPlugIn = false; } }