]> git.mdlowis.com Git - archive/afm.git/commitdiff
debugging
authora bellenir <a@bellenir.com>
Wed, 30 Jul 2014 02:02:40 +0000 (02:02 +0000)
committera bellenir <a@bellenir.com>
Wed, 30 Jul 2014 02:02:40 +0000 (02:02 +0000)
source/screen.c

index e283f7ded4bffc94a53c5c530a8a6659984f4a61..d26397c8c3c20fdc33fe634b51e008da43c1d565 100644 (file)
@@ -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){