diff --git a/src/animation.c b/src/animation.c index f38f72e..967c391 100644 --- a/src/animation.c +++ b/src/animation.c @@ -35,14 +35,21 @@ static HeliAnimation* load(const char *path) { GDir *dir = g_dir_open(path, 0, NULL); if (dir) { + HeliArray files; while(TRUE) { const char* name = g_dir_read_name(dir); if (!name) break; char *p = heliStringConcat3(path, "/", name); - cairo_surface_t *frame = loadFrame(p); + heliStringmapAdd(&files, p, NULL, NULL); free(p); + } + g_dir_close(dir); + + for(int i = 0; i < files.count; ++i) { + cairo_surface_t *frame = loadFrame( (char*)files.items[i].key ); if (frame) heliArrayInsert(&a->frames, -1, frame, (HeliFreeCallback)&cairo_surface_destroy); } + heliArrayDestroy(&files); } else { cairo_surface_t *frame = loadFrame(path); if (frame) {