git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
experimental scaling for pixmaps, requires more work (surface is likely not an accel...
[enigma2.git]
/
lib
/
dvb
/
subtitle.cpp
diff --git
a/lib/dvb/subtitle.cpp
b/lib/dvb/subtitle.cpp
index 7ae49db5f1f91fa31ac627a60f57b221b9a40a50..642327bb0e522d5c1275767b3f91a0eef37f5103 100644
(file)
--- a/
lib/dvb/subtitle.cpp
+++ b/
lib/dvb/subtitle.cpp
@@
-345,6
+345,8
@@
int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment)
}
}
}
}
+ page->state = page_state;
+
//eDebug("page updated: old: %d, new: %d", page->page_version_number, page_version_number);
// when acquisition point or mode change: remove all displayed pages.
if ((page_state == 1) || (page_state == 2))
//eDebug("page updated: old: %d, new: %d", page->page_version_number, page_version_number);
// when acquisition point or mode change: remove all displayed pages.
if ((page_state == 1) || (page_state == 2))
@@
-360,6
+362,13
@@
int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment)
{
subtitle_region *p = page->regions->next;
//eDebug("delete region %d", page->regions->region_id);
{
subtitle_region *p = page->regions->next;
//eDebug("delete region %d", page->regions->region_id);
+ while(page->regions->region_objects)
+ {
+ //eDebug("delete region object");
+ subtitle_region_object *ob = page->regions->region_objects->next;
+ delete page->regions->region_objects;
+ page->regions->region_objects = ob;
+ }
delete page->regions;
page->regions = p;
}
delete page->regions;
page->regions = p;
}
@@
-451,6
+460,7
@@
int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment)
else if (region->region_version_number != region_version_number)
{
subtitle_region_object *objects = region->region_objects;
else if (region->region_version_number != region_version_number)
{
subtitle_region_object *objects = region->region_objects;
+ //eDebug("unequal version %p %p", objects, objects?objects->next:objects);
while (objects)
{
subtitle_region_object *n = objects->next;
while (objects)
{
subtitle_region_object *n = objects->next;
@@
-796,7
+806,8
@@
void eDVBSubtitleParser::subtitle_redraw_all()
subtitle_page *page = m_pages;
while(page)
{
subtitle_page *page = m_pages;
while(page)
{
- subtitle_redraw(page->page_id);
+ if (page->state != 0)
+ subtitle_redraw(page->page_id);
page = page->next;
}
#else
page = page->next;
}
#else