From 1df85f6ea3d4d8adfae94a87ea71f51b5843fdac Mon Sep 17 00:00:00 2001 From: focus Date: Sat, 23 Apr 2011 10:24:09 +0000 Subject: [PATCH] Fade changes for new fb driver git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@1413 e54a6e83-5905-42d5-8d5c-058d10e6a962 --- src/driver/framebuffer.cpp | 26 +++++++++++++++++++------- src/driver/framebuffer.h | 1 + src/gui/bouquetlist.cpp | 8 ++++++-- src/gui/channellist.cpp | 8 ++++++-- src/gui/dboxinfo.cpp | 8 ++++++-- src/gui/epgplus.cpp | 8 ++++++-- src/gui/epgview.cpp | 27 ++++++++++++++++++++++----- src/gui/eventlist.cpp | 9 +++++++-- src/gui/infoviewer.cpp | 11 +++++++++-- src/gui/pluginlist.cpp | 8 ++++++-- src/gui/timerlist.cpp | 8 ++++++-- src/gui/widget/menue.cpp | 11 ++++++++--- 12 files changed, 102 insertions(+), 31 deletions(-) diff --git a/src/driver/framebuffer.cpp b/src/driver/framebuffer.cpp index 1e6d761b1..aad000ba7 100644 --- a/src/driver/framebuffer.cpp +++ b/src/driver/framebuffer.cpp @@ -45,6 +45,9 @@ #include #include #include +#ifdef HAVE_COOL_HARDWARE +#include +#endif extern cVideo * videoDecoder; @@ -507,19 +510,28 @@ void CFrameBuffer::setTransparency( int /*tr*/ ) { } -#define FBIO_CHANGEOPACITY 0x4624 +void CFrameBuffer::setBlendMode(uint8_t mode) +{ +#ifdef HAVE_COOL_HARDWARE + if (ioctl(fd, FBIO_SETBLENDMODE, mode)) + printf("FBIO_SETBLENDMODE failed.\n"); +#endif +} + void CFrameBuffer::setBlendLevel(int blev1, int /*blev2*/) { -#if 1 //printf("CFrameBuffer::setBlendLevel %d\n", blev1); - unsigned short value = 0xFFFF; + unsigned char value = 0xFF; if((blev1 >= 0) && (blev1 <= 100)) value = convertSetupAlpha2Alpha(blev1); - if (ioctl(fd, FBIO_CHANGEOPACITY, &value) < 0) - printf("FBIO_CHANGEOPACITY failed.\n"); - if(blev1 == 100) // sucks - usleep(20000); +#ifdef HAVE_COOL_HARDWARE + if (ioctl(fd, FBIO_SETOPACITY, value)) + printf("FBIO_SETOPACITY failed.\n"); +#if 1 + if(blev1 == 100) // TODO: sucks. + usleep(20000); +#endif #endif } diff --git a/src/driver/framebuffer.h b/src/driver/framebuffer.h index 4b38d3212..c91b5c5a2 100644 --- a/src/driver/framebuffer.h +++ b/src/driver/framebuffer.h @@ -139,6 +139,7 @@ class CFrameBuffer void setActive(bool enable); // is framebuffer active? void setTransparency( int tr = 0 ); + void setBlendMode(uint8_t mode = 1); void setBlendLevel(int blev1, int blev2); //Palette stuff diff --git a/src/gui/bouquetlist.cpp b/src/gui/bouquetlist.cpp index 536053966..d1fccf98b 100644 --- a/src/gui/bouquetlist.cpp +++ b/src/gui/bouquetlist.cpp @@ -321,6 +321,7 @@ int CBouquetList::show(bool bShowChannelList) int fadeValue = g_settings.menu_Content_alpha; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -361,7 +362,8 @@ int CBouquetList::show(bool bShowChannelList) g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -379,6 +381,7 @@ int CBouquetList::show(bool bShowChannelList) fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop=false; @@ -531,7 +534,8 @@ int CBouquetList::show(bool bShowChannelList) if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } CVFD::getInstance()->setMode(CVFD::MODE_TVRADIO); if(zapOnExit) { diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 48d79be98..aa8672379 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -513,6 +513,7 @@ int CChannelList::show() uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -553,7 +554,8 @@ int CChannelList::show() g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -577,6 +579,7 @@ int CChannelList::show() fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop=false; @@ -875,7 +878,8 @@ int CChannelList::show() if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } if (bShowBouquetList) { res = bouquetList->exec(true); diff --git a/src/gui/dboxinfo.cpp b/src/gui/dboxinfo.cpp index ac4dd32e1..6fd0ada8a 100644 --- a/src/gui/dboxinfo.cpp +++ b/src/gui/dboxinfo.cpp @@ -84,6 +84,7 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -123,7 +124,8 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -140,6 +142,7 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else doLoop = false; @@ -172,7 +175,8 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } return res; } diff --git a/src/gui/epgplus.cpp b/src/gui/epgplus.cpp index 0a74e3db3..0098f33e2 100644 --- a/src/gui/epgplus.cpp +++ b/src/gui/epgplus.cpp @@ -811,6 +811,7 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -847,7 +848,8 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -862,6 +864,7 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop = false; @@ -1184,7 +1187,8 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } #if 0 for (TChannelEntries::iterator It = this->displayedChannelEntries.begin(); diff --git a/src/gui/epgview.cpp b/src/gui/epgview.cpp index 310c038fd..d69424878 100644 --- a/src/gui/epgview.cpp +++ b/src/gui/epgview.cpp @@ -589,7 +589,8 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; - frameBuffer->setBlendLevel(fadeValue, fadeValue); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha + frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -733,7 +734,8 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // set back to per pixel alpha only } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -910,6 +912,7 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop = false; @@ -922,8 +925,21 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start default: // konfigurierbare Keys handlen... - if (msg == (neutrino_msg_t)g_settings.key_channelList_cancel) - loop = false; + if (msg == (neutrino_msg_t)g_settings.key_channelList_cancel) { + if ( fadeIn ) { + g_RCInput->killTimer(fadeTimer); + fadeTimer = 0; + fadeIn = false; + } + if ((!fadeOut) && g_settings.widget_fade) { + fadeOut = true; + fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); + timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha + msg = 0; + } else + loop = false; + } else { if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) @@ -938,7 +954,8 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // set back to per pixel alpha only } } return res; diff --git a/src/gui/eventlist.cpp b/src/gui/eventlist.cpp index 554e9101f..85e75e3c2 100644 --- a/src/gui/eventlist.cpp +++ b/src/gui/eventlist.cpp @@ -276,6 +276,7 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -319,7 +320,8 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -336,6 +338,7 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop = false; @@ -556,6 +559,7 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop = false; @@ -675,7 +679,8 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } return res; diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index c2c70da05..80d8c436e 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -499,6 +499,7 @@ void CInfoViewer::showMovieTitle(const int playState, const std::string Channel, int fadeValue; if (fadeIn) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); } else fadeValue = g_settings.infobar_alpha; @@ -605,6 +606,7 @@ void CInfoViewer::showTitle (const int ChanNum, const std::string & Channel, con int fadeValue; if (fadeIn) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); } else fadeValue = g_settings.infobar_alpha; @@ -775,7 +777,9 @@ void CInfoViewer::loop(int fadeValue, bool show_dot ,bool fadeIn) g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha + frameBuffer->setBlendLevel(100, 100);//FIXME } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -789,6 +793,7 @@ void CInfoViewer::loop(int fadeValue, bool show_dot ,bool fadeIn) fadeOut = true; fadeTimer = g_RCInput->addTimer (FADE_TIME, false); timeoutEnd = CRCInput::calcTimeoutEnd (1); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha } else { #if 0 if ((msg != CRCInput::RC_timeout) && (msg != CRCInput::RC_ok)) @@ -845,7 +850,9 @@ void CInfoViewer::loop(int fadeValue, bool show_dot ,bool fadeIn) sec_timer_id = 0; if (fadeIn || fadeOut) { g_RCInput->killTimer (fadeTimer); - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha + frameBuffer->setBlendLevel(100, 100);//FIXME } if (virtual_zap_mode) { /* if bouquet cycle set, do virtual over current bouquet */ diff --git a/src/gui/pluginlist.cpp b/src/gui/pluginlist.cpp index 689459a63..5c2eb22d8 100644 --- a/src/gui/pluginlist.cpp +++ b/src/gui/pluginlist.cpp @@ -142,6 +142,7 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -175,7 +176,8 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -192,6 +194,7 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop=false; @@ -283,7 +286,8 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } return res; } diff --git a/src/gui/timerlist.cpp b/src/gui/timerlist.cpp index ece373425..20fab9320 100644 --- a/src/gui/timerlist.cpp +++ b/src/gui/timerlist.cpp @@ -478,6 +478,7 @@ int CTimerList::show() uint32_t fadeTimer = 0; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -514,7 +515,8 @@ int CTimerList::show() g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -531,6 +533,7 @@ int CTimerList::show() fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; } else loop=false; @@ -661,7 +664,8 @@ int CTimerList::show() if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } hide(); diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 08493c2ae..35fce4535 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -376,6 +376,7 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) int fadeValue = g_settings.menu_Content_alpha; if ( fadeIn ) { fadeValue = 100; + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha frameBuffer->setBlendLevel(fadeValue, fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -440,7 +441,8 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) g_RCInput->killTimer (fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } else frameBuffer->setBlendLevel(fadeValue, fadeValue); } @@ -563,7 +565,8 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) g_RCInput->killTimer(fadeTimer); fadeTimer = 0; fadeIn = false; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } int rv = item->exec( this ); switch ( rv ) { @@ -616,6 +619,7 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); + frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha msg = 0; continue; } @@ -634,7 +638,8 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); fadeTimer = 0; - frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + //frameBuffer->setBlendLevel(FADE_RESET, g_settings.gtx_alpha2); + frameBuffer->setBlendMode(1); // Set back to per pixel alpha } if(!parent)