several code clean-ups and corrections

This commit is contained in:
unK
2008-10-07 10:14:21 +02:00
parent 5b724f2a83
commit a85cfcd8eb
4 changed files with 44 additions and 48 deletions

View File

@@ -136,8 +136,8 @@ bool ParseArgv(vector<string> &v)
else if (*it == "volume")
{
it++;
Mpd->GetStatus();
if (Mpd->CheckForErrors())
Mpd->UpdateStatus();
if (!Mpd->GetErrorMessage().empty())
{
cout << "Error: " << Mpd->GetErrorMessage() << endl;
return 1;
@@ -151,7 +151,7 @@ bool ParseArgv(vector<string> &v)
cout << "ncmpcpp: invalid option " << *it << endl;
return 1;
}
if (Mpd->CheckForErrors())
if (!Mpd->GetErrorMessage().empty())
{
cout << "Error: " << Mpd->GetErrorMessage() << endl;
return 1;

View File

@@ -119,20 +119,15 @@ void MPDConnection::SetErrorHandler(ErrorHandler handler, void *data)
itsErrorHandlerUserdata = data;
}
void MPDConnection::GetStatus()
void MPDConnection::UpdateStatus()
{
CheckForErrors();
if (itsOldStatus)
mpd_freeStatus(itsOldStatus);
itsOldStatus = itsCurrentStatus;
mpd_sendStatusCommand(itsConnection);
itsCurrentStatus = mpd_getStatus(itsConnection);
}
void MPDConnection::UpdateStatus()
{
CheckForErrors();
GetStatus();
if (!itsMaxPlaylistLength)
itsMaxPlaylistLength = GetPlaylistLength();
@@ -140,42 +135,44 @@ void MPDConnection::UpdateStatus()
if (CheckForErrors())
return;
MPDStatusChanges changes;
if (itsOldStats)
mpd_freeStats(itsOldStats);
itsOldStats = itsCurrentStats;
mpd_sendStatsCommand(itsConnection);
itsCurrentStats = mpd_getStats(itsConnection);
if (itsOldStatus == NULL)
if (itsCurrentStatus && itsUpdater)
{
changes.Playlist = 1;
changes.SongID = 1;
changes.Database = 1;
changes.DBUpdating = 1;
changes.Volume = 1;
changes.ElapsedTime = 1;
changes.Crossfade = 1;
changes.Random = 1;
changes.Repeat = 1;
changes.PlayerState = 1;
}
else
{
changes.Playlist = itsOldStatus->playlist != itsCurrentStatus->playlist;
changes.SongID = itsOldStatus->songid != itsCurrentStatus->songid;
changes.Database = itsOldStats->dbUpdateTime != itsCurrentStats->dbUpdateTime;
changes.DBUpdating = itsOldStatus->updatingDb != itsCurrentStatus->updatingDb;
changes.Volume = itsOldStatus->volume != itsCurrentStatus->volume;
changes.ElapsedTime = itsOldStatus->elapsedTime != itsCurrentStatus->elapsedTime;
changes.Crossfade = itsOldStatus->crossfade != itsCurrentStatus->crossfade;
changes.Random = itsOldStatus->random != itsCurrentStatus->random;
changes.Repeat = itsOldStatus->repeat != itsCurrentStatus->repeat;
changes.PlayerState = itsOldStatus->state != itsCurrentStatus->state;
}
if (itsUpdater)
MPDStatusChanges changes;
if (itsOldStatus == NULL)
{
changes.Playlist = 1;
changes.SongID = 1;
changes.Database = 1;
changes.DBUpdating = 1;
changes.Volume = 1;
changes.ElapsedTime = 1;
changes.Crossfade = 1;
changes.Random = 1;
changes.Repeat = 1;
changes.PlayerState = 1;
}
else
{
changes.Playlist = itsOldStatus->playlist != itsCurrentStatus->playlist;
changes.SongID = itsOldStatus->songid != itsCurrentStatus->songid;
changes.Database = itsOldStats->dbUpdateTime != itsCurrentStats->dbUpdateTime;
changes.DBUpdating = itsOldStatus->updatingDb != itsCurrentStatus->updatingDb;
changes.Volume = itsOldStatus->volume != itsCurrentStatus->volume;
changes.ElapsedTime = itsOldStatus->elapsedTime != itsCurrentStatus->elapsedTime;
changes.Crossfade = itsOldStatus->crossfade != itsCurrentStatus->crossfade;
changes.Random = itsOldStatus->random != itsCurrentStatus->random;
changes.Repeat = itsOldStatus->repeat != itsCurrentStatus->repeat;
changes.PlayerState = itsOldStatus->state != itsCurrentStatus->state;
}
itsUpdater(this, changes, itsErrorHandlerUserdata);
}
}
void MPDConnection::UpdateDirectory(const string &path) const

View File

@@ -90,7 +90,6 @@ class MPDConnection
void SetStatusUpdater(StatusUpdater, void *);
void SetErrorHandler(ErrorHandler, void *);
void GetStatus();
void UpdateStatus();
void UpdateDirectory(const string &) const;
@@ -122,7 +121,7 @@ class MPDConnection
int GetPlaylistLength() const { return isConnected && itsCurrentStatus ? itsCurrentStatus->playlistLength : 0; }
void GetPlaylistChanges(long long, SongList &) const;
string GetErrorMessage() const { return itsErrorMessage; }
const string & GetErrorMessage() const { return itsErrorMessage; }
int GetErrorCode() const { return itsErrorCode; }
Song GetCurrentSong() const;
@@ -171,10 +170,9 @@ class MPDConnection
void GetSongs(const string &, SongList &) const;
void GetDirectories(const string &, TagList &) const;
int CheckForErrors();
private:
void ClearQueue();
int CheckForErrors();
mpd_Connection *itsConnection;
bool isConnected;

View File

@@ -319,15 +319,16 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *)
playing_song_scroll_begin = 0;
if (Mpd->GetState() == psPlay)
{
WindowTitle(DisplaySong(Mpd->GetCurrentSong(), &Config.song_window_title_format));
changed.ElapsedTime = 1;
}
}
if (changed.ElapsedTime)
{
Song s = Mpd->GetCurrentSong();
const Song &s = Mpd->GetCurrentSong();
if (!player_state.empty() && !s.Empty())
{
WindowTitle(DisplaySong(s, &Config.song_window_title_format));
int elapsed = Mpd->GetElapsedTime();
// 'repeat one' mode check - be sure that we deal with item with known length
@@ -391,14 +392,14 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *)
if (changed.Repeat)
{
mpd_repeat = (Mpd->GetRepeat() ? "r" : "");
ShowMessage("Repeat is " + (string)(mpd_repeat.empty() ? "off" : "on"));
ShowMessage("Repeat is " + string(mpd_repeat.empty() ? "off" : "on"));
header_update_status = 1;
}
if (changed.Random)
{
mpd_random = Mpd->GetRandom() ? "z" : "";
ShowMessage("Random is " + (string)(mpd_random.empty() ? "off" : "on"));
ShowMessage("Random is " + string(mpd_random.empty() ? "off" : "on"));
header_update_status = 1;
}
if (changed.Crossfade)