mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2026-07-13 07:12:26 -05:00
Add info about Windows dependencies
This commit is contained in:
parent
2e4e6ab3ae
commit
4aee87b663
|
|
@ -13,6 +13,7 @@ set(EXTRA_CXX_FLAGS "")
|
|||
set(RASPBERRY_PI_COMPILATION FALSE CACHE BOOL "Option for compiling the Raspberry Pi GPIO library in")
|
||||
set(SFML_BUILD_NETWORK FALSE)
|
||||
set(EXTRA_LIBRARIES "")
|
||||
set(FINAL_EXTENSION "")
|
||||
|
||||
if (RASPBERRY_PI_COMPILATION)
|
||||
set(EXTRA_LIBRARIES "gpiod")
|
||||
|
|
@ -35,6 +36,7 @@ FetchContent_Declare(libusb1
|
|||
|
||||
set(FTD3XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
set(FINAL_EXTENSION ".exe")
|
||||
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/windows_setup_ftd3xx.bat)
|
||||
set(FTD3XX_URL_TIME 2024/01)
|
||||
set(FTD3XX_VER 1.3.0.9)
|
||||
|
|
@ -182,8 +184,7 @@ add_custom_command(
|
|||
VERBATIM
|
||||
)
|
||||
|
||||
install(TARGETS ${OUTPUT_NAME} DESTINATION .)
|
||||
install(FILES LICENSE README.md DESTINATION .)
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/${OUTPUT_NAME}${FINAL_EXTENSION} LICENSE README.md DESTINATION .)
|
||||
install(DIRECTORY "other licenses" DESTINATION .)
|
||||
if(WIN32)
|
||||
install(FILES openal32.dll DESTINATION .)
|
||||
|
|
|
|||
|
|
@ -134,4 +134,5 @@ cmake -B build -DRASPBERRY_PI_COMPILATION=TRUE ; cmake --build build --config Re
|
|||
xattr -c ./cc3dsfs.app
|
||||
```
|
||||
- It can also be achieved by opening a terminal, typing "xattr -c ", dragging the application to the terminal, and finally pressing Enter.
|
||||
- On Windows, you may need to install the Visual C++ Redistributable set of libraries. They are available here: https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-microsoft-visual-c-redistributable-version
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ static bool load(const std::string path, const std::string name, ScreenInfo &top
|
|||
std::ifstream file(path + name);
|
||||
std::string line;
|
||||
|
||||
if(!file.good()) {
|
||||
if((!file) || (!file.is_open()) || (!file.good())) {
|
||||
UpdateOutText(out_text_data, "File " + path + name + " load failed.\nDefaults re-loaded.", "Load failed\nDefaults re-loaded", TEXT_KIND_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
|
@ -207,8 +207,8 @@ static void save_layout_file(int save_index, FrontendData *frontend_data, AudioD
|
|||
}
|
||||
|
||||
static void soundCall(AudioData *audio_data, CaptureData* capture_data) {
|
||||
sf::Int16 (*out_buf)[MAX_SAMPLES_IN] = new sf::Int16[NUM_CONCURRENT_AUDIO_BUFFERS][MAX_SAMPLES_IN];
|
||||
Audio audio(audio_data);
|
||||
sf::Int16 out_buf[NUM_CONCURRENT_AUDIO_BUFFERS][MAX_SAMPLES_IN];
|
||||
int curr_out, prev_out = NUM_CONCURRENT_DATA_BUFFERS - 1, audio_buf_counter = 0;
|
||||
const bool endianness = is_big_endian();
|
||||
volatile int loaded_samples;
|
||||
|
|
@ -259,6 +259,7 @@ static void soundCall(AudioData *audio_data, CaptureData* capture_data) {
|
|||
|
||||
audio.stop_audio();
|
||||
audio.stop();
|
||||
delete []out_buf;
|
||||
}
|
||||
|
||||
static void poll_all_windows(FrontendData *frontend_data, bool do_everything, bool &polled) {
|
||||
|
|
@ -270,10 +271,10 @@ static void poll_all_windows(FrontendData *frontend_data, bool do_everything, bo
|
|||
}
|
||||
}
|
||||
|
||||
static void check_close_application(WindowScreen &screen, CaptureData* capture_data, int &ret_val) {
|
||||
if(screen.close_capture() && capture_data->status.running) {
|
||||
static void check_close_application(WindowScreen *screen, CaptureData* capture_data, int &ret_val) {
|
||||
if(screen->close_capture() && capture_data->status.running) {
|
||||
capture_data->status.running = false;
|
||||
ret_val = screen.get_ret_val();
|
||||
ret_val = screen->get_ret_val();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -297,26 +298,26 @@ static int mainVideoOutputCall(AudioData* audio_data, CaptureData* capture_data,
|
|||
out_buf = new VideoOutputData;
|
||||
memset(out_buf, 0, sizeof(VideoOutputData));
|
||||
|
||||
WindowScreen top_screen(ScreenType::TOP, &capture_data->status, &frontend_data.display_data, audio_data, &extra_button_shortcuts);
|
||||
WindowScreen bot_screen(ScreenType::BOTTOM, &capture_data->status, &frontend_data.display_data, audio_data, &extra_button_shortcuts);
|
||||
WindowScreen joint_screen(ScreenType::JOINT, &capture_data->status, &frontend_data.display_data, audio_data, &extra_button_shortcuts);
|
||||
frontend_data.top_screen = &top_screen;
|
||||
frontend_data.bot_screen = &bot_screen;
|
||||
frontend_data.joint_screen = &joint_screen;
|
||||
WindowScreen *top_screen = new WindowScreen(ScreenType::TOP, &capture_data->status, &frontend_data.display_data, audio_data, &extra_button_shortcuts);
|
||||
WindowScreen *bot_screen = new WindowScreen(ScreenType::BOTTOM, &capture_data->status, &frontend_data.display_data, audio_data, &extra_button_shortcuts);
|
||||
WindowScreen *joint_screen = new WindowScreen(ScreenType::JOINT, &capture_data->status, &frontend_data.display_data, audio_data, &extra_button_shortcuts);
|
||||
frontend_data.top_screen = top_screen;
|
||||
frontend_data.bot_screen = bot_screen;
|
||||
frontend_data.joint_screen = joint_screen;
|
||||
|
||||
load_layout_file(STARTUP_FILE_INDEX, &frontend_data, audio_data, out_text_data, &extra_button_shortcuts, skip_io, false);
|
||||
// Due to the risk for seizures, at the start of the program, set BFI to false!
|
||||
top_screen.m_info.bfi = false;
|
||||
bot_screen.m_info.bfi = false;
|
||||
joint_screen.m_info.bfi = false;
|
||||
top_screen->m_info.bfi = false;
|
||||
bot_screen->m_info.bfi = false;
|
||||
joint_screen->m_info.bfi = false;
|
||||
|
||||
top_screen.build();
|
||||
bot_screen.build();
|
||||
joint_screen.build();
|
||||
top_screen->build();
|
||||
bot_screen->build();
|
||||
joint_screen->build();
|
||||
|
||||
std::thread top_thread(screen_display_thread, &top_screen);
|
||||
std::thread bot_thread(screen_display_thread, &bot_screen);
|
||||
std::thread joint_thread(screen_display_thread, &joint_screen);
|
||||
std::thread top_thread(screen_display_thread, top_screen);
|
||||
std::thread bot_thread(screen_display_thread, bot_screen);
|
||||
std::thread joint_thread(screen_display_thread, joint_screen);
|
||||
|
||||
capture_data->status.connected = connect(true, capture_data, &frontend_data);
|
||||
SuccessConnectionOutTextGenerator(out_text_data, capture_data);
|
||||
|
|
@ -377,7 +378,7 @@ static int mainVideoOutputCall(AudioData* audio_data, CaptureData* capture_data,
|
|||
int load_index = 0;
|
||||
int save_index = 0;
|
||||
|
||||
if(top_screen.open_capture() || bot_screen.open_capture() || joint_screen.open_capture()) {
|
||||
if(top_screen->open_capture() || bot_screen->open_capture() || joint_screen->open_capture()) {
|
||||
capture_data->status.connected = connect(true, capture_data, &frontend_data);
|
||||
SuccessConnectionOutTextGenerator(out_text_data, capture_data);
|
||||
}
|
||||
|
|
@ -386,18 +387,18 @@ static int mainVideoOutputCall(AudioData* audio_data, CaptureData* capture_data,
|
|||
check_close_application(bot_screen, capture_data, ret_val);
|
||||
check_close_application(joint_screen, capture_data, ret_val);
|
||||
|
||||
if((load_index = top_screen.load_data()) || (load_index = bot_screen.load_data()) || (load_index = joint_screen.load_data())) {
|
||||
if((load_index = top_screen->load_data()) || (load_index = bot_screen->load_data()) || (load_index = joint_screen->load_data())) {
|
||||
// This value should only be loaded when starting the program...
|
||||
bool previous_last_connected_ds = frontend_data.display_data.last_connected_ds;
|
||||
load_layout_file(load_index, &frontend_data, audio_data, out_text_data, &extra_button_shortcuts, skip_io, true);
|
||||
frontend_data.display_data.last_connected_ds = previous_last_connected_ds;
|
||||
}
|
||||
|
||||
if((save_index = top_screen.save_data()) || (save_index = bot_screen.save_data()) || (save_index = joint_screen.save_data())) {
|
||||
if((save_index = top_screen->save_data()) || (save_index = bot_screen->save_data()) || (save_index = joint_screen->save_data())) {
|
||||
save_layout_file(save_index, &frontend_data, audio_data, out_text_data, &extra_button_shortcuts, skip_io, true);
|
||||
top_screen.update_save_menu();
|
||||
bot_screen.update_save_menu();
|
||||
joint_screen.update_save_menu();
|
||||
top_screen->update_save_menu();
|
||||
bot_screen->update_save_menu();
|
||||
joint_screen->update_save_menu();
|
||||
}
|
||||
|
||||
if(audio_data->has_text_to_print()) {
|
||||
|
|
@ -411,24 +412,24 @@ static int mainVideoOutputCall(AudioData* audio_data, CaptureData* capture_data,
|
|||
|
||||
if((!out_text_data.consumed) && (!frontend_data.reload)) {
|
||||
ConsoleOutText(out_text_data.full_text);
|
||||
top_screen.print_notification(out_text_data.small_text, out_text_data.kind);
|
||||
bot_screen.print_notification(out_text_data.small_text, out_text_data.kind);
|
||||
joint_screen.print_notification(out_text_data.small_text, out_text_data.kind);
|
||||
top_screen->print_notification(out_text_data.small_text, out_text_data.kind);
|
||||
bot_screen->print_notification(out_text_data.small_text, out_text_data.kind);
|
||||
joint_screen->print_notification(out_text_data.small_text, out_text_data.kind);
|
||||
out_text_data.consumed = true;
|
||||
}
|
||||
}
|
||||
|
||||
top_screen.end();
|
||||
bot_screen.end();
|
||||
joint_screen.end();
|
||||
top_screen->end();
|
||||
bot_screen->end();
|
||||
joint_screen->end();
|
||||
|
||||
top_thread.join();
|
||||
bot_thread.join();
|
||||
joint_thread.join();
|
||||
|
||||
top_screen.after_thread_join();
|
||||
bot_screen.after_thread_join();
|
||||
joint_screen.after_thread_join();
|
||||
top_screen->after_thread_join();
|
||||
bot_screen->after_thread_join();
|
||||
joint_screen->after_thread_join();
|
||||
|
||||
save_layout_file(STARTUP_FILE_INDEX, &frontend_data, audio_data, out_text_data, &extra_button_shortcuts, skip_io, false);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user