Commit ffea268d authored by Max Kellermann's avatar Max Kellermann

PlayerControl: GetError() returns an Error, not a char*

parent 8e676db6
......@@ -32,8 +32,6 @@
#include "AudioFormat.hxx"
#include "ReplayGainConfig.hxx"
#include <glib.h>
#define COMMAND_STATUS_STATE "state"
#define COMMAND_STATUS_REPEAT "repeat"
#define COMMAND_STATUS_SINGLE "single"
......@@ -190,13 +188,11 @@ handle_status(Client *client,
updateJobId);
}
char *error = client->player_control->GetErrorMessage();
if (error != NULL) {
Error error = client->player_control->LockGetError();
if (error.IsDefined())
client_printf(client,
COMMAND_STATUS_ERROR ": %s\n",
error);
g_free(error);
}
error.GetMessage());
song = playlist.GetNextPosition();
if (song >= 0) {
......
......@@ -23,8 +23,6 @@
#include "Song.hxx"
#include "DecoderControl.hxx"
#include <glib.h>
#include <cmath>
#include <assert.h>
......@@ -202,17 +200,6 @@ player_control::ClearError()
Unlock();
}
char *
player_control::GetErrorMessage() const
{
Lock();
char *message = error_type != PlayerError::NONE
? g_strdup(error.GetMessage())
: NULL;
Unlock();
return message;
}
void
player_control::EnqueueSong(Song *song)
{
......
......@@ -325,14 +325,32 @@ public:
*/
void SetError(PlayerError type, Error &&error);
void ClearError();
/**
* Checks whether an error has occurred, and if so, returns a
* copy of the #Error object.
*
* Caller must lock the object.
*/
gcc_pure
Error GetError() const {
Error result;
if (error_type != PlayerError::NONE)
result.Set(error);
return result;
}
/**
* Returns the human-readable message describing the last
* error during playback, NULL if no error occurred. The
* caller has to free the returned string.
* Like GetError(), but locks and unlocks the object.
*/
char *GetErrorMessage() const;
gcc_pure
Error LockGetError() const {
Lock();
Error result = GetError();
Unlock();
return result;
}
void ClearError();
PlayerError GetErrorType() const {
return error_type;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment