From ffea268d2e0a36fbc7a16f5fe14c7554a2eb56b3 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 17 Oct 2013 19:34:59 +0200 Subject: PlayerControl: GetError() returns an Error, not a char* --- src/PlayerControl.hxx | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'src/PlayerControl.hxx') diff --git a/src/PlayerControl.hxx b/src/PlayerControl.hxx index b33462a5c..b2b2087e2 100644 --- a/src/PlayerControl.hxx +++ b/src/PlayerControl.hxx @@ -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; -- cgit v1.2.3