diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-10-27 15:59:14 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-10-27 15:59:14 +0000 |
| commit | 5269c92e934374c44e770bfc2831a7164d3fefca (patch) | |
| tree | d2a6dd5c0c8b653b22bfe37f00df2f042243f09c /lib/gui/esubtitle.cpp | |
| parent | f1ba8813bfe7a7ceedbf9175126264158ed85409 (diff) | |
| download | enigma2-5269c92e934374c44e770bfc2831a7164d3fefca.tar.gz enigma2-5269c92e934374c44e770bfc2831a7164d3fefca.zip | |
fix subtitle clipping
add 5 seconds hide timeout for dvb subtitles
Diffstat (limited to 'lib/gui/esubtitle.cpp')
| -rw-r--r-- | lib/gui/esubtitle.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/gui/esubtitle.cpp b/lib/gui/esubtitle.cpp index 7e472b36..af96ef8c 100644 --- a/lib/gui/esubtitle.cpp +++ b/lib/gui/esubtitle.cpp @@ -10,32 +10,41 @@ */ eSubtitleWidget::eSubtitleWidget(eWidget *parent) - : eWidget(parent) + : eWidget(parent), m_hide_subtitles_timer(eApp) { setBackgroundColor(gRGB(0,0,0,255)); m_page_ok = 0; m_dvb_page_ok = 0; + CONNECT(m_hide_subtitles_timer.timeout, eSubtitleWidget::clearPage); } void eSubtitleWidget::setPage(const eDVBTeletextSubtitlePage &p) { m_page = p; m_page_ok = 1; - invalidate(); + m_hide_subtitles_timer.start(5000, true); + invalidate(); // FIXME } void eSubtitleWidget::setPage(const eDVBSubtitlePage &p) { m_dvb_page = p; + invalidate(m_visible_region); // invalidate old visible regions + m_visible_region.rects.clear(); + for (std::list<eDVBSubtitleRegion>::iterator it(m_dvb_page.m_regions.begin()); it != m_dvb_page.m_regions.end(); ++it) + m_visible_region.rects.push_back(eRect(it->m_position, it->m_pixmap->size())); m_dvb_page_ok = 1; - invalidate(); + m_hide_subtitles_timer.start(5000, true); + invalidate(m_visible_region); // invalidate new regions } void eSubtitleWidget::clearPage() { + eDebug("subtitle timeout... hide"); m_page_ok = 0; m_dvb_page_ok = 0; - invalidate(); + invalidate(m_visible_region); + m_visible_region.rects.clear(); } int eSubtitleWidget::event(int event, void *data, void *data2) @@ -70,7 +79,6 @@ int eSubtitleWidget::event(int event, void *data, void *data2) } else if (m_dvb_page_ok) { - painter.setOffset(ePoint(0,0)); for (std::list<eDVBSubtitleRegion>::iterator it(m_dvb_page.m_regions.begin()); it != m_dvb_page.m_regions.end(); ++it) painter.blit(it->m_pixmap, it->m_position); } |
