So if I use a std::unique_ptr for my Thread class which is derived from ChangeBroadcaster and I addChangeListener() – when I get the changeListenerCallback() the std::unique_ptr is nullptr, so:
std::unique_ptr<CReloadThread> m_pReloadThread;
CReloadThread::~CReloadThread()
{
if (MessageManager::getInstance()->isThisTheMessageThread())
{
removeChangeListener (m_pSynthProc);
}
else
{
MessageManagerLock mml;
if (mml.lockWasGained())
removeChangeListener (m_pSynthProc);
}
stopThread (2000);
}
void CReloadThread::run()
{
// Do some stuff....
if (! m_pProcessor->isPluginShuttingDown())
sendChangeMessage();
}
void CSynthProcessor::changeListenerCallback (ChangeBroadcaster* source)
{
if (source == m_pReloadThread.get())
{
// Do some post thread stuff...
// Never gets here with std::unique_ptr but does with ScopedPointer
}
}
I get the changeListenerCallback() but m_pReloadThread is nullptr if it’s a std::unique_ptr.
If m_pReloadThread is a ScopedPointer however, m_pReloadThread is not nullptr in changeListenerCallback().
ScopedPointer <CReloadThread> m_pReloadThread;
Thoughts?
Cheers,
Rail