// // PluginList.m // Pcsx // // Created by Gil Pedersen on Sun Sep 21 2003. // Copyright (c) 2003 __MyCompanyName__. All rights reserved. // #import "EmuThread.h" #import "PluginList.h" #import "PcsxPlugin.h" #include "psxcommon.h" #include "plugins.h" //NSMutableArray *plugins; static PluginList *sPluginList = nil; const static int typeList[4] = {PSE_LT_GPU, PSE_LT_SPU, PSE_LT_CDR, PSE_LT_PAD}; @implementation PluginList + (PluginList *)list { return sPluginList; } #if 0 + (void)loadPlugins { NSDirectoryEnumerator *dirEnum; NSString *pname, *dir; // Make sure we only load the plugins once if (plugins != nil) return; plugins = [[NSMutableArray alloc] initWithCapacity: 20]; dir = [NSString stringWithCString:Config.PluginsDir]; dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:dir]; while (pname = [dirEnum nextObject]) { if ([[pname pathExtension] isEqualToString:@"psxplugin"] || [[pname pathExtension] isEqualToString:@"so"]) { [dirEnum skipDescendents]; /* don't enumerate this directory */ PcsxPlugin *plugin = [[PcsxPlugin alloc] initWithPath:pname]; if (plugin != nil) { [plugins addObject:plugin]; } } } } - (id)initWithType:(int)typeMask { unsigned int i; self = [super init]; [PluginList loadPlugins]; list = [[NSMutableArray alloc] initWithCapacity: 5]; type = typeMask; for (i=0; i<[plugins count]; i++) { PcsxPlugin *plugin = [plugins objectAtIndex:i]; if ([plugin getType] == type) { [list addObject:plugin]; } } return self; } - (int)numberOfItems { return [list count]; } - (id)objectAtIndex:(unsigned)index { return [list objectAtIndex:index]; } #endif - (id)init { int i; if (!(self = [super init])) return nil; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; pluginList = [[NSMutableArray alloc] initWithCapacity:20]; activeGpuPlugin = activeSpuPlugin = activeCdrPlugin = activePadPlugin = nil; missingPlugins = NO; for (i=0; i