Replace Listenable system by signals

Former-commit-id: 16fb0b3e703ca4b41ceb97fab938cebb05f677d4
This commit is contained in:
Lynix
2015-06-07 15:16:11 +02:00
parent 3e8d2e1e47
commit fe25249136
24 changed files with 182 additions and 348 deletions

View File

@@ -7,31 +7,5 @@
NzAbstractAtlas::~NzAbstractAtlas()
{
NotifyRelease(Listener::OnAtlasReleased);
}
NzAbstractAtlas::Listener::~Listener() = default;
bool NzAbstractAtlas::Listener::OnAtlasCleared(const NzAbstractAtlas* atlas, void* userdata)
{
NazaraUnused(atlas);
NazaraUnused(userdata);
return true;
}
bool NzAbstractAtlas::Listener::OnAtlasLayerChange(const NzAbstractAtlas* atlas, NzAbstractImage* oldLayer, NzAbstractImage* newLayer, void* userdata)
{
NazaraUnused(atlas);
NazaraUnused(oldLayer);
NazaraUnused(newLayer);
NazaraUnused(userdata);
return true;
}
void NzAbstractAtlas::Listener::OnAtlasReleased(const NzAbstractAtlas* atlas, void* userdata)
{
NazaraUnused(atlas);
NazaraUnused(userdata);
OnAtlasRelease(this);
}

View File

@@ -290,12 +290,19 @@ void NzFont::SetAtlas(const std::shared_ptr<NzAbstractAtlas>& atlas)
{
ClearGlyphCache();
if (m_atlas)
m_atlas->RemoveListener(this);
m_atlas = atlas;
if (m_atlas)
m_atlas->AddListener(this);
{
m_atlasClearedSlot = NazaraConnect(*m_atlas, OnAtlasCleared, OnAtlasCleared);
m_atlasLayerChangeSlot = NazaraConnect(*m_atlas, OnAtlasLayerChange, OnAtlasLayerChange);
m_atlasReleaseSlot = NazaraConnect(*m_atlas, OnAtlasRelease, OnAtlasRelease);
}
else
{
NazaraDisconnect(m_atlasClearedSlot);
NazaraDisconnect(m_atlasLayerChangeSlot);
NazaraDisconnect(m_atlasReleaseSlot);
}
NotifyModified(ModificationCode_AtlasChanged);
}
@@ -403,10 +410,9 @@ nzUInt64 NzFont::ComputeKey(unsigned int characterSize, nzUInt32 style) const
return (stylePart << 32) | sizePart;
}
bool NzFont::OnAtlasCleared(const NzAbstractAtlas* atlas, void* userdata)
void NzFont::OnAtlasCleared(const NzAbstractAtlas* atlas)
{
NazaraUnused(atlas);
NazaraUnused(userdata);
#ifdef NAZARA_DEBUG
// Est-ce qu'il s'agit bien de notre atlas ?
@@ -420,16 +426,13 @@ bool NzFont::OnAtlasCleared(const NzAbstractAtlas* atlas, void* userdata)
// Notre atlas vient d'être vidé, détruisons le cache de glyphe
m_glyphes.clear();
NotifyModified(ModificationCode_GlyphCacheCleared);
return true;
}
bool NzFont::OnAtlasLayerChange(const NzAbstractAtlas* atlas, NzAbstractImage* oldLayer, NzAbstractImage* newLayer, void* userdata)
void NzFont::OnAtlasLayerChange(const NzAbstractAtlas* atlas, NzAbstractImage* oldLayer, NzAbstractImage* newLayer)
{
NazaraUnused(atlas);
NazaraUnused(oldLayer);
NazaraUnused(newLayer);
NazaraUnused(userdata);
#ifdef NAZARA_DEBUG
// Est-ce qu'il s'agit bien de notre atlas ?
@@ -442,14 +445,11 @@ bool NzFont::OnAtlasLayerChange(const NzAbstractAtlas* atlas, NzAbstractImage* o
// Pour faciliter le travail des ressources qui nous écoutent
NotifyModified(ModificationCode_AtlasLayerChanged);
return true;
}
void NzFont::OnAtlasReleased(const NzAbstractAtlas* atlas, void* userdata)
void NzFont::OnAtlasRelease(const NzAbstractAtlas* atlas)
{
NazaraUnused(atlas);
NazaraUnused(userdata);
#ifdef NAZARA_DEBUG
// Est-ce qu'il s'agit bien de notre atlas ?

View File

@@ -22,7 +22,7 @@ NzGuillotineImageAtlas::~NzGuillotineImageAtlas() = default;
void NzGuillotineImageAtlas::Clear()
{
m_layers.clear();
Notify(Listener::OnAtlasCleared);
OnAtlasCleared(this);
}
void NzGuillotineImageAtlas::Free(NzSparsePtr<const NzRectui> rects, NzSparsePtr<unsigned int> layers, unsigned int count)
@@ -187,7 +187,7 @@ bool NzGuillotineImageAtlas::ResizeLayer(Layer& layer, const NzVector2ui& size)
// On indique à ceux que ça intéresse qu'on a changé de pointeur
// (chose très importante pour ceux qui le stockent)
Notify(Listener::OnAtlasLayerChange, layer.image.get(), newImage.get());
OnAtlasLayerChange(this, layer.image.get(), newImage.get());
// Et on ne met à jour le pointeur qu'après (car cette ligne libère également l'ancienne image)
layer.image = std::move(newImage);