+static void LoadArtworkToList(struct ArtworkListInfo *artwork_info,
+ struct ListNodeInfo **listnode,
+ char *basename, int list_pos)
+{
+#if 0
+ if (artwork_info->artwork_list == NULL ||
+ list_pos >= artwork_info->num_file_list_entries)
+ return;
+#endif
+
+#if 0
+ printf("loading artwork '%s' ... [%d]\n",
+ basename, getNumNodes(artwork_info->content_list));
+#endif
+
+#if 1
+ LoadCustomArtwork(artwork_info, listnode, basename);
+#else
+ LoadCustomArtwork(artwork_info, &artwork_info->artwork_list[list_pos],
+ basename);
+#endif
+
+#if 0
+ printf("loading artwork '%s' done [%d]\n",
+ basename, getNumNodes(artwork_info->content_list));
+#endif
+}
+
+void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info)
+{
+ struct FileInfo *file_list = artwork_info->file_list;
+ struct FileInfo *dynamic_file_list = artwork_info->dynamic_file_list;
+ int num_file_list_entries = artwork_info->num_file_list_entries;
+ int num_dynamic_file_list_entries =
+ artwork_info->num_dynamic_file_list_entries;
+ int i;
+
+#if 0
+ printf("DEBUG: reloading %d static artwork files ...\n",
+ num_file_list_entries);
+ printf("DEBUG: reloading %d dynamic artwork files ...\n",
+ num_dynamic_file_list_entries);
+#endif
+
+ for(i=0; i<num_file_list_entries; i++)
+ LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i],
+ file_list[i].filename, i);
+
+ for(i=0; i<num_dynamic_file_list_entries; i++)
+ LoadArtworkToList(artwork_info, &artwork_info->dynamic_artwork_list[i],
+ dynamic_file_list[i].filename, i);
+
+#if 0
+ dumpList(artwork_info->content_list);
+#endif
+}
+
+static void FreeCustomArtworkList(struct ArtworkListInfo *artwork_info,
+ struct ListNodeInfo ***list,
+ int *num_list_entries)
+{
+ int i;
+
+ if (*list == NULL)
+ return;
+
+ for(i=0; i<*num_list_entries; i++)
+ deleteArtworkListEntry(artwork_info, &(*list)[i]);
+ free(*list);
+
+ *list = NULL;
+ *num_list_entries = 0;
+}
+
+void FreeCustomArtworkLists(struct ArtworkListInfo *artwork_info)
+{
+ if (artwork_info == NULL)
+ return;
+
+#if 0
+ printf("%s: FREEING ARTWORK ...\n",
+ IS_CHILD_PROCESS(audio.mixer_pid) ? "CHILD" : "PARENT");
+#endif
+
+ FreeCustomArtworkList(artwork_info, &artwork_info->artwork_list,
+ &artwork_info->num_file_list_entries);
+
+ FreeCustomArtworkList(artwork_info, &artwork_info->dynamic_artwork_list,
+ &artwork_info->num_dynamic_file_list_entries);
+
+#if 0
+ printf("%s: FREEING ARTWORK -- DONE\n",
+ IS_CHILD_PROCESS(audio.mixer_pid) ? "CHILD" : "PARENT");
+#endif
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* functions only needed for non-Unix (non-command-line) systems */
+/* (MS-DOS only; SDL/Windows creates files "stdout.txt" and "stderr.txt") */
+/* ------------------------------------------------------------------------- */
+
+#if defined(PLATFORM_MSDOS)
+
+#define ERROR_FILENAME "stderr.txt"
+
+void initErrorFile()
+{
+ unlink(ERROR_FILENAME);
+}
+
+FILE *openErrorFile()
+{
+ return fopen(ERROR_FILENAME, MODE_APPEND);
+}
+
+void dumpErrorFile()
+{
+ FILE *error_file = fopen(ERROR_FILENAME, MODE_READ);
+
+ if (error_file != NULL)
+ {
+ while (!feof(error_file))
+ fputc(fgetc(error_file), stderr);
+
+ fclose(error_file);
+ }
+}
+#endif
+