Fix some broken preference handling

This commit is contained in:
Aaron Culliney
2018-11-17 11:13:40 -08:00
parent 05d3d884b9
commit 8e3c07ed57
2 changed files with 22 additions and 24 deletions

View File

@@ -77,10 +77,13 @@ static void prefsChangeCallback(const char *domain)
- (void)loadPrefsForDomain:(const char *)domain - (void)loadPrefsForDomain:(const char *)domain
{ {
[self.cpuSlider setDoubleValue:cpu_scale_factor]; float fVal, fValDisplay;
[self.cpuSliderLabel setStringValue:[NSString stringWithFormat:@"%.0f%%", cpu_scale_factor*100]]; fVal = prefs_parseFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, &fVal) ? fVal/100 : 1.0;
if (cpu_scale_factor == CPU_SCALE_FASTEST) fValDisplay = fVal;
if (fVal >= CPU_SCALE_FASTEST)
{ {
fVal = CPU_SCALE_FASTEST;
fValDisplay = CPU_SCALE_FASTEST_PIVOT;
[self.cpuMaxChoice setState:NSOnState]; [self.cpuMaxChoice setState:NSOnState];
[self.cpuSlider setEnabled:NO]; [self.cpuSlider setEnabled:NO];
} }
@@ -89,11 +92,15 @@ static void prefsChangeCallback(const char *domain)
[self.cpuMaxChoice setState:NSOffState]; [self.cpuMaxChoice setState:NSOffState];
[self.cpuSlider setEnabled:YES]; [self.cpuSlider setEnabled:YES];
} }
[self.cpuSlider setFloatValue:fVal];
[self.cpuSliderLabel setStringValue:[NSString stringWithFormat:@"%.0f%%", fValDisplay*100]];
[self.altSlider setDoubleValue:cpu_altscale_factor]; fVal = prefs_parseFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, &fVal) ? fVal/100 : 1.0;
[self.altSliderLabel setStringValue:[NSString stringWithFormat:@"%.0f%%", cpu_altscale_factor*100]]; fValDisplay = fVal;
if (cpu_altscale_factor == CPU_SCALE_FASTEST) if (fVal >= CPU_SCALE_FASTEST)
{ {
fVal = CPU_SCALE_FASTEST;
fValDisplay = CPU_SCALE_FASTEST_PIVOT;
[self.altMaxChoice setState:NSOnState]; [self.altMaxChoice setState:NSOnState];
[self.altSlider setEnabled:NO]; [self.altSlider setEnabled:NO];
} }
@@ -102,6 +109,8 @@ static void prefsChangeCallback(const char *domain)
[self.altMaxChoice setState:NSOffState]; [self.altMaxChoice setState:NSOffState];
[self.altSlider setEnabled:YES]; [self.altSlider setEnabled:YES];
} }
[self.altSlider setFloatValue:fVal];
[self.altSliderLabel setStringValue:[NSString stringWithFormat:@"%.0f%%", fValDisplay*100]];
#warning TODO : actually implement sound card choices #warning TODO : actually implement sound card choices
[self.soundCardChoice deselectAllCells]; [self.soundCardChoice deselectAllCells];
@@ -133,17 +142,7 @@ static void prefsChangeCallback(const char *domain)
{ {
NSSlider *slider = (NSSlider *)sender; NSSlider *slider = (NSSlider *)sender;
double value = [slider doubleValue]; double value = [slider doubleValue];
if (slider == self.cpuSlider) prefs_setFloatValue(PREF_DOMAIN_VM, (slider == self.cpuSlider) ? PREF_CPU_SCALE : PREF_CPU_SCALE_ALT, value*100);
{
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, value);
[self.cpuSliderLabel setStringValue:[NSString stringWithFormat:@"%.0f%%", value*100]];
}
else
{
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, value);
[self.altSliderLabel setStringValue:[NSString stringWithFormat:@"%.0f%%", value*100]];
}
prefs_sync(PREF_DOMAIN_VM); prefs_sync(PREF_DOMAIN_VM);
prefs_save(); prefs_save();
} }
@@ -153,15 +152,13 @@ static void prefsChangeCallback(const char *domain)
NSButton *maxButton = (NSButton *)sender; NSButton *maxButton = (NSButton *)sender;
if (maxButton == self.cpuMaxChoice) if (maxButton == self.cpuMaxChoice)
{ {
[self.cpuSlider setEnabled:([maxButton state] != NSOnState)];
double value = ([maxButton state] == NSOnState) ? CPU_SCALE_FASTEST : [self.cpuSlider doubleValue]; double value = ([maxButton state] == NSOnState) ? CPU_SCALE_FASTEST : [self.cpuSlider doubleValue];
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, value); prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE, value*100);
} }
else else
{ {
[self.altSlider setEnabled:([maxButton state] != NSOnState)];
double value = ([maxButton state] == NSOnState) ? CPU_SCALE_FASTEST : [self.altSlider doubleValue]; double value = ([maxButton state] == NSOnState) ? CPU_SCALE_FASTEST : [self.altSlider doubleValue];
prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, value); prefs_setFloatValue(PREF_DOMAIN_VM, PREF_CPU_SCALE_ALT, value*100);
} }
prefs_sync(PREF_DOMAIN_VM); prefs_sync(PREF_DOMAIN_VM);

View File

@@ -157,7 +157,8 @@ void video_init(void) {
ASSERT_NOT_ON_CPU_THREAD(); ASSERT_NOT_ON_CPU_THREAD();
LOG("(re)setting render_thread_id : %lu -> %lu", (unsigned long)render_thread_id, (unsigned long)pthread_self()); LOG("(re)setting render_thread_id : %lu -> %lu", (unsigned long)render_thread_id, (unsigned long)pthread_self());
render_thread_id = pthread_self();
_video_setRenderThread(pthread_self());
currentBackend->init((void*)0); currentBackend->init((void*)0);
} }