diff options
-rw-r--r-- | main.c | 6 | ||||
-rw-r--r-- | navigator.c | 14 | ||||
-rw-r--r-- | navigator.h | 3 |
3 files changed, 19 insertions, 4 deletions
@@ -167,8 +167,6 @@ int main(int argc, char** argv) imv_viewport_toggle_fullscreen(&view); } - const char* current_path = NULL; - double last_time = SDL_GetTicks() / 1000.0; int last_frame = img.cur_frame; @@ -226,8 +224,8 @@ int main(int argc, char** argv) break; } - while(imv_navigator_get_current_path(&nav) != current_path) { - current_path = imv_navigator_get_current_path(&nav); + while(imv_navigator_has_changed(&nav)) { + const char* current_path = imv_navigator_get_current_path(&nav); if(!current_path) { fprintf(stderr, "No input files left. Exiting.\n"); diff --git a/navigator.c b/navigator.c index d8336ae..d23d975 100644 --- a/navigator.c +++ b/navigator.c @@ -32,6 +32,7 @@ void imv_init_navigator(struct imv_navigator *nav) nav->cur = NULL; nav->num_paths = 0; nav->last_move_direction = 1; + nav->changed = 0; } void imv_destroy_navigator(struct imv_navigator *nav) @@ -60,6 +61,7 @@ static void add_item(struct imv_navigator *nav, const char *path) new_item->next = NULL; new_item->prev = NULL; nav->cur = new_item; + nav->changed = 1; } else { nav->last->next = new_item; new_item->prev = nav->last; @@ -127,6 +129,7 @@ void imv_navigator_next_path(struct imv_navigator *nav) nav->cur = nav->first; } nav->last_move_direction = 1; + nav->changed = 1; } void imv_navigator_prev_path(struct imv_navigator *nav) @@ -142,6 +145,7 @@ void imv_navigator_prev_path(struct imv_navigator *nav) } nav->last_move_direction = -1; + nav->changed = 1; } void imv_navigator_remove_current_path(struct imv_navigator *nav) @@ -175,3 +179,13 @@ void imv_navigator_remove_current_path(struct imv_navigator *nav) free(cur->path); free(cur); } + +int imv_navigator_has_changed(struct imv_navigator *nav) +{ + if(nav->changed) { + nav->changed = 0; + return 1; + } else { + return 0; + } +} diff --git a/navigator.h b/navigator.h index f83cfdf..8f2dede 100644 --- a/navigator.h +++ b/navigator.h @@ -30,6 +30,7 @@ struct imv_navigator { struct imv_loop_item *first, *last, *cur; int num_paths; int last_move_direction; + int changed; }; void imv_init_navigator(struct imv_navigator *nav); @@ -43,4 +44,6 @@ void imv_navigator_next_path(struct imv_navigator *nav); void imv_navigator_prev_path(struct imv_navigator *nav); void imv_navigator_remove_current_path(struct imv_navigator *nav); +int imv_navigator_has_changed(struct imv_navigator *nav); + #endif |