bool VideoOutputVDPAU::Init(int width, int height, float aspect, WId winid, const QRect &win_rect, MythCodecID codec_id) { // Attempt to free up as much video memory as possible // only works when using the VDPAU painter for the UI MythPainter *painter = GetMythPainter(); if (painter) painter->FreeResources(); m_win = winid; QMutexLocker locker(&m_lock); window.SetNeedRepaint(true); bool ok = VideoOutput::Init(width, height, aspect, winid, win_rect,codec_id); if (db_vdisp_profile) db_vdisp_profile->SetVideoRenderer("vdpau"); InitDisplayMeasurements(width, height, true); ParseOptions(); if (ok) ok = InitRender(); if (ok) ok = InitBuffers(); if (!ok) { TearDown(); return ok; } InitPictureAttributes(); MoveResize(); LOG(VB_PLAYBACK, LOG_INFO, LOC + QString("Created VDPAU context (%1 decode)") .arg(codec_is_std(video_codec_id) ? "software" : "GPU")); return ok; }
SlideSettings::SlideSettings() : VerticalConfigurationGroup() { setLabel(tr("Slideshow")); HostComboBox *tranBox = new HostComboBox("GalleryTransitionType"); tranBox->setLabel(tr("Transition")); tranBox->setHelpText(tr("Effect to use between slides")); // Initialise selected transition TransitionRegistry availableTransitions(GetMythPainter()->SupportsAnimation()); TransitionMap transitions = availableTransitions.GetAll(); QMapIterator<int, Transition*> i(transitions); while (i.hasNext()) { i.next(); tranBox->addSelection(i.value()->objectName(), QString::number(i.key())); } addChild(tranBox); HostSpinBox *slide = new HostSpinBox("GallerySlideShowTime", 100, 60000, 100); slide->setLabel(tr("Slide Duration (ms)")); slide->setHelpText(tr("The time that a slide is displayed (between transitions), " "in milliseconds.")); addChild(slide); HostSpinBox *transition = new HostSpinBox("GalleryTransitionTime", 100, 60000, 100); transition->setLabel(tr("Transition Duration (ms)")); transition->setHelpText(tr("The time that each transition lasts, in milliseconds.")); addChild(transition); }
void ZMEvents::eventVisible(MythUIButtonListItem *item) { if (!item) return; if (item->HasImage()) return; Event *event = qVariantValue<Event*> (item->GetData()); if (event) { QImage image; if (ZMClient *zm = ZMClient::get()) { zm->getAnalyseFrame(event, 0, image); if (!image.isNull()) { MythImage *mimage = GetMythPainter()->GetFormatImage(); mimage->Assign(image); item->SetImage(mimage); mimage->SetChanged(); mimage->DecrRef(); } } } }
MythPainter* MythScreenType::GetPainter(void) { if (m_Painter) return m_Painter; if (m_ScreenStack) return m_ScreenStack->GetPainter(); return GetMythPainter(); }
MythPainter* MythUIType::GetPainter(void) { if (m_Painter) return m_Painter; if (m_Parent) return m_Parent->GetPainter(); return GetMythPainter(); }
void ZMEvents::eventChanged(MythUIButtonListItem *item) { (void) item; if (m_eventNoText) { if (m_eventGrid->GetCount() > 0) m_eventNoText->SetText(QString("%1/%2") .arg(m_eventGrid->GetCurrentPos() + 1).arg(m_eventGrid->GetCount())); else m_eventNoText->SetText("0/0"); } // update the images for all the visible items for (int x = m_eventGrid->GetCurrentPos() - m_eventGrid->GetVisibleCount(); x < m_eventGrid->GetCurrentPos() + (int)m_eventGrid->GetVisibleCount(); x++) { if (x < 0 || x > (int)m_eventGrid->GetCount() - 1) continue; MythUIButtonListItem *gridItem = m_eventGrid->GetItemAt(x); if (gridItem && !gridItem->getImage()) { if (x < 0 || x > (int)m_eventList->size() - 1) continue; Event *event = m_eventList->at(x); if (event) { QImage image; if (class ZMClient *zm = ZMClient::get()) { zm->getAnalyseFrame(event->monitorID, event->eventID, 0, image); if (!image.isNull()) { MythImage *mimage = GetMythPainter()->GetFormatImage(); mimage->Assign(image); gridItem->setImage(mimage); mimage->SetChanged(); } } } } } }
/** * \brief Constructor * \param parent The screen parent * \param name The name of the screen */ GallerySlideView::GallerySlideView(MythScreenStack *parent, const char *name, bool editsAllowed) : MythScreenType(parent, name), m_uiImage(NULL), m_uiStatus(NULL), m_uiSlideCount(NULL), m_uiCaptionText(NULL), m_uiHideCaptions(NULL), m_mgr(ImageManagerFe::getInstance()), m_view(NULL), m_availableTransitions(GetMythPainter()->SupportsAnimation()), m_transition(m_availableTransitions.Select( gCoreContext->GetNumSetting("GalleryTransitionType", kBlendTransition))), m_updateTransition(), m_slides(), m_infoList(*this), m_slideShowTime(gCoreContext->GetNumSetting("GallerySlideShowTime", 3000)), m_playing(false), m_suspended(false), m_showCaptions(gCoreContext->GetNumSetting("GalleryShowSlideCaptions", true)), m_transitioning(false), m_editsAllowed(editsAllowed) { // Detect when transitions finish. Queued signal to allow redraw/pulse to // complete before handling event. connect(&m_transition, SIGNAL(finished()), this, SLOT(TransitionComplete()), Qt::QueuedConnection); connect(&m_updateTransition, SIGNAL(finished()), this, SLOT(TransitionComplete()), Qt::QueuedConnection); // Seed random generator for random transitions qsrand(QTime::currentTime().msec()); // Initialise slideshow timer m_timer.setSingleShot(true); m_timer.setInterval(m_slideShowTime); connect(&m_timer, SIGNAL(timeout()), this, SLOT(ShowNextSlide())); }
MythPainter* MythScreenStack::GetPainter(void) { return GetMythPainter(); }