diff --git a/companion/src/simulation/simulateduiwidget.cpp b/companion/src/simulation/simulateduiwidget.cpp index 3d650995e..0f3f0caa2 100644 --- a/companion/src/simulation/simulateduiwidget.cpp +++ b/companion/src/simulation/simulateduiwidget.cpp @@ -132,7 +132,8 @@ void SimulatedUIWidget::onLcdChange(bool backlightEnable) if (!m_lcd || !m_lcd->isVisible()) return; - m_lcd->onLcdChanged(backlightEnable); + uint8_t* lcdBuf = m_simulator->getLcd(); + m_lcd->onLcdChanged(lcdBuf, backlightEnable); m_simulator->lcdFlushed(); setLightOn(backlightEnable); @@ -189,7 +190,11 @@ void SimulatedUIWidget::setLcd(LcdWidget * lcd) { m_lcd = lcd; Firmware * firmware = getCurrentFirmware(); - m_lcd->setData(m_simulator->getLcd(), firmware->getCapability(LcdWidth), firmware->getCapability(LcdHeight), firmware->getCapability(LcdDepth)); + + auto width = firmware->getCapability(LcdWidth); + auto height = firmware->getCapability(LcdHeight); + auto depth = firmware->getCapability(LcdDepth); + m_lcd->setData(width, height, depth); if (!m_backlightColors.size()) return; diff --git a/companion/src/simulation/widgets/lcdwidget.cpp b/companion/src/simulation/widgets/lcdwidget.cpp index b01e0e62a..b21b03a60 100644 --- a/companion/src/simulation/widgets/lcdwidget.cpp +++ b/companion/src/simulation/widgets/lcdwidget.cpp @@ -21,9 +21,8 @@ #include "lcdwidget.h" -void LcdWidget::setData(unsigned char *buf, int width, int height, int depth) +void LcdWidget::setData(int width, int height, int depth) { - lcdBuf = buf; lcdWidth = width; lcdHeight = height; lcdDepth = depth; @@ -65,11 +64,11 @@ void LcdWidget::makeScreenshot(const QString &fileName) } } -void LcdWidget::onLcdChanged(bool light) +void LcdWidget::onLcdChanged(uint8_t* lcdBuf, bool light) { QMutexLocker locker(&lcdMtx); lightEnable = light; - memcpy(localBuf, lcdBuf, lcdSize); + if (lcdBuf) memcpy(localBuf, lcdBuf, lcdSize); if (!redrawTimer.isValid() || redrawTimer.hasExpired(LCD_WIDGET_REFRESH_PERIOD)) { update(); diff --git a/companion/src/simulation/widgets/lcdwidget.h b/companion/src/simulation/widgets/lcdwidget.h index 107b94866..07e2945c1 100644 --- a/companion/src/simulation/widgets/lcdwidget.h +++ b/companion/src/simulation/widgets/lcdwidget.h @@ -44,7 +44,6 @@ class LcdWidget : public QWidget LcdWidget(QWidget *parent = 0) : QWidget(parent), - lcdBuf(NULL), localBuf(NULL), lightEnable(false), bgDefaultColor(QColor(198, 208, 199)) @@ -58,13 +57,13 @@ class LcdWidget : public QWidget } } - void setData(unsigned char *buf, int width, int height, int depth = 1); + void setData(int width, int height, int depth = 1); void setBgDefaultColor(const QColor &color); void setBackgroundColor(const QColor &color); void makeScreenshot(const QString &fileName); - void onLcdChanged(bool light); + void onLcdChanged(uint8_t* lcdBuf, bool light); signals: void touchEvent(int type, int x, int y); @@ -75,7 +74,6 @@ class LcdWidget : public QWidget int lcdDepth; int lcdSize; - unsigned char *lcdBuf; unsigned char *localBuf; bool lightEnable;