mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2026-09-09 17:15:29 -05:00
Add option for enabling/disabling automatic device scan
Some checks are pending
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Waiting to run
CD / Create Pi Mono Setup (push) Blocked by required conditions
CD / Publishing (push) Blocked by required conditions
Some checks are pending
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 -DCMAKE_PARALLEL_MSVC=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Waiting to run
CD / Create Pi Mono Setup (push) Blocked by required conditions
CD / Publishing (push) Blocked by required conditions
This commit is contained in:
@@ -22,6 +22,7 @@ enum AudioMenuOutAction{
|
||||
AUDIO_MENU_CHANGE_DEVICE,
|
||||
AUDIO_MENU_MODE_DEC,
|
||||
AUDIO_MENU_MODE_INC,
|
||||
AUDIO_MENU_AUTO_SCAN,
|
||||
};
|
||||
|
||||
class AudioMenu : public OptionSelectionMenu {
|
||||
|
||||
@@ -23,6 +23,7 @@ public:
|
||||
void change_audio_mode_output(bool is_change_positive);
|
||||
void change_audio_volume(bool is_change_positive);
|
||||
void change_audio_mute();
|
||||
void change_auto_device_scan();
|
||||
void request_audio_restart();
|
||||
void signal_conversion_error();
|
||||
bool check_audio_restart_request();
|
||||
@@ -35,6 +36,7 @@ public:
|
||||
bool has_text_to_print();
|
||||
std::string text_to_print();
|
||||
bool get_mute();
|
||||
bool get_auto_device_scan();
|
||||
int get_real_volume();
|
||||
bool load_audio_data(std::string key, std::string value);
|
||||
std::string save_audio_data();
|
||||
@@ -49,6 +51,7 @@ private:
|
||||
AudioOutputType output_type;
|
||||
audio_output_device_data output_device;
|
||||
AudioMode mode_output;
|
||||
bool periodic_output_audio_device_scan;
|
||||
bool restart_request = false;
|
||||
bool text_updated;
|
||||
std::string text;
|
||||
@@ -56,6 +59,7 @@ private:
|
||||
void set_audio_output_type(int new_value);
|
||||
void set_audio_mode_output(int new_value);
|
||||
void set_audio_mute(bool new_mute);
|
||||
void set_auto_device_scan(bool new_value);
|
||||
void update_text(std::string text);
|
||||
const std::string audio_mode_output_str = "audio_mode";
|
||||
const std::string max_audio_latency_str = "max_audio_latency";
|
||||
@@ -64,6 +68,7 @@ private:
|
||||
const std::string output_type_str = "audio_output_type";
|
||||
const std::string device_request_str = "audio_output_device_requested";
|
||||
const std::string device_name_str = "audio_output_device_name";
|
||||
const std::string auto_device_scan_str = "audio_auto_device_scan";
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -49,6 +49,11 @@ static const AudioMenuOptionInfo audio_next_device_option = {
|
||||
.is_inc = false, .dec_str = "", .inc_str = "", .inc_out_action = AUDIO_MENU_NO_ACTION,
|
||||
.out_action = AUDIO_MENU_CHANGE_DEVICE};
|
||||
|
||||
static const AudioMenuOptionInfo audio_auto_scan_option = {
|
||||
.base_name = "Disable Automatic Device Scan", .false_name = "Enable Automatic Device Scan",
|
||||
.is_inc = false, .dec_str = "", .inc_str = "", .inc_out_action = AUDIO_MENU_NO_ACTION,
|
||||
.out_action = AUDIO_MENU_AUTO_SCAN};
|
||||
|
||||
|
||||
static const AudioMenuOptionInfo* pollable_options[] = {
|
||||
&audio_volume_option,
|
||||
@@ -56,6 +61,7 @@ static const AudioMenuOptionInfo* pollable_options[] = {
|
||||
&audio_output_type_option,
|
||||
&audio_max_latency_option,
|
||||
&audio_mode_output_option,
|
||||
&audio_auto_scan_option,
|
||||
&audio_next_device_option,
|
||||
&audio_restart_option,
|
||||
};
|
||||
@@ -153,6 +159,9 @@ void AudioMenu::prepare(float menu_scaling_factor, int view_size_x, int view_siz
|
||||
case AUDIO_MENU_MUTE:
|
||||
this->labels[index]->setText(this->setTextOptionBool(real_index, audio_data->get_mute()));
|
||||
break;
|
||||
case AUDIO_MENU_AUTO_SCAN:
|
||||
this->labels[index]->setText(this->setTextOptionBool(real_index, audio_data->get_auto_device_scan()));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1594,6 +1594,9 @@ void WindowScreen::poll(bool do_everything) {
|
||||
case AUDIO_MENU_RESTART:
|
||||
this->audio_data->request_audio_restart();
|
||||
break;
|
||||
case AUDIO_MENU_AUTO_SCAN:
|
||||
this->audio_data->change_auto_device_scan();
|
||||
break;
|
||||
case AUDIO_MENU_CHANGE_DEVICE:
|
||||
this->setup_audio_devices_menu();
|
||||
done = true;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "audio_data.hpp"
|
||||
#include "utils.hpp"
|
||||
|
||||
int searchAudioDevice(std::string device_name, std::vector<std::string> &audio_devices) {
|
||||
int index = -1;
|
||||
@@ -20,6 +21,11 @@ void AudioData::reset() {
|
||||
this->mode_output = AUDIO_MODE_LOW_LATENCY;
|
||||
this->restart_request = false;
|
||||
this->text_updated = false;
|
||||
#if (defined(RASPI) || defined(ANDROID_COMPILATION))
|
||||
this->periodic_output_audio_device_scan = false;
|
||||
#else
|
||||
this->periodic_output_audio_device_scan = true;
|
||||
#endif
|
||||
this->output_device.preference_requested = false;
|
||||
this->output_device.preferred = "";
|
||||
}
|
||||
@@ -74,6 +80,10 @@ void AudioData::change_audio_mute() {
|
||||
this->update_text("Volume: " + std::to_string(this->get_final_volume()) + "%");
|
||||
}
|
||||
|
||||
void AudioData::change_auto_device_scan() {
|
||||
this->set_auto_device_scan(!this->periodic_output_audio_device_scan);
|
||||
}
|
||||
|
||||
void AudioData::request_audio_restart() {
|
||||
this->restart_request = true;
|
||||
this->update_text("Restarting audio...");
|
||||
@@ -189,11 +199,19 @@ bool AudioData::get_mute() {
|
||||
return this->mute;
|
||||
}
|
||||
|
||||
bool AudioData::get_auto_device_scan() {
|
||||
return this->periodic_output_audio_device_scan;
|
||||
}
|
||||
|
||||
bool AudioData::load_audio_data(std::string key, std::string value) {
|
||||
if (key == this->mute_str) {
|
||||
this->set_audio_mute(std::stoi(value));
|
||||
return true;
|
||||
}
|
||||
if (key == this->auto_device_scan_str) {
|
||||
this->set_auto_device_scan(std::stoi(value));
|
||||
return true;
|
||||
}
|
||||
if (key == this->volume_str) {
|
||||
this->set_audio_volume(std::stoi(value));
|
||||
return true;
|
||||
@@ -224,6 +242,7 @@ bool AudioData::load_audio_data(std::string key, std::string value) {
|
||||
std::string AudioData::save_audio_data() {
|
||||
std::string out_str = "";
|
||||
out_str += this->mute_str + "=" + std::to_string(this->mute) + "\n";
|
||||
out_str += this->auto_device_scan_str + "=" + std::to_string(this->periodic_output_audio_device_scan) + "\n";
|
||||
out_str += this->volume_str + "=" + std::to_string(this->volume) + "\n";
|
||||
out_str += this->max_audio_latency_str + "=" + std::to_string(this->max_audio_latency) + "\n";
|
||||
out_str += this->output_type_str + "=" + std::to_string(this->output_type) + "\n";
|
||||
@@ -268,3 +287,7 @@ void AudioData::set_audio_volume(int new_volume) {
|
||||
void AudioData::set_audio_mute(bool new_mute) {
|
||||
this->mute = new_mute;
|
||||
}
|
||||
|
||||
void AudioData::set_auto_device_scan(bool new_value) {
|
||||
this->periodic_output_audio_device_scan = new_value;
|
||||
}
|
||||
|
||||
@@ -28,17 +28,6 @@
|
||||
#define NO_DATA_CONSECUTIVE_THRESHOLD 4
|
||||
#define TIME_AUDIO_DEVICE_CHECK 0.25
|
||||
|
||||
#ifdef PERIODIC_AUDIO_DEVICE_RESCANNING
|
||||
#undef PERIODIC_AUDIO_DEVICE_RESCANNING
|
||||
#endif
|
||||
|
||||
#if (defined(RASPI) || defined(ANDROID_COMPILATION))
|
||||
#define PERIODIC_AUDIO_DEVICE_RESCANNING false
|
||||
#else
|
||||
#define PERIODIC_AUDIO_DEVICE_RESCANNING true
|
||||
#endif
|
||||
|
||||
|
||||
struct override_all_data {
|
||||
override_win_data override_top_bot_data;
|
||||
override_win_data override_top_data;
|
||||
@@ -396,7 +385,7 @@ static bool handleAudioDeviceChanges(Audio &audio, AudioData *audio_data, std::o
|
||||
int index = -1;
|
||||
bool success = false;
|
||||
bool preference_requested = in_use_audio_output_device_data.preference_requested;
|
||||
bool check_audio_device = PERIODIC_AUDIO_DEVICE_RESCANNING;
|
||||
bool check_audio_device = audio_data->get_auto_device_scan();
|
||||
check_audio_device = check_audio_device || ((old_in_use_audio_output_device_data.preference_requested != in_use_audio_output_device_data.preference_requested) || (old_in_use_audio_output_device_data.preferred != in_use_audio_output_device_data.preferred));
|
||||
if(check_audio_device && preference_requested) {
|
||||
std::vector<std::string> audio_devices = sf::PlaybackDevice::getAvailableDevices();
|
||||
|
||||
Reference in New Issue
Block a user