mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-03-31 09:17:04 +09:00
Show better desktop portal error message (failed to start, canceled)
This commit is contained in:
2
TODO
2
TODO
@@ -191,3 +191,5 @@ Create window as a real overlay window, using layer shell protocol, when possibl
|
|||||||
Add timeout option for screenshots.
|
Add timeout option for screenshots.
|
||||||
|
|
||||||
Add a window that shows a warning for wayland users, that wayland doesn't support this software and if they experience issues then they should use x11 instead.
|
Add a window that shows a warning for wayland users, that wayland doesn't support this software and if they experience issues then they should use x11 instead.
|
||||||
|
|
||||||
|
Add a window that shows a warning if gpu video encoding isn't supported.
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ namespace gsr {
|
|||||||
void save_video_in_current_game_directory(const char *video_filepath, NotificationType notification_type);
|
void save_video_in_current_game_directory(const char *video_filepath, NotificationType notification_type);
|
||||||
void on_replay_saved(const char *replay_saved_filepath);
|
void on_replay_saved(const char *replay_saved_filepath);
|
||||||
void process_gsr_output();
|
void process_gsr_output();
|
||||||
|
void on_gsr_process_error(int exit_code, NotificationType notification_type);
|
||||||
void update_gsr_process_status();
|
void update_gsr_process_status();
|
||||||
void update_gsr_screenshot_process_status();
|
void update_gsr_screenshot_process_status();
|
||||||
|
|
||||||
|
|||||||
@@ -1885,6 +1885,35 @@ namespace gsr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Overlay::on_gsr_process_error(int exit_code, NotificationType notification_type) {
|
||||||
|
fprintf(stderr, "Warning: gpu-screen-recorder (%d) exited with exit status %d\n", (int)gpu_screen_recorder_process, exit_code);
|
||||||
|
if(exit_code == 50) {
|
||||||
|
show_notification("Desktop portal capture failed.\nEither you canceled the desktop portal or your Wayland compositor doesn't support desktop portal capture\nor it's incorrectly setup on your system", notification_error_timeout_seconds, mgl::Color(255, 0, 0), mgl::Color(255, 0, 0), notification_type);
|
||||||
|
} else if(exit_code == 60) {
|
||||||
|
show_notification("Stopped capture because the user canceled the desktop portal", notification_timeout_seconds, mgl::Color(255, 0, 0), mgl::Color(255, 0, 0), notification_type);
|
||||||
|
} else {
|
||||||
|
const char *prefix = "";
|
||||||
|
switch(notification_type) {
|
||||||
|
case NotificationType::NONE:
|
||||||
|
case NotificationType::SCREENSHOT:
|
||||||
|
break;
|
||||||
|
case NotificationType::RECORD:
|
||||||
|
prefix = "Failed to start/save recording";
|
||||||
|
break;
|
||||||
|
case NotificationType::REPLAY:
|
||||||
|
prefix = "Replay stopped because of an error";
|
||||||
|
break;
|
||||||
|
case NotificationType::STREAM:
|
||||||
|
prefix = "Streaming stopped because of an error";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
char msg[256];
|
||||||
|
snprintf(msg, sizeof(msg), "%s. Verify if settings are correct", prefix);
|
||||||
|
show_notification(msg, notification_timeout_seconds, mgl::Color(255, 0, 0), mgl::Color(255, 0, 0), notification_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Overlay::update_gsr_process_status() {
|
void Overlay::update_gsr_process_status() {
|
||||||
if(gpu_screen_recorder_process <= 0)
|
if(gpu_screen_recorder_process <= 0)
|
||||||
return;
|
return;
|
||||||
@@ -1911,8 +1940,7 @@ namespace gsr {
|
|||||||
if(config.replay_config.show_replay_stopped_notifications)
|
if(config.replay_config.show_replay_stopped_notifications)
|
||||||
show_notification("Replay stopped", notification_timeout_seconds, mgl::Color(255, 255, 255), get_color_theme().tint_color, NotificationType::REPLAY);
|
show_notification("Replay stopped", notification_timeout_seconds, mgl::Color(255, 255, 255), get_color_theme().tint_color, NotificationType::REPLAY);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Warning: gpu-screen-recorder (%d) exited with exit status %d\n", (int)gpu_screen_recorder_process, exit_code);
|
on_gsr_process_error(exit_code, NotificationType::REPLAY);
|
||||||
show_notification("Replay stopped because of an error. Verify if settings are correct", notification_timeout_seconds, mgl::Color(255, 0, 0), mgl::Color(255, 0, 0), NotificationType::REPLAY);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1927,8 +1955,7 @@ namespace gsr {
|
|||||||
if(config.streaming_config.show_streaming_stopped_notifications)
|
if(config.streaming_config.show_streaming_stopped_notifications)
|
||||||
show_notification("Streaming has stopped", notification_timeout_seconds, mgl::Color(255, 255, 255), get_color_theme().tint_color, NotificationType::STREAM);
|
show_notification("Streaming has stopped", notification_timeout_seconds, mgl::Color(255, 255, 255), get_color_theme().tint_color, NotificationType::STREAM);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Warning: gpu-screen-recorder (%d) exited with exit status %d\n", (int)gpu_screen_recorder_process, exit_code);
|
on_gsr_process_error(exit_code, NotificationType::STREAM);
|
||||||
show_notification("Streaming stopped because of an error. Verify if settings are correct", notification_timeout_seconds, mgl::Color(255, 0, 0), mgl::Color(255, 0, 0), NotificationType::STREAM);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2060,8 +2087,7 @@ namespace gsr {
|
|||||||
show_notification(msg, notification_timeout_seconds, mgl::Color(255, 255, 255), get_color_theme().tint_color, NotificationType::RECORD, recording_capture_target.c_str());
|
show_notification(msg, notification_timeout_seconds, mgl::Color(255, 255, 255), get_color_theme().tint_color, NotificationType::RECORD, recording_capture_target.c_str());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Warning: gpu-screen-recorder (%d) exited with exit status %d\n", (int)gpu_screen_recorder_process, exit_code);
|
on_gsr_process_error(exit_code, NotificationType::RECORD);
|
||||||
show_notification("Failed to start/save recording. Verify if settings are correct", notification_timeout_seconds, mgl::Color(255, 0, 0), mgl::Color(255, 0, 0), NotificationType::RECORD);
|
|
||||||
}
|
}
|
||||||
update_ui_recording_stopped();
|
update_ui_recording_stopped();
|
||||||
replay_recording = false;
|
replay_recording = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user