mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-03-31 17:27:05 +09:00
Fix restore portal session option not working, close other notifications when showing a new one
This commit is contained in:
@@ -60,15 +60,19 @@ namespace gsr {
|
||||
void xi_grab_all_devices();
|
||||
void xi_warp_pointer(mgl::vec2i position);
|
||||
|
||||
void process_key_bindings(mgl::Event &event);
|
||||
void close_gpu_screen_recorder_output();
|
||||
|
||||
void update_notification_process_status();
|
||||
void save_video_in_current_game_directory(const char *video_filepath, NotificationType notification_type);
|
||||
void update_gsr_replay_save();
|
||||
void update_gsr_process_status();
|
||||
|
||||
void replay_status_update_status();
|
||||
void update_focused_fullscreen_status();
|
||||
void update_power_supply_status();
|
||||
|
||||
void on_stop_recording(int exit_code);
|
||||
|
||||
void update_ui_recording_paused();
|
||||
void update_ui_recording_unpaused();
|
||||
|
||||
@@ -89,26 +93,26 @@ namespace gsr {
|
||||
|
||||
void force_window_on_top();
|
||||
private:
|
||||
using KeyBindingCallback = std::function<void()>;
|
||||
struct KeyBinding {
|
||||
mgl::Event::KeyEvent key_event;
|
||||
KeyBindingCallback callback;
|
||||
};
|
||||
|
||||
std::unique_ptr<mgl::Window> window;
|
||||
mgl::Event event;
|
||||
std::string resources_path;
|
||||
GsrInfo gsr_info;
|
||||
egl_functions egl_funcs;
|
||||
Config config;
|
||||
|
||||
bool visible = false;
|
||||
|
||||
mgl::Texture window_texture_texture;
|
||||
mgl::Sprite window_texture_sprite;
|
||||
mgl::Texture screenshot_texture;
|
||||
mgl::Sprite screenshot_sprite;
|
||||
mgl::Rectangle bg_screenshot_overlay;
|
||||
|
||||
mgl::Texture cursor_texture;
|
||||
mgl::Sprite cursor_sprite;
|
||||
mgl::vec2i cursor_hotspot;
|
||||
bool cursor_drawn = false;
|
||||
|
||||
WindowTexture window_texture;
|
||||
PageStack page_stack;
|
||||
mgl::Rectangle top_bar_background;
|
||||
@@ -116,14 +120,17 @@ namespace gsr {
|
||||
mgl::Sprite logo_sprite;
|
||||
CustomRendererWidget close_button_widget;
|
||||
bool close_button_pressed_inside = false;
|
||||
bool visible = false;
|
||||
uint64_t default_cursor = 0;
|
||||
|
||||
pid_t gpu_screen_recorder_process = -1;
|
||||
pid_t notification_process = -1;
|
||||
Config config;
|
||||
int gpu_screen_recorder_process_output_fd = -1;
|
||||
FILE *gpu_screen_recorder_process_output_file = nullptr;
|
||||
|
||||
DropdownButton *replay_dropdown_button_ptr = nullptr;
|
||||
DropdownButton *record_dropdown_button_ptr = nullptr;
|
||||
DropdownButton *stream_dropdown_button_ptr = nullptr;
|
||||
|
||||
mgl::Clock force_window_on_top_clock;
|
||||
|
||||
RecordingStatus recording_status = RecordingStatus::NONE;
|
||||
@@ -134,7 +141,7 @@ namespace gsr {
|
||||
bool power_supply_connected = false;
|
||||
bool focused_window_is_fullscreen = false;
|
||||
|
||||
std::array<KeyBinding, 1> key_bindings;
|
||||
std::string record_filepath;
|
||||
|
||||
Display *xi_display = nullptr;
|
||||
int xi_opcode = 0;
|
||||
|
||||
@@ -12,8 +12,8 @@ namespace gsr {
|
||||
|
||||
// Arguments ending with NULL
|
||||
bool exec_program_daemonized(const char **args);
|
||||
// Arguments ending with NULL
|
||||
pid_t exec_program(const char **args);
|
||||
// Arguments ending with NULL. |read_fd| can be NULL
|
||||
pid_t exec_program(const char **args, int *read_fd);
|
||||
// |output_buffer| should be at least PATH_MAX in size
|
||||
bool read_cmdline_arg0(const char *filepath, char *output_buffer);
|
||||
}
|
||||
13
include/WindowUtils.hpp
Normal file
13
include/WindowUtils.hpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
namespace gsr {
|
||||
enum class WindowCaptureType {
|
||||
FOCUSED,
|
||||
CURSOR
|
||||
};
|
||||
|
||||
std::string get_focused_window_name(Display *dpy, WindowCaptureType window_capture_type);
|
||||
}
|
||||
Reference in New Issue
Block a user