From: a bellenir Date: Wed, 30 Jul 2014 02:02:40 +0000 (+0000) Subject: debugging X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=022a2f17ee0832ba22abb97335a09827dcdc7aee;p=archive%2Fafm.git debugging --- diff --git a/source/screen.c b/source/screen.c index e283f7d..d26397c 100644 --- a/source/screen.c +++ b/source/screen.c @@ -20,10 +20,34 @@ static void screen_refresh_curr_frame(void); static list_t* Frame_List; +/* TODO: add equiv. function to list */ +static int get_index_of_node(list_node_t* node){ + int i = 0; + list_node_t* edon = Frame_List->head; + while(edon!=NULL && edon != node) { edon = edon->next; i++; } + return (edon!=NULL ? i : -1 ); +} + +static bool check_frame_list(void){ + list_node_t* node = Frame_List->head; + int i=0; + while(node!=NULL){ + int j = get_index_of_node(node); + if(i != j){ + fprintf(stderr, "problem! node %d came back as %d\n", i, j); + return false; + } + i++; + node = node->next; + } + return true; +} + void screen_init(void) { Frame_List = list_new(); list_push_back(Frame_List, frame_new()); state_set_focused_node(Frame_List->head); + if(!check_frame_list()) fprintf(stderr, "something wak from teh start\n"); } void screen_deinit(void) { @@ -45,23 +69,28 @@ void screen_update(void) { } void screen_open(void) { + if(!check_frame_list()) fprintf(stderr, "bad list before opening frame\n"); list_push_back(Frame_List, frame_new()); state_set_screen_dirty(true); state_set_screen_resized(true); + if(!check_frame_list()) fprintf(stderr, "bad list after opening frame\n"); } -/* TODO: add equiv. function to list */ static int get_focused_frame_index(void){ + return get_index_of_node(state_get_focused_node()); + /* int i = 0; list_node_t* n = Frame_List->head; while(n != state_get_focused_node() && n != Frame_List->tail){ n = n->next; i++; } if(n != state_get_focused_node()) i = -1; return i; + */ } void screen_close(void) { if (Frame_List->head != Frame_List->tail) { int i = get_focused_frame_index(); + if(!check_frame_list()) fprintf(stderr, "bad list before closing frame\n"); if(i >= 0){ /* negative if node not found */ list_node_t* doomed_node = state_get_focused_node(); mem_retain(doomed_node); @@ -74,7 +103,10 @@ void screen_close(void) { state_set_screen_dirty(true); state_set_screen_resized(true); mem_release(doomed_node); - } + }else{ + fprintf(stderr, "frame not found\n"); + } + if(!check_frame_list()) fprintf(stderr, "bad list after closing frame\n"); } } @@ -84,7 +116,7 @@ static void screen_place_windows(void) { int num_frames = list_size(Frame_List); list_node_t* p_node; getmaxyx(stdscr, lines, cols); - + if(!check_frame_list()) fprintf(stderr, "bad list when placing frames\n"); /* Print the master frame */ p_frame = list_at(Frame_List,0)->contents; mvwin(p_frame->p_win, 0, 0); @@ -164,6 +196,7 @@ void screen_swap_with_master(void){ list_node_t* master = Frame_List->head; list_node_t* prev = find_prev_node(focused); list_node_t* tmp = master->next; + if(!check_frame_list()) fprintf(stderr, "starting with a bad list\n"); if(prev){ //if prev is null, implies focus is already master & should do nothing //put master in list if(prev!=master) prev->next = master; @@ -174,6 +207,7 @@ void screen_swap_with_master(void){ Frame_List->head = focused; screen_force_redraw(); } + if(!check_frame_list()) fprintf(stderr, "ending with a bad list\n"); } void screen_force_redraw(void){