@@ -625,7 +625,8 @@ void DMD::ZeDMDThread()
625625 uint16_t segData1[128 ] = {0 };
626626 uint16_t segData2[128 ] = {0 };
627627 uint8_t palette[PALETTE_SIZE] = {0 };
628- uint8_t renderBuffer[256 * 64 ] = {0 };
628+ uint8_t indexBuffer[256 * 64 ] = {0 };
629+ uint8_t renderBuffer[256 * 64 * 3 ] = {0 };
629630
630631 m_dmdFrameReady.load (std::memory_order_acquire);
631632 m_stopFlag.load (std::memory_order_acquire);
@@ -697,12 +698,12 @@ void DMD::ZeDMDThread()
697698 if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::SerumV1)
698699 {
699700 memcpy (palette, m_pUpdateBufferQueue[bufferPosition]->segData , PALETTE_SIZE);
700- memcpy (renderBuffer , m_pUpdateBufferQueue[bufferPosition]->data , frameSize);
701+ memcpy (indexBuffer , m_pUpdateBufferQueue[bufferPosition]->data , frameSize);
701702 update = true ;
702703 }
703704 else if (!m_pSerum && m_pUpdateBufferQueue[bufferPosition]->mode == Mode::Data)
704705 {
705- memcpy (renderBuffer , m_pUpdateBufferQueue[bufferPosition]->data , frameSize);
706+ memcpy (indexBuffer , m_pUpdateBufferQueue[bufferPosition]->data , frameSize);
706707 update = true ;
707708 }
708709 else if (m_pUpdateBufferQueue[bufferPosition]->mode == Mode::AlphaNumeric)
@@ -723,20 +724,21 @@ void DMD::ZeDMDThread()
723724 if (update)
724725 {
725726 if (m_pUpdateBufferQueue[bufferPosition]->hasSegData2 )
726- m_pAlphaNumeric->Render (renderBuffer , m_pUpdateBufferQueue[bufferPosition]->layout , segData1, segData2);
727+ m_pAlphaNumeric->Render (indexBuffer , m_pUpdateBufferQueue[bufferPosition]->layout , segData1, segData2);
727728 else
728- m_pAlphaNumeric->Render (renderBuffer , m_pUpdateBufferQueue[bufferPosition]->layout , segData1);
729+ m_pAlphaNumeric->Render (indexBuffer , m_pUpdateBufferQueue[bufferPosition]->layout , segData1);
729730 }
730731 }
731732
732733 if (update)
733734 {
735+ uint16_t renderBuferPosition = 0 ;
734736 for (int i = 0 ; i < frameSize; i++)
735737 {
736- int pos = renderBuffer [i] * 3 ;
737- uint32_t r = palette[pos];
738- uint32_t g = palette[pos + 1 ];
739- uint32_t b = palette[pos + 2 ];
738+ int pos = indexBuffer [i] * 3 ;
739+ renderBuffer[renderBuferPosition++] = palette[pos];
740+ renderBuffer[renderBuferPosition++] = palette[pos + 1 ];
741+ renderBuffer[renderBuferPosition++] = palette[pos + 2 ];
740742 }
741743 }
742744 }
0 commit comments