improvements to the rendering

This commit is contained in:
nova
2026-05-06 22:21:33 +02:00
parent 1a85a2d810
commit 41293c6afd
2 changed files with 20 additions and 18 deletions

23
main.c
View File

@@ -77,7 +77,6 @@ int main(){
pthread_cond_signal(&cond_top); pthread_cond_signal(&cond_top);
pthread_cond_signal(&cond_mid); pthread_cond_signal(&cond_mid);
pthread_cond_signal(&cond_lft); pthread_cond_signal(&cond_lft);
user_interactions();
render_pass(); render_pass();
timeout(SETTINGS_CURSES_TIMEOUT); timeout(SETTINGS_CURSES_TIMEOUT);
@@ -97,7 +96,7 @@ int main(){
pthread_cond_signal(&cond_mid); pthread_cond_signal(&cond_mid);
pthread_cond_signal(&cond_lft); pthread_cond_signal(&cond_lft);
status &= ~(STATUS_RUN_BACKEND); status &= ~(STATUS_RUN_BACKEND);
status |= STATUS_UPDATE_SCREEN_PRINTED;
} else { } else {
status &= ~(STATUS_RELOAD_DIRECTORY | STATUS_DELTA_TIME); status &= ~(STATUS_RELOAD_DIRECTORY | STATUS_DELTA_TIME);
} }
@@ -135,6 +134,9 @@ int main(){
void render_pass(){ void render_pass(){
if (status & STATUS_UPDATE_SCREEN_CLEAR) {
clear();
}
if (status & STATUS_UPDATE_SCREEN_RESIZE) { if (status & STATUS_UPDATE_SCREEN_RESIZE) {
wresize(win_t, 1, terminal_width); wresize(win_t, 1, terminal_width);
@@ -151,18 +153,23 @@ void render_pass(){
mvwin(win_b, terminal_height-1, 0); mvwin(win_b, terminal_height-1, 0);
} }
if (status & STATUS_UPDATE_SCREEN_MASK) { 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_top(win_t);
window_lft(win_l); window_lft(win_l);
window_mid(win_m); window_mid(win_m);
window_rgt(win_r); window_rgt(win_r);
window_btm(win_b); window_btm(win_b);
wrefresh(win_t); wnoutrefresh(win_t);
wrefresh(win_l); wnoutrefresh(win_l);
wrefresh(win_m); wnoutrefresh(win_m);
wrefresh(win_r); wnoutrefresh(win_r);
wrefresh(win_b); wnoutrefresh(win_b);
doupdate();
status &= ~(STATUS_UPDATE_SCREEN_MASK); status &= ~(STATUS_UPDATE_SCREEN_MASK);
} }
} }

View File

@@ -31,7 +31,6 @@ extern pthread_mutex_t mutex_mid;
extern pthread_mutex_t mutex_rgt; extern pthread_mutex_t mutex_rgt;
void window_top(WINDOW *win){ void window_top(WINDOW *win){
werase(win);
if (pthread_mutex_trylock(&mutex_top) == 0) { if (pthread_mutex_trylock(&mutex_top) == 0) {
if (*top_buffer != ' ') { /*printing ' ' (standard initialized value, see threading_init) makes valgrind throw a fuss*/ 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); pthread_mutex_unlock(&mutex_top);
} else { } else {
mvwaddstr(win, 0, terminal_width/2, "LOADING"); mvwaddstr(win, 0, terminal_width/2, "LOADING");
status |= STATUS_UPDATE_SCREEN_PRINTED; status |= STATUS_UPDATE_SCREEN_GENERIC;
} }
} }
void window_btm(WINDOW *win){ void window_btm(WINDOW *win){
werase(win);
if (pthread_mutex_trylock(&mutex_btm) == 0) { if (pthread_mutex_trylock(&mutex_btm) == 0) {
if (*top_buffer != ' ') { /*printing ' ' (standard initialized value, see threading_init) makes valgrind throw a fuss*/ 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 */ /*the printing of all possible inputs are done in user_interactions */
} else { } else {
mvwaddstr(win, 0, terminal_width/2, "LOADING"); mvwaddstr(win, 0, terminal_width/2, "LOADING");
status |= STATUS_UPDATE_SCREEN_PRINTED; status |= STATUS_UPDATE_SCREEN_GENERIC;
} }
} }
void window_lft(WINDOW *win){ void window_lft(WINDOW *win){
werase(win);
if (pthread_mutex_trylock(&mutex_lft) == 0) { if (pthread_mutex_trylock(&mutex_lft) == 0) {
print_dir(win, 0, &lft_dir); print_dir(win, 0, &lft_dir);
@@ -73,11 +70,10 @@ void window_lft(WINDOW *win){
} else { } else {
mvwaddstr(win, terminal_height/2, terminal_width/8, "LOADING"); mvwaddstr(win, terminal_height/2, terminal_width/8, "LOADING");
status |= STATUS_UPDATE_SCREEN_PRINTED; status |= STATUS_UPDATE_SCREEN_GENERIC;
} }
} }
void window_mid(WINDOW *win){ void window_mid(WINDOW *win){
werase(win);
if (pthread_mutex_trylock(&mutex_mid) == 0) { if (pthread_mutex_trylock(&mutex_mid) == 0) {
if (mid_dir.file_count == 0) { if (mid_dir.file_count == 0) {
@@ -88,11 +84,10 @@ void window_mid(WINDOW *win){
pthread_mutex_unlock(&mutex_mid); pthread_mutex_unlock(&mutex_mid);
} else { } else {
mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING"); mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING");
status |= STATUS_UPDATE_SCREEN_PRINTED; status |= STATUS_UPDATE_SCREEN_GENERIC;
} }
} }
void window_rgt(WINDOW *win){ void window_rgt(WINDOW *win){
werase(win);
if (pthread_mutex_trylock(&mutex_rgt) == 0) { if (pthread_mutex_trylock(&mutex_rgt) == 0) {
if (!rgt_dir.current_file) { if (!rgt_dir.current_file) {
@@ -108,6 +103,6 @@ void window_rgt(WINDOW *win){
pthread_mutex_unlock(&mutex_rgt); pthread_mutex_unlock(&mutex_rgt);
} else { } else {
mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING"); mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING");
status |= STATUS_UPDATE_SCREEN_PRINTED; status |= STATUS_UPDATE_SCREEN_GENERIC;
} }
} }