Added BMediaFile::_UnInit() and implemented the two SetTo() methods.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30987 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2009-06-07 19:43:26 +00:00
parent b5ec3e5669
commit b7cf537e50
2 changed files with 32 additions and 9 deletions
+1
View File
@@ -157,6 +157,7 @@ private:
BMediaTrack** fTrackList; BMediaTrack** fTrackList;
void _Init(); void _Init();
void _UnInit();
void _InitReader(BDataIO* source, int32 flags = 0); void _InitReader(BDataIO* source, int32 flags = 0);
void _InitWriter(BDataIO* source, void _InitWriter(BDataIO* source,
const media_file_format* mfi, int32 flags); const media_file_format* mfi, int32 flags);
+31 -9
View File
@@ -78,16 +78,25 @@ BMediaFile::BMediaFile(const media_file_format* mfi, int32 flags)
status_t status_t
BMediaFile::SetTo(const entry_ref* ref) BMediaFile::SetTo(const entry_ref* ref)
{ {
debugger("BMediaFile::SetTo not implemented"); CALLED();
return B_OK;
_UnInit();
fDeleteSource = true;
_InitReader(new (std::nothrow) BFile(ref, O_RDONLY));
return fErr;
} }
status_t status_t
BMediaFile::SetTo(BDataIO* destination) BMediaFile::SetTo(BDataIO* destination)
{ {
debugger("BMediaFile::SetTo not implemented"); CALLED();
return B_OK;
_UnInit();
_InitReader(destination);
return fErr;
} }
@@ -95,11 +104,7 @@ BMediaFile::~BMediaFile()
{ {
CALLED(); CALLED();
ReleaseAllTracks(); _UnInit();
delete[] fTrackList;
delete fExtractor;
if (fDeleteSource)
delete fSource;
} }
@@ -359,6 +364,23 @@ BMediaFile::_Init()
} }
void
BMediaFile::_UnInit()
{
ReleaseAllTracks();
delete[] fTrackList;
fTrackList = NULL;
fTrackNum = 0;
delete fExtractor;
fExtractor = NULL;
if (fDeleteSource) {
delete fSource;
fSource = NULL;
fDeleteSource = false;
}
}
void void
BMediaFile::_InitReader(BDataIO* source, int32 flags) BMediaFile::_InitReader(BDataIO* source, int32 flags)
{ {