Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-next

This commit is contained in:
Stephan Raue 2011-09-16 19:42:29 +02:00
commit b152fee2b6
7 changed files with 243 additions and 50 deletions

View File

@ -58,7 +58,7 @@ fi
TARGET_CPPFLAGS=
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $GCC_OPTIM $PROJECT_CFLAGS"
TARGET_CXXFLAGS="$TARGET_CFLAGS"
TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM"
TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM $GCC_OPTIM"
TARGET_LIBDIR="$SYSROOT_PREFIX/lib $SYSROOT_PREFIX/usr/lib"
TARGET_INCDIR="$SYSROOT_PREFIX/include $SYSROOT_PREFIX/usr/include"

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)
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)
+ {
+-#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;
++ }
+ // 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(render == OVERLAY_BUF)
+ {
diff -Naur xbmc-10.1-Dharma/xbmc/RenderSystem.cpp xbmc-10.1-Dharma.patch1/xbmc/RenderSystem.cpp
+ 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)
};

View File

@ -0,0 +1,55 @@
--- busybox-1.19.2/loginutils/chpasswd.c
+++ busybox-1.19.2-chpasswd/loginutils/chpasswd.c
@@ -33,9 +33,8 @@ static const char chpasswd_longopts[] AL
int chpasswd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int chpasswd_main(int argc UNUSED_PARAM, char **argv)
{
- char *name, *pass;
- char salt[sizeof("$N$XXXXXXXX")];
- int opt, rc;
+ char *name;
+ int opt;
if (getuid() != 0)
bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
@@ -45,6 +44,10 @@ int chpasswd_main(int argc UNUSED_PARAM,
opt = getopt32(argv, "em");
while ((name = xmalloc_fgetline(stdin)) != NULL) {
+ char *free_me;
+ char *pass;
+ int rc;
+
pass = strchr(name, ':');
if (!pass)
bb_error_msg_and_die("missing new password");
@@ -52,7 +55,10 @@ int chpasswd_main(int argc UNUSED_PARAM,
xuname2uid(name); /* dies if there is no such user */
+ free_me = NULL;
if (!(opt & OPT_ENC)) {
+ char salt[sizeof("$N$XXXXXXXX")];
+
crypt_make_salt(salt, 1);
if (opt & OPT_MD5) {
salt[0] = '$';
@@ -60,7 +66,7 @@ int chpasswd_main(int argc UNUSED_PARAM,
salt[2] = '$';
crypt_make_salt(salt + 3, 4);
}
- pass = pw_encrypt(pass, salt, 0);
+ free_me = pass = pw_encrypt(pass, salt, 0);
}
/* This is rather complex: if user is not found in /etc/shadow,
@@ -81,8 +87,7 @@ int chpasswd_main(int argc UNUSED_PARAM,
bb_info_msg("Password for '%s' changed", name);
logmode = LOGMODE_STDIO;
free(name);
- if (!(opt & OPT_ENC))
- free(pass);
+ free(free_me);
}
return EXIT_SUCCESS;
}

View File

@ -0,0 +1,12 @@
--- busybox-1.19.2/miscutils/crond.c
+++ busybox-1.19.2-crond/miscutils/crond.c
@@ -861,7 +861,8 @@ int crond_main(int argc UNUSED_PARAM, ch
/* "-b after -f is ignored", and so on for every pair a-b */
opt_complementary = "f-b:b-f:S-L:L-S" IF_FEATURE_CROND_D(":d-l")
- ":l+:d+"; /* -l and -d have numeric param */
+ /* -l and -d have numeric param */
+ ":l+" IF_FEATURE_CROND_D(":d+");
opts = getopt32(argv, "l:L:fbSc:" IF_FEATURE_CROND_D("d:"),
&G.log_level, &G.log_filename, &G.crontab_dir_name
IF_FEATURE_CROND_D(,&G.log_level));

View File

@ -0,0 +1,47 @@
--- busybox-1.19.2/networking/inetd.c
+++ busybox-1.19.2-inetd/networking/inetd.c
@@ -1278,6 +1278,7 @@ int inetd_main(int argc UNUSED_PARAM, ch
sep->se_count = 0;
rearm_alarm(); /* will revive it in RETRYTIME sec */
restore_sigmask(&omask);
+ maybe_close(new_udp_fd);
maybe_close(accepted_fd);
continue; /* -> check next fd in fd set */
}
@@ -1298,17 +1299,18 @@ int inetd_main(int argc UNUSED_PARAM, ch
bb_perror_msg("vfork"+1);
sleep(1);
restore_sigmask(&omask);
+ maybe_close(new_udp_fd);
maybe_close(accepted_fd);
continue; /* -> check next fd in fd set */
}
if (pid == 0)
pid--; /* -1: "we did fork and we are child" */
}
- /* if pid == 0 here, we never forked */
+ /* if pid == 0 here, we didn't fork */
if (pid > 0) { /* parent */
if (sep->se_wait) {
- /* tcp wait: we passed listening socket to child,
+ /* wait: we passed socket to child,
* will wait for child to terminate */
sep->se_wait = pid;
remove_fd_from_set(sep->se_fd);
@@ -1345,9 +1347,13 @@ int inetd_main(int argc UNUSED_PARAM, ch
setsid();
/* "nowait" udp */
if (new_udp_fd >= 0) {
- len_and_sockaddr *lsa = xzalloc_lsa(sep->se_family);
+ len_and_sockaddr *lsa;
+ int r;
+
+ close(new_udp_fd);
+ lsa = xzalloc_lsa(sep->se_family);
/* peek at the packet and remember peer addr */
- int r = recvfrom(ctrl, NULL, 0, MSG_PEEK|MSG_DONTWAIT,
+ r = recvfrom(ctrl, NULL, 0, MSG_PEEK|MSG_DONTWAIT,
&lsa->u.sa, &lsa->len);
if (r < 0)
goto do_exit1;

View File

@ -24,7 +24,7 @@
cd $PKG_BUILD
make OPT="$TARGET_CFLAGS" \
make OPT="$CFLAGS" \
CROSS_COMPILE=${TARGET_PREFIX} \
HOST=$TARGET_ARCH-linux \
IDSDIR="/usr/share" \