diff options
author | dec05eba <dec05eba@protonmail.com> | 2024-02-11 15:33:55 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2024-02-11 15:33:55 +0100 |
commit | 985d96bf89b5d46a7bc7885578000a4f5ebc56d8 (patch) | |
tree | 962e0e163b5d36dc453672ba604fa1c39be6164d /src | |
parent | 164145db29e76725a6b0a6ef1d0b0e5bc88fdd70 (diff) |
Fix nvfbc capture crash on start
Diffstat (limited to 'src')
-rw-r--r-- | src/capture/nvfbc.c | 6 | ||||
-rw-r--r-- | src/main.cpp | 8 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/capture/nvfbc.c b/src/capture/nvfbc.c index b0c4941..e6ee1a9 100644 --- a/src/capture/nvfbc.c +++ b/src/capture/nvfbc.c @@ -189,7 +189,7 @@ static bool ffmpeg_create_cuda_contexts(gsr_capture_nvfbc *cap_nvfbc, AVCodecCon static int gsr_capture_nvfbc_start(gsr_capture *cap, AVCodecContext *video_codec_context) { gsr_capture_nvfbc *cap_nvfbc = cap->priv; - if(!gsr_cuda_load(&cap_nvfbc->cuda, cap_nvfbc->params.egl->x11.dpy, cap_nvfbc->params.overclock)) + if(!gsr_cuda_load(&cap_nvfbc->cuda, cap_nvfbc->params.dpy, cap_nvfbc->params.overclock)) return -1; if(!gsr_capture_nvfbc_load_library(cap)) { @@ -269,8 +269,8 @@ static int gsr_capture_nvfbc_start(gsr_capture *cap, AVCodecContext *video_codec goto error_cleanup; } - uint32_t tracking_width = XWidthOfScreen(DefaultScreenOfDisplay(cap_nvfbc->params.egl->x11.dpy)); - uint32_t tracking_height = XHeightOfScreen(DefaultScreenOfDisplay(cap_nvfbc->params.egl->x11.dpy)); + uint32_t tracking_width = XWidthOfScreen(DefaultScreenOfDisplay(cap_nvfbc->params.dpy)); + uint32_t tracking_height = XHeightOfScreen(DefaultScreenOfDisplay(cap_nvfbc->params.dpy)); tracking_type = strcmp(cap_nvfbc->params.display_to_capture, "screen") == 0 ? NVFBC_TRACKING_SCREEN : NVFBC_TRACKING_OUTPUT; if(tracking_type == NVFBC_TRACKING_OUTPUT) { if(!status_params.bXRandRAvailable) { diff --git a/src/main.cpp b/src/main.cpp index f4c15b4..9dff159 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1380,7 +1380,8 @@ static void list_supported_video_codecs() { _exit(2); gsr_egl_unload(&egl); - XCloseDisplay(dpy); + if(dpy) + XCloseDisplay(dpy); char card_path[128]; card_path[0] = '\0'; @@ -1494,16 +1495,15 @@ static gsr_capture* create_capture_impl(const char *window_str, const char *scre capture_target = "screen"; } - gsr_egl_unload(&egl); - gsr_capture_nvfbc_params nvfbc_params; - nvfbc_params.egl->x11.dpy = egl.x11.dpy; + nvfbc_params.dpy = egl.x11.dpy; nvfbc_params.display_to_capture = capture_target; nvfbc_params.fps = fps; nvfbc_params.pos = { 0, 0 }; nvfbc_params.size = { 0, 0 }; nvfbc_params.direct_capture = direct_capture; nvfbc_params.overclock = overclock; + gsr_egl_unload(&egl); capture = gsr_capture_nvfbc_create(&nvfbc_params); if(!capture) _exit(1); |