xbmc (Gotham): update to xbmc-13.alpha-7f45288

This commit is contained in:
Stefan Saraev 2013-09-25 18:59:47 +03:00
parent 1bfbce4386
commit ad93bf1aec
9 changed files with 1121 additions and 7743 deletions

View File

@ -21,7 +21,7 @@
PKG_NAME="xbmc"
PKG_VERSION="12.2-091cb29"
if [ "$XBMC" = "master" ]; then
PKG_VERSION="13.alpha-2ef8929"
PKG_VERSION="13.alpha-7f45288"
elif [ "$XBMC" = "xbmc-aml" ]; then
PKG_VERSION="aml-frodo-d9119f2"
fi

View File

@ -1,86 +0,0 @@
From 1501e49f96f75d12ef8071f30ca3338ea18f4ff4 Mon Sep 17 00:00:00 2001
From: "Chris \"Koying\" Browet" <cbro@semperpax.com>
Date: Sat, 31 Aug 2013 03:04:48 +0200
Subject: [PATCH] FIX: Consistenly look for fonts in special//home, then
special://xbmc
---
xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitlesLibass.cpp | 10 ++++++++--
xbmc/music/karaoke/karaokelyricstext.cpp | 4 +++-
xbmc/video/windows/GUIWindowFullScreen.cpp | 8 +++++++-
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitlesLibass.cpp b/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitlesLibass.cpp
index 2a4efde..5d7b855 100644
--- a/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitlesLibass.cpp
+++ b/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitlesLibass.cpp
@@ -20,6 +20,7 @@
#include "DVDSubtitlesLibass.h"
#include "DVDClock.h"
+#include "filesystem/File.h"
#include "filesystem/SpecialProtocol.h"
#include "settings/Settings.h"
#include "utils/log.h"
@@ -75,9 +76,14 @@ static void libass_log(int level, const char *fmt, va_list args, void *data)
if(!m_renderer)
return;
- //Setting default font to the Arial in \media\fonts (used if FontConfig fails)
- strPath = "special://xbmc/media/Fonts/";
+ //Setting default font to the Arial in \media\fonts (used if FontConfig fails)
+ strPath = "special://home/media/Fonts/";
strPath += CSettings::Get().GetString("subtitles.font");
+ if (!XFILE::CFile::Exists(strPath))
+ {
+ strPath = "special://xbmc/media/Fonts/";
+ strPath += CSettings::Get().GetString("subtitles.font");
+ }
int fc = !CSettings::Get().GetBool("subtitles.overrideassfonts");
m_dll.ass_set_margins(m_renderer, 0, 0, 0, 0);
diff --git a/xbmc/music/karaoke/karaokelyricstext.cpp b/xbmc/music/karaoke/karaokelyricstext.cpp
index f04f4c5..f43a188 100644
--- a/xbmc/music/karaoke/karaokelyricstext.cpp
+++ b/xbmc/music/karaoke/karaokelyricstext.cpp
@@ -139,7 +139,9 @@ bool CKaraokeLyricsText::InitGraphics()
if ( m_lyrics.empty() )
return false;
- CStdString fontPath = "special://xbmc/media/Fonts/" + CSettings::Get().GetString("karaoke.font");
+ CStdString fontPath = "special://home/media/Fonts/" + CSettings::Get().GetString("karaoke.font");
+ if (!XFILE::CFile::Exists(fontPath))
+ fontPath = "special://xbmc/media/Fonts/" + CSettings::Get().GetString("karaoke.font");
m_karaokeFont = g_fontManager.LoadTTF("__karaoke__", fontPath,
m_colorLyrics, 0, CSettings::Get().GetInt("karaoke.fontheight"), FONT_STYLE_BOLD );
CGUIFont *karaokeBorder = g_fontManager.LoadTTF("__karaokeborder__", fontPath,
diff --git a/xbmc/video/windows/GUIWindowFullScreen.cpp b/xbmc/video/windows/GUIWindowFullScreen.cpp
index 9c8526d..bd1e9ed 100644
--- a/xbmc/video/windows/GUIWindowFullScreen.cpp
+++ b/xbmc/video/windows/GUIWindowFullScreen.cpp
@@ -56,6 +56,7 @@
#include "pvr/channels/PVRChannelGroupsContainer.h"
#include "windowing/WindowingFactory.h"
#include "cores/IPlayer.h"
+#include "filesystem/File.h"
#include <stdio.h>
#include <algorithm>
@@ -401,8 +402,13 @@ bool CGUIWindowFullScreen::OnMessage(CGUIMessage& message)
{
CSingleLock lock (m_fontLock);
- CStdString fontPath = "special://xbmc/media/Fonts/";
+ CStdString fontPath = "special://home/media/Fonts/";
fontPath += CSettings::Get().GetString("subtitles.font");
+ if (!XFILE::CFile::Exists(fontPath))
+ {
+ fontPath = "special://xbmc/media/Fonts/";
+ fontPath += CSettings::Get().GetString("subtitles.font");
+ }
// We scale based on PAL4x3 - this at least ensures all sizing is constant across resolutions.
RESOLUTION_INFO pal(720, 576, 0);
--
1.8.4

View File

@ -1,151 +0,0 @@
From 67933a247943afe83bb885a5c3881bf03ce0b03b Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 7 Sep 2013 18:32:58 +0100
Subject: [PATCH 1/2] [rendercapture] Fix passthrough rendercapture interface
The RenderCapture function doesn't behave correctly for passthough video renderers,
and in fact segfaults on Pi when setting a bookmark.
There is no need to do a glReadPixels to get a video snapshot in the passthrough case,
so provide a shortcut.
---
xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
index f9f5aa4..ee03b2f 100644
--- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
@@ -1421,6 +1421,14 @@ bool CLinuxRendererGLES::RenderCapture(CRenderCapture* capture)
if (!m_bValidated)
return false;
+ // If rendered directly by the hardware
+ if (m_renderMethod & RENDER_BYPASS)
+ {
+ capture->BeginRender();
+ capture->EndRender();
+ return true;
+ }
+
// save current video rect
CRect saveSize = m_destRect;
saveRotatedCoords();//backup current m_rotatedDestCoords
--
1.8.4
From c02a7e15bfdba2743c9300fa8375cf22a908e8e7 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 7 Sep 2013 18:33:32 +0100
Subject: [PATCH 2/2] [rbp] Support grabbing just the video layer through
rendercapture
As the bookmark snapshot doesn't want the OSD (and neither does boblight)
allow video, or video + GUI to be selectable.
While we're there, making the GPU do the red/blue swap and stride packing saves some cpu.
Requires updated firmware
---
xbmc/linux/RBP.cpp | 37 ++++++++++---------------------------
xbmc/linux/RBP.h | 2 +-
xbmc/utils/Screenshot.cpp | 2 +-
3 files changed, 12 insertions(+), 29 deletions(-)
diff --git a/xbmc/linux/RBP.cpp b/xbmc/linux/RBP.cpp
index 21b1e8c..b68fce6 100644
--- a/xbmc/linux/RBP.cpp
+++ b/xbmc/linux/RBP.cpp
@@ -89,7 +89,7 @@ void CRBP::GetDisplaySize(int &width, int &height)
vc_dispmanx_display_close(display );
}
-unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool swap_red_blue)
+unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool swap_red_blue, bool video_only)
{
DISPMANX_DISPLAY_HANDLE_T display;
DISPMANX_RESOURCE_HANDLE_T resource;
@@ -97,6 +97,14 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw
unsigned char *image = NULL;
uint32_t vc_image_ptr;
int stride;
+ uint32_t flags = 0;
+
+ if (video_only)
+ flags |= DISPMANX_SNAPSHOT_NO_RGB|DISPMANX_SNAPSHOT_FILL;
+ if (swap_red_blue)
+ flags |= DISPMANX_SNAPSHOT_SWAP_RED_BLUE;
+ if (!pstride)
+ flags |= DISPMANX_SNAPSHOT_PACK;
display = vc_dispmanx_display_open( 0 /*screen*/ );
stride = ((width + 15) & ~15) * 4;
@@ -106,37 +114,12 @@ unsigned char *CRBP::CaptureDisplay(int width, int height, int *pstride, bool sw
{
resource = vc_dispmanx_resource_create( VC_IMAGE_RGBA32, width, height, &vc_image_ptr );
- vc_dispmanx_snapshot(display, resource, (DISPMANX_TRANSFORM_T)0);
+ vc_dispmanx_snapshot(display, resource, (DISPMANX_TRANSFORM_T)flags);
vc_dispmanx_rect_set(&rect, 0, 0, width, height);
vc_dispmanx_resource_read_data(resource, &rect, image, stride);
vc_dispmanx_resource_delete( resource );
vc_dispmanx_display_close(display );
-
- // we need to save in BGRA order so Swap RGBA -> BGRA
- if (swap_red_blue)
- {
- for (int y = 0; y < height; y++)
- {
- unsigned char *p = image + y * stride;
- for (int x = 0; x < width; x++, p+=4)
- {
- unsigned char t = p[0];
- p[0] = p[2];
- p[2] = t;
- }
- }
- }
- // assume we need to pack image if caller doesn't want stride
- if (!pstride && stride > width*4)
- {
- for (int y = 0; y < height; y++)
- {
- unsigned char *in = image + y * stride;
- unsigned char *out = image + y * width * 4;
- memmove(out, in, width*4);
- }
- }
}
if (pstride)
*pstride = stride;
diff --git a/xbmc/linux/RBP.h b/xbmc/linux/RBP.h
index 58cdf57..58b6f05 100644
--- a/xbmc/linux/RBP.h
+++ b/xbmc/linux/RBP.h
@@ -51,7 +51,7 @@ class CRBP
int GetGpuMem() { return m_gpu_mem; }
void GetDisplaySize(int &width, int &height);
// stride can be null for packed output
- unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue);
+ unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true);
private:
DllBcmHost *m_DllBcmHost;
diff --git a/xbmc/utils/Screenshot.cpp b/xbmc/utils/Screenshot.cpp
index 05404c9..824c003 100644
--- a/xbmc/utils/Screenshot.cpp
+++ b/xbmc/utils/Screenshot.cpp
@@ -62,7 +62,7 @@ bool CScreenshotSurface::capture()
{
#if defined(TARGET_RASPBERRY_PI)
g_RBP.GetDisplaySize(m_width, m_height);
- m_buffer = g_RBP.CaptureDisplay(m_width, m_height, &m_stride, true);
+ m_buffer = g_RBP.CaptureDisplay(m_width, m_height, &m_stride, true, false);
if (!m_buffer)
return false;
#elif defined(HAS_DX)
--
1.8.4