diff --git a/src/driver/fade.cpp b/src/driver/fade.cpp index 3368d97ca..89b049cbb 100644 --- a/src/driver/fade.cpp +++ b/src/driver/fade.cpp @@ -27,6 +27,10 @@ #include #include +#ifdef HAVE_COOL_HARDWARE +#include +#endif + COSDFader::COSDFader(unsigned char & alpha) : max_alpha(alpha) { @@ -49,7 +53,12 @@ void COSDFader::StartFadeIn() fadeIn = true; fadeOut = false; fadeValue = 100; +#ifdef HAVE_COOL_HARDWARE + frameBuffer->setBlendMode(CNXTFB_BLEND_MODE_UNIFORM_ALPHA); // Global alpha multiplied with pixel alpha +#else frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha +#endif + frameBuffer->setBlendLevel(fadeValue); fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); } @@ -65,7 +74,11 @@ bool COSDFader::StartFadeOut() if ((!fadeOut) && g_settings.widget_fade) { fadeOut = true; fadeTimer = g_RCInput->addTimer( FADE_TIME, false ); +#ifdef HAVE_COOL_HARDWARE + frameBuffer->setBlendMode(CNXTFB_BLEND_MODE_UNIFORM_ALPHA); // Global alpha multiplied with pixel alpha +#else frameBuffer->setBlendMode(2); // Global alpha multiplied with pixel alpha +#endif ret = true; } return ret; @@ -75,7 +88,11 @@ void COSDFader::Stop() { if ( fadeIn || fadeOut ) { g_RCInput->killTimer(fadeTimer); - frameBuffer->setBlendMode(1); // Set back to per pixel alpha +#ifdef HAVE_COOL_HARDWARE + frameBuffer->setBlendMode(CNXTFB_BLEND_MODE_PER_PIXEL); // Global alpha multiplied with pixel alpha +#else + frameBuffer->setBlendMode(1); // Global alpha multiplied with pixel alpha +#endif fadeIn = fadeOut = false; } } @@ -99,7 +116,11 @@ bool COSDFader::Fade() fadeValue = max_alpha; g_RCInput->killTimer (fadeTimer); fadeIn = false; - frameBuffer->setBlendMode(1); // Set back to per pixel alpha +#ifdef HAVE_COOL_HARDWARE + frameBuffer->setBlendMode(CNXTFB_BLEND_MODE_PER_PIXEL); // Global alpha multiplied with pixel alpha +#else + frameBuffer->setBlendMode(1); // Global alpha multiplied with pixel alpha +#endif } else frameBuffer->setBlendLevel(fadeValue); }