rk3399_arm_lvds/display/DisplayCenter.cpp

61 lines
1.3 KiB
C++
Raw Permalink Normal View History

2024-03-05 03:46:18 +00:00
#include "DisplayCenter.h"
#include "deviceconfig.h"
DisplayCenter::DisplayCenter():m_lcd(new LCDDisplay(Get_static_deviceconfig().GetParam().language))
,brun(false)
{
m_showthread.reset(new std::thread(&DisplayCenter::runloop,this));
m_distype = DisType::Dis_Idel;
}
DisplayCenter::~DisplayCenter()
{
brun = false;
if(m_showthread.get()&& m_showthread->joinable())
{
m_showthread->join();
m_showthread.reset();
}
if(!m_msgs.IsShutDown())
m_msgs.ShutDown();
m_lcd.reset();
}
void DisplayCenter::PutMsg(DisType distype,int pagenum,ClearScreen clearscreen)
{
m_msgs.Put({distype,clearscreen,(unsigned int )pagenum,""});
m_distype = distype;
printf("\n ----- distype = %d ",distype);
}
void DisplayCenter::ResetMsgQueue()
{
m_msgs.Clear();
}
void DisplayCenter::runloop()
{
brun = true;
while (brun)
{
if(m_msgs.Size()>0)
{
auto msg= m_msgs.Take();
m_lcd->DisplayState(msg.distype,msg.pagenum,msg.clearscree);
}
else
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
}
DisType DisplayCenter::getcurdistype()
{
return m_distype;
}
void DisplayCenter::set_language(LCDDisplay::Language language)
{
if(m_lcd.get()) m_lcd->set_language(language);
}