Merge pull request #756 from MilhouseVH/kodi17b2p2

kodi: post beta2 patches, crash and mem leak fixes
This commit is contained in:
Lukas Rusak 2016-09-20 11:22:30 -07:00 committed by GitHub
commit 651135b797
6 changed files with 1427 additions and 978 deletions

View File

@ -17,7 +17,7 @@
################################################################################ ################################################################################
PKG_NAME="inputstream.rtmp" PKG_NAME="inputstream.rtmp"
PKG_VERSION="91bb374" PKG_VERSION="70cb86f"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv" PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/notspiff/inputstream.rtmp/archive/$PKG_VERSION.tar.gz" PKG_URL="https://github.com/notspiff/inputstream.rtmp/archive/$PKG_VERSION.tar.gz"

View File

@ -1,13 +0,0 @@
diff --git a/inputstream.rtmp/addon.xml.in b/inputstream.rtmp/addon.xml.in
index 2e59513..aa2a5d4 100644
--- a/inputstream.rtmp/addon.xml.in
+++ b/inputstream.rtmp/addon.xml.in
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="inputstream.rtmp"
- version="1.0.0"
+ version="1.0.1"
name="RTMP Input"
provider-name="spiff">
<requires>

View File

@ -0,0 +1,116 @@
From e0b1e6bd9afc7db17173200b21fcbf0084f83e78 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Mon, 19 Sep 2016 14:20:44 +0200
Subject: [PATCH] VideoPlayer: drop obsolete player method HasFrame, fix subs
for bypass renderer
---
xbmc/ApplicationPlayer.cpp | 9 ---------
xbmc/ApplicationPlayer.h | 1 -
xbmc/cores/IPlayer.h | 2 --
xbmc/cores/VideoPlayer/VideoPlayer.cpp | 5 -----
xbmc/cores/VideoPlayer/VideoPlayer.h | 1 -
xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp | 3 ++-
xbmc/video/windows/GUIWindowFullScreen.cpp | 2 +-
7 files changed, 3 insertions(+), 20 deletions(-)
diff --git a/xbmc/ApplicationPlayer.cpp b/xbmc/ApplicationPlayer.cpp
index b76134d..205cdd5 100644
--- a/xbmc/ApplicationPlayer.cpp
+++ b/xbmc/ApplicationPlayer.cpp
@@ -762,15 +762,6 @@ void CApplicationPlayer::FrameMove()
player->FrameMove();
}
-bool CApplicationPlayer::HasFrame()
-{
- std::shared_ptr<IPlayer> player = GetInternal();
- if (player)
- return player->HasFrame();
- else
- return false;
-}
-
void CApplicationPlayer::Render(bool clear, uint32_t alpha, bool gui)
{
std::shared_ptr<IPlayer> player = GetInternal();
diff --git a/xbmc/ApplicationPlayer.h b/xbmc/ApplicationPlayer.h
index d27e8df..5144a0d 100644
--- a/xbmc/ApplicationPlayer.h
+++ b/xbmc/ApplicationPlayer.h
@@ -83,7 +83,6 @@ class CApplicationPlayer
void SetPlaySpeed(float speed);
void FrameMove();
- bool HasFrame();
void Render(bool clear, uint32_t alpha = 255, bool gui = true);
void FlushRenderer();
void SetRenderViewMode(int mode);
diff --git a/xbmc/cores/IPlayer.h b/xbmc/cores/IPlayer.h
index 7bc005b..d004a4e 100644
--- a/xbmc/cores/IPlayer.h
+++ b/xbmc/cores/IPlayer.h
@@ -389,8 +389,6 @@ class IPlayer
*/
virtual void FrameMove() {};
- virtual bool HasFrame() { return false; };
-
virtual void Render(bool clear, uint32_t alpha = 255, bool gui = true) {};
virtual void FlushRenderer() {};
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
index b4a604c..ac67923 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
@@ -5039,11 +5039,6 @@ void CVideoPlayer::FrameMove()
m_renderManager.FrameMove();
}
-bool CVideoPlayer::HasFrame()
-{
- return m_renderManager.HasFrame();
-}
-
void CVideoPlayer::Render(bool clear, uint32_t alpha, bool gui)
{
m_renderManager.Render(clear, 0, alpha, gui);
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.h b/xbmc/cores/VideoPlayer/VideoPlayer.h
index 3f39706..d022ce2 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.h
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.h
@@ -368,7 +368,6 @@ class CVideoPlayer : public IPlayer, public CThread, public IVideoPlayer, public
virtual bool SwitchChannel(const PVR::CPVRChannelPtr &channel);
virtual void FrameMove();
- virtual bool HasFrame();
virtual void Render(bool clear, uint32_t alpha = 255, bool gui = true);
virtual void FlushRenderer();
virtual void SetRenderViewMode(int mode);
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
index bbdd403..52d418b 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
@@ -960,7 +960,8 @@ bool CRenderManager::IsGuiLayer()
if (!m_pRenderer)
return false;
- if (m_pRenderer->IsGuiLayer() || m_renderedOverlay || m_overlays.HasOverlay(m_presentsource))
+ if ((m_pRenderer->IsGuiLayer() && HasFrame()) ||
+ m_renderedOverlay || m_overlays.HasOverlay(m_presentsource))
return true;
if (m_renderDebug && m_debugTimer.IsTimePast())
diff --git a/xbmc/video/windows/GUIWindowFullScreen.cpp b/xbmc/video/windows/GUIWindowFullScreen.cpp
index 7263752..72da165 100644
--- a/xbmc/video/windows/GUIWindowFullScreen.cpp
+++ b/xbmc/video/windows/GUIWindowFullScreen.cpp
@@ -485,7 +485,7 @@ void CGUIWindowFullScreen::FrameMove()
void CGUIWindowFullScreen::Process(unsigned int currentTime, CDirtyRegionList &dirtyregion)
{
- if (g_application.m_pPlayer->IsRenderingGuiLayer() && g_application.m_pPlayer->HasFrame())
+ if (g_application.m_pPlayer->IsRenderingGuiLayer())
MarkDirtyRegion();
CGUIWindow::Process(currentTime, dirtyregion);

View File

@ -0,0 +1,44 @@
From 56fc55be3f7e8361ce95dab9131a6d5bfeae1a7d Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Mon, 19 Sep 2016 14:45:29 +0200
Subject: [PATCH] VideoPlayer: make processInfo a smart pointer, fixes mem leak
---
xbmc/cores/VideoPlayer/VideoPlayer.cpp | 2 +-
xbmc/cores/VideoPlayer/VideoPlayer.h | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
index b4a604c..7c5b243 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
@@ -663,7 +663,7 @@ CVideoPlayer::CVideoPlayer(IPlayerCallback& callback)
m_SkipCommercials = true;
- m_processInfo = CProcessInfo::CreateInstance();
+ m_processInfo.reset(CProcessInfo::CreateInstance());
CreatePlayers();
m_displayLost = false;
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.h b/xbmc/cores/VideoPlayer/VideoPlayer.h
index 3f39706..2684376 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.h
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.h
@@ -21,6 +21,7 @@
*/
#include <atomic>
+#include <memory>
#include <utility>
#include <vector>
#include "cores/IPlayer.h"
@@ -503,7 +504,7 @@ class CVideoPlayer : public IPlayer, public CThread, public IVideoPlayer, public
XbmcThreads::EndTime m_cachingTimer;
CFileItem m_item;
XbmcThreads::EndTime m_ChannelEntryTimeOut;
- CProcessInfo *m_processInfo;
+ std::unique_ptr<CProcessInfo> m_processInfo;
CCurrentStream m_CurrentAudio;
CCurrentStream m_CurrentVideo;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff