本文整理汇总了C++中MythMainWindow类的典型用法代码示例。如果您正苦于以下问题:C++ MythMainWindow类的具体用法?C++ MythMainWindow怎么用?C++ MythMainWindow使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MythMainWindow类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetMythMainWindow
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: main
int main(int argc, char **argv)
{
MythScreenWizardCommandLineParser cmdline;
if (!cmdline.Parse(argc, argv))
{
cmdline.PrintHelp();
return GENERIC_EXIT_INVALID_CMDLINE;
}
if (cmdline.toBool("showhelp"))
{
cmdline.PrintHelp();
return GENERIC_EXIT_OK;
}
if (cmdline.toBool("showversion"))
{
cmdline.PrintVersion();
return GENERIC_EXIT_OK;
}
#ifdef Q_OS_MAC
// Without this, we can't set focus to any of the CheckBoxSetting, and most
// of the MythPushButton widgets, and they don't use the themed background.
QApplication::setDesktopSettingsAware(false);
#endif
new QApplication(argc, argv);
QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHSCREENWIZARD);
int retval;
QString mask("general");
if ((retval = cmdline.ConfigureLogging(mask, false)) != GENERIC_EXIT_OK)
return retval;
CleanupGuard callCleanup(cleanup);
#ifndef _WIN32
QList<int> signallist;
signallist << SIGINT << SIGTERM << SIGSEGV << SIGABRT << SIGBUS << SIGFPE
<< SIGILL;
#if ! CONFIG_DARWIN
signallist << SIGRTMIN;
#endif
SignalHandler::Init(signallist);
signal(SIGHUP, SIG_IGN);
#endif
if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK)
return retval;
if (!cmdline.toString("display").isEmpty())
{
MythUIHelper::SetX11Display(cmdline.toString("display"));
}
gContext = new MythContext(MYTH_BINARY_VERSION);
if (!gContext->Init(true, false, true))
{
LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to init MythContext, exiting.");
return GENERIC_EXIT_NO_MYTHCONTEXT;
}
if (gCoreContext->GetNumSetting("RunFrontendInWindow"))
{
LOG(VB_GENERAL, LOG_WARNING, LOC +
"Refusing to run screen setup wizard in windowed mode.");
return GENERIC_EXIT_NOT_OK;
}
int GuiOffsetX = gCoreContext->GetNumSetting("GuiOffsetX", 0);
int GuiOffsetY = gCoreContext->GetNumSetting("GuiOffsetY", 0);
int GuiWidth = gCoreContext->GetNumSetting("GuiWidth", 0);
int GuiHeight = gCoreContext->GetNumSetting("GuiHeight", 0);
gCoreContext->OverrideSettingForSession("GuiOffsetX", "0");
gCoreContext->OverrideSettingForSession("GuiOffsetY", "0");
gCoreContext->OverrideSettingForSession("GuiWidth", "0");
gCoreContext->OverrideSettingForSession("GuiHeight", "0");
cmdline.ApplySettingsOverride();
GetMythUI()->LoadQtConfig();
QString themename = gCoreContext->GetSetting("Theme", DEFAULT_UI_THEME);
QString themedir = GetMythUI()->FindThemeDir(themename);
if (themedir.isEmpty())
{
LOG(VB_GENERAL, LOG_ERR, QString("Couldn't find theme '%1'")
.arg(themename));
return GENERIC_EXIT_NO_THEME;
}
MythMainWindow *mainWindow = GetMythMainWindow();
#if CONFIG_DARWIN
mainWindow->Init(OPENGL2_PAINTER);
#else
mainWindow->Init();
#endif
//.........这里部分代码省略.........
示例3: main
int main(int argc, char *argv[])
{
MythAVTestCommandLineParser cmdline;
if (!cmdline.Parse(argc, argv))
{
cmdline.PrintHelp();
return GENERIC_EXIT_INVALID_CMDLINE;
}
if (cmdline.toBool("showhelp"))
{
cmdline.PrintHelp();
return GENERIC_EXIT_OK;
}
if (cmdline.toBool("showversion"))
{
cmdline.PrintVersion();
return GENERIC_EXIT_OK;
}
QApplication a(argc, argv);
QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHAVTEST);
int retval;
if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK)
return retval;
if (!cmdline.toString("display").isEmpty())
{
MythUIHelper::SetX11Display(cmdline.toString("display"));
}
if (!cmdline.toString("geometry").isEmpty())
{
MythUIHelper::ParseGeometryOverride(cmdline.toString("geometry"));
}
QString filename = "";
if (!cmdline.toString("infile").isEmpty())
filename = cmdline.toString("infile");
else if (cmdline.GetArgs().size() >= 1)
filename = cmdline.GetArgs()[0];
gContext = new MythContext(MYTH_BINARY_VERSION);
if (!gContext->Init())
{
LOG(VB_GENERAL, LOG_ERR, "Failed to init MythContext, exiting.");
return GENERIC_EXIT_NO_MYTHCONTEXT;
}
cmdline.ApplySettingsOverride();
setuid(getuid());
QString themename = gCoreContext->GetSetting("Theme");
QString themedir = GetMythUI()->FindThemeDir(themename);
if (themedir.isEmpty())
{
QString msg = QString("Fatal Error: Couldn't find theme '%1'.")
.arg(themename);
LOG(VB_GENERAL, LOG_ERR, msg);
return GENERIC_EXIT_NO_THEME;
}
GetMythUI()->LoadQtConfig();
#if defined(Q_OS_MACX)
// Mac OS X doesn't define the AudioOutputDevice setting
#else
QString auddevice = gCoreContext->GetSetting("AudioOutputDevice");
if (auddevice.isEmpty())
{
LOG(VB_GENERAL, LOG_ERR, "Fatal Error: Audio not configured, you need "
"to run 'mythfrontend', not 'mythtv'.");
return GENERIC_EXIT_SETUP_ERROR;
}
#endif
MythMainWindow *mainWindow = GetMythMainWindow();
mainWindow->Init();
if (cmdline.toBool("test"))
{
int seconds = 5;
if (!cmdline.toString("seconds").isEmpty())
seconds = cmdline.toInt("seconds");
VideoPerformanceTest *test = new VideoPerformanceTest(filename, false,
cmdline.toBool("decodeonly"), seconds,
cmdline.toBool("deinterlace"));
test->Test();
delete test;
}
else
{
TV::InitKeys();
if (!UpgradeTVDatabaseSchema(false))
{
LOG(VB_GENERAL, LOG_ERR, "Fatal Error: Incorrect database schema.");
//.........这里部分代码省略.........
示例4: main
int main(int argc, char **argv)
{
bool bShowSettings = false;
MythWelcomeCommandLineParser cmdline;
if (!cmdline.Parse(argc, argv))
{
cmdline.PrintHelp();
return GENERIC_EXIT_INVALID_CMDLINE;
}
if (cmdline.toBool("showhelp"))
{
cmdline.PrintHelp();
return GENERIC_EXIT_OK;
}
if (cmdline.toBool("showversion"))
{
cmdline.PrintVersion();
return GENERIC_EXIT_OK;
}
QApplication a(argc, argv);
QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHWELCOME);
int retval;
if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK)
return retval;
if (cmdline.toBool("setup"))
bShowSettings = true;
#ifndef _WIN32
QList<int> signallist;
signallist << SIGINT << SIGTERM << SIGSEGV << SIGABRT << SIGBUS << SIGFPE
<< SIGILL;
SignalHandler handler(signallist);
signal(SIGHUP, SIG_IGN);
#endif
gContext = new MythContext(MYTH_BINARY_VERSION);
if (!gContext->Init())
{
LOG(VB_GENERAL, LOG_ERR,
"mythwelcome: Could not initialize MythContext. Exiting.");
return GENERIC_EXIT_NO_MYTHCONTEXT;
}
if (!MSqlQuery::testDBConnection())
{
LOG(VB_GENERAL, LOG_ERR,
"mythwelcome: Could not open the database. Exiting.");
return -1;
}
LCD::SetupLCD();
if (LCD *lcd = LCD::Get())
lcd->switchToTime();
MythTranslation::load("mythfrontend");
GetMythUI()->LoadQtConfig();
MythMainWindow *mainWindow = GetMythMainWindow();
mainWindow->Init();
initKeys();
if (bShowSettings)
{
MythShutdownSettings settings;
settings.exec();
}
else
{
MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
WelcomeDialog *welcome = new WelcomeDialog(mainStack, "mythwelcome");
if (welcome->Create())
mainStack->AddScreen(welcome, false);
else
return -1;
do
{
qApp->processEvents();
usleep(5000);
} while (mainStack->TotalScreens() > 0);
}
DestroyMythMainWindow();
delete gContext;
return 0;
}
示例5: GetMythMainWindow
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();
}
}
}
示例6: ctx_lock
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);
}
//.........这里部分代码省略.........
示例7: Create
bool Create(void)
{
m_x_disp = OpenMythXDisplay();
if (!m_x_disp)
return false;
MythXLocker locker(m_x_disp);
if (m_va_disp_type == kVADisplayGLX)
{
MythMainWindow *mw = GetMythMainWindow();
if (!mw)
return false;
MythRenderOpenGL *gl =
static_cast<MythRenderOpenGL*>(mw->GetRenderDevice());
if (!gl)
{
LOG(VB_PLAYBACK, LOG_ERR, LOC +
QString("Failed to get OpenGL context - you must use the "
"OpenGL UI painter for VAAPI GLX support."));
return false;
}
gl->makeCurrent();
Display *display = glXGetCurrentDisplay();
gl->doneCurrent();
m_va_disp = vaGetDisplayGLX(display);
}
else
{
m_va_disp = vaGetDisplay(m_x_disp->GetDisplay());
}
if (!m_va_disp)
{
LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to create VADisplay");
return false;
}
int major_ver, minor_ver;
INIT_ST;
va_status = vaInitialize(m_va_disp, &major_ver, &minor_ver);
CHECK_ST;
if (ok)
m_driver = vaQueryVendorString(m_va_disp);
static bool debugged = false;
if (ok && !debugged)
{
debugged = true;
LOG(VB_GENERAL, LOG_INFO, LOC + QString("Version: %1.%2")
.arg(major_ver).arg(minor_ver));
LOG(VB_GENERAL, LOG_INFO, LOC + QString("Driver : %1").arg(m_driver));
}
if (ok)
{
LOG(VB_PLAYBACK, LOG_INFO, LOC +
QString("Created VAAPI %1 display")
.arg(m_va_disp_type == kVADisplayGLX ? "GLX" : "X11"));
}
return ok;
}
示例8: main
//.........这里部分代码省略.........
{
MythUIHelper::ParseGeometryOverride(cmdline.GetGeometry());
}
gContext = new MythContext(MYTH_BINARY_VERSION);
if (!gContext->Init())
{
VERBOSE(VB_IMPORTANT, "Failed to init MythContext, exiting.");
return GENERIC_EXIT_NO_MYTHCONTEXT;
}
gCoreContext->SetAppName(binname);
QMap<QString, QString> settingsOverride = cmdline.GetSettingsOverride();
if (settingsOverride.size())
{
QMap<QString, QString>::iterator it;
for (it = settingsOverride.begin(); it != settingsOverride.end(); ++it)
{
VERBOSE(VB_IMPORTANT, QString("Setting '%1' being forced to '%2'")
.arg(it.key()).arg(*it));
gCoreContext->OverrideSettingForSession(it.key(), *it);
}
}
// Create priveledged thread, then drop privs
pthread_t priv_thread;
bool priv_thread_created = true;
int status = pthread_create(&priv_thread, NULL, run_priv_thread, NULL);
if (status)
{
VERBOSE(VB_IMPORTANT, QString("Warning: ") +
"Failed to create priveledged thread." + ENO);
priv_thread_created = false;
}
setuid(getuid());
QString themename = gCoreContext->GetSetting("Theme");
QString themedir = GetMythUI()->FindThemeDir(themename);
if (themedir.isEmpty())
{
QString msg = QString("Fatal Error: Couldn't find theme '%1'.")
.arg(themename);
VERBOSE(VB_IMPORTANT, msg);
return GENERIC_EXIT_NO_THEME;
}
GetMythUI()->LoadQtConfig();
#if defined(Q_OS_MACX)
// Mac OS X doesn't define the AudioOutputDevice setting
#else
QString auddevice = gCoreContext->GetSetting("AudioOutputDevice");
if (auddevice.isEmpty())
{
VERBOSE(VB_IMPORTANT, "Fatal Error: Audio not configured, you need "
"to run 'mythfrontend', not 'mythtv'.");
return GENERIC_EXIT_SETUP_ERROR;
}
#endif
MythMainWindow *mainWindow = GetMythMainWindow();
mainWindow->Init();
TV::InitKeys();
if (!UpgradeTVDatabaseSchema(false))
{
VERBOSE(VB_IMPORTANT, "Fatal Error: Incorrect database schema.");
delete gContext;
return GENERIC_EXIT_DB_OUTOFDATE;
}
TV *tv = new TV();
if (!tv->Init())
{
VERBOSE(VB_IMPORTANT, "Fatal Error: Could not initialize TV class.");
return GENERIC_EXIT_NOT_OK;
}
if (filename.isEmpty())
{
TV::StartTV(NULL, kStartTVNoFlags);
}
else
{
ProgramInfo pginfo(filename);
TV::StartTV(&pginfo, kStartTVNoFlags);
}
if (priv_thread_created)
{
gCoreContext->addPrivRequest(MythPrivRequest::MythExit, NULL);
pthread_join(priv_thread, NULL);
}
delete gContext;
return GENERIC_EXIT_OK;
}
示例9: main
//.........这里部分代码省略.........
}
else
{
++argpos;
}
}
else
{
cerr << "Missing argument to -l/--logfile option\n";
return GENERIC_EXIT_INVALID_CMDLINE;
}
}
else if (cmdline.Parse(a.argc(), a.argv(), argpos, cmdline_err))
{
if (cmdline_err)
return GENERIC_EXIT_INVALID_CMDLINE;
if (cmdline.WantsToExit())
return GENERIC_EXIT_OK;
}
else
{
showUsage(cmdline);
return GENERIC_EXIT_INVALID_CMDLINE;
}
}
gContext = new MythContext(MYTH_BINARY_VERSION);
if (!gContext->Init())
{
VERBOSE(VB_IMPORTANT, "mythwelcome: Could not initialize MythContext. "
"Exiting.");
return GENERIC_EXIT_NO_MYTHCONTEXT;
}
gCoreContext->SetAppName(binname);
if (!MSqlQuery::testDBConnection())
{
VERBOSE(VB_IMPORTANT, "mythwelcome: Could not open the database. "
"Exiting.");
return -1;
}
if (!logfile.isEmpty())
{
if (!log_rotate(true))
cerr << "cannot open logfile; using stdout/stderr" << endl;
else
signal(SIGHUP, &log_rotate_handler);
}
LCD::SetupLCD();
if (LCD *lcd = LCD::Get())
lcd->switchToTime();
MythTranslation::load("mythfrontend");
GetMythUI()->LoadQtConfig();
#ifdef Q_WS_MACX
// Mac OS 10.4 and Qt 4.4 have window-focus problems
gCoreContext->SetSetting("RunFrontendInWindow", "1");
#endif
MythMainWindow *mainWindow = GetMythMainWindow();
mainWindow->Init();
initKeys();
if (bShowSettings)
{
MythShutdownSettings settings;
settings.exec();
}
else
{
MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
WelcomeDialog *welcome = new WelcomeDialog(mainStack, "mythwelcome");
if (welcome->Create())
mainStack->AddScreen(welcome, false);
else
return -1;
do
{
qApp->processEvents();
usleep(5000);
} while (mainStack->TotalScreens() > 0);
}
DestroyMythMainWindow();
delete gContext;
return 0;
}
示例10: main
//.........这里部分代码省略.........
setuid(getuid());
VERBOSE(VB_IMPORTANT,
QString("Enabled verbose msgs: %1").arg(verboseString));
LCD::SetupLCD();
if (LCD *lcd = LCD::Get())
lcd->setupLEDs(RemoteGetRecordingMask);
MythTranslation::load("mythfrontend");
QString themename = gCoreContext->GetSetting("Theme", DEFAULT_UI_THEME);
QString themedir = GetMythUI()->FindThemeDir(themename);
if (themedir.isEmpty())
{
VERBOSE(VB_IMPORTANT, QString("Couldn't find theme '%1'")
.arg(themename));
return GENERIC_EXIT_NO_THEME;
}
GetMythUI()->LoadQtConfig();
themename = gCoreContext->GetSetting("Theme", DEFAULT_UI_THEME);
themedir = GetMythUI()->FindThemeDir(themename);
if (themedir.isEmpty())
{
VERBOSE(VB_IMPORTANT, QString("Couldn't find theme '%1'")
.arg(themename));
return GENERIC_EXIT_NO_THEME;
}
MythMainWindow *mainWindow = GetMythMainWindow();
mainWindow->Init();
mainWindow->setWindowTitle(QObject::tr("MythTV Frontend"));
// We must reload the translation after a language change and this
// also means clearing the cached/loaded theme strings, so reload the
// theme which also triggers a translation reload
if (LanguageSelection::prompt())
{
if (!reloadTheme())
return GENERIC_EXIT_NO_THEME;
}
if (!UpgradeTVDatabaseSchema(upgradeAllowed))
{
VERBOSE(VB_IMPORTANT,
"Couldn't upgrade database to new schema, exiting.");
return GENERIC_EXIT_DB_OUTOFDATE;
}
WriteDefaults();
// Refresh Global/Main Menu keys after DB update in case there was no DB
// when they were written originally
mainWindow->ResetKeys();
InitJumpPoints();
internal_media_init();
CleanupMyOldInUsePrograms();
pmanager = new MythPluginManager();
示例11: ctx_lock
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();
MythMainWindow *mwnd = GetMythMainWindow();
if (gl_context->IsShared() && mwnd && window.IsEmbedding())
{
if (mwnd->GetPaintWindow())
mwnd->GetPaintWindow()->setMask(QRegion());
mwnd->draw();
}
if (gl_videochain)
{
gl_videochain->SetVideoRect(vsz_enabled ? vsz_desired_display_rect :
window.GetDisplayVideoRect(),
window.GetVideoRect());
gl_videochain->PrepareFrame(buffer->top_field_first, t,
m_deinterlacing, framesPlayed);
}
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;
(*it)->PrepareFrame(buffer->top_field_first, t,
m_deinterlacing, framesPlayed, active);
}
}
}
if (m_visual && gl_painter && !window.IsEmbedding())
m_visual->Draw(GetTotalOSDBounds(), gl_painter, NULL);
if (osd && gl_painter && !window.IsEmbedding())
osd->DrawDirect(gl_painter, GetTotalOSDBounds().size(), true);
gl_context->Flush(false);
if (vbuffers.GetScratchFrame() == buffer)
vbuffers.SetLastShownFrameToScratch();
}
示例12: main
//.........这里部分代码省略.........
startChan, freq_std, mod, tbl);
ret = a.exec();
}
return (ret) ? GENERIC_EXIT_NOT_OK : GENERIC_EXIT_OK;
}
if (doScanList)
{
vector<ScanInfo> scans = LoadScanList();
cout<<" scanid cardid sourceid processed date"<<endl;
for (uint i = 0; i < scans.size(); i++)
{
printf("%5i %6i %8i %8s %20s\n",
scans[i].scanid, scans[i].cardid,
scans[i].sourceid, (scans[i].processed) ? "yes" : "no",
scans[i].scandate.toString().toAscii().constData());
}
cout<<endl;
return GENERIC_EXIT_OK;
}
if (scanImport)
{
vector<ScanInfo> scans = LoadScanList();
cout<<"*** SCAN IMPORT START ***"<<endl;
{
ScanDTVTransportList list = LoadScan(scanImport);
ChannelImporter ci(false, true, true, true, false,
scanFTAOnly, scanServiceRequirements);
ci.Process(list);
}
cout<<"*** SCAN IMPORT END ***"<<endl;
return GENERIC_EXIT_OK;
}
MythTranslation::load("mythfrontend");
QString themename = gCoreContext->GetSetting("Theme", DEFAULT_UI_THEME);
QString themedir = GetMythUI()->FindThemeDir(themename);
if (themedir.isEmpty())
{
VERBOSE(VB_IMPORTANT, QString("Couldn't find theme '%1'")
.arg(themename));
return GENERIC_EXIT_NO_THEME;
}
MythMainWindow *mainWindow = GetMythMainWindow();
mainWindow->Init();
mainWindow->setWindowTitle(QObject::tr("MythTV Setup"));
// We must reload the translation after a language change and this
// also means clearing the cached/loaded theme strings, so reload the
// theme which also triggers a translation reload
if (LanguageSelection::prompt())
{
if (!reloadTheme())
return GENERIC_EXIT_NO_THEME;
}
if (!UpgradeTVDatabaseSchema(true))
{
VERBOSE(VB_IMPORTANT, "Couldn't upgrade database to new schema.");
return GENERIC_EXIT_DB_OUTOFDATE;
}
// Refresh Global/Main Menu keys after DB update in case there was no DB
// when they were written originally
mainWindow->ResetKeys();
if (!startPrompt)
startPrompt = new StartPrompter();
startPrompt->handleStart();
// Let the user select buttons, type values, scan for channels, etc.
if (!RunMenu(themedir, themename) && !resetTheme(themedir, themename))
return GENERIC_EXIT_NO_THEME;
ExpertSettingsEditor *expertEditor = NULL;
if (expertMode)
{
MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
expertEditor =
new ExpertSettingsEditor(mainStack, "Expert Settings Editor");
if (expertEditor->Create())
mainStack->AddScreen(expertEditor);
else
{
delete expertEditor;
expertEditor = NULL;
VERBOSE(VB_IMPORTANT, "Unable to create expert settings editor "
"window");
return GENERIC_EXIT_OK;
}
}
qApp->exec();
// Main menu callback to ExitPrompter does CheckSetup(), cleanup and exit.
}