RESULT eServiceDVD::enableSubtitles(iSubtitleUser *user, SubtitleTrack &track) { eSize size = eSize(720, 576); if (m_subtitle_widget) m_subtitle_widget->destroy(); m_subtitle_widget = user; int pid = -1; if (track.pid >= 0) { pid = track.pid - 1; ddvd_set_spu(m_ddvdconfig, pid); m_event(this, evUser+7); } eDebug("[eServiceDVD] enableSubtitles %i", pid); if (!m_pixmap) { m_pixmap = new gPixmap(size, 32, 1); /* allocate accel surface (if possible) */ #ifdef DDVD_SUPPORTS_GET_BLIT_DESTINATION ddvd_set_lfb_ex(m_ddvdconfig, (unsigned char *)m_pixmap->surface->data, size.width(), size.height(), 4, size.width()*4, 1); #else ddvd_set_lfb(m_ddvdconfig, (unsigned char *)m_pixmap->surface->data, size.width(), size.height(), 4, size.width()*4); #warning please update libdreamdvd for fast scaling #endif run(); // start the thread } return 0; }
RESULT eServiceDVD::enableSubtitles(eWidget *parent, ePyObject tuple) { delete m_subtitle_widget; eSize size = eSize(720, 576); m_subtitle_widget = new eSubtitleWidget(parent); m_subtitle_widget->resize(parent->size()); int pid = -1; if ( tuple != Py_None ) { ePyObject entry; int tuplesize = PyTuple_Size(tuple); if (!PyTuple_Check(tuple)) goto error_out; if (tuplesize < 1) goto error_out; entry = PyTuple_GET_ITEM(tuple, 1); if (!PyInt_Check(entry)) goto error_out; pid = PyInt_AsLong(entry)-1; ddvd_set_spu(m_ddvdconfig, pid); m_event(this, evUser+7); } eDebug("eServiceDVD::enableSubtitles %i", pid); if (!m_pixmap) { m_pixmap = new gPixmap(size, 32, 1); /* allocate accel surface (if possible) */ #ifdef DDVD_SUPPORTS_GET_BLIT_DESTINATION ddvd_set_lfb_ex(m_ddvdconfig, (unsigned char *)m_pixmap->surface->data, size.width(), size.height(), 4, size.width()*4, 1); #else ddvd_set_lfb(m_ddvdconfig, (unsigned char *)m_pixmap->surface->data, size.width(), size.height(), 4, size.width()*4); #warning please update libdreamdvd for fast scaling #endif run(); // start the thread } m_subtitle_widget->setZPosition(-1); m_subtitle_widget->show(); return 0; error_out: return -1; }