xbmc: fix disable overlay renderer patch

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2011-09-16 06:56:50 +02:00
parent 338149fdb4
commit 840cc2f802
2 changed files with 127 additions and 48 deletions

View File

@ -0,0 +1,82 @@
diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDOverlayRenderer.h xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDOverlayRenderer.h
--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDOverlayRenderer.h 2011-03-08 02:49:16.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDOverlayRenderer.h 2011-09-15 13:26:00.674107708 +0200
@@ -72,6 +72,9 @@
static void Render(DVDVideoPicture* pPicture, CDVDOverlay* pOverlay, double pts)
{
+ if(pPicture->format != DVDVideoPicture::FMT_YUV420P)
+ return;
+
DVDPictureRenderer p;
p.data[0] = pPicture->data[0];
diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-03-08 02:49:17.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-09-15 13:31:23.725399996 +0200
@@ -793,33 +793,22 @@
enum EOverlay
{ OVERLAY_AUTO // select mode auto
, OVERLAY_GPU // render osd using gpu
- , OVERLAY_VID // render osd directly on video memory
, OVERLAY_BUF // render osd on buffer
} render = OVERLAY_AUTO;
- if(render == OVERLAY_AUTO)
+ if(pSource->format == DVDVideoPicture::FMT_YUV420P)
{
- render = OVERLAY_GPU;
-
#ifdef _LINUX
// for now use cpu for ssa overlays as it currently allocates and
// frees textures for each frame this causes a hugh memory leak
// on some mesa intel drivers
- if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) && pSource->format == DVDVideoPicture::FMT_YUV420P)
- render = OVERLAY_VID;
-#endif
- if(render == OVERLAY_VID)
- {
- if( m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU)
- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE)
- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) )
- render = OVERLAY_BUF;
- }
- }
+ if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU)
+ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE)
+ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) )
+ render = OVERLAY_BUF;
+#endif
- if(pSource->format == DVDVideoPicture::FMT_YUV420P)
- {
if(render == OVERLAY_BUF)
{
// rendering spu overlay types directly on video memory costs a lot of processing power.
@@ -848,6 +837,9 @@
}
}
+ if(render == OVERLAY_AUTO)
+ render = OVERLAY_GPU;
+
m_pOverlayContainer->Lock();
VecOverlays* pVecOverlays = m_pOverlayContainer->GetOverlays();
@@ -871,13 +863,8 @@
if (render == OVERLAY_GPU)
g_renderManager.AddOverlay(pOverlay, pts2);
- if(pSource->format == DVDVideoPicture::FMT_YUV420P)
- {
- if (render == OVERLAY_BUF)
- CDVDOverlayRenderer::Render(m_pTempOverlayPicture, pOverlay, pts2);
- else if(render == OVERLAY_VID)
- CDVDOverlayRenderer::Render(pDest, pOverlay, pts2);
- }
+ if (render == OVERLAY_BUF)
+ CDVDOverlayRenderer::Render(m_pTempOverlayPicture, pOverlay, pts2);
}
}

View File

@ -1,48 +1,45 @@
diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej xbmc-10.1-Dharma.patch1/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej
--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-10.1-Dharma.patch1/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp.rej 2011-08-22 05:09:40.801478536 +0200
@@ -0,0 +1,38 @@
+--- xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
++++ xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
+@@ -20,6 +20,7 @@
+ */
+
+ #include "system.h"
++#include "windowing/WindowingFactory.h"
+ #include "settings/AdvancedSettings.h"
+ #include "settings/GUISettings.h"
+ #include "settings/Settings.h"
+@@ -829,16 +830,17 @@
+
+ if(pSource->format == DVDVideoPicture::FMT_YUV420P)
+ {
+-#ifdef _LINUX
+- // for now use cpu for ssa overlays as it currently allocates and
+- // frees textures for each frame this causes a hugh memory leak
+- // on some mesa intel drivers
+-
+- if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU)
+- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE)
+- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) )
+- render = OVERLAY_BUF;
+-#endif
++ if(g_Windowing.GetRenderQuirks() & RENDER_QUIRKS_MAJORMEMLEAK_OVERLAYRENDERER)
++ {
++ // for now use cpu for ssa overlays as it currently allocates and
++ // frees textures for each frame this causes a hugh memory leak
++ // on some mesa intel drivers
++
++ if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU)
++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE)
++ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) )
++ render = OVERLAY_BUF;
++ }
+
+ if(render == OVERLAY_BUF)
+ {
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.cpp
diff -Naur xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
--- xbmc-10.1-Dharma/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-09-15 13:59:35.016784668 +0200
+++ xbmc-10.1-Dharma.patch/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp 2011-09-15 13:58:46.193138096 +0200
@@ -20,6 +20,7 @@
*/
#include "system.h"
+#include "WindowingFactory.h"
#include "AdvancedSettings.h"
#include "GUISettings.h"
#include "Settings.h"
@@ -798,16 +799,17 @@
if(pSource->format == DVDVideoPicture::FMT_YUV420P)
{
-#ifdef _LINUX
- // for now use cpu for ssa overlays as it currently allocates and
- // frees textures for each frame this causes a hugh memory leak
- // on some mesa intel drivers
-
- if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU)
- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE)
- || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) )
- render = OVERLAY_BUF;
-#endif
+ if(g_Windowing.GetRenderQuirks() & RENDER_QUIRKS_MAJORMEMLEAK_OVERLAYRENDERER)
+ {
+ // for now use cpu for ssa overlays as it currently allocates and
+ // frees textures for each frame this causes a hugh memory leak
+ // on some mesa intel drivers
+
+ if(m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SPU)
+ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_IMAGE)
+ || m_pOverlayContainer->ContainsOverlayType(DVDOVERLAY_TYPE_SSA) )
+ render = OVERLAY_BUF;
+ }
if(render == OVERLAY_BUF)
{
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch/xbmc/RenderSystem.cpp
--- xbmc-10.1-Dharma/xbmc/RenderSystem.cpp 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.cpp 2011-08-22 05:10:30.353131282 +0200
+++ xbmc-10.1-Dharma.patch/xbmc/RenderSystem.cpp 2011-09-15 13:56:10.592078024 +0200
@@ -29,6 +29,7 @@
m_RenderVersionMajor = 0;
m_RenderVersionMinor = 0;
@ -51,9 +48,9 @@ diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch1/xbmc/R
m_minDXTPitch = 0;
}
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp xbmc-10.1-Dharma.patch1/xbmc/RenderSystemGL.cpp
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp xbmc-10.1-Dharma.patch/xbmc/RenderSystemGL.cpp
--- xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch1/xbmc/RenderSystemGL.cpp 2011-08-22 05:10:58.079496562 +0200
+++ xbmc-10.1-Dharma.patch/xbmc/RenderSystemGL.cpp 2011-09-15 13:56:40.948479861 +0200
@@ -65,8 +65,22 @@
}
}
@ -78,9 +75,9 @@ diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystemGL.cpp xbmc-10.1-Dharma.patch1/xbmc
if(m_RenderRenderer.Find("Poulsbo") >= 0)
m_renderCaps &= ~RENDER_CAPS_DXT_NPOT;
}
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.h xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.h
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.h xbmc-10.1-Dharma.patch/xbmc/RenderSystem.h
--- xbmc-10.1-Dharma/xbmc/RenderSystem.h 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.h 2011-08-22 05:10:38.495238548 +0200
+++ xbmc-10.1-Dharma.patch/xbmc/RenderSystem.h 2011-09-15 13:56:23.653250913 +0200
@@ -52,6 +52,11 @@
RENDER_CAPS_DXT_NPOT = (1 << 2)
};