void CXBMCApp::SetDisplayMode(int mode, float rate) { if (mode < 1.0) return; CJNIWindow window = getWindow(); if (window) { CJNIWindowManagerLayoutParams params = window.getAttributes(); CLog::Log(LOGDEBUG, "XXX %d %d", params.getpreferredDisplayModeId(), mode); if (params.getpreferredDisplayModeId() == mode) return; } m_displayChangeEvent.Reset(); std::map<std::string, CVariant> vmap; vmap["mode"] = mode; vmap["rate"] = rate; m_refreshRate = rate; CVariant *variant = new CVariant(vmap); runNativeOnUiThread(SetDisplayModeCallback, variant); if (g_application.IsInitialized()) m_displayChangeEvent.WaitMSec(5000); }
void CXBMCApp::SetDisplayModeCallback(CVariant* variant) { int mode = (*variant)["mode"].asInteger(); float rate = (*variant)["rate"].asFloat(); delete variant; CJNIWindow window = getWindow(); if (window) { CJNIWindowManagerLayoutParams params = window.getAttributes(); if (params.getpreferredDisplayModeId() != mode) { if (g_application.GetAppPlayer().IsPlaying()) { dynamic_cast<CWinSystemAndroid*>(CServiceBroker::GetWinSystem())->SetHDMIState(false); m_hdmiReportedState = false; } params.setpreferredDisplayModeId(mode); params.setpreferredRefreshRate(rate); window.setAttributes(params); return; } } m_displayChangeEvent.Set(); }
void CXBMCApp::SetDisplayModeCallback(CVariant* modeVariant) { int mode = modeVariant->asFloat(); delete modeVariant; CJNIWindow window = getWindow(); if (window) { CJNIWindowManagerLayoutParams params = window.getAttributes(); if (params.getpreferredDisplayModeId() != mode) { params.setpreferredDisplayModeId(mode); window.setAttributes(params); } } }