In fact i see difference in subtitle.cpp, but not sure that it could be the reason.
In openatv they add at the end of the function
eDVBSubtitleParser::subtitle_process_pes(...) { ... if (!m_seen_eod) subtitle_redraw_all(); }
In
eDVBSubtitleParser::subtitle_process_segment
There is a lot of différence too
in openpli you got:
while (page->page_regions) { subtitle_page_region *p = page->page_regions->next; delete page->page_regions; page->page_regions = p; } page->page_regions=0; // when acquisition point or mode change: remove all displayed regions. if ((page_state == 1) || (page_state == 2))
where as in openatv it's under the if
if ((page_state == 1) || (page_state == 2)) { while (page->page_regions) { subtitle_page_region *p = page->page_regions->next; delete page->page_regions; page->page_regions = p; }
they add a redraw here too:
while (*r) r = &(*r)->next; if (processed_length == segment_length && !page->page_regions) subtitle_redraw(page->page_id); while (processed_length < segment_length)
In openpli (even if it should not change anything) there is a lack of break here:
case DVB_SUB_SEGMENT_END_OF_DISPLAY_SET: { subtitle_redraw_all(); m_seen_eod = true; }
But i do not know if i am on the good file to check.
Edited by linus, 9 November 2024 - 11:59.