/****************************************************************************
*                                                                           *
* Project 64 - A Nintendo 64 emulator.                                      *
* http://www.pj64-emu.com/                                                  *
* Copyright (C) 2012 Project64. All rights reserved.                        *
*                                                                           *
* License:                                                                  *
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html                        *
*                                                                           *
****************************************************************************/
#include "stdafx.h"

int  CN64SystemSettings::m_RefCount = 0; 

bool CN64SystemSettings::m_bShowCPUPer;  
bool CN64SystemSettings::m_bProfiling;   
bool CN64SystemSettings::m_bBasicMode;   
bool CN64SystemSettings::m_bLimitFPS;    
bool CN64SystemSettings::m_bShowDListAListCount;
bool CN64SystemSettings::m_bDisplayFrameRate;

CN64SystemSettings::CN64SystemSettings()
{
	m_RefCount += 1;
	if (m_RefCount == 1)
	{
		g_Settings->RegisterChangeCB(UserInterface_BasicMode,NULL,RefreshSettings);
		g_Settings->RegisterChangeCB(UserInterface_ShowCPUPer,NULL,RefreshSettings);
		g_Settings->RegisterChangeCB(UserInterface_DisplayFrameRate,NULL,RefreshSettings);

		g_Settings->RegisterChangeCB(Debugger_ProfileCode,NULL,RefreshSettings);
		g_Settings->RegisterChangeCB(Debugger_ShowDListAListCount,NULL,RefreshSettings);

		g_Settings->RegisterChangeCB(GameRunning_LimitFPS,NULL,RefreshSettings);

		RefreshSettings(NULL);
	}
}

CN64SystemSettings::~CN64SystemSettings()
{
	m_RefCount -= 1;
	if (m_RefCount == 0)
	{
		g_Settings->UnregisterChangeCB(UserInterface_BasicMode,NULL,RefreshSettings);
		g_Settings->UnregisterChangeCB(UserInterface_DisplayFrameRate,NULL,RefreshSettings);
		g_Settings->UnregisterChangeCB(UserInterface_ShowCPUPer,NULL,RefreshSettings);

		g_Settings->UnregisterChangeCB(Debugger_ProfileCode,NULL,RefreshSettings);
		g_Settings->UnregisterChangeCB(Debugger_ShowDListAListCount,NULL,RefreshSettings);

		g_Settings->UnregisterChangeCB(GameRunning_LimitFPS,NULL,RefreshSettings);
	}
}

void CN64SystemSettings::RefreshSettings(void *)
{
	m_bBasicMode           = g_Settings->LoadBool(UserInterface_BasicMode);
	m_bDisplayFrameRate    = g_Settings->LoadBool(UserInterface_DisplayFrameRate);

	m_bShowCPUPer          = g_Settings->LoadBool(UserInterface_ShowCPUPer);
	m_bProfiling           = g_Settings->LoadBool(Debugger_ProfileCode);
	m_bShowDListAListCount = g_Settings->LoadBool(Debugger_ShowDListAListCount);
	m_bLimitFPS            = g_Settings->LoadBool(GameRunning_LimitFPS);
}
