diff options
author | Tobias Grimm <etobi@debian.org> | 2015-10-07 19:30:05 +0200 |
---|---|---|
committer | Tobias Grimm <etobi@debian.org> | 2015-10-07 19:30:05 +0200 |
commit | 7092a2d6a6b2f988c86aea447edf553d0048cb4e (patch) | |
tree | 57aac6ae7d5467527e3b07e898504b3d86ef48c8 /xineSetupPage.c | |
download | vdr-plugin-xine-0.9.4.tar.gz vdr-plugin-xine-0.9.4.tar.bz2 |
Imported v0.9.4v0.9.4
Diffstat (limited to 'xineSetupPage.c')
-rw-r--r-- | xineSetupPage.c | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/xineSetupPage.c b/xineSetupPage.c new file mode 100644 index 0000000..b1f69d5 --- /dev/null +++ b/xineSetupPage.c @@ -0,0 +1,106 @@ + +#include "xineCommon.h" + +#include "xineSetupPage.h" +#include "xineSettings.h" +#include "xineLib.h" + + + +namespace PluginXine +{ + + void cXineSetupPage::Store() + { + m_globalSettings.Store(this); + + bool setupDiffers = m_globalSettings.setupDiffers(m_localSettings); +#if APIVERSNUM >= 10707 + bool lockOsdUpdate = m_globalSettings.OsdExtentParams() != m_localSettings.OsdExtentParams(); +#endif + + m_localSettings = m_globalSettings; + + if (!setupDiffers) + return; + + m_xineLib->execFuncSetup(); +#if APIVERSNUM >= 10707 + if (lockOsdUpdate) + { + m_xineLib->LockOsdUpdate(); + cOsdProvider::UpdateOsdSize(true); + SetDisplayMenu(); + } + + m_xineLib->ReshowCurrentOSD(lockOsdUpdate); +#else + m_xineLib->ReshowCurrentOSD(); +#endif + } + + cXineSetupPage::cXineSetupPage(cXineLib *const xineLib, cXineSettings &settings) + : cMenuSetupPage() + , m_xineLib(xineLib) + , m_globalSettings(settings) + , m_localSettings(settings) + { + m_globalSettings.Create(this); + } + + cXineSetupPage::~cXineSetupPage() + { + bool setupDiffers = m_globalSettings.setupDiffers(m_localSettings); +#if APIVERSNUM >= 10707 + bool lockOsdUpdate = m_globalSettings.OsdExtentParams() != m_localSettings.OsdExtentParams(); +#endif + + m_globalSettings = m_localSettings; + + if (!setupDiffers) + return; + + m_xineLib->execFuncSetup(); +#if APIVERSNUM >= 10707 + if (lockOsdUpdate) + { + m_xineLib->LockOsdUpdate(); + cOsdProvider::UpdateOsdSize(true); + SetDisplayMenu(); + } + + m_xineLib->ReshowCurrentOSD(lockOsdUpdate); +#else + m_xineLib->ReshowCurrentOSD(); +#endif + } + + eOSState cXineSetupPage::ProcessKey(eKeys Key) + { + const cXineSettings prevSettings = m_globalSettings; + + eOSState state = cMenuSetupPage::ProcessKey(Key); + + if (prevSettings.setupDiffers(m_globalSettings)) + { + m_xineLib->execFuncSetup(); +#if APIVERSNUM >= 10707 + bool lockOsdUpdate = prevSettings.OsdExtentParams() != m_globalSettings.OsdExtentParams(); + if (lockOsdUpdate) + { + m_xineLib->LockOsdUpdate(); + cOsdProvider::UpdateOsdSize(true); + SetDisplayMenu(); + Display(); + } + + m_xineLib->ReshowCurrentOSD(lockOsdUpdate); +#else + m_xineLib->ReshowCurrentOSD(); +#endif + } + + return state; + } + +}; |