- /* force reload of custom artwork after new level series was selected */
- artwork.graphics_set_current_name = NULL;
- artwork.sounds_set_current_name = NULL;
- artwork.music_set_current_name = NULL;
-
- leveldir_current_name = leveldir_current->name;
+ char *filename_old = leveldir_current_filename;
+ char *filename_new = leveldir_current->filename;
+
+ /* force reload of custom artwork after new level series was selected,
+ but reload only that part of the artwork that really has changed */
+ if (getTreeInfoFromFilename(artwork.gfx_first, filename_old) !=
+ getTreeInfoFromFilename(artwork.gfx_first, filename_new))
+ artwork.graphics_set_current_name = NULL;
+ if (getTreeInfoFromFilename(artwork.snd_first, filename_old) !=
+ getTreeInfoFromFilename(artwork.snd_first, filename_new))
+ artwork.sounds_set_current_name = NULL;
+ if (getTreeInfoFromFilename(artwork.mus_first, filename_new) !=
+ getTreeInfoFromFilename(artwork.mus_first, filename_new))
+ artwork.music_set_current_name = NULL;
+
+ leveldir_current_filename = leveldir_current->filename;