Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gpu-screen-recorder-gtk for openSUSE:Factory checked in at 2025-02-20 16:38:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gpu-screen-recorder-gtk (Old) and /work/SRC/openSUSE:Factory/.gpu-screen-recorder-gtk.new.1873 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpu-screen-recorder-gtk" Thu Feb 20 16:38:34 2025 rev:15 rq:1247185 version:20250205 Changes: -------- --- /work/SRC/openSUSE:Factory/gpu-screen-recorder-gtk/gpu-screen-recorder-gtk.changes 2025-01-27 20:55:34.931445049 +0100 +++ /work/SRC/openSUSE:Factory/.gpu-screen-recorder-gtk.new.1873/gpu-screen-recorder-gtk.changes 2025-02-20 16:39:39.476230236 +0100 @@ -1,0 +2,6 @@ +Wed Feb 19 16:53:22 UTC 2025 - mantari...@pm.me + +- Update to version 20250205: + * Show error when trying to capture window that no longer exists + +------------------------------------------------------------------- Old: ---- gpu-screen-recorder-gtk-20250126.tar.zst New: ---- gpu-screen-recorder-gtk-20250205.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gpu-screen-recorder-gtk.spec ++++++ --- /var/tmp/diff_new_pack.qbypZo/_old 2025-02-20 16:39:41.524315868 +0100 +++ /var/tmp/diff_new_pack.qbypZo/_new 2025-02-20 16:39:41.528316036 +0100 @@ -19,7 +19,7 @@ %bcond_with test %define appid com.dec05eba.gpu_screen_recorder Name: gpu-screen-recorder-gtk -Version: 20250126 +Version: 20250205 Release: 0 Summary: GTK frontend for GPU Screen Recorder License: GPL-3.0-only ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.qbypZo/_old 2025-02-20 16:39:41.580318210 +0100 +++ /var/tmp/diff_new_pack.qbypZo/_new 2025-02-20 16:39:41.580318210 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://repo.dec05eba.com/gpu-screen-recorder-gtk.git</param> - <param name="changesrevision">219b6f0c6983e7e98b17ab0da3ed2729181fce8d</param></service></servicedata> + <param name="changesrevision">312dda25c1e96380f3083a92009efa9418c9ee55</param></service></servicedata> (No newline at EOF) ++++++ gpu-screen-recorder-gtk-20250126.tar.zst -> gpu-screen-recorder-gtk-20250205.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250126/com.dec05eba.gpu_screen_recorder.appdata.xml new/gpu-screen-recorder-gtk-20250205/com.dec05eba.gpu_screen_recorder.appdata.xml --- old/gpu-screen-recorder-gtk-20250126/com.dec05eba.gpu_screen_recorder.appdata.xml 2025-01-26 11:54:55.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250205/com.dec05eba.gpu_screen_recorder.appdata.xml 2025-02-05 23:08:55.000000000 +0100 @@ -3,13 +3,17 @@ <id>com.dec05eba.gpu_screen_recorder</id> <name>GPU Screen Recorder</name> <summary>A shadowplay-like screen recorder for Linux. The fastest screen recorder for Linux</summary> - <developer_name>dec05eba</developer_name> + <developer id="com.dec05eba.gpu_screen_recorder"> + <name>dec05eba</name> + </developer> <metadata_license>CC0-1.0</metadata_license> <project_license>GPL-3.0</project_license> <url type="homepage">https://git.dec05eba.com/gpu-screen-recorder/about/</url> <url type="bugtracker">https://github.com/dec05eba/gpu-screen-recorder-issues</url> <url type="contribute">https://git.dec05eba.com/?p=about</url> <url type="donation">https://git.dec05eba.com/?p=about</url> + <url type="help">https://git.dec05eba.com/gpu-screen-recorder/about/</url> + <url type="faq">https://git.dec05eba.com/gpu-screen-recorder/about/</url> <supports> <control>pointing</control> @@ -40,30 +44,8 @@ At the moment the program comes with two different UIs. A gtk based one and a new experimental ShadowPlay-like fullscreen overlay UI. The gtk based UI will be removed in the future. You can switch to the new UI by clicking on "Try out the new UI" and then after that is done press Left Alt+Z to open it. </p> - <p> - Recording a monitor requires (restricted) root access which means that you have to install GPU Screen Recorder system-wide: "flatpak install --system com.dec05eba.gpu_screen_recorder" - and pkexec needs to be installed on the system and a polkit agent needs to be running. - Note that this only applies to when recording a monitor on AMD/Intel or when recording on Wayland without using the desktop portal option. - </p> <p>AV1 is currently not supported in the flatpak for Nvidia since GPU Screen Recorder uses an older ffmpeg version to support older Nvidia cards. Install GPU Screen Recorder from source or from AUR if you want to use AV1 on Nvidia.</p> - <p> - Videos are in variable framerate format. Very out of date video players might have an issue playing such videos. It's recommend to use MPV to play such videos, otherwise you might experience stuttering in the video. - You can select constant frame rate mode in advanced view if you need it. - </p> - <p> - If the video doesn't play or you get green/yellow overlay then your video player is missing H264/HEVC video codec. Either install the video codecs or use mpv. - </p> - <p>AMD has a driver/hardware fault that causes black bars/distorted colors on the sides of the video for certain video resolutions. This happens for both av1 and hevc, so if you have this issue then switch to h264 video codec option in advanced settings. - </p> - <p> - If H264/HEVC video encoding option is not available on your AMD/Intel system but you know that your GPU supports those codecs for encoding then you may need to install mesa-extra freedesktop runtime by running this command: "flatpak install --system org.freedesktop.Platform.GL.default//23.08-extra". - </p> - <p> - On NVIDIA systems the flatpak NVIDIA driver needs to match the systems NVIDIA driver version or the NVIDIA driver will fail to properly load in flatpaks. - Make sure you update flatpak on your system with: "flatpak update", or if that doesn't fix it you can try to install the specific flatpak NVIDIA driver version version that matches your systems NVIDIA driver version by running: - "flatpak install org.freedesktop.Platform.GL.nvidia-version", for example "flatpak install org.freedesktop.Platform.GL.nvidia-550-54-14". - You can find which NVIDIA driver version is running on your system by running "cat /proc/driver/nvidia/version". - </p> + <p>For more information visit the GPU Screen Recorder homepage.</p> <p>GPU Screen Recorder flatpak can install files in $HOME/.local/share/gpu-screen-recorder. If you want to uninstall GPU Screen Recorder then you will have to remove this directory manually.</p> <p>If you tried out the new UI then a systemd service was added to ~/.local/share/systemd/user/gpu-screen-recorder-ui.service. If you want to uninstall GPU Screen Recorder then you will have to remove this file.</p> </description> @@ -93,6 +75,21 @@ </screenshots> <releases> + <release version="5.1.4" date="2025-02-05"> + <description> + <ul> + <li>Fix virtual hotkey option not working with some keyboard remapping software such as kanata</li> + <li>Fix too long audio device name hiding the remove audio device button</li> + </ul> + </description> + </release> + <release version="5.1.3" date="2025-02-03"> + <description> + <ul> + <li>Fix unable to type keys (except hotkeys) when switching to new ui on steam deck (and possibly other devices)</li> + </ul> + </description> + </release> <release version="5.1.2" date="2025-01-26"> <description> <ul> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250126/meson.build new/gpu-screen-recorder-gtk-20250205/meson.build --- old/gpu-screen-recorder-gtk-20250126/meson.build 2025-01-26 11:54:55.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250205/meson.build 2025-02-05 23:08:55.000000000 +0100 @@ -1,4 +1,4 @@ -project('gpu-screen-recorder-gtk', ['c', 'cpp'], version : '5.1.2', default_options : ['warning_level=2']) +project('gpu-screen-recorder-gtk', ['c', 'cpp'], version : '5.1.4', default_options : ['warning_level=2']) add_project_arguments('-Wshadow', language : ['c', 'cpp']) if get_option('buildtype') == 'debug' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250126/project.conf new/gpu-screen-recorder-gtk-20250205/project.conf --- old/gpu-screen-recorder-gtk-20250126/project.conf 2025-01-26 11:54:55.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250205/project.conf 2025-02-05 23:08:55.000000000 +0100 @@ -1,7 +1,7 @@ [package] name = "gpu-screen-recorder-gtk" type = "executable" -version = "5.1.2" +version = "5.1.4" platforms = ["posix"] [config] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250126/src/config.hpp new/gpu-screen-recorder-gtk-20250205/src/config.hpp --- old/gpu-screen-recorder-gtk-20250126/src/config.hpp 2025-01-26 11:54:55.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250205/src/config.hpp 2025-02-05 23:08:55.000000000 +0100 @@ -50,7 +50,6 @@ bool restore_portal_session = true; bool use_new_ui = false; int32_t installed_gsr_global_hotkeys_version = 0; - bool kbd_mouse_update_installed = false; }; struct YoutubeStreamConfig { @@ -339,7 +338,6 @@ {"main.restore_portal_session", {CONFIG_TYPE_BOOL, &config.main_config.restore_portal_session}}, {"main.use_new_ui", {CONFIG_TYPE_BOOL, &config.main_config.use_new_ui}}, {"main.installed_gsr_global_hotkeys_version", {CONFIG_TYPE_I32, &config.main_config.installed_gsr_global_hotkeys_version}}, - {"main.kbd_mouse_update_installed", {CONFIG_TYPE_BOOL, &config.main_config.kbd_mouse_update_installed}}, {"streaming.service", {CONFIG_TYPE_STRING, &config.streaming_config.streaming_service}}, {"streaming.youtube.key", {CONFIG_TYPE_STRING, &config.streaming_config.youtube.stream_key}}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250126/src/main.cpp new/gpu-screen-recorder-gtk-20250205/src/main.cpp --- old/gpu-screen-recorder-gtk-20250126/src/main.cpp 2025-01-26 11:54:55.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250205/src/main.cpp 2025-02-05 23:08:55.000000000 +0100 @@ -20,7 +20,7 @@ #include <vector> #include <libayatana-appindicator/app-indicator.h> -#define GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION 4 +#define GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION 6 #ifndef GSR_VERSION #define GSR_VERSION "unknown" @@ -1711,6 +1711,16 @@ fprintf(stderr, "\n"); } +static bool validate_window(GtkApplication *app, Window window) { + XWindowAttributes attr; + if(XGetWindowAttributes(dpy, window, &attr)) { + return true; + } else { + show_notification(app, "GPU Screen Recorder", "The window you are trying to record no longer exists", G_NOTIFICATION_PRIORITY_URGENT); + return false; + } +} + static gboolean on_start_replay_button_click(GtkButton *button, gpointer userdata) { GtkApplication *app = (GtkApplication*)userdata; const gchar *dir = gtk_button_get_label(replay_file_chooser_button); @@ -1772,6 +1782,8 @@ return true; } window_str = std::to_string(select_window_userdata.selected_window); + if(!validate_window(app, select_window_userdata.selected_window)) + return true; } else if(window_str == "focused") { follow_focused = true; } @@ -1968,6 +1980,8 @@ return true; } window_str = std::to_string(select_window_userdata.selected_window); + if(!validate_window(app, select_window_userdata.selected_window)) + return true; } else if(window_str == "focused") { follow_focused = true; } @@ -2130,6 +2144,8 @@ return true; } window_str = std::to_string(select_window_userdata.selected_window); + if(!validate_window(app, select_window_userdata.selected_window)) + return true; } else if(window_str == "focused") { follow_focused = true; } @@ -2763,7 +2779,6 @@ config.main_config.use_new_ui = true; config.main_config.installed_gsr_global_hotkeys_version = GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION; - config.main_config.kbd_mouse_update_installed = true; save_config(config); return true; } @@ -4465,16 +4480,6 @@ } } -static bool is_gsr_global_hotkeys_installed() { - const char *user_homepath = getenv("HOME"); - if(!user_homepath) - user_homepath = "/tmp"; - - char path[PATH_MAX]; - snprintf(path, sizeof(path), "%s/.local/share/gpu-screen-recorder/gsr-global-hotkeys", user_homepath); - return access(path, F_OK) == 0; -} - static bool is_kms_server_proxy_installed() { const char *user_homepath = getenv("HOME"); if(!user_homepath) @@ -4502,28 +4507,6 @@ g_object_unref(app); } -// TODO: Remove this once GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION is updated to 5 -static bool has_input_device_with_keyboard_and_mouse() { - FILE *f = fopen("/proc/bus/input/devices", "rb"); - if(!f) - return false; - - bool current_device_is_virtual = false; - bool kbd_and_mouse = false; - char line[1024]; - while(fgets(line, sizeof(line), f)) { - if(strncmp(line, "S:", 2) == 0) { - current_device_is_virtual = strstr(line, "/virtual/") != nullptr; - } else if(!current_device_is_virtual && strncmp(line, "H:", 2) == 0 && strstr(line, "kbd") && strstr(line, "mouse")) { - kbd_and_mouse = true; - break; - } - } - - fclose(f); - return kbd_and_mouse; -} - static void startup_new_ui(bool launched_by_daemon) { if(!dpy) { if(launched_by_daemon) { @@ -4555,7 +4538,7 @@ return; } - if(config.main_config.installed_gsr_global_hotkeys_version != GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION || (!config.main_config.kbd_mouse_update_installed && has_input_device_with_keyboard_and_mouse())) { + if(config.main_config.installed_gsr_global_hotkeys_version != GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION) { bool finished = false; start_gtk_run_handler([&finished]() { finished = kms_server_proxy_setup_gsr_ui( @@ -4567,7 +4550,7 @@ if(!finished) return; - } else if(!is_gsr_global_hotkeys_installed() || !is_kms_server_proxy_installed()) { + } else if(!is_kms_server_proxy_installed()) { bool finished = false; start_gtk_run_handler([&finished]() { finished = kms_server_proxy_setup_gsr_ui(