Fixed adding messages to queues after clean up

This commit is contained in:
r.kuznetsov 2015-03-17 17:19:23 +03:00
parent 15cfc0df2d
commit 6d7013a831
5 changed files with 14 additions and 4 deletions

View file

@ -123,8 +123,13 @@ void BaseRenderer::WakeUp()
void BaseRenderer::ProcessStopRenderingMessage()
{
CloseQueue();
IRoutine::Cancel();
CloseQueue();
}
bool BaseRenderer::CanReceiveMessage()
{
return !IsCancelled();
}
} // namespace df

View file

@ -35,6 +35,9 @@ protected:
void CheckRenderingEnabled();
void ProcessStopRenderingMessage();
private:
bool CanReceiveMessage() override;
private:
threads::Thread m_selfThread;
ThreadsCommutator::ThreadName m_threadName;

View file

@ -18,7 +18,8 @@ void MessageAcceptor::ProcessSingleMessage(unsigned maxTimeWait)
void MessageAcceptor::PostMessage(dp::TransferPointer<Message> message, MessagePriority priority)
{
m_messageQueue.PushMessage(message, priority);
if (CanReceiveMessage())
m_messageQueue.PushMessage(message, priority);
}
void MessageAcceptor::CloseQueue()

View file

@ -18,6 +18,7 @@ protected:
virtual ~MessageAcceptor(){}
virtual void AcceptMessage(dp::RefPointer<Message> message) = 0;
virtual bool CanReceiveMessage() = 0;
/// Must be called by subclass on message target thread
void ProcessSingleMessage(unsigned maxTimeWait = -1);

View file

@ -107,8 +107,8 @@ class UpdateReadManagerMessage : public Message
{
public:
UpdateReadManagerMessage(ScreenBase const & screen, set<TileKey> const & tiles)
: m_screen(screen)
, m_tiles(tiles)
: m_tiles(tiles)
, m_screen(screen)
{}
Type GetType() const override { return Message::UpdateReadManager; }