[Android] Fix up accessing settings in bridge

This commit is contained in:
zilmar 2021-10-18 05:14:07 +10:30
parent 1c22355295
commit ce6042fe9d
5 changed files with 209 additions and 109 deletions

View File

@ -3,25 +3,24 @@
#include <Project64-core/Settings/SettingType/SettingsType-ApplicationIndex.h> #include <Project64-core/Settings/SettingType/SettingsType-ApplicationIndex.h>
#include <Project64-core/Settings/SettingType/SettingsType-RelativePath.h> #include <Project64-core/Settings/SettingType/SettingsType-RelativePath.h>
#include <Project64-core/Settings/SettingType/SettingsType-GameSetting.h> #include <Project64-core/Settings/SettingType/SettingsType-GameSetting.h>
#include <Project64-core/Settings/SettingType/SettingsType-TempNumber.h>
#include <Project64-core/Version.h>
#include "UISettings.h" #include "UISettings.h"
void RegisterUISettings(void) void RegisterUISettings(void)
{ {
g_Settings->AddHandler((SettingID)(FirstUISettings + Asserts_Version), new CSettingTypeApplication("Settings", "Asserts Version", (uint32_t)0)); g_Settings->AddHandler((SettingID)AssertsVersion, new CSettingTypeApplication("Settings", "Asserts Version", (uint32_t)0));
g_Settings->AddHandler((SettingID)(FirstUISettings + Screen_Orientation), new CSettingTypeApplication("Settings", "Screen Orientation", (uint32_t)0)); g_Settings->AddHandler((SettingID)BuildVersion, new CSettingTypeTempNumber(VERSION_BUILD));
g_Settings->AddHandler((SettingID)(FirstUISettings + File_RecentGameFileCount), new CSettingTypeApplication("Settings", "Remembered ROM Files", (uint32_t)10)); g_Settings->AddHandler((SettingID)ScreenOrientation, new CSettingTypeApplication("Settings", "Screen Orientation", (uint32_t)0));
g_Settings->AddHandler((SettingID)(FirstUISettings + File_RecentGameFileIndex), new CSettingTypeApplicationIndex("Recent File", "Recent ROM", Default_None)); g_Settings->AddHandler((SettingID)FileRecentGameFileCount, new CSettingTypeApplication("Settings", "Remembered ROM Files", (uint32_t)10));
g_Settings->AddHandler((SettingID)(FirstUISettings + TouchScreen_ButtonScale), new CSettingTypeApplication("Touch Screen", "Button Scale", (uint32_t)100)); g_Settings->AddHandler((SettingID)FileRecentGameFileIndex, new CSettingTypeApplicationIndex("Recent File", "Recent ROM", Default_None));
g_Settings->AddHandler((SettingID)(FirstUISettings + TouchScreen_Layout), new CSettingTypeApplication("Touch Screen", "Layout", "Analog")); g_Settings->AddHandler((SettingID)TouchScreenButtonScale, new CSettingTypeApplication("Touch Screen", "Button Scale", (uint32_t)100));
g_Settings->AddHandler((SettingID)(FirstUISettings + Controller_ConfigFile), new CSettingTypeRelativePath("Config", "Controller.cfg")); g_Settings->AddHandler((SettingID)TouchScreenLayout, new CSettingTypeApplication("Touch Screen", "Layout", "Analog"));
g_Settings->AddHandler((SettingID)(FirstUISettings + Controller_CurrentProfile), new CSettingTypeApplication("Controller", "Profile", "User")); g_Settings->AddHandler((SettingID)ControllerConfigFile, new CSettingTypeRelativePath("Config", "Controller.cfg"));
g_Settings->AddHandler((SettingID)(FirstUISettings + Controller_Deadzone), new CSettingTypeApplication("Controller", "Deadzone", (uint32_t)0)); g_Settings->AddHandler((SettingID)ControllerCurrentProfile, new CSettingTypeApplication("Controller", "Profile", "User"));
g_Settings->AddHandler((SettingID)(FirstUISettings + Controller_Sensitivity), new CSettingTypeApplication("Controller", "Sensitivity", (uint32_t)100)); g_Settings->AddHandler((SettingID)ControllerDeadzone, new CSettingTypeApplication("Controller", "Deadzone", (uint32_t)0));
g_Settings->AddHandler((SettingID)(FirstUISettings + SupportWindow_FirstRun), new CSettingTypeApplication("Support Project64", "First Run", "")); g_Settings->AddHandler((SettingID)ControllerSensitivity, new CSettingTypeApplication("Controller", "Sensitivity", (uint32_t)100));
g_Settings->AddHandler((SettingID)(FirstUISettings + SupportWindow_AlwaysShow), new CSettingTypeApplication("Support Project64", "Always Show", false)); g_Settings->AddHandler((SettingID)AppInfoRunCount, new CSettingTypeGame("Run Count", (uint32_t)0));
g_Settings->AddHandler((SettingID)(FirstUISettings + SupportWindow_ShowingSupportWindow), new CSettingTypeApplication("Support Project64", "Showing Support Window", false));
g_Settings->AddHandler((SettingID)(FirstUISettings + SupportWindow_RunCount), new CSettingTypeApplication("Support Project64", "Run Count", (uint32_t)0));
g_Settings->AddHandler((SettingID)(FirstUISettings + Game_RunCount), new CSettingTypeGame("Run Count", (uint32_t)0));
} }
void UISettingsSaveBool(UISettingID Type, bool Value) void UISettingsSaveBool(UISettingID Type, bool Value)

