mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-29 19:20:28 +00:00
IRetainedTrackWriter -> IRetainedTrackStore. Also fixed Release()
methods that use reference counts.
This commit is contained in:
parent
d87d3f3f2c
commit
b8069098af
@ -220,7 +220,7 @@
|
||||
<ClInclude Include="audio\Stream.h" />
|
||||
<ClInclude Include="sdk\IPreferences.h" />
|
||||
<ClInclude Include="sdk\IRetainedTrack.h" />
|
||||
<ClInclude Include="sdk\IRetainedTrackWriter.h" />
|
||||
<ClInclude Include="sdk\IRetainedTagStore.h" />
|
||||
<ClInclude Include="sdk\ISimpleDataProvider.h" />
|
||||
<ClInclude Include="sdk\ISpectrumVisualizer.h" />
|
||||
<ClInclude Include="sdk\ITrack.h" />
|
||||
|
@ -447,9 +447,6 @@
|
||||
<ClInclude Include="sdk\ITrack.h">
|
||||
<Filter>src\sdk\library</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sdk\IRetainedTrackWriter.h">
|
||||
<Filter>src\sdk\library</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sdk\IRetainedTrack.h">
|
||||
<Filter>src\sdk\library</Filter>
|
||||
</ClInclude>
|
||||
@ -477,5 +474,8 @@
|
||||
<ClInclude Include="sdk\ITagStore.h">
|
||||
<Filter>src\sdk\library</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sdk\IRetainedTagStore.h">
|
||||
<Filter>src\sdk\library</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -534,7 +534,7 @@ ScanResult Indexer::SyncSource(IIndexerSource* source) {
|
||||
fprintf(logFile, " - %s\n", track->GetString(constants::Track::FILENAME).c_str());
|
||||
}
|
||||
|
||||
source->ScanTrack(this, new RetainedTrackWriter(track), tracks.ColumnText(2));
|
||||
source->ScanTrack(this, new RetainedTagStore(track), tracks.ColumnText(2));
|
||||
this->IncrementTracksScanned();
|
||||
}
|
||||
}
|
||||
@ -859,12 +859,12 @@ bool Indexer::Exited() {
|
||||
return this->exit;
|
||||
}
|
||||
|
||||
IRetainedTrackWriter* Indexer::CreateWriter() {
|
||||
IRetainedTagStore* Indexer::CreateWriter() {
|
||||
std::shared_ptr<Track> track(new IndexerTrack(0));
|
||||
return new RetainedTrackWriter(track);
|
||||
return new RetainedTagStore(track);
|
||||
}
|
||||
|
||||
bool Indexer::Save(IIndexerSource* source, IRetainedTrackWriter* track, const char* externalId) {
|
||||
bool Indexer::Save(IIndexerSource* source, IRetainedTagStore* track, const char* externalId) {
|
||||
if (source->SourceId() == 0) {
|
||||
return false;
|
||||
}
|
||||
@ -875,7 +875,7 @@ bool Indexer::Save(IIndexerSource* source, IRetainedTrackWriter* track, const ch
|
||||
|
||||
/* two levels of unpacking with dynamic_casts. don't tell anyone,
|
||||
it'll be our little secret. */
|
||||
RetainedTrackWriter* rtw = dynamic_cast<RetainedTrackWriter*>(track);
|
||||
RetainedTagStore* rtw = dynamic_cast<RetainedTagStore*>(track);
|
||||
if (rtw) {
|
||||
IndexerTrack* it = rtw->As<IndexerTrack*>();
|
||||
if (it) {
|
||||
|
@ -78,14 +78,14 @@ namespace musik { namespace core {
|
||||
virtual State GetState() { return this->state; }
|
||||
|
||||
/* IIndexerWriter */
|
||||
virtual musik::core::sdk::IRetainedTrackWriter* CreateWriter();
|
||||
virtual musik::core::sdk::IRetainedTagStore* CreateWriter();
|
||||
virtual bool RemoveByUri(musik::core::sdk::IIndexerSource* source, const char* uri);
|
||||
virtual bool RemoveByExternalId(musik::core::sdk::IIndexerSource* source, const char* id);
|
||||
virtual int RemoveAll(musik::core::sdk::IIndexerSource* source);
|
||||
|
||||
virtual bool Save(
|
||||
musik::core::sdk::IIndexerSource* source,
|
||||
musik::core::sdk::IRetainedTrackWriter* track,
|
||||
musik::core::sdk::IRetainedTagStore* track,
|
||||
const char* externalId = "");
|
||||
|
||||
/* IIndexerNotifier */
|
||||
|
@ -49,7 +49,7 @@ RetainedTrack::~RetainedTrack() {
|
||||
|
||||
void RetainedTrack::Release() {
|
||||
int c = this->count.fetch_sub(1);
|
||||
if (c > 0) {
|
||||
if (c == 1) { /* value before fetch */
|
||||
this->count = 0;
|
||||
this->track.reset();
|
||||
delete this;
|
||||
@ -84,37 +84,37 @@ int64_t RetainedTrack::GetId() {
|
||||
return track->GetId();
|
||||
}
|
||||
|
||||
/* * * * RetainedTrackWriter * * * */
|
||||
/* * * * RetainedTagStore * * * */
|
||||
|
||||
RetainedTrackWriter::RetainedTrackWriter(TrackPtr track) {
|
||||
RetainedTagStore::RetainedTagStore(TrackPtr track) {
|
||||
this->count = 1;
|
||||
this->track = track;
|
||||
}
|
||||
|
||||
RetainedTrackWriter::~RetainedTrackWriter() {
|
||||
RetainedTagStore::~RetainedTagStore() {
|
||||
}
|
||||
|
||||
void RetainedTrackWriter::Release() {
|
||||
void RetainedTagStore::Release() {
|
||||
int c = this->count.fetch_sub(1);
|
||||
if (c > 0) {
|
||||
if (c == 1) { /* fetched before sub */
|
||||
this->count = 0;
|
||||
this->track.reset();
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
||||
void RetainedTrackWriter::Retain() {
|
||||
void RetainedTagStore::Retain() {
|
||||
++this->count;
|
||||
}
|
||||
|
||||
void RetainedTrackWriter::SetValue(const char* metakey, const char* value) {
|
||||
void RetainedTagStore::SetValue(const char* metakey, const char* value) {
|
||||
this->track->SetValue(metakey, value);
|
||||
}
|
||||
|
||||
void RetainedTrackWriter::ClearValue(const char* metakey) {
|
||||
void RetainedTagStore::ClearValue(const char* metakey) {
|
||||
this->track->ClearValue(metakey);
|
||||
}
|
||||
|
||||
void RetainedTrackWriter::SetThumbnail(const char *data, long size) {
|
||||
void RetainedTagStore::SetThumbnail(const char *data, long size) {
|
||||
this->track->SetThumbnail(data, size);
|
||||
}
|
@ -33,7 +33,7 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <core/sdk/IRetainedTrack.h>
|
||||
#include <core/sdk/IRetainedTrackWriter.h>
|
||||
#include <core/sdk/IRetainedTagStore.h>
|
||||
#include "Track.h"
|
||||
#include <atomic>
|
||||
|
||||
@ -61,16 +61,16 @@ namespace musik { namespace core {
|
||||
TrackPtr track;
|
||||
};
|
||||
|
||||
class RetainedTrackWriter : public musik::core::sdk::IRetainedTrackWriter {
|
||||
class RetainedTagStore : public musik::core::sdk::IRetainedTagStore {
|
||||
public:
|
||||
RetainedTrackWriter(TrackPtr track);
|
||||
virtual ~RetainedTrackWriter();
|
||||
RetainedTagStore(TrackPtr track);
|
||||
virtual ~RetainedTagStore();
|
||||
|
||||
template <typename T> T As() {
|
||||
return dynamic_cast<T>(track.get());
|
||||
}
|
||||
|
||||
/* IRetainedTrackWriter */
|
||||
/* IRetainedTagStore */
|
||||
virtual void Release();
|
||||
virtual void Retain();
|
||||
|
||||
|
@ -66,7 +66,7 @@ namespace musik { namespace core {
|
||||
virtual std::string GetString(const char* metakey) = 0;
|
||||
virtual std::string Uri() = 0;
|
||||
|
||||
/* IWritableTrack */
|
||||
/* ITagStore */
|
||||
virtual void SetValue(const char* metakey, const char* value) = 0;
|
||||
virtual void ClearValue(const char* metakey) = 0;
|
||||
virtual void SetThumbnail(const char *data, long size) = 0;
|
||||
|
@ -52,7 +52,7 @@ namespace musik { namespace core { namespace sdk {
|
||||
|
||||
virtual void ScanTrack(
|
||||
IIndexerWriter* indexer,
|
||||
IRetainedTrackWriter* track,
|
||||
IRetainedTagStore* track,
|
||||
const char* externalId) = 0;
|
||||
|
||||
virtual void Interrupt() = 0;
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "IRetainedTrackWriter.h"
|
||||
#include "IRetainedTagStore.h"
|
||||
|
||||
namespace musik { namespace core { namespace sdk {
|
||||
|
||||
@ -42,11 +42,11 @@ namespace musik { namespace core { namespace sdk {
|
||||
|
||||
class IIndexerWriter {
|
||||
public:
|
||||
virtual IRetainedTrackWriter* CreateWriter() = 0;
|
||||
virtual IRetainedTagStore* CreateWriter() = 0;
|
||||
|
||||
virtual bool Save(
|
||||
IIndexerSource* source,
|
||||
IRetainedTrackWriter* track,
|
||||
IRetainedTagStore* track,
|
||||
const char* externalId = "") = 0;
|
||||
|
||||
virtual bool RemoveByUri(IIndexerSource* source, const char* uri) = 0;
|
||||
|
@ -36,17 +36,13 @@
|
||||
|
||||
#include "ITagStore.h"
|
||||
|
||||
namespace musik {
|
||||
namespace core {
|
||||
namespace sdk {
|
||||
namespace musik { namespace core { namespace sdk {
|
||||
|
||||
class IRetainedTrackWriter : public ITagStore {
|
||||
public:
|
||||
virtual void Release() = 0;
|
||||
virtual void Retain() = 0;
|
||||
};
|
||||
class IRetainedTagStore : public ITagStore {
|
||||
public:
|
||||
virtual void Release() = 0;
|
||||
virtual void Retain() = 0;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
} } }
|
||||
|
@ -373,7 +373,7 @@ void CddaIndexerSource::Interrupt() {
|
||||
|
||||
void CddaIndexerSource::ScanTrack(
|
||||
IIndexerWriter* indexer,
|
||||
IRetainedTrackWriter* track,
|
||||
IRetainedTagStore* track,
|
||||
const char* externalId)
|
||||
{
|
||||
if (!exists(this->discIds, this->model, externalId)) {
|
||||
|
@ -56,7 +56,7 @@ class CddaIndexerSource :
|
||||
|
||||
virtual void ScanTrack(
|
||||
musik::core::sdk::IIndexerWriter* indexer,
|
||||
musik::core::sdk::IRetainedTrackWriter* track,
|
||||
musik::core::sdk::IRetainedTagStore* track,
|
||||
const char* externalId);
|
||||
|
||||
virtual void Interrupt();
|
||||
|
Loading…
x
Reference in New Issue
Block a user