From b7cf537e500c9138a03b1d9e674e435465ec3546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sun, 7 Jun 2009 19:43:26 +0000 Subject: [PATCH] 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 --- headers/os/media/MediaFile.h | 1 + src/kits/media/MediaFile.cpp | 40 ++++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/headers/os/media/MediaFile.h b/headers/os/media/MediaFile.h index cb8d0e0708..f9f14c92cb 100644 --- a/headers/os/media/MediaFile.h +++ b/headers/os/media/MediaFile.h @@ -157,6 +157,7 @@ private: BMediaTrack** fTrackList; void _Init(); + void _UnInit(); void _InitReader(BDataIO* source, int32 flags = 0); void _InitWriter(BDataIO* source, const media_file_format* mfi, int32 flags); diff --git a/src/kits/media/MediaFile.cpp b/src/kits/media/MediaFile.cpp index 977873837f..56bcc1d76b 100644 --- a/src/kits/media/MediaFile.cpp +++ b/src/kits/media/MediaFile.cpp @@ -78,16 +78,25 @@ BMediaFile::BMediaFile(const media_file_format* mfi, int32 flags) status_t BMediaFile::SetTo(const entry_ref* ref) { - debugger("BMediaFile::SetTo not implemented"); - return B_OK; + CALLED(); + + _UnInit(); + fDeleteSource = true; + _InitReader(new (std::nothrow) BFile(ref, O_RDONLY)); + + return fErr; } status_t BMediaFile::SetTo(BDataIO* destination) { - debugger("BMediaFile::SetTo not implemented"); - return B_OK; + CALLED(); + + _UnInit(); + _InitReader(destination); + + return fErr; } @@ -95,11 +104,7 @@ BMediaFile::~BMediaFile() { CALLED(); - ReleaseAllTracks(); - delete[] fTrackList; - delete fExtractor; - if (fDeleteSource) - delete fSource; + _UnInit(); } @@ -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 BMediaFile::_InitReader(BDataIO* source, int32 flags) {