__private_extern__ void _CFPFactoryRemoveInstance(_CFPFactoryRef factory) { __CFSpinLock(&factory->_lock); CFPlugInRef plugin = factory->_plugIn; if (plugin) CFRetain(plugin); __CFSpinUnlock(&factory->_lock); if (plugin) { _CFPlugInRemovePlugInInstance(factory->_plugIn); CFRelease(plugin); } CFRelease(factory); }
__private_extern__ void _CFPFactoryRemoveInstance(_CFPFactory *factory) { /* MF:!!! Assert that _instanceCount > 0. */ factory->_instanceCount--; if (factory->_plugIn) _CFPlugInRemovePlugInInstance(factory->_plugIn); if (factory->_instanceCount == 0 && !factory->_enabled) _CFPFactoryDeallocate(factory); }