本文整理汇总了C++中MythMainWindow::GetMainStack方法的典型用法代码示例。如果您正苦于以下问题:C++ MythMainWindow::GetMainStack方法的具体用法?C++ MythMainWindow::GetMainStack怎么用?C++ MythMainWindow::GetMainStack使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MythMainWindow
的用法示例。
在下文中一共展示了MythMainWindow::GetMainStack方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PopScreen
void MythScreenStack::PopScreen(MythScreenType *screen, bool allowFade,
bool deleteScreen)
{
if (!screen || screen->IsDeleting())
return;
screen->aboutToHide();
if (m_Children.isEmpty())
return;
MythMainWindow *mainwindow = GetMythMainWindow();
screen->setParent(0);
if ((screen == m_topScreen) && allowFade && m_DoTransitions
&& !mainwindow->IsExitingToMain())
{
screen->SetFullscreen(false);
if (deleteScreen)
{
screen->SetDeleting(true);
m_ToDelete.push_back(screen);
}
screen->AdjustAlpha(1, -kFadeVal);
}
else
{
for (int i = 0; i < m_Children.size(); ++i)
{
if (m_Children.at(i) == screen)
m_Children.remove(i);
}
if (deleteScreen)
delete screen;
screen = NULL;
mainwindow->update();
if (mainwindow->IsExitingToMain())
{
QCoreApplication::postEvent(
mainwindow, new QEvent(MythEvent::kExitToMainMenuEventType));
}
}
m_topScreen = NULL;
RecalculateDrawOrder();
// If we're fading it, we still want to draw it.
if (screen)
m_DrawOrder.push_back(screen);
if (!m_Children.isEmpty())
{
QVector<MythScreenType *>::Iterator it;
for (it = m_DrawOrder.begin(); it != m_DrawOrder.end(); ++it)
{
if (*it != screen && !(*it)->IsDeleting())
{
m_topScreen = (*it);
(*it)->SetAlpha(255);
(*it)->aboutToShow();
}
}
}
if (m_topScreen)
{
m_topScreen->SetRedraw();
if (!allowFade || !m_DoTransitions)
emit topScreenChanged(m_topScreen);
}
else
{
// Screen still needs to be redrawn if we have popped the last screen
// off the popup stack, or similar
MythScreenType *mainscreen = mainwindow->GetMainStack()->GetTopScreen();
if (mainscreen)
mainscreen->SetRedraw();
if (!allowFade || !m_DoTransitions)
emit topScreenChanged(NULL);
}
}
示例2: PrepareFrame
void VideoOutputOpenGL::PrepareFrame(VideoFrame *buffer, FrameScanType t,
OSD *osd)
{
if (!gl_context)
return;
OpenGLLocker ctx_lock(gl_context);
if (!buffer)
{
buffer = vbuffers.GetScratchFrame();
if (m_deinterlacing && !IsBobDeint())
t = kScan_Interlaced;
}
gl_context_lock.lock();
framesPlayed = buffer->frameNumber + 1;
gl_context_lock.unlock();
gl_context->BindFramebuffer(0);
if (db_letterbox_colour == kLetterBoxColour_Gray25)
gl_context->SetBackground(127, 127, 127, 255);
else
gl_context->SetBackground(0, 0, 0, 255);
gl_context->ClearFramebuffer();
// stereoscopic views
QRect main = gl_context->GetViewPort();
QRect first = main;
QRect second = main;
bool twopass = (m_stereo == kStereoscopicModeSideBySide) ||
(m_stereo == kStereoscopicModeTopAndBottom);
if (kStereoscopicModeSideBySide == m_stereo)
{
first = QRect(main.left() / 2, main.top(),
main.width() / 2, main.height());
second = first.translated(main.width() / 2, 0);
}
else if (kStereoscopicModeTopAndBottom == m_stereo)
{
first = QRect(main.left(), main.top() / 2,
main.width(), main.height() / 2);
second = first.translated(0, main.height() / 2);
}
// main UI when embedded
MythMainWindow *mwnd = GetMythMainWindow();
if (mwnd && mwnd->GetPaintWindow() && window.IsEmbedding())
{
if (twopass)
gl_context->SetViewPort(first, true);
mwnd->GetPaintWindow()->clearMask();
// Must force a UI redraw when embedded. If not, when the EPG or
// finder screen is popped up over the video and the user then clicks
// away from Myth, the UI is left blank.
mwnd->GetMainStack()->GetTopScreen()->SetRedraw();
mwnd->draw(gl_painter);
if (twopass)
{
gl_context->SetViewPort(second, true);
mwnd->GetPaintWindow()->clearMask();
mwnd->GetMainStack()->GetTopScreen()->SetRedraw();
mwnd->draw(gl_painter);
gl_context->SetViewPort(main, true);
}
}
// video
if (gl_videochain && !buffer->dummy)
{
gl_videochain->SetVideoRect(vsz_enabled ? vsz_desired_display_rect :
window.GetDisplayVideoRect(),
window.GetVideoRect());
gl_videochain->PrepareFrame(buffer->top_field_first, t,
m_deinterlacing, framesPlayed, m_stereo);
}
// PiPs/PBPs
if (gl_pipchains.size())
{
QMap<MythPlayer*,OpenGLVideo*>::iterator it = gl_pipchains.begin();
for (; it != gl_pipchains.end(); ++it)
{
if (gl_pip_ready[it.key()])
{
bool active = gl_pipchain_active == *it;
if (twopass)
gl_context->SetViewPort(first, true);
(*it)->PrepareFrame(buffer->top_field_first, t,
m_deinterlacing, framesPlayed,
kStereoscopicModeNone, active);
if (twopass)
{
gl_context->SetViewPort(second, true);
(*it)->PrepareFrame(buffer->top_field_first, t,
m_deinterlacing, framesPlayed,
kStereoscopicModeNone, active);
gl_context->SetViewPort(main);
}
//.........这里部分代码省略.........
示例3: PopScreen
void MythNotificationScreenStack::PopScreen(MythScreenType *screen, bool allowFade,
bool deleteScreen)
{
if (!screen || screen->IsDeleting())
return;
bool poppedFullscreen = screen->IsFullscreen();
screen->aboutToHide();
if (m_Children.isEmpty())
return;
MythMainWindow *mainwindow = GetMythMainWindow();
screen->setParent(0);
if (allowFade && m_DoTransitions && !mainwindow->IsExitingToMain())
{
screen->SetFullscreen(false);
if (deleteScreen)
{
screen->SetDeleting(true);
m_ToDelete.push_back(screen);
}
screen->AdjustAlpha(1, -kFadeVal);
}
else
{
for (int i = 0; i < m_Children.size(); ++i)
{
if (m_Children.at(i) == screen)
{
m_Children.remove(i);
break;
}
}
if (deleteScreen)
screen->deleteLater();
screen = NULL;
}
m_topScreen = NULL;
RecalculateDrawOrder();
// If we're fading it, we still want to draw it.
if (screen && !m_DrawOrder.contains(screen))
m_DrawOrder.push_back(screen);
if (!m_Children.isEmpty())
{
QVector<MythScreenType *>::Iterator it;
for (it = m_DrawOrder.begin(); it != m_DrawOrder.end(); ++it)
{
if (*it != screen && !(*it)->IsDeleting())
{
m_topScreen = (*it);
(*it)->SetAlpha(255);
if (poppedFullscreen)
(*it)->aboutToShow();
}
}
}
if (m_topScreen)
{
m_topScreen->SetRedraw();
}
else
{
// Screen still needs to be redrawn if we have popped the last screen
// off the popup stack, or similar
if (mainwindow->GetMainStack())
{
MythScreenType *mainscreen = mainwindow->GetMainStack()->GetTopScreen();
if (mainscreen)
mainscreen->SetRedraw();
}
}
}