aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-01-01 23:09:31 +0100
committerdec05eba <dec05eba@protonmail.com>2024-01-01 23:09:31 +0100
commitcf79c1835abeab5dd0723751dbc8048712cfaed9 (patch)
treef5f8e7be253b49088268ad1d65a04dedcd07cdda /src
parent8fd464696a71e98155e383f2c9df9c7cd7b7407a (diff)
Show warning if using wayland
Diffstat (limited to 'src')
-rw-r--r--src/config.hpp7
-rw-r--r--src/main.cpp14
2 files changed, 20 insertions, 1 deletions
diff --git a/src/config.hpp b/src/config.hpp
index 20614aa..9232541 100644
--- a/src/config.hpp
+++ b/src/config.hpp
@@ -31,6 +31,7 @@ struct MainConfig {
std::string framerate_mode;
bool advanced_view = false;
bool overclock = false;
+ bool wayland_warning_shown = false;
};
struct StreamingConfig {
@@ -277,6 +278,11 @@ static Config read_config(bool &config_empty) {
config.main_config.overclock = true;
else if(value == "false")
config.main_config.overclock = false;
+ } else if(key == "main.wayland_warning_shown") {
+ if(value == "true")
+ config.main_config.wayland_warning_shown = true;
+ else if(value == "false")
+ config.main_config.wayland_warning_shown = false;
} else if(key == "streaming.service") {
config.streaming_config.streaming_service.assign(value.str, value.size);
} else if(key == "streaming.key") {
@@ -364,6 +370,7 @@ static void save_config(const Config &config) {
fprintf(file, "main.framerate_mode %s\n", config.main_config.framerate_mode.c_str());
fprintf(file, "main.advanced_view %s\n", config.main_config.advanced_view ? "true" : "false");
fprintf(file, "main.overclock %s\n", config.main_config.overclock ? "true" : "false");
+ fprintf(file, "main.wayland_warning_shown %s\n", config.main_config.wayland_warning_shown ? "true" : "false");
fprintf(file, "streaming.service %s\n", config.streaming_config.streaming_service.c_str());
fprintf(file, "streaming.key %s\n", config.streaming_config.stream_key.c_str());
diff --git a/src/main.cpp b/src/main.cpp
index da7861c..7d83fef 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2881,7 +2881,7 @@ static void load_config(const gpu_info &gpu_inf) {
if(!supported_video_codecs.h264 && !supported_video_codecs.hevc && gpu_inf.vendor != GPU_VENDOR_NVIDIA && config.main_config.codec != "av1") {
if(supported_video_codecs.av1) {
- GtkWidget *dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+ GtkWidget *dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
"Your distro has disabled support for H264 and HEVC video codecs. Switched video codec to AV1. If you wish to use H264/HEVC video codecs then follow your distros guide to install a non-crippled mesa (with H264 and HEVC support) or switch to a less user hostile distro or recompile mesa from source. For example on fedora you may need to follow this: <a href=\"https://rpmfusion.org/Howto/Multimedia\">Hardware Accelerated Codec</a>.");
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
@@ -2896,6 +2896,18 @@ static void load_config(const gpu_info &gpu_inf) {
return;
}
}
+
+ if(wayland && !config.main_config.wayland_warning_shown) {
+ config.main_config.wayland_warning_shown = true;
+ save_configs();
+
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
+ "Use of GPU Screen Recorder on Wayland is not recommended since Wayland compositors are missing features that GPU Screen Recorder relies on, such as window capture, global hotkeys, and other future functionality.\n"
+ "Software around Wayland (desktop portal and pipewire) are also brittle and buggy. Wayland is also badly designed and will never support all of the features needed for a proper desktop experience.\n"
+ "Use X11 if you want to have access to all of the features provided by GPU Screen Recorder.");
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
}
static bool gl_get_gpu_info(gsr_egl *egl, gpu_info *info) {