From cf79c1835abeab5dd0723751dbc8048712cfaed9 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 1 Jan 2024 23:09:31 +0100 Subject: Show warning if using wayland --- src/config.hpp | 7 +++++++ src/main.cpp | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) 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: Hardware Accelerated Codec."); 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) { -- cgit v1.2.3