Skip to content

Commit a6977ca

Browse files
committed
improved 32 vs 64
1 parent 71328d6 commit a6977ca

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

include/DMDUtil/SceneGenerator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class DMDUTILAPI SceneGenerator
4444
int& repeat, int& endFrame) const;
4545
bool generateFrame(int sceneId, int frameIndex, uint8_t* buffer, int group = -1);
4646
void setDepth(int depth);
47+
int getDepth() const { return m_depth; }
4748
void Reset()
4849
{
4950
m_sceneData.clear();

src/DMD.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)