Merge branch 'pu/fb-setmode' of https://github.com/tuxbox-neutrino/gui-neutrino into ni/tuxbox

Origin commit data
------------------
Commit: b435c29e1d
Author: vanhofen <vanhofen@gmx.de>
Date: 2017-03-26 (Sun, 26 Mar 2017)
This commit is contained in:
vanhofen
2017-03-26 23:24:10 +02:00
2 changed files with 33 additions and 30 deletions

View File

@@ -234,29 +234,35 @@ int CFbAccelCSHD2::setMode(unsigned int nxRes, unsigned int nyRes, unsigned int
if (osd_resolutions.empty()) if (osd_resolutions.empty())
setOsdResolutions(); setOsdResolutions();
if (fullHdAvailable()) { unsigned int nxRes_ = nxRes;
screeninfo.xres=nxRes; unsigned int nyRes_ = nyRes;
screeninfo.yres=nyRes; unsigned int nbpp_ = nbpp;
screeninfo.xres_virtual=nxRes; if (!fullHdAvailable()) {
screeninfo.yres_virtual=nyRes*2; nxRes_ = 1280;
screeninfo.height=0; nyRes_ = 720;
screeninfo.width=0; nbpp_ = 32;
screeninfo.xoffset=screeninfo.yoffset=0; }
screeninfo.bits_per_pixel=nbpp; screeninfo.xres=nxRes_;
screeninfo.yres=nyRes_;
screeninfo.xres_virtual=nxRes_;
screeninfo.yres_virtual=nyRes_*2;
screeninfo.height=0;
screeninfo.width=0;
screeninfo.xoffset=screeninfo.yoffset=0;
screeninfo.bits_per_pixel=nbpp_;
if (ioctl(fd, FBIOPUT_VSCREENINFO, &screeninfo)<0) if (ioctl(fd, FBIOPUT_VSCREENINFO, &screeninfo)<0)
perror(LOGTAG "FBIOPUT_VSCREENINFO"); perror(LOGTAG "FBIOPUT_VSCREENINFO");
printf(LOGTAG "SetMode: %dbits, red %d:%d green %d:%d blue %d:%d transp %d:%d\n", printf(LOGTAG "SetMode: %dbits, red %d:%d green %d:%d blue %d:%d transp %d:%d\n",
screeninfo.bits_per_pixel, screeninfo.red.length, screeninfo.red.offset, screeninfo.green.length, screeninfo.green.offset, screeninfo.blue.length, screeninfo.blue.offset, screeninfo.transp.length, screeninfo.transp.offset); screeninfo.bits_per_pixel, screeninfo.red.length, screeninfo.red.offset, screeninfo.green.length, screeninfo.green.offset, screeninfo.blue.length, screeninfo.blue.offset, screeninfo.transp.length, screeninfo.transp.offset);
if ((screeninfo.xres != nxRes) || if ((screeninfo.xres != nxRes_) ||
(screeninfo.yres != nyRes) || (screeninfo.yres != nyRes_) ||
(screeninfo.bits_per_pixel != nbpp)) { (screeninfo.bits_per_pixel != nbpp_)) {
printf(LOGTAG "SetMode failed: wanted: %dx%dx%d, got %dx%dx%d\n", printf(LOGTAG "SetMode failed: wanted: %dx%dx%d, got %dx%dx%d\n",
nxRes, nyRes, nbpp, nxRes_, nyRes_, nbpp_,
screeninfo.xres, screeninfo.yres, screeninfo.bits_per_pixel); screeninfo.xres, screeninfo.yres, screeninfo.bits_per_pixel);
return -1; return -1;
}
} }
fb_fix_screeninfo _fix; fb_fix_screeninfo _fix;
@@ -337,8 +343,10 @@ int CFbAccelCSHD2::scale2Res(int size)
bool CFbAccelCSHD2::fullHdAvailable() bool CFbAccelCSHD2::fullHdAvailable()
{ {
#ifdef ENABLE_CHANGE_OSD_RESOLUTION
if (available >= 16588800) /* new fb driver with maxres 1920x1080(*8) */ if (available >= 16588800) /* new fb driver with maxres 1920x1080(*8) */
return true; return true;
#endif
return false; return false;
} }

View File

@@ -2248,7 +2248,7 @@ int CNeutrinoApp::run(int argc, char **argv)
TIMER_START(); TIMER_START();
cs_api_init(); cs_api_init();
cs_register_messenger(CSSendMessage); cs_register_messenger(CSSendMessage);
#ifdef BOXMODEL_CS_HD2 #if defined(HAVE_COOL_HARDWARE) && defined(ENABLE_CHANGE_OSD_RESOLUTION)
cs_new_auto_videosystem(); cs_new_auto_videosystem();
#endif #endif
@@ -3187,16 +3187,11 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
printf(">>>>>[CNeutrinoApp::%s:%d] Receive EVT_AUTO_SET_VIDEOSYSTEM message\n", __func__, __LINE__); printf(">>>>>[CNeutrinoApp::%s:%d] Receive EVT_AUTO_SET_VIDEOSYSTEM message\n", __func__, __LINE__);
COsdHelpers *coh = COsdHelpers::getInstance(); COsdHelpers *coh = COsdHelpers::getInstance();
int videoSystem = (int)data; int videoSystem = (int)data;
if (coh->getVideoSystem() == videoSystem) if (coh->getVideoSystem() != videoSystem) {
return messages_return::handled;
if (!frameBufferInitialized) {
coh->setVideoSystem(videoSystem, false); coh->setVideoSystem(videoSystem, false);
return messages_return::handled; if (frameBufferInitialized)
coh->changeOsdResolution(0, true, false);
} }
coh->setVideoSystem(videoSystem, false);
coh->changeOsdResolution(0, true, false);
return messages_return::handled; return messages_return::handled;
} }
if(msg == NeutrinoMessages::EVT_ZAP_COMPLETE) { if(msg == NeutrinoMessages::EVT_ZAP_COMPLETE) {