newtx/ui/DisplayCenter.cpp

55 lines
1.1 KiB
C++
Raw Normal View History

#include "DisplayCenter.h"
#include "LCDDisplay.h"
DisplayCenter::DisplayCenter() : m_lcd(new LCDDisplay())
,brun(false), m_msgs("DisplayCenter")
{
m_showthread.reset(new std::thread(&DisplayCenter::runloop,this));
2024-02-02 08:53:17 +00:00
m_distype = DisType::Dis_Unkown;
PutMsg(DisType::Dis_Init, code_page_, ClearScreen::All);
}
DisplayCenter::~DisplayCenter()
{
brun = false;
2024-02-02 08:53:17 +00:00
m_msgs.trigger();
if(m_showthread.get()&& m_showthread->joinable())
{
m_showthread->join();
m_showthread.reset();
}
m_msgs.clear();
m_lcd.reset();
}
void DisplayCenter::PutMsg(DisType distype,int pagenum,ClearScreen clearscreen)
{
m_msgs.save({distype,clearscreen,(unsigned int )pagenum,""}, true);
}
void DisplayCenter::ResetMsgQueue()
{
m_msgs.clear();
}
void DisplayCenter::runloop()
{
brun = true;
while (brun)
{
MsgPair msg;
if(m_msgs.take(msg, true))
2024-02-02 08:53:17 +00:00
{
m_distype = msg.distype;
m_lcd->DisplayState(msg.distype, msg.pagenum, msg.clearscree);
2024-02-02 08:53:17 +00:00
}
}
}
DisType DisplayCenter::getcurdistype()
{
return m_distype;
}