Save recording status to file to reload it when gsr overlay restarts

This commit is contained in:
dec05eba
2024-09-22 18:17:46 +02:00
parent 5d6d57b881
commit 61c9b4918e
7 changed files with 270 additions and 66 deletions

View File

@@ -15,6 +15,13 @@
namespace gsr {
class DropdownButton;
enum class RecordingStatus {
NONE,
REPLAY,
RECORD,
STREAM
};
class Overlay {
public:
Overlay(mgl::Window &window, std::string resources_path, GsrInfo gsr_info, egl_functions egl_funcs, mgl::Color bg_color);
@@ -30,6 +37,17 @@ namespace gsr {
void toggle_show();
bool is_open() const;
private:
void update_gsr_process_status();
void load_program_status();
void save_program_status();
void load_program_pid();
void save_program_pid();
void recording_stopped_remove_runtime_files();
void update_ui_recording_started();
void update_ui_recording_stopped();
void on_press_start_replay(const std::string &id);
void on_press_start_record(const std::string &id);
void on_press_start_stream(const std::string &id);
@@ -60,5 +78,7 @@ namespace gsr {
DropdownButton *replay_dropdown_button_ptr = nullptr;
DropdownButton *record_dropdown_button_ptr = nullptr;
DropdownButton *stream_dropdown_button_ptr = nullptr;
RecordingStatus recording_status = RecordingStatus::NONE;
};
}

View File

@@ -14,5 +14,6 @@ namespace gsr {
bool exec_program_daemonized(const char **args);
// Arguments ending with NULL
pid_t exec_program(const char **args);
bool is_gpu_screen_recorder_running(pid_t &gsr_pid, GsrMode &mode);
// |output_buffer| should be at least PATH_MAX in size
bool read_cmdline_arg0(const char *filepath, char *output_buffer);
}

View File

@@ -4,6 +4,7 @@
#include <string_view>
#include <map>
#include <string>
#include <optional>
namespace gsr {
struct KeyValue {
@@ -23,10 +24,14 @@ namespace gsr {
std::map<std::string, std::string> get_xdg_variables();
std::string get_videos_dir();
// Returns 0 on success
int create_directory_recursive(char *path);
bool file_get_content(const char *filepath, std::string &file_content);
bool file_overwrite(const char *filepath, const std::string &data);
// Returns the path to the parent directory (ignoring trailing /)
// of "." if there is no parent directory and the directory path is relative
std::string get_parent_directory(std::string_view directory);
std::optional<std::string> get_gsr_runtime_dir();
}