Skip to content

RDKEMW-5395 : CC skip in xumo play - #35

Open
anaswaragk wants to merge 4 commits into
developfrom
topic/RDKEMW-5395
Open

RDKEMW-5395 : CC skip in xumo play#35
anaswaragk wants to merge 4 commits into
developfrom
topic/RDKEMW-5395

Conversation

@anaswaragk

Copy link
Copy Markdown
Contributor

Reason for change: Redefine window on timeout and update screen on getting clear command even when window is not visible. Test Procedure: Launch xumo play and check CC in assets in xumo originals Risks: Medium
Signed-off-by:Anaswara KookkalAnaswara_Kookkal@comcast.com

Reason for change: Redefine window on timeout and update screen on getting clear command even when window is not visible.
Test Procedure: Launch xumo play and check CC in assets in xumo originals
Risks: Medium
Signed-off-by:Anaswara KookkalAnaswara_Kookkal@comcast.com
@anaswaragk
anaswaragk requested a review from a team as a code owner July 8, 2025 11:02
@anaswaragk
anaswaragk requested a review from a team July 8, 2025 11:02
Copilot AI review requested due to automatic review settings February 11, 2026 06:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses Closed Captions (CEA-608) “skip” behavior in Xumo Play by improving how the system recovers after a caption window timeout and by attempting to refresh the rendered output when window visibility changes.

Changes:

  • Update WindowController::drawWindows() to trigger a clear/update when a window’s visibility-change flag is set even if the window isn’t marked changed().
  • In CommandParser::process608CaptionControl(), reset the 608 caption state to CaptionState_Idle when the WindowController reports a timeout, so subsequent control processing can re-define windows.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
subttxrend-cc/src/CcWindowController.cpp Adds an extra visibility-change handling branch in the draw decision loop.
subttxrend-cc/src/CcCommand608Parser.cpp Forces 608 caption state to Idle on timeout before processing the next caption control.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 1328 to +1332
bool windowTimedout = m_proc->isWindowTimedout();
if(windowTimedout)
m_608CaptionState = CaptionState_Idle;

uint32_t last608CaptionState = m_608CaptionState;

Copilot AI Feb 11, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change alters timeout recovery behavior but there is no corresponding automated test coverage to prevent regressions (the repo has existing CC 608 L2 tests under test/TEST_10xx_CC_608_*). Please add a test case that triggers a caption window timeout and then verifies captions resume correctly after the next 608 control sequence (and that clear/erase commands don’t leave stale captions when the window was not visible).

Copilot uses AI. Check for mistakes.
Comment on lines +127 to +131
else if(window && window->windowVisibilityChanged())
{
clearAndUpdate = true;
window->draw();
}

Copilot AI Feb 11, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The newly added else if (window && window->windowVisibilityChanged()) branch appears to be unreachable with the current Window implementation: m_visibilityChanged is only set in show()/hide()/toggle(), which also sets m_changed = true, and draw() resets both flags. This duplicates the earlier window->changed() block and adds extra complexity. Consider removing this branch, or (if the intent is to react to a non-visibility change like clear() while hidden) gate on the appropriate flag/condition instead of windowVisibilityChanged().

Copilot uses AI. Check for mistakes.
Comment on lines +1329 to +1330
if(windowTimedout)
m_608CaptionState = CaptionState_Idle;

Copilot AI Feb 11, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When windowTimedout is true you reset m_608CaptionState to CaptionState_Idle, but the 608 parser's other state (e.g., windowInfo[*].assignedRow and m_608Windowlist) is not reset here. After a WindowController timeout/reset, those can be stale and are used by define608Window() to decide whether to displayWindows(), which can lead to incorrect window visibility/row assignment after redefining windows. Consider resetting the window tracking state on timeout (similar to the windowInfo/m_608Windowlist reset logic in reset608CaptionState()) so the parser and WindowController are synchronized after a timeout.

Suggested change
if(windowTimedout)
m_608CaptionState = CaptionState_Idle;
if (windowTimedout)
{
// Fully reset 608 caption state (including window tracking) so the
// parser stays synchronized with the WindowController after timeout.
reset608CaptionState();
}

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants