diff --git a/src/driver/audiodec/ffmpegdec.cpp b/src/driver/audiodec/ffmpegdec.cpp index bd3ac8869..13a4c28b4 100644 --- a/src/driver/audiodec/ffmpegdec.cpp +++ b/src/driver/audiodec/ffmpegdec.cpp @@ -522,8 +522,8 @@ bool CFfmpegDec::SetMetaData(FILE *_in, CAudioMetaData* m, bool save_cover) bitrate += avc->streams[i]->codecpar->bit_rate; #endif if (save_cover && (avc->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC)) { - mkdir(COVERDIR, 0755); - std::string cover(COVERDIR); + mkdir(COVERDIR_TMP, 0755); + std::string cover(COVERDIR_TMP); cover += "/cover_" + to_string(cover_count++) + ".jpg"; FILE *f = fopen(cover.c_str(), "wb"); if (f) { diff --git a/src/driver/audiodec/mp3dec.cpp b/src/driver/audiodec/mp3dec.cpp index 789f5f0cd..e4acc41e3 100644 --- a/src/driver/audiodec/mp3dec.cpp +++ b/src/driver/audiodec/mp3dec.cpp @@ -1389,9 +1389,9 @@ bool CMP3Dec::SaveCover(FILE * in, CAudioMetaData * const m) data = id3_field_getbinarydata(field, &size); if ( data ) { - mkdir(COVERDIR, 0755); + mkdir(COVERDIR_TMP, 0755); std::ostringstream cover; - cover.str(COVERDIR); + cover.str(COVERDIR_TMP); cover << "/cover_" << cover_count++ << ".jpg"; FILE * pFile; pFile = fopen ( cover.str().c_str() , "wb" ); diff --git a/src/global.h b/src/global.h index d609a3cf2..1939cf234 100644 --- a/src/global.h +++ b/src/global.h @@ -47,7 +47,7 @@ #define NEUTRINO_SCAN_SETTINGS_FILE CONFIGDIR "/scan.conf" #define NEUTRINO_PARENTALLOCKED_FILE DATADIR "/neutrino/.plocked" -#define COVERDIR "/tmp/cover" +#define COVERDIR_TMP "/tmp/.cover" #define LOGODIR ICONSDIR "/logo" #define LOGODIR_VAR ICONSDIR_VAR "/logo" diff --git a/src/gui/audioplayer.cpp b/src/gui/audioplayer.cpp index 86577d6f7..0b1f255e5 100644 --- a/src/gui/audioplayer.cpp +++ b/src/gui/audioplayer.cpp @@ -1718,14 +1718,14 @@ void CAudioPlayerGui::paintCover() std::size_t found_url = meta.logo.find("://"); if (found_url != std::string::npos) { - mkdir(COVERDIR, 0755); + mkdir(COVERDIR_TMP, 0755); std::string filename(meta.logo); const size_t last_slash_idx = filename.find_last_of("/"); if (last_slash_idx != std::string::npos) filename.erase(0, last_slash_idx + 1); - std::string fullname(COVERDIR); + std::string fullname(COVERDIR_TMP); fullname += "/" + filename; CHTTPTool httptool; @@ -2788,10 +2788,10 @@ std::string CAudioPlayerGui::absPath2Rel(const std::string& fromDir, void CAudioPlayerGui::cleanupCovers() { - if (access(COVERDIR, F_OK) == 0) + if (access(COVERDIR_TMP, F_OK) == 0) { struct dirent **coverlist; - int n = scandir(COVERDIR, &coverlist, 0, alphasort); + int n = scandir(COVERDIR_TMP, &coverlist, 0, alphasort); if (n > -1) { while (n--) @@ -2799,8 +2799,8 @@ void CAudioPlayerGui::cleanupCovers() const char *coverfile = coverlist[n]->d_name; if (strcmp(coverfile, ".") == 0 || strcmp(coverfile, "..") == 0) continue; - printf("[audioplayer] removing cover %s/%s\n", COVERDIR, coverfile); - unlink(((std::string)COVERDIR + "/" + coverfile).c_str()); + printf("[audioplayer] removing cover %s/%s\n", COVERDIR_TMP, coverfile); + unlink(((std::string)COVERDIR_TMP + "/" + coverfile).c_str()); free(coverlist[n]); } free(coverlist); diff --git a/src/gui/screensaver.cpp b/src/gui/screensaver.cpp index 624bb8495..f6bb523ae 100644 --- a/src/gui/screensaver.cpp +++ b/src/gui/screensaver.cpp @@ -169,7 +169,22 @@ void* CScreenSaver::ScreenSaverPrg(void* arg) bool CScreenSaver::ReadDir() { - string d = g_settings.screensaver_dir; + bool show_audiocover = false; + + if (CNeutrinoApp::getInstance()->getMode() == NeutrinoModes::mode_audio && g_settings.audioplayer_cover_as_screensaver) + { + if (access(COVERDIR_TMP, F_OK) == 0) + { + struct dirent **coverlist; + int n = scandir(COVERDIR_TMP, &coverlist, 0, alphasort); + if (n > 2) // we always have the "." and ".." entrys + show_audiocover = true; + } + } + + string d; + if (show_audiocover) + d = COVERDIR_TMP; if (d.length() > 1) { //remove trailing slash