From 3011a59cbdd668c78707b50ac91afe5e00e3f068 Mon Sep 17 00:00:00 2001 From: nick black Date: Tue, 14 Jan 2020 23:44:13 -0500 Subject: [PATCH] don't call ncplane_dim_yx() in notcurses_render_internal --- src/lib/render.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib/render.c b/src/lib/render.c index ca368c486..2dd9f7fae 100644 --- a/src/lib/render.c +++ b/src/lib/render.c @@ -297,8 +297,9 @@ notcurses_render_internal(notcurses* nc, struct crender* rvec){ if(reshape_shadow_fb(nc)){ return -1; } - int dimy, dimx; - notcurses_term_dim_yx(nc, &dimy, &dimx); + // don't use ncplane_dim_yx()/ncplane_yx() here, lest we deadlock + int dimy = nc->stdscr->leny; + int dimx = nc->stdscr->lenx; cell* fb = malloc(sizeof(*fb) * dimy * dimx); for(int y = 0 ; y < dimy ; ++y){ for(int x = 0 ; x < dimx ; ++x){ @@ -677,12 +678,12 @@ int notcurses_render(notcurses* nc){ bytes = notcurses_rasterize(nc, crender); } free(crender); - int dimy, dimx; - notcurses_resize(nc, &dimy, &dimx); clock_gettime(CLOCK_MONOTONIC_RAW, &done); update_render_stats(&done, &start, &nc->stats, bytes); ret = bytes >= 0 ? 0 : -1; pthread_cleanup_pop(1); + int dimy, dimx; + notcurses_resize(nc, &dimy, &dimx); return ret; }