summaryrefslogtreecommitdiff
path: root/macosx/plugins/DFCdrom/macsrc
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-09-16 20:31:07 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-09-16 20:31:07 +0000
commita5a97b02c0205f0cc98327389ec88672ddd769f2 (patch)
treee1b7254679180d8e9413c3b10fb8b2e3c91691aa /macosx/plugins/DFCdrom/macsrc
parent481101a05a77e2cc5b22cc94a5319748aeb5c031 (diff)
downloadpcsxr-a5a97b02c0205f0cc98327389ec88672ddd769f2.tar.gz
Wait for a new physical CD to be inserted when ejecting the CD on OS X.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@87220 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/plugins/DFCdrom/macsrc')
-rwxr-xr-xmacosx/plugins/DFCdrom/macsrc/PluginConfigController.m28
-rwxr-xr-xmacosx/plugins/DFCdrom/macsrc/cdr-macosx.c76
-rwxr-xr-xmacosx/plugins/DFCdrom/macsrc/cfg.c4
3 files changed, 54 insertions, 54 deletions
diff --git a/macosx/plugins/DFCdrom/macsrc/PluginConfigController.m b/macosx/plugins/DFCdrom/macsrc/PluginConfigController.m
index df20efb2..6417a102 100755
--- a/macosx/plugins/DFCdrom/macsrc/PluginConfigController.m
+++ b/macosx/plugins/DFCdrom/macsrc/PluginConfigController.m
@@ -91,11 +91,11 @@ void ReadConfig()
NSDictionary *keyValues;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:@{PrefsKey: @{@"Threaded": @YES,
- @"Cache Size": @64,
- @"Speed": @0}}];
-
+ @"Cache Size": @64,
+ @"Speed": @0}}];
+
keyValues = [defaults dictionaryForKey:PrefsKey];
-
+
ReadMode = ([keyValues[@"Threaded"] boolValue] ? THREADED : NORMAL);
CacheSize = [keyValues[@"Cache Size"] intValue];
CdrSpeed = [keyValues[@"Speed"] integerValue];
@@ -113,12 +113,12 @@ void ReadConfig()
- (IBAction)ok:(id)sender
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-
+
NSMutableDictionary *writeDic = [keyValues mutableCopy];
-
+
writeDic[@"Threaded"] = ([Cached intValue] ? @YES : @NO);
writeDic[@"Cache Size"] = @([CacheSize integerValue]);
-
+
switch ([CdSpeed indexOfSelectedItem]) {
case 1: writeDic[@"Speed"] = @1; break;
case 2: writeDic[@"Speed"] = @2; break;
@@ -128,11 +128,11 @@ void ReadConfig()
case 6: writeDic[@"Speed"] = @32; break;
default: writeDic[@"Speed"] = @0; break;
}
-
+
// write to defaults
[defaults setObject:writeDic forKey:PrefsKey];
[defaults synchronize];
-
+
// and set global values accordingly
ReadConfig();
@@ -143,15 +143,15 @@ void ReadConfig()
- (void)loadValues
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-
+
ReadConfig();
-
+
// load from preferences
- self.keyValues = [NSMutableDictionary dictionaryWithDictionary:[defaults dictionaryForKey:PrefsKey]];
-
+ self.keyValues = [[NSMutableDictionary alloc] initWithDictionary:[defaults dictionaryForKey:PrefsKey]];
+
[Cached setIntValue:[keyValues[@"Threaded"] intValue]];
[CacheSize setIntegerValue:[keyValues[@"Cache Size"] integerValue]];
-
+
switch ([keyValues[@"Speed"] intValue]) {
case 1: [CdSpeed selectItemAtIndex:1]; break;
case 2: [CdSpeed selectItemAtIndex:2]; break;
diff --git a/macosx/plugins/DFCdrom/macsrc/cdr-macosx.c b/macosx/plugins/DFCdrom/macsrc/cdr-macosx.c
index 94cf8996..7c423757 100755
--- a/macosx/plugins/DFCdrom/macsrc/cdr-macosx.c
+++ b/macosx/plugins/DFCdrom/macsrc/cdr-macosx.c
@@ -38,29 +38,29 @@ static int IsPsxDisc(const char *dev) {
int fd;
char buf[CD_FRAMESIZE_RAW];
dk_cd_read_t r;
-
+
fd = open(dev, O_RDONLY, 0);
if (fd < 0) return 0;
-
+
memset(&r, 0, sizeof(r));
-
+
r.offset = msf_to_lba(0, 2, 4) * CD_FRAMESIZE_RAW;
r.sectorArea = 0xF8;
r.sectorType = kCDSectorTypeUnknown;
r.bufferLength = CD_FRAMESIZE_RAW;
r.buffer = buf;
-
+
if (ioctl(fd, DKIOCCDREAD, &r) != kIOReturnSuccess) {
close(fd);
return 0;
}
-
+
close(fd);
-
+
if (strncmp(buf + 56, "Sony Computer Entertainment", 27) == 0) {
return 1;
}
-
+
return 0;
}
@@ -70,45 +70,45 @@ static void FindCdDevice(char *dev) {
io_iterator_t media_iterator;
CFMutableDictionaryRef classes_to_match;
const char *name, *cd = kIOCDMediaClass, *dvd = kIODVDMediaClass;
-
+
dev[0] = '\0';
name = cd;
-
+
start:
classes_to_match = IOServiceMatching(name);
if (classes_to_match == NULL) goto end;
-
+
CFDictionarySetValue(classes_to_match, CFSTR(kIOMediaEjectableKey),
- kCFBooleanTrue);
-
- kern_result = IOServiceGetMatchingServices(kIOMasterPortDefault,
- classes_to_match, &media_iterator);
-
+ kCFBooleanTrue);
+
+ kern_result = IOServiceGetMatchingServices(kIOMasterPortDefault,
+ classes_to_match, &media_iterator);
+
if (kern_result != KERN_SUCCESS) goto end;
-
+
next_media = IOIteratorNext(media_iterator);
if (next_media != 0) {
char psz_buf[0x32];
size_t dev_path_length;
CFTypeRef str_bsd_path;
-
+
do {
str_bsd_path = IORegistryEntryCreateCFProperty(next_media,
- CFSTR(kIOBSDNameKey), kCFAllocatorDefault, 0);
-
+ CFSTR(kIOBSDNameKey), kCFAllocatorDefault, 0);
+
if (str_bsd_path == NULL) {
IOObjectRelease(next_media);
continue;
}
-
+
strcpy(psz_buf, "/dev/r");
dev_path_length = strlen(psz_buf);
-
+
if (CFStringGetCString(str_bsd_path, (char *)&psz_buf + dev_path_length,
- sizeof(psz_buf) - dev_path_length, kCFStringEncodingASCII))
+ sizeof(psz_buf) - dev_path_length, kCFStringEncodingASCII))
{
strcpy(dev, psz_buf);
-
+
if (IsPsxDisc(dev)) {
CFRelease(str_bsd_path);
IOObjectRelease(next_media);
@@ -116,14 +116,14 @@ start:
return;
}
}
-
+
CFRelease(str_bsd_path);
IOObjectRelease(next_media);
} while ((next_media = IOIteratorNext(media_iterator)) != 0);
}
-
+
IOObjectRelease(media_iterator);
-
+
end:
if (dev[0] == '\0') {
if (name == cd) {
@@ -136,15 +136,15 @@ end:
int OpenCdHandle(const char *dev) {
if (dev != NULL && dev[0] != '\0') strcpy(cdDevice, dev);
else if (cdDevice[0] == '\0') FindCdDevice(cdDevice);
-
+
cdHandle = open(cdDevice, O_RDONLY, 0);
if (cdHandle < 0) return -1;
-
+
if (CdrSpeed > 0) {
u_int16_t speed = kCDSpeedMin * CdrSpeed;
ioctl(cdHandle, DKIOCCDSETSPEED, &speed);
}
-
+
return 0;
}
@@ -183,23 +183,23 @@ long ReadSector(crdata *cr) {
int lba;
dk_cd_read_t r;
char buf[CD_FRAMESIZE_RAW];
-
+
if (cdHandle < 0) return -1;
-
+
lba = msf_to_lba(cr->msf.cdmsf_min0, cr->msf.cdmsf_sec0, cr->msf.cdmsf_frame0);
-
+
memset(&r, 0, sizeof(r));
-
+
r.offset = lba * CD_FRAMESIZE_RAW;
r.sectorArea = 0xF8;
r.sectorType = kCDSectorTypeUnknown;
r.bufferLength = CD_FRAMESIZE_RAW;
r.buffer = buf; // ??? Why using cr->buf directly does not work in threaded mode?
-
+
if (ioctl(cdHandle, DKIOCCDREAD, &r) != kIOReturnSuccess) {
return -1;
}
-
+
memcpy(cr->buf, buf, CD_FRAMESIZE_RAW);
return 0;
}
@@ -215,7 +215,7 @@ long StopCDDA() {
long GetStatus(int playing, struct CdrStat *stat) {
memset(stat, 0, sizeof(struct CdrStat));
stat->Type = 0x01;
-
+
// Close and reopen the CD handle. If opening failed,
// then there is no CD in drive.
// Note that this WILL be screwed if user inserted another
@@ -225,7 +225,7 @@ long GetStatus(int playing, struct CdrStat *stat) {
close(cdHandle);
cdHandle = -1;
}
-
+
cdHandle = open(cdDevice, O_RDONLY, 0);
if (cdHandle < 0) {
// No CD in drive
@@ -237,7 +237,7 @@ long GetStatus(int playing, struct CdrStat *stat) {
ioctl(cdHandle, DKIOCCDSETSPEED, &speed);
}
}
-
+
return 0;
}
diff --git a/macosx/plugins/DFCdrom/macsrc/cfg.c b/macosx/plugins/DFCdrom/macsrc/cfg.c
index 6b5c1513..21a9be2b 100755
--- a/macosx/plugins/DFCdrom/macsrc/cfg.c
+++ b/macosx/plugins/DFCdrom/macsrc/cfg.c
@@ -39,7 +39,7 @@ void LoadConf() {
CacheSize = 64;
CdrSpeed = 0;
SpinDown = SPINDOWN_VENDOR_SPECIFIC;
-
+
ReadConfig();
}
@@ -50,4 +50,4 @@ long CDRconfigure() {
void CDRabout() {
AboutDlgProc();
-} \ No newline at end of file
+}