Disabling all messages through either AtacsOutputEvent or AtacsMessageEvent and the CPU issue is not seen.
AtacsManager.h
class AtacsOutputEvent
: public QEvent{
public:
AtacsOutputEvent();
std::string message;
};
class AtacsMessageEvent
: public QEvent{
public:
AtacsMessageEvent();
int level;
string message;
};
AtacsManager.cpp
void AtacsManager::ProcessFrame(long dataType)
{
try {
switch (dataType) {
case kDebugOutput:
{
AtacsOutputEvent *event = new AtacsOutputEvent();
event->message.clear();
event->message.append((const char*)m_AsciiDataType.data);
break;
}
case kTBDebugMsg:
{
char msg[32];
AtacsMessageEvent *event = new AtacsMessageEvent();
event->message.clear();
snprintf(msg, sizeof(msg) - 1, "%d %s ", m_DebugMsg.getLevel(), m_DebugMsg.getTimeString());
event->message.append((const char*)msg);
event->message.append((const char*)m_DebugMsg.getMessage());
break;
}
} CATCH_CAUSE
}
mainwindow.cpp
void MainWindow
::customEvent( QEvent * event
) {
switch (event->type()) {
case statusEvent:
{
AtacsMessageEvent *AtacsMessage = (AtacsMessageEvent *)event;
DisplayToDebug((char*)AtacsMessage->message.c_str());
break;
}
case outputEvent:
{
AtacsOutputEvent *AtacsMessage = (AtacsOutputEvent *)event;
DisplayToOutput((char*)AtacsMessage->message.c_str());
break;
}
default:
break;
}
}
void MainWindow::DisplayToDebug(char* message)
{
QString qmessage
((const char*)message
);
ui->DebugLB->addItem(qmessage);
ui->DebugLB->scrollToBottom();
if (ui->DebugLB->count() > 50) {
delete ui->DebugLB->item(0);
}
}
void MainWindow::DisplayToOutput(char* message)
{
QString qmessage
((const char*)message
);
qmessage.chop(1);
ui->OutputLB->addItem(qmessage);
ui->OutputLB->scrollToBottom();
if (ui->OutputLB->count() > 50) {
delete ui->OutputLB->item(0);
}
}
AtacsManager.h
class AtacsOutputEvent : public QEvent
{
public:
AtacsOutputEvent();
std::string message;
QEvent::Type type() { return (QEvent::Type)outputEvent; }
};
class AtacsMessageEvent : public QEvent
{
public:
AtacsMessageEvent();
int level;
string message;
QEvent::Type type() { return (QEvent::Type)statusEvent; }
};
AtacsManager.cpp
void AtacsManager::ProcessFrame(long dataType)
{
try {
switch (dataType) {
case kDebugOutput:
{
AtacsOutputEvent *event = new AtacsOutputEvent();
event->message.clear();
event->message.append((const char*)m_AsciiDataType.data);
QCoreApplication::postEvent(m_TargetWidget, event);
break;
}
case kTBDebugMsg:
{
char msg[32];
AtacsMessageEvent *event = new AtacsMessageEvent();
event->message.clear();
snprintf(msg, sizeof(msg) - 1, "%d %s ", m_DebugMsg.getLevel(), m_DebugMsg.getTimeString());
event->message.append((const char*)msg);
event->message.append((const char*)m_DebugMsg.getMessage());
QCoreApplication::postEvent(m_TargetWidget, event);
break;
}
} CATCH_CAUSE
}
mainwindow.cpp
void MainWindow::customEvent( QEvent * event )
{
switch (event->type()) {
case statusEvent:
{
AtacsMessageEvent *AtacsMessage = (AtacsMessageEvent *)event;
DisplayToDebug((char*)AtacsMessage->message.c_str());
break;
}
case outputEvent:
{
AtacsOutputEvent *AtacsMessage = (AtacsOutputEvent *)event;
DisplayToOutput((char*)AtacsMessage->message.c_str());
break;
}
default:
break;
}
}
void MainWindow::DisplayToDebug(char* message)
{
QString qmessage((const char*)message);
ui->DebugLB->addItem(qmessage);
ui->DebugLB->scrollToBottom();
if (ui->DebugLB->count() > 50) {
delete ui->DebugLB->item(0);
}
}
void MainWindow::DisplayToOutput(char* message)
{
QString qmessage((const char*)message);
qmessage.chop(1);
ui->OutputLB->addItem(qmessage);
ui->OutputLB->scrollToBottom();
if (ui->OutputLB->count() > 50) {
delete ui->OutputLB->item(0);
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks