diff --git a/src/servers/media/AddOnManager.cpp b/src/servers/media/AddOnManager.cpp index 858e2af09d..12328ac6d6 100644 --- a/src/servers/media/AddOnManager.cpp +++ b/src/servers/media/AddOnManager.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2004-2009, Haiku. All rights reserved. + * Copyright 2004-2010, Haiku. All rights reserved. * Distributed under the terms of the MIT license. * * Authors: @@ -252,9 +252,7 @@ AddOnManager::_RegisterAddOns() entry_ref ref; make_entry_ref(entryInfo->dir_nref.device, entryInfo->dir_nref.node, entryInfo->name, &ref); - BEntry entry(&ref, false); - if (entry.InitCheck() == B_OK) - fManager->_RegisterAddOn(entry); + fManager->_RegisterAddOn(ref); } virtual void AddOnDisabled(const add_on_entry_info* entryInfo) @@ -262,9 +260,7 @@ AddOnManager::_RegisterAddOns() entry_ref ref; make_entry_ref(entryInfo->dir_nref.device, entryInfo->dir_nref.node, entryInfo->name, &ref); - BEntry entry(&ref, false); - if (entry.InitCheck() == B_OK) - fManager->_UnregisterAddOn(entry); + fManager->_UnregisterAddOn(ref); } virtual void AddOnRemoved(const add_on_entry_info* entryInfo) @@ -314,20 +310,16 @@ AddOnManager::_RegisterAddOns() status_t -AddOnManager::_RegisterAddOn(BEntry& entry) +AddOnManager::_RegisterAddOn(const entry_ref& ref) { - BPath path(&entry); - - entry_ref ref; - status_t status = entry.GetRef(&ref); - if (status < B_OK) - return status; + BPath path(&ref); printf("AddOnManager::_RegisterAddOn(): trying to load \"%s\"\n", path.Path()); ImageLoader loader(path); - if ((status = loader.InitCheck()) != B_OK) + status_t status = loader.InitCheck(); + if (status != B_OK) return status; MediaPlugin* (*instantiate_plugin_func)(); @@ -346,8 +338,6 @@ AddOnManager::_RegisterAddOn(BEntry& entry) return B_ERROR; } - // TODO: Remove any old formats describing this add-on!! - ReaderPlugin* reader = dynamic_cast(plugin); if (reader != NULL) _RegisterReader(reader, ref); @@ -371,19 +361,14 @@ AddOnManager::_RegisterAddOn(BEntry& entry) status_t -AddOnManager::_UnregisterAddOn(BEntry& entry) +AddOnManager::_UnregisterAddOn(const entry_ref& ref) { -BPath path(&entry); +BPath path(&ref); printf("AddOnManager::_UnregisterAddOn(): trying to unload \"%s\"\n", path.Path()); BAutolock locker(fLock); - entry_ref ref; - status_t status = entry.GetRef(&ref); - if (status != B_OK) - return status; - // Remove any Readers exported by this add-on reader_info* readerInfo; for (fReaderList.Rewind(); fReaderList.GetNext(&readerInfo);) { diff --git a/src/servers/media/AddOnManager.h b/src/servers/media/AddOnManager.h index 3f0386a8e3..f1a8363cd6 100644 --- a/src/servers/media/AddOnManager.h +++ b/src/servers/media/AddOnManager.h @@ -56,8 +56,8 @@ public: private: void _RegisterAddOns(); - status_t _RegisterAddOn(BEntry& entry); - status_t _UnregisterAddOn(BEntry& entry); + status_t _RegisterAddOn(const entry_ref& ref); + status_t _UnregisterAddOn(const entry_ref& ref); void _RegisterReader(ReaderPlugin* reader, const entry_ref& ref);