forked from organicmaps/organicmaps
Fixed adding messages to queues after clean up
This commit is contained in:
parent
15cfc0df2d
commit
6d7013a831
5 changed files with 14 additions and 4 deletions
|
@ -123,8 +123,13 @@ void BaseRenderer::WakeUp()
|
|||
|
||||
void BaseRenderer::ProcessStopRenderingMessage()
|
||||
{
|
||||
CloseQueue();
|
||||
IRoutine::Cancel();
|
||||
CloseQueue();
|
||||
}
|
||||
|
||||
bool BaseRenderer::CanReceiveMessage()
|
||||
{
|
||||
return !IsCancelled();
|
||||
}
|
||||
|
||||
} // namespace df
|
||||
|
|
|
@ -35,6 +35,9 @@ protected:
|
|||
void CheckRenderingEnabled();
|
||||
void ProcessStopRenderingMessage();
|
||||
|
||||
private:
|
||||
bool CanReceiveMessage() override;
|
||||
|
||||
private:
|
||||
threads::Thread m_selfThread;
|
||||
ThreadsCommutator::ThreadName m_threadName;
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Add table
Reference in a new issue