View File

@ -1,34 +1,32 @@
#pragma once #pragma once
#include <string> #include <string>
#include <stdint.h> #include <stdint.h>
#include <Project64-core\Settings\SettingsID.h>
enum UISettingID enum UISettingID
{ {
Asserts_Version, StartUISetting = SettingID::FirstUISettings,
Screen_Orientation,
// Recent game AssertsVersion,
File_RecentGameFileCount, BuildVersion,
File_RecentGameFileIndex, ScreenOrientation,
// Touch screen //Recent Game
TouchScreen_ButtonScale, FileRecentGameFileCount,
TouchScreen_Layout, FileRecentGameFileIndex,
// Controller config //Touch Screen
Controller_ConfigFile, TouchScreenButtonScale,
Controller_CurrentProfile, TouchScreenLayout,
Controller_Deadzone,
Controller_Sensitivity,
// Support window //Controller Config
SupportWindow_FirstRun, ControllerConfigFile,
SupportWindow_AlwaysShow, ControllerCurrentProfile,
SupportWindow_ShowingSupportWindow, ControllerDeadzone,
SupportWindow_RunCount, ControllerSensitivity,
// Game settings //App Info
Game_RunCount, AppInfoRunCount,
}; };
void RegisterUISettings(void); void RegisterUISettings(void);

View File

