diff --git a/src/command.c b/src/command.c index 4259b58e7..f61cb7630 100644 --- a/src/command.c +++ b/src/command.c @@ -165,6 +165,7 @@ int commandStatus(FILE * fp, unsigned int * permission, int argArrayLength, char ** argArray) { char * state = NULL; + int updateJobId; playPlaylistIfPlayerStopped(); switch(getPlayerState()) { @@ -194,7 +195,9 @@ int commandStatus(FILE * fp, unsigned int * permission, int argArrayLength, myfprintf(fp,"%s: %u:%i:%i\n",COMMAND_STATUS_AUDIO,getPlayerSampleRate(),getPlayerBits(),getPlayerChannels()); } - if(isUpdatingDB()) myfprintf(fp,"%s: 1\n",COMMAND_STATUS_UPDATING_DB); + if((updateJobId = isUpdatingDB())) { + myfprintf(fp,"%s: %i\n",COMMAND_STATUS_UPDATING_DB,updateJobId); + } if(getPlayerError()!=PLAYER_ERROR_NOERROR) { myfprintf(fp,"%s: %s\n",COMMAND_STATUS_ERROR,getPlayerErrorStr()); diff --git a/src/directory.c b/src/directory.c index 7ecc5bd62..17d91631c 100644 --- a/src/directory.c +++ b/src/directory.c @@ -29,6 +29,7 @@ #include "listen.h" #include "interface.h" #include "volume.h" +#include "mpd_types.h" #include #include @@ -72,6 +73,8 @@ char directorydb[MAXPATHLEN+1]; int directory_updatePid = 0; +mpd_uint16 directory_updateJobId = 0; + DirectoryList * newDirectoryList(); int addToDirectory(Directory * directory, char * shortname, char * name); @@ -89,7 +92,7 @@ void deleteEmptyDirectoriesInDirectory(Directory * directory); int addSubDirectoryToDirectory(Directory * directory, char * shortname, char * name); int isUpdatingDB() { - if(directory_updatePid>0) return 1; + if(directory_updatePid>0) return directory_updateJobId; return 0; } @@ -143,7 +146,11 @@ int updateInit(FILE * fp) { return -1; } - DEBUG("updateInit: fork()'d update child\n"); + directory_updateJobId++; + if(directory_updateJobId > 1<<15) directory_updateJobId = 1; + DEBUG("updateInit: fork()'d update child for update job id %i\n", + (int)directory_updateJobId); + myfprintf(fp,"updating_db: %i\n",(int)directory_updateJobId); return 0; }