From cdaba609f42b1e31cce6db8fa24a5db55b1e7497 Mon Sep 17 00:00:00 2001 From: xcentaurix Date: Fri, 19 Jun 2026 20:45:02 +0000 Subject: [PATCH] [enigma2] fix switch from pig to fullscreen caused by DM9xx driver bug (part 2) --- lib/gui/evideo.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/gui/evideo.cpp b/lib/gui/evideo.cpp index b0201cafc04..a49f66c8358 100644 --- a/lib/gui/evideo.cpp +++ b/lib/gui/evideo.cpp @@ -164,6 +164,18 @@ void eVideoWidget::updatePosition(int disable) if (!disable) { + if (bounceFixEnabled() + && left == posFullsizeLeft && top == posFullsizeTop + && width == posFullsizeWidth && height == posFullsizeHeight + && lastPigWidth[m_decoder] > 0 && lastPigHeight[m_decoder] > 0 + && (lastPigWidth[m_decoder] != posFullsizeWidth || lastPigHeight[m_decoder] != posFullsizeHeight)) + { + /* dm9xx: decoder may be in a reset/fullscreen state and ignore a direct + * fullscreen command. Bounce via the stored PIG position to force the + * driver to acknowledge the transition (same trick as setFullsize). */ + setPosition(m_decoder, posFullsizeLeft, posFullsizeTop, posFullsizeWidth, posFullsizeHeight); + setPosition(m_decoder, lastPigLeft[m_decoder], lastPigTop[m_decoder], lastPigWidth[m_decoder], lastPigHeight[m_decoder]); + } setPosition(m_decoder, left, top, width, height); lastPigLeft[m_decoder] = left; lastPigTop[m_decoder] = top;