@ -1,17 +1,13 @@
#include <stdlib.h> #include <stdlib.h>
#ifdef ANDROID #ifdef ANDROID
#include <unistd.h> #include <jni.h>
#include <sys/inotify.h>
#include <sys/file.h>
#endif #endif
#include <Project64-core/AppInit.h> #include <Project64-core/AppInit.h>
#include <Project64-core/Version.h> #include <Project64-core/Version.h>
#include <Project64-core/TraceModulesProject64.h> #include <Project64-core/TraceModulesProject64.h>
#include <Project64-core/Settings.h> #include <Project64-core/Settings.h>
#include <Project64-core/Settings/SettingType/SettingsType-Application.h>
#include <Project64-core/N64System/N64System.h> #include <Project64-core/N64System/N64System.h>
#include <Project64-core/N64System/SystemGlobals.h> #include <Project64-core/N64System/SystemGlobals.h>
#include <Project64-core/Plugin.h>
#include <Common/Trace.h> #include <Common/Trace.h>
#include <Common/Thread.h> #include <Common/Thread.h>
#include <Common/StdString.h> #include <Common/StdString.h>
@ -90,28 +86,18 @@ EXPORT jint CALL JNI_OnLoad(JavaVM* vm, void* reserved)
return JNI_VERSION_1_4; return JNI_VERSION_1_4;
} }
std::string UISettingsLoadStringIndex(UISettingID Type, int32_t index)
{
return g_Settings->LoadStringIndex((SettingID)(FirstUISettings + Type), index);
}
void UISettingsSaveStringIndex(UISettingID Type, int32_t index, const std::string & Value)
{
g_Settings->SaveStringIndex((SettingID)(FirstUISettings + Type), index, Value);
}
void AddRecentRom(const char * ImagePath) void AddRecentRom(const char * ImagePath)
{ {
if (ImagePath == NULL) { return; } if (ImagePath == NULL) { return; }
WriteTrace(TraceUserInterface, TraceDebug, "Start (ImagePath: %s)", ImagePath); WriteTrace(TraceUserInterface, TraceDebug, "Start (ImagePath: %s)", ImagePath);
// Get information about the stored ROM list // Get information about the stored ROM list
size_t MaxRememberedFiles = UISettingsLoadDword(File_RecentGameFileCount); size_t MaxRememberedFiles = g_Settings->LoadDword((SettingID)FileRecentGameFileCount);
strlist RecentGames; strlist RecentGames;
size_t i; size_t i;
for (i = 0; i < MaxRememberedFiles; i++) for (i = 0; i < MaxRememberedFiles; i++)
{ {
stdstr RecentGame = UISettingsLoadStringIndex(File_RecentGameFileIndex, i); stdstr RecentGame = g_Settings->LoadStringIndex((SettingID)FileRecentGameFileIndex, i);
if (RecentGame.empty()) if (RecentGame.empty())
{ {
break; break;
@ -138,7 +124,7 @@ void AddRecentRom(const char * ImagePath)
for (i = 0, iter = RecentGames.begin(); iter != RecentGames.end(); iter++, i++) for (i = 0, iter = RecentGames.begin(); iter != RecentGames.end(); iter++, i++)
{ {
UISettingsSaveStringIndex(File_RecentGameFileIndex, i, *iter); g_Settings->SaveStringIndex((SettingID)FileRecentGameFileIndex, i, *iter);
} }
if (g_JavaBridge) if (g_JavaBridge)
@ -164,9 +150,9 @@ void GameCpuRunning(void * /*NotUsed*/)
} }
g_System->RefreshGameSettings(); g_System->RefreshGameSettings();
int RunCount = UISettingsLoadDword(Game_RunCount); //int RunCount = UISettingsLoadDword(Game_RunCount);
WriteTrace(TraceUserInterface, TraceDebug, "Setting run count to %d", RunCount + 1); //WriteTrace(TraceUserInterface, TraceDebug, "Setting run count to %d", RunCount + 1);
UISettingsSaveDword(Game_RunCount, RunCount + 1); //UISettingsSaveDword(Game_RunCount, RunCount + 1);
if (env != NULL) if (env != NULL)
{ {
if (g_JavaBridge) if (g_JavaBridge)
@ -348,9 +334,28 @@ EXPORT jstring CALL Java_emu_project64_jni_NativeExports_SettingsLoadString(JNIE
return env->NewStringUTF(""); return env->NewStringUTF("");
} }
EXPORT jstring CALL Java_emu_project64_jni_NativeExports_SettingsLoadStringIndex(JNIEnv* env, jclass cls, jstring Type, int32_t Index)
{
const char * szType = env->GetStringUTFChars(Type, 0);
SettingID Id = JniBridegSettings->TranslateSettingID(szType);
env->ReleaseStringUTFChars(Type, szType);
if (Id != Default_None)
{
return env->NewStringUTF(g_Settings->LoadStringIndex(Id,Index).c_str());
}
return env->NewStringUTF("");
}
EXPORT jboolean CALL Java_emu_project64_jni_NativeExports_IsSettingSet(JNIEnv* env, jclass cls, jstring Type) EXPORT jboolean CALL Java_emu_project64_jni_NativeExports_IsSettingSet(JNIEnv* env, jclass cls, jstring Type)
{ {
return g_Settings->IsSettingSet((SettingID)Type); const char * szType = env->GetStringUTFChars(Type, 0);
SettingID Id = JniBridegSettings->TranslateSettingID(szType);
env->ReleaseStringUTFChars(Type, szType);
if (Id != Default_None)
{
return g_Settings->IsSettingSet(Id);
}
return false;
} }
EXPORT void CALL Java_emu_project64_jni_NativeExports_LoadRomList(JNIEnv* env, jclass cls) EXPORT void CALL Java_emu_project64_jni_NativeExports_LoadRomList(JNIEnv* env, jclass cls)
@ -518,49 +523,6 @@ EXPORT void CALL Java_emu_project64_jni_NativeExports_onSurfaceChanged(JNIEnv *
WriteTrace(TraceUserInterface, TraceDebug, "Done"); WriteTrace(TraceUserInterface, TraceDebug, "Done");
} }
EXPORT void CALL Java_emu_project64_jni_NativeExports_UISettingsSaveBool(JNIEnv* env, jclass cls, jint Type, jboolean Value)
{
WriteTrace(TraceUserInterface, TraceDebug, "Saving UI %d value: %s", Type, Value ? "true" : "false");
UISettingsSaveBool((UISettingID)Type, Value);
WriteTrace(TraceUserInterface, TraceDebug, "Saved");
}
EXPORT void CALL Java_emu_project64_jni_NativeExports_UISettingsSaveDword(JNIEnv* env, jclass cls, jint Type, jint Value)
{
WriteTrace(TraceUserInterface, TraceDebug, "Saving UI %d value: %X", Type, Value);
UISettingsSaveDword((UISettingID)Type, Value);
WriteTrace(TraceUserInterface, TraceDebug, "Saved");
}
EXPORT void CALL Java_emu_project64_jni_NativeExports_UISettingsSaveString(JNIEnv* env, jclass cls, jint Type, jstring Buffer)
{
const char *value = env->GetStringUTFChars(Buffer, 0);
WriteTrace(TraceUserInterface, TraceDebug, "Saving UI %d value: %s", Type, value);
UISettingsSaveString((UISettingID)Type, value);
WriteTrace(TraceUserInterface, TraceDebug, "Saved");
env->ReleaseStringUTFChars(Buffer, value);
}
EXPORT jboolean CALL Java_emu_project64_jni_NativeExports_UISettingsLoadBool(JNIEnv* env, jclass cls, jint Type)
{
return UISettingsLoadBool((UISettingID)Type);
}
EXPORT int CALL Java_emu_project64_jni_NativeExports_UISettingsLoadDword(JNIEnv* env, jclass cls, jint Type)
{
return UISettingsLoadDword((UISettingID)Type);
}
EXPORT jstring CALL Java_emu_project64_jni_NativeExports_UISettingsLoadString(JNIEnv* env, jclass cls, int Type)
{
return env->NewStringUTF(UISettingsLoadStringVal((UISettingID)Type).c_str());
}
EXPORT jstring CALL Java_emu_project64_jni_NativeExports_UISettingsLoadStringIndex(JNIEnv* env, jclass cls, jint Type, jint Index)
{
return env->NewStringUTF(UISettingsLoadStringIndex((UISettingID)Type, Index).c_str());
}
EXPORT void CALL Java_emu_project64_jni_NativeExports_StopEmulation(JNIEnv* env, jclass cls) EXPORT void CALL Java_emu_project64_jni_NativeExports_StopEmulation(JNIEnv* env, jclass cls)
{ {
WriteTrace(TraceUserInterface, TraceDebug, "Start"); WriteTrace(TraceUserInterface, TraceDebug, "Start");

View File

@ -1,5 +1,10 @@
#include "jniBridgeSettings.h" #include "jniBridgeSettings.h"
#include "UISettings.h"
#include <Project64-core/Settings.h> #include <Project64-core/Settings.h>
#include <Project64-video/SettingsID.h>
#ifdef ANDROID
#include <android/log.h>
#endif
int CJniBridegSettings::m_RefCount = 0; int CJniBridegSettings::m_RefCount = 0;
bool CJniBridegSettings::m_bCPURunning; bool CJniBridegSettings::m_bCPURunning;
@ -13,7 +18,9 @@ CJniBridegSettings::CJniBridegSettings()
RefreshSettings(NULL); RefreshSettings(NULL);
} }
#define ADD_SETTING(ID) m_SettingNameList.insert(SettingNameList::value_type(#ID,ID)); #define ADD_SETTING(ID) m_SettingNameList.insert(SettingNameList::value_type("Core." #ID,ID));
#define ADD_UI_SETTING(ID) m_SettingNameList.insert(SettingNameList::value_type("UISettingID." #ID,(SettingID)ID));
#define ADD_VIDEO_SETTING(ID) m_SettingNameList.insert(SettingNameList::value_type("VideoSettingID." #ID,(SettingID)(FirstGfxSettings + ID)));
ADD_SETTING(Cmd_BaseDirectory); ADD_SETTING(Cmd_BaseDirectory);
ADD_SETTING(Cmd_RomFile); ADD_SETTING(Cmd_RomFile);
@ -331,6 +338,132 @@ CJniBridegSettings::CJniBridegSettings()
ADD_SETTING(Logging_LogCache); ADD_SETTING(Logging_LogCache);
ADD_SETTING(Logging_LogRomHeader); ADD_SETTING(Logging_LogRomHeader);
ADD_SETTING(Logging_LogUnknown); ADD_SETTING(Logging_LogUnknown);
ADD_UI_SETTING(AssertsVersion);
ADD_UI_SETTING(BuildVersion);
ADD_UI_SETTING(ScreenOrientation);
//Recent Game
ADD_UI_SETTING(FileRecentGameFileCount);
ADD_UI_SETTING(FileRecentGameFileIndex);
//Touch Screen
ADD_UI_SETTING(TouchScreenButtonScale);
ADD_UI_SETTING(TouchScreenLayout);
//Controller Config
ADD_UI_SETTING(ControllerConfigFile);
ADD_UI_SETTING(ControllerCurrentProfile);
ADD_UI_SETTING(ControllerDeadzone);
ADD_UI_SETTING(ControllerSensitivity);
//App Info
ADD_UI_SETTING(AppInfoRunCount);
// General Settings
ADD_VIDEO_SETTING(Set_vsync);
ADD_VIDEO_SETTING(Set_Rotate);
ADD_VIDEO_SETTING(Set_texenh_options);
ADD_VIDEO_SETTING(Set_wrpVRAM);
ADD_VIDEO_SETTING(Set_wrpFBO);
ADD_VIDEO_SETTING(Set_wrpAnisotropic);
ADD_VIDEO_SETTING(Set_autodetect_ucode);
ADD_VIDEO_SETTING(Set_ucode);
ADD_VIDEO_SETTING(Set_wireframe);
ADD_VIDEO_SETTING(Set_wfmode);
ADD_VIDEO_SETTING(Set_ghq_fltr);
ADD_VIDEO_SETTING(Set_ghq_cmpr);
ADD_VIDEO_SETTING(Set_ghq_enht);
ADD_VIDEO_SETTING(Set_ghq_hirs);
ADD_VIDEO_SETTING(Set_ghq_enht_cmpr);
ADD_VIDEO_SETTING(Set_ghq_enht_f16bpp);
ADD_VIDEO_SETTING(Set_ghq_enht_gz);
ADD_VIDEO_SETTING(Set_ghq_enht_nobg);
ADD_VIDEO_SETTING(Set_ghq_hirs_cmpr);
ADD_VIDEO_SETTING(Set_ghq_hirs_tile);
ADD_VIDEO_SETTING(Set_ghq_hirs_f16bpp);
ADD_VIDEO_SETTING(Set_ghq_hirs_gz);
ADD_VIDEO_SETTING(Set_ghq_hirs_altcrc);
ADD_VIDEO_SETTING(Set_ghq_cache_save);
ADD_VIDEO_SETTING(Set_ghq_cache_size);
ADD_VIDEO_SETTING(Set_ghq_hirs_let_texartists_fly);
ADD_VIDEO_SETTING(Set_ghq_hirs_dump);
ADD_VIDEO_SETTING(Set_Resolution);
// Default Game Settings
ADD_VIDEO_SETTING(Set_optimize_texrect_default);
ADD_VIDEO_SETTING(Set_filtering_default);
ADD_VIDEO_SETTING(Set_lodmode_default);
ADD_VIDEO_SETTING(Set_fog_default);
ADD_VIDEO_SETTING(Set_buff_clear_default);
ADD_VIDEO_SETTING(Set_swapmode_default);
ADD_VIDEO_SETTING(Set_aspect_default);
ADD_VIDEO_SETTING(Set_fb_smart_default);
ADD_VIDEO_SETTING(Set_fb_hires_default);
ADD_VIDEO_SETTING(Set_fb_read_always_default);
ADD_VIDEO_SETTING(Set_read_back_to_screen_default);
ADD_VIDEO_SETTING(Set_detect_cpu_write_default);
ADD_VIDEO_SETTING(Set_fb_get_info_default);
ADD_VIDEO_SETTING(Set_fb_render_default);
//Game Settings
ADD_VIDEO_SETTING(Set_alt_tex_size);
ADD_VIDEO_SETTING(Set_use_sts1_only);
ADD_VIDEO_SETTING(Set_force_calc_sphere);
ADD_VIDEO_SETTING(Set_correct_viewport);
ADD_VIDEO_SETTING(Set_increase_texrect_edge);
ADD_VIDEO_SETTING(Set_decrease_fillrect_edge);
ADD_VIDEO_SETTING(Set_texture_correction);
ADD_VIDEO_SETTING(Set_pal230);
ADD_VIDEO_SETTING(Set_stipple_mode);
ADD_VIDEO_SETTING(Set_stipple_pattern);
ADD_VIDEO_SETTING(Set_force_microcheck);
ADD_VIDEO_SETTING(Set_force_quad3d);
ADD_VIDEO_SETTING(Set_clip_zmin);
ADD_VIDEO_SETTING(Set_clip_zmax);
ADD_VIDEO_SETTING(Set_fast_crc);
ADD_VIDEO_SETTING(Set_adjust_aspect);
ADD_VIDEO_SETTING(Set_zmode_compare_less);
ADD_VIDEO_SETTING(Set_old_style_adither);
ADD_VIDEO_SETTING(Set_n64_z_scale);
ADD_VIDEO_SETTING(Set_optimize_texrect);
ADD_VIDEO_SETTING(Set_ignore_aux_copy);
ADD_VIDEO_SETTING(Set_hires_buf_clear);
ADD_VIDEO_SETTING(Set_fb_read_alpha);
ADD_VIDEO_SETTING(Set_useless_is_useless);
ADD_VIDEO_SETTING(Set_fb_crc_mode);
ADD_VIDEO_SETTING(Set_filtering);
ADD_VIDEO_SETTING(Set_fog);
ADD_VIDEO_SETTING(Set_buff_clear);
ADD_VIDEO_SETTING(Set_swapmode);
ADD_VIDEO_SETTING(Set_aspect);
ADD_VIDEO_SETTING(Set_lodmode);
ADD_VIDEO_SETTING(Set_fb_smart);
ADD_VIDEO_SETTING(Set_fb_hires);
ADD_VIDEO_SETTING(Set_fb_read_always);
ADD_VIDEO_SETTING(Set_read_back_to_screen);
ADD_VIDEO_SETTING(Set_detect_cpu_write);
ADD_VIDEO_SETTING(Set_fb_get_info);
ADD_VIDEO_SETTING(Set_fb_render);
//RDB Setting
ADD_VIDEO_SETTING(Set_ucodeLookup);
//Logging Settings
ADD_VIDEO_SETTING(Set_Logging_MD5);
ADD_VIDEO_SETTING(Set_Logging_Thread);
ADD_VIDEO_SETTING(Set_Logging_Path);
ADD_VIDEO_SETTING(Set_Logging_Settings);
ADD_VIDEO_SETTING(Set_Logging_Unknown);
ADD_VIDEO_SETTING(Set_Logging_Glide64);
ADD_VIDEO_SETTING(Set_Logging_Interface);
ADD_VIDEO_SETTING(Set_Logging_Resolution);
ADD_VIDEO_SETTING(Set_Logging_Glitch);
ADD_VIDEO_SETTING(Set_Logging_VideoRDP);
ADD_VIDEO_SETTING(Set_Logging_TLUT);
ADD_VIDEO_SETTING(Set_Logging_PNG);
ADD_VIDEO_SETTING(Set_Logging_OGLWrapper);
ADD_VIDEO_SETTING(Set_Logging_RDPCommands);
} }
CJniBridegSettings::~CJniBridegSettings() CJniBridegSettings::~CJniBridegSettings()

View File

@ -1,17 +1,25 @@
#pragma once #pragma once
#include <Project64-core\Settings\SettingsID.h>
#include <string>
#include <map>
class CJniBridegSettings class CJniBridegSettings
{ {
public: typedef std::map<std::string, SettingID> SettingNameList;
CJniBridegSettings();
~CJniBridegSettings();
static inline bool bCPURunning ( void) { return m_bCPURunning; } public:
CJniBridegSettings();
~CJniBridegSettings();
SettingID TranslateSettingID(const char * SettingName);
static inline bool bCPURunning ( void) { return m_bCPURunning; }
private: private:
static void RefreshSettings (void *); SettingNameList m_SettingNameList;
static bool m_bCPURunning; static void RefreshSettings (void *);
static int m_RefCount; static bool m_bCPURunning;
static int m_RefCount;
}; };