summaryrefslogtreecommitdiff
path: root/macosx/PluginList.m
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2014-07-20 05:09:43 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2014-07-20 05:09:43 +0000
commitd6942932d64a02aa92b1e04e91f6126f33fdb05e (patch)
tree7cad698308e39abc2b0e1c71674c610ec3ce74dd /macosx/PluginList.m
parentb8d0d24d56dbc0ee64f4ec9a72ab917604d8109d (diff)
downloadpcsxr-d6942932d64a02aa92b1e04e91f6126f33fdb05e.tar.gz
OS X: Move source files to their own folder.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@90999 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/PluginList.m')
-rwxr-xr-xmacosx/PluginList.m318
1 files changed, 0 insertions, 318 deletions
diff --git a/macosx/PluginList.m b/macosx/PluginList.m
deleted file mode 100755
index 6b86bd90..00000000
--- a/macosx/PluginList.m
+++ /dev/null
@@ -1,318 +0,0 @@
-//
-// PluginList.m
-// Pcsxr
-//
-// Created by Gil Pedersen on Sun Sep 21 2003.
-// Copyright (c) 2003 __MyCompanyName__. All rights reserved.
-//
-
-#import "EmuThread.h"
-#import "PluginList.h"
-#import "PcsxrPlugin.h"
-#include "psxcommon.h"
-#include "plugins.h"
-
-static PluginList __weak *sPluginList = nil;
-const static int typeList[] = {PSE_LT_GPU, PSE_LT_SPU, PSE_LT_CDR, PSE_LT_PAD, PSE_LT_NET, PSE_LT_SIO1};
-
-@interface PluginList ()
-@property (strong) NSMutableArray *pluginList;
-@property BOOL missingPlugins;
-@property (strong) PcsxrPlugin *activeGpuPlugin;
-@property (strong) PcsxrPlugin *activeSpuPlugin;
-@property (strong) PcsxrPlugin *activeCdrPlugin;
-@property (strong) PcsxrPlugin *activePadPlugin;
-@property (strong) PcsxrPlugin *activeNetPlugin;
-@property (strong) PcsxrPlugin *activeSIO1Plugin;
-
-@end
-
-@implementation PluginList
-@synthesize missingPlugins;
-
-+ (PluginList *)list
-{
- return sPluginList;
-}
-
-- (id)init
-{
- NSUInteger i;
-
- if (!(self = [super init]))
- {
- return nil;
- }
-
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- self.pluginList = [[NSMutableArray alloc] initWithCapacity:20];
-
- self.activeGpuPlugin = self.activeSpuPlugin = self.activeCdrPlugin = self.activePadPlugin = self.activeNetPlugin = self.activeSIO1Plugin = nil;
-
- missingPlugins = NO;
- for (i = 0; i < sizeof(typeList) / sizeof(typeList[0]); i++) {
- NSString *path = [defaults stringForKey:[PcsxrPlugin defaultKeyForType:typeList[i]]];
- if (nil == path) {
- missingPlugins = YES;
- continue;
- }
- if ([path isEqualToString:@"Disabled"])
- continue;
-
- if (![self hasPluginAtPath:path]) {
- @autoreleasepool {
- PcsxrPlugin *plugin = [[PcsxrPlugin alloc] initWithPath:path];
- if (plugin) {
- [self.pluginList addObject:plugin];
- if (![self setActivePlugin:plugin forType:typeList[i]])
- missingPlugins = YES;
- } else {
- missingPlugins = YES;
- }
- }
- }
- }
-
- if (missingPlugins) {
- [self refreshPlugins];
- }
-
- sPluginList = self;
-
- return self;
-}
-
-- (void)refreshPlugins
-{
- NSDirectoryEnumerator *dirEnum;
- NSString *pname;
- NSUInteger i;
-
- // verify that the ones that are in list still works
- for (i=0; i < [self.pluginList count]; i++) {
- if (![(self.pluginList)[i] verifyOK]) {
- [self.pluginList removeObjectAtIndex:i]; i--;
- }
- }
-
- for (NSString *plugDir in [PcsxrPlugin pluginsPaths])
- {
- // look for new ones in the plugin directory
- dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:plugDir];
-
- while ((pname = [dirEnum nextObject])) {
- if ([[pname pathExtension] isEqualToString:@"psxplugin"] ||
- [[pname pathExtension] isEqualToString:@"so"]) {
- [dirEnum skipDescendents]; /* don't enumerate this
- directory */
-
- if (![self hasPluginAtPath:pname]) {
- @autoreleasepool {
- PcsxrPlugin *plugin = [[PcsxrPlugin alloc] initWithPath:pname];
- if (plugin != nil) {
- [self.pluginList addObject:plugin];
- }
- }
- }
- }
- }
- }
-
- // check the we have the needed plugins
- missingPlugins = NO;
- for (i=0; i < 4 /*sizeof(*typeList)*/; i++) {
- PcsxrPlugin *plugin = [self activePluginForType:typeList[i]];
- if (nil == plugin) {
- NSArray *list = [self pluginsForType:typeList[i]];
- NSUInteger j;
-
- for (j=0; j < [list count]; j++) {
- if ([self setActivePlugin:list[j] forType:typeList[i]])
- break;
- }
- if (j == [list count])
- missingPlugins = YES;
- }
- }
-}
-
-- (NSArray *)pluginsForType:(int)typeMask
-{
- NSMutableArray *types = [NSMutableArray array];
-
- for (PcsxrPlugin *plugin in self.pluginList) {
- if ([plugin type] & typeMask) {
- [types addObject:plugin];
- }
- }
-
- return types;
-}
-
-- (BOOL)hasPluginAtPath:(NSString *)path
-{
- if (nil == path)
- return NO;
-
- for (PcsxrPlugin *plugin in self.pluginList) {
- if ([[plugin path] isEqualToString:path])
- return YES;
- }
-
- return NO;
-}
-
-// returns if all the required plugins are available
-- (BOOL)configured
-{
- return !missingPlugins;
-}
-
-- (BOOL)doInitPlugins
-{
- BOOL bad = NO;
-
- if ([self.activeGpuPlugin runAs:PSE_LT_GPU] != 0)
- bad = YES;
- if ([self.activeSpuPlugin runAs:PSE_LT_SPU] != 0)
- bad = YES;
- if ([self.activeCdrPlugin runAs:PSE_LT_CDR] != 0)
- bad = YES;
- if ([self.activePadPlugin runAs:PSE_LT_PAD] != 0)
- bad = YES;
- if ([self.activeNetPlugin runAs:PSE_LT_NET] != 0)
- bad = YES;
- if ([self.activeSIO1Plugin runAs:PSE_LT_SIO1] != 0)
- bad = YES;
-
- return !bad;
-}
-
-- (PcsxrPlugin *)activePluginForType:(int)type
-{
- switch (type) {
- case PSE_LT_GPU: return self.activeGpuPlugin; break;
- case PSE_LT_CDR: return self.activeCdrPlugin; break;
- case PSE_LT_SPU: return self.activeSpuPlugin; break;
- case PSE_LT_PAD: return self.activePadPlugin; break;
- case PSE_LT_NET: return self.activeNetPlugin; break;
- case PSE_LT_SIO1: return self.activeSIO1Plugin; break;
- }
-
- return nil;
-}
-
-- (BOOL)setActivePlugin:(PcsxrPlugin *)plugin forType:(int)type
-{
- PcsxrPlugin *pluginPtr = nil;
-
- switch (type) {
- case PSE_LT_SIO1:
- case PSE_LT_GPU:
- case PSE_LT_CDR:
- case PSE_LT_SPU:
- case PSE_LT_PAD:
- case PSE_LT_NET: pluginPtr = [self activePluginForType:type]; break;
- default: return NO; break;
- }
- if (plugin == pluginPtr) {
- return YES;
- }
-
- BOOL active = pluginPtr && [EmuThread active];
- BOOL wasPaused = NO;
- if (active) {
- // TODO: temporary freeze?
- wasPaused = [EmuThread pauseSafe];
- ClosePlugins();
- ReleasePlugins();
- }
-
- // stop the old plugin and start the new one
- if (pluginPtr) {
- [pluginPtr shutdownAs:type];
- pluginPtr = nil;
- }
-
- if ([plugin runAs:type] != 0) {
- plugin = nil;
- }
-
- switch (type) {
- case PSE_LT_GPU:
- self.activeGpuPlugin = plugin;
- break;
- case PSE_LT_CDR:
- self.activeCdrPlugin = plugin;
- break;
- case PSE_LT_SPU:
- self.activeSpuPlugin = plugin;
- break;
- case PSE_LT_PAD:
- self.activePadPlugin = plugin;
- break;
- case PSE_LT_NET:
- self.activeNetPlugin = plugin;
- break;
- case PSE_LT_SIO1:
- self.activeSIO1Plugin = plugin;
- break;
- }
-
- // write path to the correct config entry
- const char *str;
- if (plugin != nil) {
- str = [[plugin path] fileSystemRepresentation];
- if (str == NULL) {
- str = "Invalid Plugin";
- }
- } else {
- str = "Invalid Plugin";
- }
-
- char **dst = [PcsxrPlugin configEntriesForType:type];
- while (*dst) {
- strlcpy(*dst, str, MAXPATHLEN);
- dst++;
- }
-
- if (active) {
- LoadPlugins();
- OpenPlugins();
-
- if (!wasPaused) {
- [EmuThread resume];
- }
- }
-
- return plugin != nil;
-}
-
-- (void)disableNetPlug
-{
- char **dst = [PcsxrPlugin configEntriesForType:PSE_LT_NET];
- while (*dst) {
- strcpy(*dst, "Disabled");
- dst++;
- }
-}
-
-- (void)enableNetPlug
-{
- PcsxrPlugin *netPlug = [self activePluginForType:PSE_LT_NET];
-
- const char *str = NULL;
- if (netPlug) {
- str = [[netPlug path] fileSystemRepresentation];
- }
- if (str) {
- char **dst = [PcsxrPlugin configEntriesForType:PSE_LT_NET];
- while (*dst) {
- strlcpy(*dst, str, MAXPATHLEN);
- dst++;
- }
- }
-
-}
-
-@end