mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2026-09-11 18:15:24 -05:00
Add option for fixed output framerate (useful for MacOS)
Some checks failed
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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 -DCMAKE_PREPARE_WINDOWS_DRIVERS=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Has been cancelled
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 -DCMAKE_PREPARE_WINDOWS_DRIVERS=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Has been cancelled
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 -DCMAKE_PREPARE_WINDOWS_DRIVERS=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Has been cancelled
CD / Create Pi Mono Setup (push) Has been cancelled
CD / Publishing (push) Has been cancelled
Some checks failed
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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) Has been cancelled
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 -DCMAKE_PREPARE_WINDOWS_DRIVERS=TRUE name:Windows VS2022 Win32 os:windows-2022]) (push) Has been cancelled
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 -DCMAKE_PREPARE_WINDOWS_DRIVERS=TRUE name:Windows VS2022 x64 os:windows-2022]) (push) Has been cancelled
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 -DCMAKE_PREPARE_WINDOWS_DRIVERS=TRUE name:Windows VS2022 ARM os:windows-2022]) (push) Has been cancelled
CD / Create Pi Mono Setup (push) Has been cancelled
CD / Publishing (push) Has been cancelled
This commit is contained in:
@@ -527,6 +527,14 @@ void reset_display_data(DisplayData* display_data) {
|
||||
display_data->last_connected_ds = false;
|
||||
display_data->interleaved_3d = false;
|
||||
display_data->do_ratio_cycling = false;
|
||||
#if (defined(__APPLE__))
|
||||
// Should this be the default...?
|
||||
//display_data->fixed_output_framerate = true;
|
||||
display_data->fixed_output_framerate = false;
|
||||
#else
|
||||
display_data->fixed_output_framerate = false;
|
||||
#endif
|
||||
display_data->target_fixed_output_framerate = 60.00;
|
||||
}
|
||||
|
||||
void reset_input_data(InputData* input_data) {
|
||||
@@ -572,7 +580,13 @@ void reset_screen_info(ScreenInfo &info) {
|
||||
info.top_rotation = 0;
|
||||
info.bot_rotation = 0;
|
||||
info.show_mouse = true;
|
||||
#if (defined(__APPLE__))
|
||||
// Should this be the default...?
|
||||
//info.v_sync_enabled = true;
|
||||
info.v_sync_enabled = false;
|
||||
#else
|
||||
info.v_sync_enabled = false;
|
||||
#endif
|
||||
#if (defined(RASPI) || defined(ANDROID_COMPILATION) || defined(__APPLE__))
|
||||
info.async = false;
|
||||
#else
|
||||
@@ -922,6 +936,13 @@ std::string save_screen_info(std::string base, const ScreenInfo &info) {
|
||||
return out;
|
||||
}
|
||||
|
||||
void sanitize_display_data(DisplayData* display_data) {
|
||||
if(display_data->target_fixed_output_framerate < 2.0)
|
||||
display_data->target_fixed_output_framerate = 2.0;
|
||||
if(display_data->target_fixed_output_framerate > 999.99)
|
||||
display_data->target_fixed_output_framerate = 999.99;
|
||||
}
|
||||
|
||||
void joystick_axis_poll(std::queue<SFEvent> &events_queue) {
|
||||
for(unsigned int i = 0; i < sf::Joystick::Count; i++) {
|
||||
if(!sf::Joystick::isConnected(i))
|
||||
@@ -1144,12 +1165,28 @@ void update_connected_specific_settings(FrontendData* frontend_data, const Captu
|
||||
}
|
||||
}
|
||||
|
||||
void default_sleep(float wanted_ms) {
|
||||
void default_sleep(double wanted_ms) {
|
||||
if(wanted_ms < 0)
|
||||
wanted_ms = 1000.0f/USB_CHECKS_PER_SECOND;
|
||||
wanted_ms = 1000.0/USB_CHECKS_PER_SECOND;
|
||||
sf::sleep(sf::microseconds((int)(wanted_ms * 1000)));
|
||||
}
|
||||
|
||||
void precise_sleep(double wanted_ms, double divisor, double spin_threshold_ms) {
|
||||
if(wanted_ms < 0)
|
||||
wanted_ms = 1000.0/USB_CHECKS_PER_SECOND;
|
||||
double elapsed_ms = 0.0;
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> start_time = std::chrono::high_resolution_clock::now();
|
||||
while(elapsed_ms < wanted_ms){
|
||||
double difference_ms = wanted_ms - elapsed_ms;
|
||||
// Is there a better way to do this?!
|
||||
if(difference_ms > spin_threshold_ms)
|
||||
default_sleep(difference_ms / divisor);
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> curr_time = std::chrono::high_resolution_clock::now();
|
||||
const std::chrono::duration<double> diff = curr_time - start_time;
|
||||
elapsed_ms = diff.count() * 1000.0;
|
||||
}
|
||||
}
|
||||
|
||||
void screen_display_thread(WindowScreen *screen) {
|
||||
screen->display_thread();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user