From f3565fdd77fb480575feec5de252466b093daf86 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 8 Dec 2024 14:32:11 +0100 Subject: Query capture options when opening settings and validate capture options when starting recording --- include/Config.hpp | 6 +++--- include/GsrInfo.hpp | 3 ++- include/Overlay.hpp | 2 +- include/gui/SettingsPage.hpp | 46 +++++++++++++++++++++++--------------------- 4 files changed, 30 insertions(+), 27 deletions(-) (limited to 'include') diff --git a/include/Config.hpp b/include/Config.hpp index 6044ab8..02f1634 100644 --- a/include/Config.hpp +++ b/include/Config.hpp @@ -7,7 +7,7 @@ #include namespace gsr { - struct GsrInfo; + struct SupportedCaptureOptions; struct ConfigHotkey { int64_t keysym = 0; @@ -92,7 +92,7 @@ namespace gsr { }; struct Config { - Config(const GsrInfo &gsr_info); + Config(const SupportedCaptureOptions &capture_options); MainConfig main_config; StreamingConfig streaming_config; @@ -100,6 +100,6 @@ namespace gsr { ReplayConfig replay_config; }; - std::optional read_config(const GsrInfo &gsr_info); + std::optional read_config(const SupportedCaptureOptions &capture_options); void save_config(Config &config); } \ No newline at end of file diff --git a/include/GsrInfo.hpp b/include/GsrInfo.hpp index cd6292c..6ec8e23 100644 --- a/include/GsrInfo.hpp +++ b/include/GsrInfo.hpp @@ -52,13 +52,13 @@ namespace gsr { struct GpuInfo { GpuVendor vendor = GpuVendor::UNKNOWN; + std::string card_path; }; struct GsrInfo { SystemInfo system_info; GpuInfo gpu_info; SupportedVideoCodecs supported_video_codecs; - SupportedCaptureOptions supported_capture_options; }; enum class GsrInfoExitStatus { @@ -78,4 +78,5 @@ namespace gsr { std::vector get_audio_devices(); std::vector get_application_audio(); + SupportedCaptureOptions get_supported_capture_options(const GsrInfo &gsr_info); } \ No newline at end of file diff --git a/include/Overlay.hpp b/include/Overlay.hpp index 0a4a1e9..283f2b1 100644 --- a/include/Overlay.hpp +++ b/include/Overlay.hpp @@ -36,7 +36,7 @@ namespace gsr { class Overlay { public: - Overlay(std::string resources_path, GsrInfo gsr_info, egl_functions egl_funcs); + Overlay(std::string resources_path, GsrInfo gsr_info, SupportedCaptureOptions capture_options, egl_functions egl_funcs); Overlay(const Overlay&) = delete; Overlay& operator=(const Overlay&) = delete; ~Overlay(); diff --git a/include/gui/SettingsPage.hpp b/include/gui/SettingsPage.hpp index f18ff65..b115d78 100644 --- a/include/gui/SettingsPage.hpp +++ b/include/gui/SettingsPage.hpp @@ -25,17 +25,17 @@ namespace gsr { STREAM }; - SettingsPage(Type type, const GsrInfo &gsr_info, Config &config, PageStack *page_stack); + SettingsPage(Type type, const GsrInfo *gsr_info, Config &config, PageStack *page_stack); SettingsPage(const SettingsPage&) = delete; SettingsPage& operator=(const SettingsPage&) = delete; - void load(const GsrInfo &gsr_info); + void load(); void save(); void on_navigate_away_from_page() override; private: std::unique_ptr create_view_radio_button(); - std::unique_ptr create_record_area_box(const GsrInfo &gsr_info); - std::unique_ptr create_record_area(const GsrInfo &gsr_info); + std::unique_ptr create_record_area_box(); + std::unique_ptr create_record_area(); std::unique_ptr create_select_window(); std::unique_ptr create_area_width_entry(); std::unique_ptr create_area_height_entry(); @@ -48,7 +48,7 @@ namespace gsr { std::unique_ptr create_restore_portal_session_checkbox(); std::unique_ptr create_restore_portal_session_section(); std::unique_ptr create_change_video_resolution_section(); - std::unique_ptr create_capture_target(const GsrInfo &gsr_info); + std::unique_ptr create_capture_target(); std::unique_ptr create_audio_device_selection_combobox(); std::unique_ptr