The map copy says whether the canvas went dark
A Live Cam's secondary display carries its name and score at mission start and is black later on. Placement is not the cause - a POD with L4RADARPOS=LEFT fills the same corner properly, track lines, labels, mini-map and all - so the pane and its position are fine and something stops. Three faults wear that one symptom: the per-frame copy stopping, the source gauge canvas going blank underneath it, or the pane not repainting what it was given. The copy now reports, every five seconds, that it ran and how many non-zero pixels the source canvas holds (one row in sixteen sampled, enough to tell blank from not). So: no line at all the copy stopped line, lit falls to ~0 the gauge canvas went blank line, lit stays high the pane is not showing what it was handed Baseline from a pod, whose map demonstrably works: a steady 9900 or so lit pixels every pass, 640x480 source, mask 0xff. Verified before shipping this time, rather than after drawing a conclusion from it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5202,6 +5202,43 @@ Logical SVGA16::Update(Logical forceAll)
|
||||
int src_w = pixelBuffer.Data.Size.x;
|
||||
int src_h = pixelBuffer.Data.Size.y;
|
||||
|
||||
//
|
||||
// RP412CAMLOG. A camera's map showed content at mission
|
||||
// start and then went black, which is three different
|
||||
// faults wearing one symptom: the copy stopping, the
|
||||
// SOURCE canvas going blank, or the pane not repainting.
|
||||
// Counting non-zero source pixels as we pass tells them
|
||||
// apart - a live canvas with a black pane is the third,
|
||||
// a blank canvas is the second, and no line at all is the
|
||||
// first. Every five seconds; the count is a sample of one
|
||||
// row in sixteen, which is plenty to tell blank from not.
|
||||
//
|
||||
if (RPCameraLog())
|
||||
{
|
||||
static Scalar next_copy_say = 0.0f;
|
||||
if ((Scalar) Now() >= next_copy_say)
|
||||
{
|
||||
next_copy_say = ((Scalar) Now()) + 5.0f;
|
||||
|
||||
long lit = 0;
|
||||
for (int sy = 0; sy < src_h; sy += 16)
|
||||
{
|
||||
Word *row = source_base + sy * src_w;
|
||||
for (int sx = 0; sx < src_w; ++sx)
|
||||
{
|
||||
if (row[sx] != 0)
|
||||
{
|
||||
++lit;
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_STREAM << "CamLog: map copy running, source "
|
||||
<< src_w << "x" << src_h << ", " << lit
|
||||
<< " lit pixels sampled, mask 0x" << std::hex
|
||||
<< secMask << std::dec << "\n" << std::flush;
|
||||
}
|
||||
}
|
||||
|
||||
if (Application::IsCameraStation())
|
||||
{
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user