diff --git a/main.c b/main.c index 0d3296f..ec3d8c0 100644 --- a/main.c +++ b/main.c @@ -77,7 +77,6 @@ int main(){ pthread_cond_signal(&cond_top); pthread_cond_signal(&cond_mid); pthread_cond_signal(&cond_lft); - user_interactions(); render_pass(); timeout(SETTINGS_CURSES_TIMEOUT); @@ -97,7 +96,7 @@ int main(){ pthread_cond_signal(&cond_mid); pthread_cond_signal(&cond_lft); status &= ~(STATUS_RUN_BACKEND); - status |= STATUS_UPDATE_SCREEN_PRINTED; + } else { status &= ~(STATUS_RELOAD_DIRECTORY | STATUS_DELTA_TIME); } @@ -135,6 +134,9 @@ int main(){ void render_pass(){ + if (status & STATUS_UPDATE_SCREEN_CLEAR) { + clear(); + } if (status & STATUS_UPDATE_SCREEN_RESIZE) { wresize(win_t, 1, terminal_width); @@ -151,18 +153,23 @@ void render_pass(){ mvwin(win_b, terminal_height-1, 0); } - if (status & STATUS_UPDATE_SCREEN_MASK) { + werase(win_t); + werase(win_l); + werase(win_m); + werase(win_r); + werase(win_b); window_top(win_t); window_lft(win_l); window_mid(win_m); window_rgt(win_r); window_btm(win_b); - wrefresh(win_t); - wrefresh(win_l); - wrefresh(win_m); - wrefresh(win_r); - wrefresh(win_b); + wnoutrefresh(win_t); + wnoutrefresh(win_l); + wnoutrefresh(win_m); + wnoutrefresh(win_r); + wnoutrefresh(win_b); + doupdate(); status &= ~(STATUS_UPDATE_SCREEN_MASK); } } diff --git a/window.c b/window.c index eeeaabd..bd89369 100644 --- a/window.c +++ b/window.c @@ -31,7 +31,6 @@ extern pthread_mutex_t mutex_mid; extern pthread_mutex_t mutex_rgt; void window_top(WINDOW *win){ - werase(win); if (pthread_mutex_trylock(&mutex_top) == 0) { if (*top_buffer != ' ') { /*printing ' ' (standard initialized value, see threading_init) makes valgrind throw a fuss*/ @@ -46,11 +45,10 @@ void window_top(WINDOW *win){ pthread_mutex_unlock(&mutex_top); } else { mvwaddstr(win, 0, terminal_width/2, "LOADING"); - status |= STATUS_UPDATE_SCREEN_PRINTED; + status |= STATUS_UPDATE_SCREEN_GENERIC; } } void window_btm(WINDOW *win){ - werase(win); if (pthread_mutex_trylock(&mutex_btm) == 0) { if (*top_buffer != ' ') { /*printing ' ' (standard initialized value, see threading_init) makes valgrind throw a fuss*/ @@ -61,11 +59,10 @@ void window_btm(WINDOW *win){ /*the printing of all possible inputs are done in user_interactions */ } else { mvwaddstr(win, 0, terminal_width/2, "LOADING"); - status |= STATUS_UPDATE_SCREEN_PRINTED; + status |= STATUS_UPDATE_SCREEN_GENERIC; } } void window_lft(WINDOW *win){ - werase(win); if (pthread_mutex_trylock(&mutex_lft) == 0) { print_dir(win, 0, &lft_dir); @@ -73,11 +70,10 @@ void window_lft(WINDOW *win){ } else { mvwaddstr(win, terminal_height/2, terminal_width/8, "LOADING"); - status |= STATUS_UPDATE_SCREEN_PRINTED; + status |= STATUS_UPDATE_SCREEN_GENERIC; } } void window_mid(WINDOW *win){ - werase(win); if (pthread_mutex_trylock(&mutex_mid) == 0) { if (mid_dir.file_count == 0) { @@ -88,11 +84,10 @@ void window_mid(WINDOW *win){ pthread_mutex_unlock(&mutex_mid); } else { mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING"); - status |= STATUS_UPDATE_SCREEN_PRINTED; + status |= STATUS_UPDATE_SCREEN_GENERIC; } } void window_rgt(WINDOW *win){ - werase(win); if (pthread_mutex_trylock(&mutex_rgt) == 0) { if (!rgt_dir.current_file) { @@ -108,6 +103,6 @@ void window_rgt(WINDOW *win){ pthread_mutex_unlock(&mutex_rgt); } else { mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING"); - status |= STATUS_UPDATE_SCREEN_PRINTED; + status |= STATUS_UPDATE_SCREEN_GENERIC; } }