Add information to Status menu about currently connected device

This commit is contained in:
Lorenzooone 2024-10-26 21:53:20 +02:00
parent b3ac69cb23
commit 95ecc1cd08
8 changed files with 27 additions and 8 deletions

View File

@ -7,6 +7,7 @@
#include "TextRectangle.hpp"
#include "sfml_gfx_structs.hpp"
#include "display_structs.hpp"
#include "capture_structs.hpp"
enum StatusMenuOutAction{
STATUS_MENU_NO_ACTION,
@ -17,7 +18,7 @@ class StatusMenu : public OptionSelectionMenu {
public:
StatusMenu(bool font_load_success, sf::Font &text_font);
~StatusMenu();
void prepare(float scaling_factor, int view_size_x, int view_size_y, double in_fps, double poll_fps, double draw_fps);
void prepare(float scaling_factor, int view_size_x, int view_size_y, double in_fps, double poll_fps, double draw_fps, CaptureStatus* capture_status);
void insert_data();
StatusMenuOutAction selected_index = StatusMenuOutAction::STATUS_MENU_NO_ACTION;
void reset_output_option();

View File

@ -14,4 +14,5 @@ void captureCall(CaptureData* capture_data);
void capture_error_print(bool print_failed, CaptureData* capture_data, std::string error_string);
uint64_t get_audio_n_samples(CaptureData* capture_data, uint64_t read);
uint64_t get_video_in_size(CaptureData* capture_data);
std::string get_name_of_device(CaptureStatus* capture_status);
#endif

View File

@ -10,7 +10,7 @@
#define CAPTURE_SKIP_LID_REOPEN_FRAMES 32
#define RESET_TIMEOUT 4.0
#define SLEEP_CHECKS_TIME 20
#define SLEEP_CHECKS_TIME_MS 20
static int StartAcquisitionCapture(is_nitro_device_handlers* handlers, CaptureScreensType capture_type, bool* is_acquisition_off, const is_nitro_usb_device* usb_device_desc) {
int ret = 0;
@ -107,7 +107,7 @@ void is_nitro_acquisition_capture_main_loop(CaptureData* capture_data) {
return;
}
if(is_acquisition_off) {
default_sleep(SLEEP_CHECKS_TIME);
default_sleep(SLEEP_CHECKS_TIME_MS);
ret = LidReopenCaptureCheck(capture_data, curr_capture_type, &is_acquisition_off);
if(ret < 0) {
capture_error_print(true, capture_data, "Lid Reopen: Failed");

View File

@ -28,7 +28,7 @@
// For this reason, the code was split into two device-specific files.
#define FRAME_BUFFER_SIZE 32
#define SLEEP_CHECKS_TIME 20
#define SLEEP_CHECKS_TIME_MS 20
static int drain_frames(is_nitro_device_handlers* handlers, int num_frames, int start_frames, CaptureScreensType capture_type, const is_nitro_usb_device* usb_device_desc) {
ISNitroEmulatorVideoInputData* video_in_buffer = new ISNitroEmulatorVideoInputData;
@ -275,7 +275,7 @@ void is_nitro_acquisition_emulator_main_loop(CaptureData* capture_data) {
}
else {
capture_data->status.cooldown_curr_in = FIX_PARTIAL_FIRST_FRAME_NUM;
default_sleep(SLEEP_CHECKS_TIME);
default_sleep(SLEEP_CHECKS_TIME_MS);
}
capture_data->status.curr_delay = last_frame_counter % FRAME_BUFFER_SIZE;
ret = reset_acquisition_frames(handlers, curr_frame_counter, last_frame_counter, single_frame_time, clock_last_reset, curr_capture_type, capture_data->status.capture_type, 1, usb_device_desc);

View File

@ -1,4 +1,5 @@
#include "StatusMenu.hpp"
#include "devicecapture.hpp"
#define NUM_TOTAL_MENU_OPTIONS (sizeof(pollable_options)/sizeof(pollable_options[0]))
@ -8,6 +9,7 @@ enum StatusMenuID {
STATUS_MENU_FPS_IN,
STATUS_MENU_FPS_POLL,
STATUS_MENU_FPS_DRAW,
STATUS_MENU_CONNECTION,
};
struct StatusMenuOptionInfo {
@ -36,8 +38,13 @@ static const StatusMenuOptionInfo status_fps_draw_option = {
.base_name = "Output FPS:", .is_inc = true,
.id = STATUS_MENU_FPS_DRAW};
static const StatusMenuOptionInfo status_curr_device_option = {
.base_name = "", .is_inc = false,
.id = STATUS_MENU_CONNECTION};
static const StatusMenuOptionInfo* pollable_options[] = {
&status_name_version_option,
&status_curr_device_option,
&status_url_option,
&status_fps_in_option,
&status_fps_poll_option,
@ -112,7 +119,7 @@ bool StatusMenu::is_option_selectable(int index, int action) {
return false;
}
void StatusMenu::prepare(float menu_scaling_factor, int view_size_x, int view_size_y, double in_fps, double poll_fps, double draw_fps) {
void StatusMenu::prepare(float menu_scaling_factor, int view_size_x, int view_size_y, double in_fps, double poll_fps, double draw_fps, CaptureStatus* capture_status) {
if(!this->do_update) {
auto curr_time = std::chrono::high_resolution_clock::now();
const std::chrono::duration<double> diff = curr_time - this->last_update_time;
@ -135,6 +142,9 @@ void StatusMenu::prepare(float menu_scaling_factor, int view_size_x, int view_si
case STATUS_MENU_NAME_VERSION:
this->labels[index]->setText(this->get_string_option(real_index, DEFAULT_ACTION) + " - V." + get_version_string());
break;
case STATUS_MENU_CONNECTION:
this->labels[index]->setText(get_name_of_device(capture_status));
break;
case STATUS_MENU_FPS_IN:
this->labels[index + INC_ACTION]->setText(get_float_str_decimals(in_fps, 2));
break;

View File

@ -4,6 +4,7 @@
#include <SFML/OpenGL.hpp>
#include <cstring>
#include "font_ttf.h"
#include "devicecapture.hpp"
#define LEFT_ROUNDED_PADDING 5
#define RIGHT_ROUNDED_PADDING 5
@ -427,7 +428,7 @@ void WindowScreen::window_factory(bool is_main_thread) {
std::string WindowScreen::title_factory() {
std::string title = this->win_title;
if(this->capture_status->connected)
title += " - " + this->capture_status->device.name + " - " + this->capture_status->device.serial_number;
title += " - " + get_name_of_device(this->capture_status);
return title;
}

View File

@ -2051,7 +2051,7 @@ void WindowScreen::prepare_menu_draws(int view_size_x, int view_size_y) {
this->action_selection_menu->prepare(this->loaded_info.menu_scaling_factor, view_size_x, view_size_y, (*this->possible_buttons_ptrs[this->chosen_button])->cmd);
break;
case STATUS_MENU_TYPE:
this->status_menu->prepare(this->loaded_info.menu_scaling_factor, view_size_x, view_size_y, FPSArrayGetAverage(&in_fps), FPSArrayGetAverage(&poll_fps), FPSArrayGetAverage(&draw_fps));
this->status_menu->prepare(this->loaded_info.menu_scaling_factor, view_size_x, view_size_y, FPSArrayGetAverage(&in_fps), FPSArrayGetAverage(&poll_fps), FPSArrayGetAverage(&draw_fps), this->capture_status);
break;
case LICENSES_MENU_TYPE:
this->license_menu->prepare(this->loaded_info.menu_scaling_factor, view_size_x, view_size_y);

View File

@ -212,6 +212,12 @@ uint64_t get_video_in_size(CaptureData* capture_data) {
return 0;
}
std::string get_name_of_device(CaptureStatus* capture_status) {
if(!capture_status->connected)
return "Not connected";
return capture_status->device.name + " - " + capture_status->device.serial_number;
}
void capture_init() {
#ifdef USE_DS_3DS_USB
usb_ds_3ds_init();