aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.c6
-rw-r--r--navigator.c14
-rw-r--r--navigator.h3
3 files changed, 19 insertions, 4 deletions
diff --git a/main.c b/main.c
index 6a49fe0..f103fd1 100644
--- a/main.c
+++ b/main.c
@@ -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