@@ -949,22 +949,19 @@ void DMD::SerumThread()
949949 if (!m_stopFlag.load (std::memory_order_relaxed) && sceneCurrentFrame < sceneFrameCount && nextSceneFrame <= now)
950950 {
951951 Update* sceneUpdate = new Update ();
952- sceneUpdate->mode = Mode::Data;
953- sceneUpdate->depth = 2 ;
954- sceneUpdate->width = 128 ;
955- sceneUpdate->height = 32 ;
956- sceneUpdate->hasData = true ;
957- sceneUpdate->r = 0 ;
958- sceneUpdate->g = 0 ;
959- sceneUpdate->b = 0 ;
960952 if (m_pGenerator->generateFrame (prevTriggerId, sceneCurrentFrame++, sceneUpdate->data ))
961953 {
962954 uint32_t result = Serum_Colorize (sceneUpdate->data );
963955
964956 if (result != IDENTIFY_NO_FRAME)
965957 {
966958 Log (DMDUtil_LogLevel_DEBUG, " Got PUP scene %d, frame %d colorized" , prevTriggerId, sceneCurrentFrame - 1 );
967- QueueSerumFrames (sceneUpdate);
959+ sceneUpdate->mode = Mode::Data;
960+ sceneUpdate->depth = m_pGenerator->getDepth ();
961+ sceneUpdate->width = 128 ;
962+ sceneUpdate->height = 32 ;
963+ sceneUpdate->hasData = true ;
964+ QueueSerumFrames (sceneUpdate, result & 0x10000 , result & 0x20000 );
968965 }
969966 }
970967 nextSceneFrame = nextSceneFrame + sceneDurationPerFrame;
@@ -1004,7 +1001,7 @@ void DMD::SerumThread()
10041001 {
10051002 std::this_thread::sleep_for (std::chrono::milliseconds (1 ));
10061003 }
1007- QueueSerumFrames (lastDmdUpdate);
1004+ QueueSerumFrames (lastDmdUpdate, result & 0x10000 , result & 0x20000 );
10081005 }
10091006 }
10101007 }
@@ -1117,12 +1114,12 @@ void DMD::SerumThread()
11171114 else
11181115 {
11191116 nextSceneFrame = now + sceneDurationPerFrame;
1120- QueueSerumFrames (lastDmdUpdate);
1117+ QueueSerumFrames (lastDmdUpdate, result & 0x10000 , result & 0x20000 );
11211118 }
11221119 }
11231120 else
11241121 {
1125- QueueSerumFrames (lastDmdUpdate);
1122+ QueueSerumFrames (lastDmdUpdate, result & 0x10000 , result & 0x20000 );
11261123 }
11271124
11281125 HandleTrigger (m_pSerum->triggerID );
@@ -1131,7 +1128,7 @@ void DMD::SerumThread()
11311128 else
11321129 {
11331130 sceneFrameCount = 0 ;
1134- QueueSerumFrames (lastDmdUpdate);
1131+ QueueSerumFrames (lastDmdUpdate, result & 0x10000 , result & 0x20000 );
11351132 }
11361133 }
11371134 else if (showNotColorizedFrames || dumpNotColorizedFrames)
@@ -1245,12 +1242,13 @@ void DMD::QueueSerumFrames(Update* dmdUpdate, bool render32, bool render64)
12451242
12461243 if (render64)
12471244 {
1248- // We can't reuse the shared pointer from above.
1245+ // We can't reuse the shared pointer from above because it might have been sent already .
12491246 auto serumUpdateHD = std::make_shared<Update>();
12501247 serumUpdateHD->hasData = true ;
12511248 serumUpdateHD->hasSegData = false ;
12521249 serumUpdateHD->hasSegData2 = false ;
12531250 serumUpdateHD->mode = Mode::SerumV2_64_32;
1251+ serumUpdateHD->depth = 24 ;
12541252 serumUpdateHD->width = m_pSerum->width64 ;
12551253 serumUpdateHD->height = 64 ;
12561254 memcpy (serumUpdateHD->segData , m_pSerum->frame64 , m_pSerum->width64 * 64 * sizeof (uint16_t ));
0 commit comments