Clean up error handling in createTrack and openRecord
Outside callers now use initCheck() to determine whether a TrackBase
has been created successfully, instead of relying on internal knowledge.
Previously, callers needed to know that a TrackBase was only valid if it's
getCbk() != 0. For a Track (playback), they needed to know to also check
the track's name (track index). Now, outsiders can just call initCheck().
Other changes:
- Return a 0 reference if track creation fails
- Remove a dead line of code in AudioFlinger::openRecord
Change-Id: If374924a3f6fd27906f625aa83dd0a1e3f506e00
diff --git a/services/audioflinger/TrackBase.h b/services/audioflinger/TrackBase.h
index 7365ea2..00a91b7 100644
--- a/services/audioflinger/TrackBase.h
+++ b/services/audioflinger/TrackBase.h
@@ -47,6 +47,7 @@
int sessionId,
bool isOut);
virtual ~TrackBase();
+ virtual status_t initCheck() const { return getCblk() != 0 ? NO_ERROR : NO_MEMORY; }
virtual status_t start(AudioSystem::sync_event_t event,
int triggerSession) = 0;