aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-03-31 01:50:06 +0200
committerdec05eba <dec05eba@protonmail.com>2022-03-31 01:50:06 +0200
commite49d30048f46a51c766c347e52e9ce24522b6861 (patch)
tree7a034b225e1b4f3a6126b893ecb53805d284930d
parent7228d3664764a55018d93b216b917668cfc25a32 (diff)
Close screenrecorder when target window is closed
-rw-r--r--TODO3
-rw-r--r--src/main.cpp6
2 files changed, 8 insertions, 1 deletions
diff --git a/TODO b/TODO
index 13d5a9f..e082557 100644
--- a/TODO
+++ b/TODO
@@ -7,4 +7,5 @@ Load cuda at runtime with dlopen.
Track window damages and only update then. That is better for output file size.
Remove cuda to cuda copy when using nvFBC if possible. ffmpeg is getting in the way.
Getting the texture of a window when using a compositor is an nvidia specific limitation. When gpu-screen-recorder supports other gpus then this can be ignored.
-Remove dependency on glfw (and glew?). \ No newline at end of file
+Remove dependency on glfw (and glew?).
+Quickly changing workspace and back while recording under i3 breaks the screen recorder. The resize is triggered and it fails to recreate texture (fail to get texture size, texture id probably == 0).
diff --git a/src/main.cpp b/src/main.cpp
index 858755b..21927a3 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1405,6 +1405,12 @@ int main(int argc, char **argv) {
if (frame_time_overflow >= 0.0) {
frame_timer_start = time_now - frame_time_overflow;
+ if(dpy && src_window_id) {
+ XWindowAttributes attr;
+ if(!XGetWindowAttributes(dpy, src_window_id, &attr))
+ running = 0;
+ }
+
bool frame_captured = true;
if(redraw) {
redraw = false;