Bug 842948 - Patch 3: Cache AVRCP data in BluetoothA2dpManager, r=echou

This commit is contained in:
Gina Yeh 2013-07-29 17:32:34 +08:00
parent e9527b054f
commit de14e1f9fe
3 changed files with 53 additions and 0 deletions

View File

@ -86,6 +86,11 @@ void
BluetoothA2dpManager::ResetAvrcp()
{
mAvrcpConnected = false;
mDuration = 0;
mMediaNumber = 0;
mTotalMediaCount = 0;
mPosition = 0;
mPlayStatus = ControlPlayStatus::PLAYSTATUS_UNKNOWN;
}
static BluetoothA2dpManager::SinkState
@ -329,5 +334,31 @@ BluetoothA2dpManager::IsAvrcpConnected()
return mAvrcpConnected;
}
void
BluetoothA2dpManager::UpdateMetaData(const nsAString& aTitle,
const nsAString& aArtist,
const nsAString& aAlbum,
uint32_t aMediaNumber,
uint32_t aTotalMediaCount,
uint32_t aDuration)
{
mTitle.Assign(aTitle);
mArtist.Assign(aArtist);
mAlbum.Assign(aAlbum);
mMediaNumber = aMediaNumber;
mTotalMediaCount = aTotalMediaCount;
mDuration = aDuration;
}
void
BluetoothA2dpManager::UpdatePlayStatus(uint32_t aDuration,
uint32_t aPosition,
ControlPlayStatus aPlayStatus)
{
mDuration = aDuration;
mPosition = aPosition;
mPlayStatus = aPlayStatus;
}
NS_IMPL_ISUPPORTS1(BluetoothA2dpManager, nsIObserver)

View File

@ -49,6 +49,15 @@ public:
// AVRCP member functions
void SetAvrcpConnected(bool aConnected);
bool IsAvrcpConnected();
void UpdateMetaData(const nsAString& aTitle,
const nsAString& aArtist,
const nsAString& aAlbum,
uint32_t aMediaNumber,
uint32_t aTotalMediaCount,
uint32_t aDuration);
void UpdatePlayStatus(uint32_t aDuration,
uint32_t aPosition,
ControlPlayStatus aPlayStatus);
private:
BluetoothA2dpManager();
@ -69,6 +78,14 @@ private:
// AVRCP data member
bool mAvrcpConnected;
nsString mAlbum;
nsString mArtist;
nsString mTitle;
uint32_t mDuration;
uint32_t mMediaNumber;
uint32_t mTotalMediaCount;
uint32_t mPosition;
ControlPlayStatus mPlayStatus;
};
END_BLUETOOTH_NAMESPACE

View File

@ -2921,6 +2921,9 @@ BluetoothDBusService::SendMetaData(const nsAString& aTitle,
NS_ENSURE_TRUE_VOID(ret);
runnable.forget();
a2dp->UpdateMetaData(aTitle, aArtist, aAlbum,
aMediaNumber, aTotalMediaCount, aDuration);
}
static ControlPlayStatus
@ -3001,5 +3004,7 @@ BluetoothDBusService::SendPlayStatus(uint32_t aDuration,
NS_ENSURE_TRUE_VOID(ret);
runnable.forget();
a2dp->UpdatePlayStatus(aDuration, aPosition, playStatus);
}