diff --git a/packages/mediacenter/xbmc/patches/xbmc-995.01-xvba_support-1ea917e.patch b/packages/mediacenter/xbmc/patches.x86/xbmc-995.01-xvba_support-912b6ed.patch similarity index 99% rename from packages/mediacenter/xbmc/patches/xbmc-995.01-xvba_support-1ea917e.patch rename to packages/mediacenter/xbmc/patches.x86/xbmc-995.01-xvba_support-912b6ed.patch index ac7780f5c2..159eaa0f4c 100644 --- a/packages/mediacenter/xbmc/patches/xbmc-995.01-xvba_support-1ea917e.patch +++ b/packages/mediacenter/xbmc/patches.x86/xbmc-995.01-xvba_support-912b6ed.patch @@ -1,4 +1,4 @@ -From bfd49543c49747236d401df4351767d584f756ac Mon Sep 17 00:00:00 2001 +From c111752701bb2447a833ef1768e912c87d9bbf65 Mon Sep 17 00:00:00 2001 From: wsnipex Date: Sun, 4 Nov 2012 14:05:52 +0100 Subject: [PATCH 01/73] configure: add --enable-pvraddons-with-dependencies @@ -48,7 +48,7 @@ index 4769315..350d960 100644 1.7.10 -From dc83e2351e8bf8e904102782ea489d2c8caa2802 Mon Sep 17 00:00:00 2001 +From 86fb17f786cf9efacaa84f64188975312ef4ec6a Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:03:31 +0200 Subject: [PATCH 02/73] VideoRenerers: add buffering @@ -71,10 +71,10 @@ Subject: [PATCH 02/73] VideoRenerers: add buffering 14 files changed, 380 insertions(+), 93 deletions(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index c6f0a14..18e6310 100644 +index 15f1233..7ed09ee 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -2367,7 +2367,10 @@ void CApplication::Render() +@@ -2371,7 +2371,10 @@ void CApplication::Render() m_lastFrameTime = XbmcThreads::SystemClockMillis(); if (flip) @@ -905,7 +905,7 @@ index 7fe6bb2..34ff8d0 100644 OVERLAY::CRenderer m_overlays; diff --git a/xbmc/cores/VideoRenderers/WinRenderer.cpp b/xbmc/cores/VideoRenderers/WinRenderer.cpp -index 7842089..6e4433c 100644 +index f1d0768..f0f5b2d 100644 --- a/xbmc/cores/VideoRenderers/WinRenderer.cpp +++ b/xbmc/cores/VideoRenderers/WinRenderer.cpp @@ -253,12 +253,12 @@ int CWinRenderer::NextYV12Texture() @@ -1034,7 +1034,7 @@ index 3008c25..a4bb1ba 100644 1.7.10 -From dacc0167c993efa6ac884fd3c439fc5f0c823934 Mon Sep 17 00:00:00 2001 +From efb0e5d9a372d2c4a6c7fcb9bd74369a8a910cd0 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 2 Oct 2012 10:49:09 +0200 Subject: [PATCH 03/73] linuxrenderer: delete all textures on reconfigure @@ -1060,7 +1060,7 @@ index b32a7ea..a2dc2be 100644 1.7.10 -From 226539d21ba940ea8add89417df7102302c7ba79 Mon Sep 17 00:00:00 2001 +From 140768ac0a1b909ed0c0821a1dfdf6df8717a64b Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:17:33 +0200 Subject: [PATCH 04/73] drop frame counter in application, ask render manager @@ -1074,10 +1074,10 @@ Subject: [PATCH 04/73] drop frame counter in application, ask render manager 4 files changed, 23 insertions(+), 45 deletions(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 18e6310..9a7b900 100644 +index 7ed09ee..b623250 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -415,8 +415,6 @@ +@@ -419,8 +419,6 @@ #endif m_currentStack = new CFileItemList; @@ -1086,7 +1086,7 @@ index 18e6310..9a7b900 100644 m_bPresentFrame = false; m_bPlatformDirectories = true; -@@ -2227,28 +2225,18 @@ float CApplication::GetDimScreenSaverLevel() const +@@ -2231,28 +2229,18 @@ float CApplication::GetDimScreenSaverLevel() const bool CApplication::WaitFrame(unsigned int timeout) { @@ -1120,7 +1120,7 @@ index 18e6310..9a7b900 100644 } void CApplication::Render() -@@ -2268,7 +2256,6 @@ void CApplication::Render() +@@ -2272,7 +2260,6 @@ void CApplication::Render() int vsync_mode = g_guiSettings.GetInt("videoscreen.vsync"); @@ -1128,7 +1128,7 @@ index 18e6310..9a7b900 100644 bool hasRendered = false; bool limitFrames = false; unsigned int singleFrameTime = 10; // default limit 100 fps -@@ -2282,13 +2269,10 @@ void CApplication::Render() +@@ -2286,13 +2273,10 @@ void CApplication::Render() m_bPresentFrame = false; if (!extPlayerActive && g_graphicsContext.IsFullScreenVideo() && !IsPaused()) { @@ -1146,7 +1146,7 @@ index 18e6310..9a7b900 100644 hasRendered = true; } else -@@ -2312,8 +2296,6 @@ void CApplication::Render() +@@ -2316,8 +2300,6 @@ void CApplication::Render() else if (lowfps) singleFrameTime = 200; // 5 fps, <=200 ms latency to wake up } @@ -1155,7 +1155,7 @@ index 18e6310..9a7b900 100644 } } -@@ -2377,13 +2359,6 @@ void CApplication::Render() +@@ -2381,13 +2363,6 @@ void CApplication::Render() g_renderManager.UpdateResolution(); g_renderManager.ManageCaptures(); @@ -1169,7 +1169,7 @@ index 18e6310..9a7b900 100644 } void CApplication::SetStandAlone(bool value) -@@ -5638,12 +5613,6 @@ bool CApplication::SwitchToFullScreen() +@@ -5646,12 +5621,6 @@ bool CApplication::SwitchToFullScreen() // See if we're playing a video, and are in GUI mode if ( IsPlayingVideo() && g_windowManager.GetActiveWindow() != WINDOW_FULLSCREEN_VIDEO) { @@ -1182,7 +1182,7 @@ index 18e6310..9a7b900 100644 // then switch to fullscreen mode g_windowManager.ActivateWindow(WINDOW_FULLSCREEN_VIDEO); return true; -@@ -5876,7 +5845,6 @@ bool CApplication::IsCurrentThread() const +@@ -5884,7 +5853,6 @@ bool CApplication::IsCurrentThread() const bool CApplication::IsPresentFrame() { @@ -1242,7 +1242,7 @@ index 34ff8d0..288175e 100644 1.7.10 -From 0f81843cb7279f3b99607551967354ff30e15e4d Mon Sep 17 00:00:00 2001 +From ba3a2cb07d319dc1e2fbb56c272744d0a7cbc772 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:34:39 +0200 Subject: [PATCH 05/73] videoplayer: adopt lateness detection and dropping to @@ -1784,7 +1784,7 @@ index fe7e12c..4913712 100644 1.7.10 -From 4bc6ff77b121468020578f9d393e8aaae1a419f6 Mon Sep 17 00:00:00 2001 +From 18bb11c657eca56a2454b15ec558b6e6b126a52b Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:41:31 +0200 Subject: [PATCH 06/73] videoplayer: update frametime, it might change due to @@ -1811,7 +1811,7 @@ index 93908a7..4675556 100644 1.7.10 -From 723a731d68b9360f9804e8711255afa62c4ce34d Mon Sep 17 00:00:00 2001 +From 0f3e41aa9f5f61baad9558606ff9ccacf3ef5192 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:43:06 +0200 Subject: [PATCH 07/73] videoplayer: give streams with invalid fps a chance @@ -1838,7 +1838,7 @@ index 4675556..2ef6358 100644 1.7.10 -From 60c955c30cdfcf361396e47fc92a1e1883b085fe Mon Sep 17 00:00:00 2001 +From 5ea05eef35600708fa58ba121e32245d09cd491e Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:49:05 +0200 Subject: [PATCH 08/73] dvdplayer: allow rewinding at end of stream, do a seek @@ -1878,7 +1878,7 @@ index 315d64a..6fcb6b3 100644 1.7.10 -From 8d237cf023501560fc394679819463034a209413 Mon Sep 17 00:00:00 2001 +From d42b9a3ed15f855f9e4aecaae176f8aeeb4b8da2 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 2 Sep 2012 16:05:21 +0200 Subject: [PATCH 09/73] video player: present correct pts to user for a/v sync @@ -1972,7 +1972,7 @@ index 4913712..509d5f7 100644 1.7.10 -From 04a6a8b4ca29c17da6bbb9591685922b2f6f1442 Mon Sep 17 00:00:00 2001 +From fba7871aacd8c0b7cac5eafdc4d3da5d3724cf79 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 11:02:29 +0200 Subject: [PATCH 10/73] vaapi: adopt to buffering in renderer @@ -2033,7 +2033,7 @@ index 863edc4..417cbc0 100644 1.7.10 -From 4d237410264bbff9c4ac373de498f80ecb15f7a3 Mon Sep 17 00:00:00 2001 +From b8f4a9b323ceea4950624525c88339fb2a23ebe7 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 7 Apr 2012 09:19:00 +0200 Subject: [PATCH 11/73] vdpau: redesign @@ -8196,7 +8196,7 @@ index e7af3cb..2dd8a9f 100644 1.7.10 -From c088467d9d0955051a510dadbddb270ddc3e3c20 Mon Sep 17 00:00:00 2001 +From ee1ed2c835620021278e38a6e7be94cfde073a78 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 25 Sep 2012 12:14:15 +0200 Subject: [PATCH 12/73] linuxrenderer: drop method RenderMultiPass @@ -8249,7 +8249,7 @@ index 3218cd5..afc78c2 100644 1.7.10 -From 0de3939247a63509e6bfab2e77c298eaa28aa29c Mon Sep 17 00:00:00 2001 +From 267f61079ae6a4f77fb5c068eecb0d1aeddd0337 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 25 Sep 2012 13:20:47 +0200 Subject: [PATCH 13/73] linuxrenderer: implement progressive weave for vdpau @@ -8380,7 +8380,7 @@ index afc78c2..2fc34ae 100644 1.7.10 -From c12380f4b9c9c2671bfd1ebd3e29ba7cd83ac95e Mon Sep 17 00:00:00 2001 +From 4c76478000f03a2460c407a66a779b2232c186c5 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:22:05 +0200 Subject: [PATCH 14/73] X11: ditch SDL for video and window events @@ -8399,10 +8399,10 @@ Subject: [PATCH 14/73] X11: ditch SDL for video and window events create mode 100644 xbmc/windowing/WinEventsX11.h diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 9a7b900..fc8e721 100644 +index b623250..3a1d6a1 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -790,7 +790,7 @@ bool CApplication::CreateGUI() +@@ -794,7 +794,7 @@ bool CApplication::CreateGUI() uint32_t sdlFlags = 0; @@ -9867,7 +9867,7 @@ index 2dd8a9f..9616d17 100644 1.7.10 -From 58fa894afaffbc990ee1ab87ff55db30e36ab2c2 Mon Sep 17 00:00:00 2001 +From 9fc77631a47445e67b587d3c2d967c8415ef1601 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:24:22 +0200 Subject: [PATCH 15/73] X11: Add xbmc icon @@ -10059,7 +10059,7 @@ index 9616d17..debf714 100644 1.7.10 -From cad2ac7f357906f10f100a038ff28e83a69c68e8 Mon Sep 17 00:00:00 2001 +From 86a25b3b4355259720f5f54f6fe5650710873911 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 20 May 2012 14:11:26 +0200 Subject: [PATCH 16/73] X11: add SDL joystick until we have a better solution @@ -10116,7 +10116,7 @@ index 24477ae..2ec86a8 100644 1.7.10 -From fdefd4cf296518f31ad1165268fccd651e08dd3c Mon Sep 17 00:00:00 2001 +From 992db82a2cc2d9e8af6388f67e8a2890c7742726 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 12:35:55 +0200 Subject: [PATCH 17/73] X11: factor out code handling device reset @@ -10183,7 +10183,7 @@ index debf714..8c28e3f 100644 1.7.10 -From 9a409794d1eb8ee0c4b0b1124dea7dd30af32c06 Mon Sep 17 00:00:00 2001 +From d6f428a5369ef66336e3f7f07e2dedfc0d1d8f7f Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:02:00 +0200 Subject: [PATCH 18/73] X11: move xrandr events to WinEventsX11 @@ -10330,7 +10330,7 @@ index 70557d0..1cce843 100644 1.7.10 -From 1dc579a2d5c608cfd4f799971759d18cbd2957e5 Mon Sep 17 00:00:00 2001 +From daf0f02f96f6a640c06b50a0823e1f1858027c85 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 12 Apr 2012 15:43:56 +0200 Subject: [PATCH 19/73] xrandr: remove method RestoreState @@ -10412,7 +10412,7 @@ index 2a269d0..5b64633 100644 1.7.10 -From 4a6f0e986fc27b356041a4b1bb989e0e594c8aa7 Mon Sep 17 00:00:00 2001 +From e8b72dbf152bb1a2ff380d604e0fd9bbd7451994 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 20 May 2012 13:17:10 +0200 Subject: [PATCH 20/73] xrandr: observe orientation @@ -10584,7 +10584,7 @@ index 5b64633..618bd68 100644 1.7.10 -From 97e5811e05a4ecde7249b2f76283729ff300fda9 Mon Sep 17 00:00:00 2001 +From a89e12b3ac29d108c32a554e93cb94f1cb2afc75 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:54:15 +0200 Subject: [PATCH 21/73] xrandr: allow getting info for multiple screen's @@ -10762,7 +10762,7 @@ index 618bd68..0824af5 100644 1.7.10 -From 2b379b9ce21b6d61b44b647b79ef3587dbbcf0ec Mon Sep 17 00:00:00 2001 +From 748512b3692f1f4cec63082dd9dc4d996277d44a Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:44:00 +0200 Subject: [PATCH 22/73] X11: fix multi-head setups @@ -11497,7 +11497,7 @@ index 93cf5db..71034fc 100644 1.7.10 -From 2a747f13a0a50dea0883d0d3c701ef290235a99b Mon Sep 17 00:00:00 2001 +From fcc6a223fdca36b95327dab99758255e7be0e69e Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:36:32 +0200 Subject: [PATCH 23/73] X11: remove all DefaultScreen and RootWindow macros @@ -11568,7 +11568,7 @@ index f858f88..d192697 100644 1.7.10 -From cf018ebbf1eae8f5ae2914ef347aac5f963c0d71 Mon Sep 17 00:00:00 2001 +From 019079003538369000d57b26a534a68f61ad6256 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:45:22 +0200 Subject: [PATCH 24/73] X11: remove all DefaultScreen and RootWindow macros @@ -11643,7 +11643,7 @@ index 9785fe7..0004e07 100644 1.7.10 -From 5d8bfcd52e5a189515629c15c73434ef6c6bcc88 Mon Sep 17 00:00:00 2001 +From 770cdec440e330d23629cc70153a5a05c3ddf9b7 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 20 Jun 2012 17:37:11 +0200 Subject: [PATCH 25/73] X11: recreate gl context after output has changed @@ -11797,7 +11797,7 @@ index d192697..0f2d1d2 100644 1.7.10 -From bd9a29b7661c75152174959f9f269f32c13a658b Mon Sep 17 00:00:00 2001 +From 097d10727fc8e75a3976850782d3e8da74482140 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:06:25 +0200 Subject: [PATCH 26/73] X11: hook video reference clock in windowing @@ -12005,7 +12005,7 @@ index dcc4f09..7eb6317 100644 1.7.10 -From 702f79eab647ec68030c99d6113976f3c602e87c Mon Sep 17 00:00:00 2001 +From 88e10ce5f4b4172129dd258b91ee4d7b6a6ecaec Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 21 Jun 2012 17:26:51 +0200 Subject: [PATCH 27/73] X11: fix video calibrations @@ -12113,7 +12113,7 @@ index cc28f56..c046c86 100644 1.7.10 -From 07920e322c9770ebb99becd104ebce0789c502fa Mon Sep 17 00:00:00 2001 +From 96ccf3d52796fdba75d37a18e9b514814657f332 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:00:26 +0200 Subject: [PATCH 28/73] X11: deactivate screen saver on startup @@ -12186,7 +12186,7 @@ index c046c86..e953d2d 100644 1.7.10 -From 835bcc9c7fd477012492ffc4cad2bdd9ce506064 Mon Sep 17 00:00:00 2001 +From 305cd979dbf8226fa8826f410172f3df8caa4811 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:10:09 +0200 Subject: [PATCH 29/73] X11: change method of going full-screen @@ -12233,7 +12233,7 @@ index b3e7ab5..91f92c1 100644 1.7.10 -From e2442797ff82b3ed8053f1a6422863ffce9cbe5f Mon Sep 17 00:00:00 2001 +From ded35a8abe03367f8b316106e2062c1d0a44fc02 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Jun 2012 19:12:39 +0200 Subject: [PATCH 30/73] X11: reset key repeat and key modifier on focus lost @@ -12268,7 +12268,7 @@ index 6c22358..d86205d 100644 1.7.10 -From 77a22163a7f611e9183b7cd0b817fc51a42d45de Mon Sep 17 00:00:00 2001 +From ef601448e65346a8c7746cb1c470269a66f9afa0 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 14:18:46 +0200 Subject: [PATCH 31/73] X11: replace custom utf8 to unicode with charset @@ -12488,7 +12488,7 @@ index 6100933..72955ad 100644 1.7.10 -From e060b3197bbac54b79b604bbbf9a8e86257980f5 Mon Sep 17 00:00:00 2001 +From 3d9931214dc45ed6442e39f2576175d90879e413 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 14:23:54 +0200 Subject: [PATCH 32/73] X11: fixed invalid usage of sizeof() (squash into x11 @@ -12555,7 +12555,7 @@ index 72955ad..102a076 100644 1.7.10 -From c52af3ba68292f08331cbbbc940dfcea838a2f44 Mon Sep 17 00:00:00 2001 +From 8b292cf47d12a0e8e1c980e9187074f5da30582e Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 9 Jun 2012 18:23:53 +0200 Subject: [PATCH 33/73] add missing keys to xbmc keytable @@ -12581,7 +12581,7 @@ index aaf65ba..9d7922f 100644 1.7.10 -From 25587ee807eca2fc9dde4528e3fc930b337e38b0 Mon Sep 17 00:00:00 2001 +From 285cb8393ff2c80aef5b0f8fd6f32cb24160fa66 Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 16 Mar 2012 15:57:51 +0100 Subject: [PATCH 34/73] videorefclock: temp deactivate of nv settings @@ -12607,7 +12607,7 @@ index fa8e35a..85e36c7 100644 1.7.10 -From 4f8a95de09408321e2df3da891536c314fe3b4d2 Mon Sep 17 00:00:00 2001 +From f9326bbe9799df7e48baedd4c29a5084cc7f291d Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 20 Aug 2012 09:09:09 +0200 Subject: [PATCH 35/73] videorefclock: ask graphics context for refresh rate @@ -12641,7 +12641,7 @@ index 85e36c7..8209163 100644 1.7.10 -From 85d81f0c933cb0a75c2c21de86b4065e3db86002 Mon Sep 17 00:00:00 2001 +From 335cfdabc94f26144a021484bef565280fdb468c Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 9 Jul 2012 14:00:18 +0200 Subject: [PATCH 36/73] X11: fix icon texture after @@ -12752,7 +12752,7 @@ index 91f92c1..174ccef 100644 1.7.10 -From 111c2f8fd0f6b698fbff0fda6dc6c17ce3644626 Mon Sep 17 00:00:00 2001 +From b88e65666f467ccd3ab90a2cdc9cf90f32676667 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 10 Jul 2012 11:14:12 +0200 Subject: [PATCH 37/73] X11: check for window manager @@ -12876,7 +12876,7 @@ index e953d2d..0b7c10a 100644 1.7.10 -From f1051e1991e5ef5d83ce428b841ac365082042ec Mon Sep 17 00:00:00 2001 +From d69db585a0877699a1b21701a024c5a02cea9084 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 12 Jul 2012 11:11:47 +0200 Subject: [PATCH 38/73] X11: dont set window on xrandr if no mode available @@ -12916,7 +12916,7 @@ index 4f1ae26..c11ea89 100644 1.7.10 -From 83b9c33e88077d957884ee22316c218e570dc3d5 Mon Sep 17 00:00:00 2001 +From 9144abbbea8aeaae193fe5d35029d8796874093d Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 26 Jul 2012 09:34:28 +0200 Subject: [PATCH 39/73] X11: fix crash after a resolution change on startup @@ -12943,7 +12943,7 @@ index c11ea89..0bd72d4 100644 1.7.10 -From b8956ed57f1b683ae79d7306c7461a31c894e9a9 Mon Sep 17 00:00:00 2001 +From f7b05be0696cbda0d145deb7155d409fe7f25932 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 15 Sep 2012 18:27:29 +0200 Subject: [PATCH 40/73] X11: lock graphics context in NotifyXRREvent @@ -12969,7 +12969,7 @@ index 0bd72d4..ef83133 100644 1.7.10 -From aed5d244b81b1a0b171b7fea3b332decafc96c56 Mon Sep 17 00:00:00 2001 +From bc501e4a04225ce1ac7eadb90fc926ba156e46f5 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 8 Oct 2011 16:45:13 +0200 Subject: [PATCH 41/73] ffmpeg: add xvba hwaccel @@ -13839,7 +13839,7 @@ index f0d9c01..0f8cf7b 100644 1.7.10 -From 922cada27e255bc3f685b700c2ffa4a146f87624 Mon Sep 17 00:00:00 2001 +From 1502daa2e3432e56b5c7a156754fda9d1a804f91 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 12 Apr 2012 12:09:31 +0200 Subject: [PATCH 42/73] xvba: add decoder @@ -17289,7 +17289,7 @@ index f25d10d..f6b1ea4 100644 1.7.10 -From 517eda0bf58a6376a82839ab92e51b97c143edf1 Mon Sep 17 00:00:00 2001 +From 5b47c760839742a585f5e1aa3f6275eb283ae564 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 23 Aug 2012 19:39:49 +0200 Subject: [PATCH 43/73] ffmpeg: add av_find_default_stream_index to interface @@ -17338,7 +17338,7 @@ index 9bda3f3..bf31fcb 100644 1.7.10 -From 23be471842ae9ea7bd62c18261a5e96a11045d04 Mon Sep 17 00:00:00 2001 +From 2a600a0e3acac4f668f10f81a430f2b1d24d2243 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 20 Aug 2012 16:06:39 +0200 Subject: [PATCH 44/73] dvdplayer: observe pts counter overflow @@ -17627,7 +17627,7 @@ index 2b5f2e8..e0acf29 100644 1.7.10 -From 66382788a903f99ba317e972ba0445fc68320750 Mon Sep 17 00:00:00 2001 +From 64e55ac8d4fb589f337daba53ada52d6a8d3abf0 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 2 Oct 2012 13:02:10 +0200 Subject: [PATCH 45/73] dvdplayer: avoid short screen flicker caused by @@ -17663,7 +17663,7 @@ index e5e71f3..8b02d81 100644 1.7.10 -From 04f4521c1938a7ac17acd59f3bd6be59c7ba8184 Mon Sep 17 00:00:00 2001 +From 3dff64b607a88901b4bad7439c39b9133b01ed00 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 16 Jun 2012 12:46:30 +0200 Subject: [PATCH 46/73] xvba: do not use vaapi if xvba is present @@ -17696,7 +17696,7 @@ index a2b9195..43a05b3 100644 1.7.10 -From a133b7fa119e859ec50b9f05a33de984105234f3 Mon Sep 17 00:00:00 2001 +From 3c5e2eb61270b516341c1846722f5df42ba27eec Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 11 Oct 2012 12:05:50 +0200 Subject: [PATCH 47/73] vdpau: advanced settings for auto deinterlacing @@ -17765,7 +17765,7 @@ index 72718e5..aaa4702 100644 1.7.10 -From 62540aeaa356823bd34e9367ac39eef23a6e4ce4 Mon Sep 17 00:00:00 2001 +From 4ecb573a4578240c76d47edfa071a2872285c0ef Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 11 Oct 2012 13:01:08 +0200 Subject: [PATCH 48/73] dvdplayer: correct determination if video is playing @@ -17801,7 +17801,7 @@ index 6fcb6b3..f76691d 100644 1.7.10 -From 5a093bbd60d1ca47ed7c5e4639f28dafc1b565c1 Mon Sep 17 00:00:00 2001 +From 18112c69378d18c498e5f9e0a0ca2db262be6120 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 14 Oct 2012 13:46:54 +0200 Subject: [PATCH 49/73] rendermanager: fix stuttering in non full-screen mode, @@ -17830,7 +17830,7 @@ index 0506823..b141c80 100644 1.7.10 -From d0597caa2c922575efdf081d719d5665c626ffec Mon Sep 17 00:00:00 2001 +From 5488ba31ed2039da5186e4e6e26c16bfae6a7cb2 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 14 Oct 2012 17:54:02 +0200 Subject: [PATCH 50/73] rendermanager: forgot to set flip event if buffering @@ -17876,7 +17876,7 @@ index b141c80..9290f80 100644 1.7.10 -From c485392afa608bfbcf903fa53a9dd824258c96dd Mon Sep 17 00:00:00 2001 +From 3ac9979f74f43b629ea9391243697ed4168b290b Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 26 Oct 2012 15:30:22 +0200 Subject: [PATCH 51/73] vdpau: fix small mem leak @@ -17902,7 +17902,7 @@ index d95797b..fec4b88 100644 1.7.10 -From 9d7228a84013e409149d7b05d34545d1bdf06e27 Mon Sep 17 00:00:00 2001 +From 5c6e31de5b357022878c46c94885f34e62ba9a66 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 29 Oct 2012 18:25:56 +0100 Subject: [PATCH 52/73] xvba: do not render if there is no valid texture @@ -17939,7 +17939,7 @@ index ec3606a..7c3adcb 100644 1.7.10 -From 85be082db41b27cdd3824b8360dc021e17a84c22 Mon Sep 17 00:00:00 2001 +From 49267751b5b4d0315c0ff850c06c2c465cd0d2a5 Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 2 Nov 2012 13:20:03 +0100 Subject: [PATCH 53/73] player: fix rewind @@ -18187,7 +18187,7 @@ index 509d5f7..7cddda7 100644 1.7.10 -From 024ecda241754f02ad985fab9116e33b06b8d174 Mon Sep 17 00:00:00 2001 +From 42907b5fc097d5b1d9cbc3941fee44af7b5ad95a Mon Sep 17 00:00:00 2001 From: fritsch Date: Fri, 2 Nov 2012 17:56:12 +0100 Subject: [PATCH 54/73] xvba: do not create decoder for surfaces larger than @@ -18227,7 +18227,7 @@ index e8e376a..b73c48a 100644 1.7.10 -From 98ebb0d0232cf4a7ea2082f9f16e210a39e983e8 Mon Sep 17 00:00:00 2001 +From 8aacdb77cd98243077ecf2d3f7195233dcc38c15 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sun, 4 Nov 2012 16:24:10 +0100 Subject: [PATCH 55/73] xvba: add string for available decoders - we are @@ -18257,7 +18257,7 @@ index 0cea7a9..6fb74b7 100644 1.7.10 -From 84e701f7db6603a2942611d5c74ba645c625ec0d Mon Sep 17 00:00:00 2001 +From fe452b364c738733b949b3c7f09a6fb8fe228978 Mon Sep 17 00:00:00 2001 From: fritsch Date: Thu, 22 Nov 2012 21:32:21 +0100 Subject: [PATCH 56/73] xvba: revisit Artefacts. There are more broken video @@ -18294,7 +18294,7 @@ index a077442..87af687 100644 1.7.10 -From afd776e3e90a1787ce4c3392266d70368de4e164 Mon Sep 17 00:00:00 2001 +From c7b995f8d10dc0171f80a4d604c5cbf0e6520a59 Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 23 Nov 2012 09:42:02 +0100 Subject: [PATCH 57/73] xvba: reactivate accidently disabled @@ -18321,7 +18321,7 @@ index b73c48a..47ff25f 100644 1.7.10 -From 37576c15f9e3a0c2dce593e9d9cb5a7863845de7 Mon Sep 17 00:00:00 2001 +From 2e4d9701752aa760c2cc5b8ca9b247ec476026e2 Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 23 Nov 2012 17:41:12 +0100 Subject: [PATCH 58/73] xrandr: fix query for multiple screens @@ -18365,7 +18365,7 @@ index cc933b9..533e03d 100644 1.7.10 -From bd5d572c69ee254beedb5e9339831652943ea8b4 Mon Sep 17 00:00:00 2001 +From c39f8e5141d6e176f1edb0eb510fa54976915654 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 2 Dec 2012 15:46:55 +0100 Subject: [PATCH 59/73] X11: add debug log to print out refresh after xrr @@ -18396,7 +18396,7 @@ index ef83133..76c6362 100644 1.7.10 -From d418ae1053a3842eb3e6a3bbd84666a5ee3defe2 Mon Sep 17 00:00:00 2001 +From 181697e9001e0568ff06098d0f2223fc4c0d8f51 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 11 Dec 2012 11:08:13 +0100 Subject: [PATCH 60/73] X11: dont call XCloseDisplay on shutdown, it crashes @@ -18424,7 +18424,7 @@ index 76c6362..e4e25b2 100644 1.7.10 -From 3b700401e9aace50b5ce6c5d7ba2a2e33bb5217f Mon Sep 17 00:00:00 2001 +From 87d87db6cd67fc7f7f7afa88f089eafaac1b9605 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 12 Dec 2012 09:52:17 +0100 Subject: [PATCH 61/73] vdpau: make interop gl default and remove setting, @@ -18582,7 +18582,7 @@ index 3c19a06..b9f18e4 100644 1.7.10 -From a060312a4e236858bf3c9a97d663c5643796b649 Mon Sep 17 00:00:00 2001 +From d468e959e2d7d888e02db3848542b5a203e007c3 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 12 Dec 2012 18:34:47 +0100 Subject: [PATCH 62/73] vdpau: drop studio level conversion @@ -18768,7 +18768,7 @@ index a4bd524..67aeec9 100644 1.7.10 -From 6d03704ce1cbc7d09d684da1ced478b2b59c0b35 Mon Sep 17 00:00:00 2001 +From 672e2f03b5b8d133ebfa87e0ebf20fd9f3fb0beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Coutant?= Date: Wed, 12 Dec 2012 19:49:47 +0100 Subject: [PATCH 63/73] x11: support for multiple x screens @@ -18794,7 +18794,7 @@ index 533e03d..7a16488 100644 1.7.10 -From 597c8449084e1e5ebfebfb31db570f7826d06517 Mon Sep 17 00:00:00 2001 +From c0f54dac42fba2a522ab4f43f3f20a11a3bace3b Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 12 Dec 2012 20:28:49 +0100 Subject: [PATCH 64/73] vdpau: observe ffmpeg tags for color space @@ -18901,7 +18901,7 @@ index 4d1559c..471ad68 100644 1.7.10 -From 3f9308d76025ef1e31923fa9a06587f75c00f870 Mon Sep 17 00:00:00 2001 +From 82584e21f05fb275853f9baca72a65b6ff0672ff Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 20 Dec 2012 19:35:38 +0100 Subject: [PATCH 65/73] fix compile error after recent change @@ -18927,7 +18927,7 @@ index b9f18e4..cacb32a 100644 1.7.10 -From 213792b2678760d42740d581a1ee71e186a31c4d Mon Sep 17 00:00:00 2001 +From 514833b80006796c7985e37e414137e50a0c0d43 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 24 Dec 2012 16:02:42 +0100 Subject: [PATCH 66/73] pvr: increase changes counter of stream on stream @@ -18965,7 +18965,7 @@ index 8c984f6..034e545 100644 1.7.10 -From e810d3bd68e89e800fba217e88184c2df0fe4040 Mon Sep 17 00:00:00 2001 +From 118041f574fa106e74e7a8ef26243ea4225643b5 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 17 Jan 2013 16:03:22 +0100 Subject: [PATCH 67/73] X11: add keymapping for XF86XK_Sleep @@ -18990,7 +18990,7 @@ index c31877e..ed31c04 100644 1.7.10 -From 2cb807b2f801f06723cde1bdd636550c08fc08ab Mon Sep 17 00:00:00 2001 +From adce338a8fef2247a878e52c34c8a38d2788beb3 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 12 Jan 2013 13:03:50 +0100 Subject: [PATCH 68/73] dvdplayer: Allow multithread decoding for hi10p @@ -19098,7 +19098,7 @@ index aaa4702..863e4f3 100644 1.7.10 -From 5e52fa15742e1300ac394738ead4ca2792c4812c Mon Sep 17 00:00:00 2001 +From a4824bb077abbf61dcc123f70e4bd78a021de2eb Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 21 Jan 2013 09:00:19 +0100 Subject: [PATCH 69/73] X11: remove toggle full screen after resume @@ -19127,7 +19127,7 @@ index a5534c9..7e2ddc6 100644 1.7.10 -From e8f3e20dfb3bde4434e2aea69b34e22ba1859a31 Mon Sep 17 00:00:00 2001 +From db652deb4330ab7b7f3cc83a55359e910fc2caec Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 23 Jan 2013 17:03:02 +0100 Subject: [PATCH 70/73] xrandr: set screen on mode change command @@ -19153,7 +19153,7 @@ index 7a16488..6531ba3 100644 1.7.10 -From f229dba603070e1f0528d395c9d5d63f9044ae6e Mon Sep 17 00:00:00 2001 +From 81a1c20546aec833174595a86db363dd058b43b4 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 23 Jan 2013 17:03:39 +0100 Subject: [PATCH 71/73] X11: recreate glx context when output changes @@ -19207,7 +19207,7 @@ index 0b7c10a..33b1739 100644 1.7.10 -From ae08a23a2f4fd78139e2ebca8a4a87ab619feb0b Mon Sep 17 00:00:00 2001 +From 30eaf88e0a66baab5a3a18add429d295e4a272fb Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 27 Jan 2013 12:10:19 +0100 Subject: [PATCH 72/73] vdpau: switch off de-interlacing on ff @@ -19236,7 +19236,7 @@ index 8858614..3e21d9d 100644 1.7.10 -From 1ea917e026e8c5df15de6ce6276cba9e58d09d3d Mon Sep 17 00:00:00 2001 +From 912b6ede1258d68c0f7cc7e57201bf1b50ae3fa7 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 2 Feb 2013 13:17:09 +0100 Subject: [PATCH 73/73] vdpau: fix mp4 part2 decoding, activate by default diff --git a/packages/mediacenter/xbmc/patches/xbmc-995.50-disable-alt-tab.patch b/packages/mediacenter/xbmc/patches.x86/xbmc-995.10-disable-alt-tab.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-995.50-disable-alt-tab.patch rename to packages/mediacenter/xbmc/patches.x86/xbmc-995.10-disable-alt-tab.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-995.51-remove-windowed-display-mode.patch b/packages/mediacenter/xbmc/patches/xbmc-990.00-remove-windowed-display-mode.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/xbmc-995.51-remove-windowed-display-mode.patch rename to packages/mediacenter/xbmc/patches/xbmc-990.00-remove-windowed-display-mode.patch diff --git a/packages/mediacenter/xbmc/patches/xbmc-995.09-revert-rpi-fixes.patch b/packages/mediacenter/xbmc/patches/xbmc-995.09-revert-rpi-fixes.patch deleted file mode 100644 index b7d03823ff..0000000000 --- a/packages/mediacenter/xbmc/patches/xbmc-995.09-revert-rpi-fixes.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff -Naur xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.cpp xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.cpp ---- xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.cpp 2013-02-19 19:04:39.000000000 +0100 -+++ xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.cpp 2013-02-22 18:18:47.298296862 +0100 -@@ -124,7 +124,6 @@ - m_started = false; - m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0; - m_autosync = 1; -- m_iSleepEndTime = DVD_NOPTS_VALUE; - - m_audio_count = m_av_clock->HasAudio(); - -@@ -453,23 +452,13 @@ - m_dropbase = 0.0f; - #endif - -- // DVDPlayer sleeps until m_iSleepEndTime here before calling FlipPage. -- // Video playback in asynchronous in OMXPlayer, so we don't want to do that here, as it prevents the video fifo from being kept full. -- // So, we keep track of when FlipPage would have been called on DVDPlayer and return early if it is not time. -- // m_iSleepEndTime == DVD_NOPTS_VALUE means we are not waiting to call FlipPage, otherwise it is the time we want to call FlipPage -- if (m_iSleepEndTime == DVD_NOPTS_VALUE) { -- m_iSleepEndTime = iCurrentClock + iSleepTime; -- } -- -- if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime + DVD_MSEC_TO_TIME(500)) -- return; -- - double pts_media = m_av_clock->OMXMediaTime(false, false); - ProcessOverlays(iGroupId, pts_media); - -- g_renderManager.FlipPage(CThread::m_bStop, m_iSleepEndTime / DVD_TIME_BASE, -1, FS_NONE); -+ while(!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < (iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500)) ) -+ Sleep(1); - -- m_iSleepEndTime = DVD_NOPTS_VALUE; -+ g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, FS_NONE); - - //m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime)); - } -@@ -580,14 +569,12 @@ - m_av_clock->OMXReset(false); - m_av_clock->UnLock(); - m_started = false; -- m_iSleepEndTime = DVD_NOPTS_VALUE; - } - else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush()) - { - CLog::Log(LOGDEBUG, "COMXPlayerVideo - CDVDMsg::GENERAL_FLUSH"); - m_stalled = true; - m_started = false; -- m_iSleepEndTime = DVD_NOPTS_VALUE; - m_av_clock->Lock(); - m_av_clock->OMXStop(false); - m_omxVideo.Reset(); -diff -Naur xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.h xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.h ---- xbmc-12.0.2/xbmc/cores/omxplayer/OMXPlayerVideo.h 2013-02-19 19:04:39.000000000 +0100 -+++ xbmc-12.0.2.patch/xbmc/cores/omxplayer/OMXPlayerVideo.h 2013-02-22 18:18:44.166310881 +0100 -@@ -49,7 +49,6 @@ - bool m_open; - CDVDStreamInfo m_hints; - double m_iCurrentPts; -- double m_iSleepEndTime; - OMXClock *m_av_clock; - COMXVideo m_omxVideo; - float m_fFrameRate; diff --git a/packages/mediacenter/xbmc/patches/xbmc-995.10-xvba_rpi_fixes-059b89b.patch b/packages/mediacenter/xbmc/patches/xbmc-995.10-xvba_rpi_fixes-059b89b.patch deleted file mode 100644 index 64f82a0543..0000000000 --- a/packages/mediacenter/xbmc/patches/xbmc-995.10-xvba_rpi_fixes-059b89b.patch +++ /dev/null @@ -1,1079 +0,0 @@ -From bc4a2f53976c71c403b91ab1aa6138f966a90480 Mon Sep 17 00:00:00 2001 -From: unknown -Date: Fri, 18 Jan 2013 15:16:38 +0100 -Subject: [PATCH 1/7] multi-screen: fix compilation on windows - ---- - xbmc/settings/GUIWindowSettingsCategory.cpp | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp -index cacb32a..cbf0acb 100644 ---- a/xbmc/settings/GUIWindowSettingsCategory.cpp -+++ b/xbmc/settings/GUIWindowSettingsCategory.cpp -@@ -528,12 +528,14 @@ void CGUIWindowSettingsCategory::CreateSettings() - FillInRefreshRates(strSetting, g_guiSettings.GetResolution(), false); - continue; - } -+#if defined(HAS_GLX) - else if (strSetting.Equals("videoscreen.monitor")) - { - AddSetting(pSetting, group->GetWidth(), iControlID); - FillInMonitors(strSetting); - continue; - } -+#endif - else if (strSetting.Equals("lookandfeel.skintheme")) - { - AddSetting(pSetting, group->GetWidth(), iControlID); -@@ -1483,6 +1485,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting - // Cascade - FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true); - } -+#if defined(HAS_GLX) - else if (strSetting.Equals("videoscreen.monitor")) - { - CSettingString *pSettingString = (CSettingString *)pSettingControl->GetSetting(); -@@ -1497,6 +1500,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting - FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true); - } - } -+#endif - else if (strSetting.Equals("videoscreen.resolution")) - { - RESOLUTION nextRes = (RESOLUTION) g_guiSettings.GetInt("videoscreen.resolution"); -@@ -2451,6 +2455,7 @@ DisplayMode CGUIWindowSettingsCategory::FillInScreens(CStdString strSetting, RES - - void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting) - { -+#if defined(HAS_GLX) - // we expect "videoscreen.monitor" but it might be hidden on some platforms, - // so check that we actually have a visable control. - BaseSettingControlPtr control = GetSetting(strSetting); -@@ -2476,6 +2481,7 @@ void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting) - pControl->SetValue(currentMonitor); - g_guiSettings.SetString("videoscreen.monitor", g_settings.m_ResInfo[RES_DESKTOP].strOutput); - } -+#endif - } - - -@@ -2607,7 +2613,10 @@ void CGUIWindowSettingsCategory::OnRefreshRateChanged(RESOLUTION nextRes) - RESOLUTION lastRes = g_graphicsContext.GetVideoResolution(); - bool cancelled = false; - -- bool outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor")); -+ bool outputChanged = true; -+#if defined(HAS_GLX) -+ outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor")); -+#endif - - g_guiSettings.SetResolution(nextRes); - g_graphicsContext.SetVideoResolution(nextRes, outputChanged); --- -1.7.10 - - -From 3724a6e137d00f92b5eb4e419883ae239f0562f8 Mon Sep 17 00:00:00 2001 -From: xbmc -Date: Fri, 22 Feb 2013 09:57:17 +0100 -Subject: [PATCH 2/7] buffering back ports - ---- - xbmc/cores/IPlayer.h | 5 ++ - xbmc/cores/VideoRenderers/BaseRenderer.h | 7 ++- - xbmc/cores/VideoRenderers/LinuxRendererGL.h | 6 +- - xbmc/cores/VideoRenderers/OverlayRenderer.cpp | 17 +++--- - xbmc/cores/VideoRenderers/OverlayRenderer.h | 8 +-- - xbmc/cores/VideoRenderers/RenderManager.cpp | 64 +++++++++++++--------- - xbmc/cores/VideoRenderers/RenderManager.h | 73 ++++++++++++++++++++++--- - xbmc/cores/dvdplayer/DVDPlayer.cpp | 7 ++- - xbmc/cores/dvdplayer/DVDPlayer.h | 2 + - xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 18 +++++- - 10 files changed, 150 insertions(+), 57 deletions(-) - -diff --git a/xbmc/cores/IPlayer.h b/xbmc/cores/IPlayer.h -index f2aa227..cbf2faa 100644 ---- a/xbmc/cores/IPlayer.h -+++ b/xbmc/cores/IPlayer.h -@@ -229,6 +229,11 @@ class IPlayer - */ - virtual void GetSubtitleCapabilities(std::vector &subCaps) { subCaps.assign(1,IPC_SUBS_ALL); }; - -+ /*! -+ \brief called by RenderManager in order to schedule frames -+ */ -+ virtual double GetClock(double& absolute, bool interpolated = true) {return 0; }; -+ - protected: - IPlayerCallback& m_callback; - }; -diff --git a/xbmc/cores/VideoRenderers/BaseRenderer.h b/xbmc/cores/VideoRenderers/BaseRenderer.h -index b02d536..60b7197 100644 ---- a/xbmc/cores/VideoRenderers/BaseRenderer.h -+++ b/xbmc/cores/VideoRenderers/BaseRenderer.h -@@ -26,10 +26,11 @@ - - #define MAX_PLANES 3 - #define MAX_FIELDS 3 -+#define NUM_BUFFERS 10 - - typedef struct YV12Image - { -- BYTE * plane[MAX_PLANES]; -+ uint8_t* plane[MAX_PLANES]; - int planesize[MAX_PLANES]; - unsigned stride[MAX_PLANES]; - unsigned width; -@@ -84,8 +85,8 @@ class CBaseRenderer - virtual void Flush() {}; - - virtual unsigned int GetProcessorSize() { return 0; } -- virtual unsigned int GetMaxProcessorSize() { return 0; } -- virtual void SetProcessorSize(int numBuffers) { } -+ virtual unsigned int GetMaxBufferSize() { return 0; } -+ virtual void SetBufferSize(int numBuffers) { } - virtual void ReleaseBuffer(int idx) { } - - virtual bool Supports(ERENDERFEATURE feature) { return false; } -diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -index e76624b..a189892 100644 ---- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h -+++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -@@ -46,8 +46,6 @@ - namespace XVBA { class CXvbaRenderPicture; } - - --#define NUM_BUFFERS 10 -- - #undef ALIGN - #define ALIGN(value, alignment) (((value)+((alignment)-1))&~((alignment)-1)) - #define CLAMP(a, min, max) ((a) > (max) ? (max) : ( (a) < (min) ? (min) : a )) -@@ -141,8 +139,8 @@ class CLinuxRendererGL : public CBaseRenderer - virtual void Reset(); /* resets renderer after seek for example */ - virtual void Flush(); - virtual void ReleaseBuffer(int idx); -- virtual void SetProcessorSize(int numBuffers) { m_NumYV12Buffers = numBuffers; } -- virtual unsigned int GetMaxProcessorSize() { return NUM_BUFFERS; } -+ virtual void SetBufferSize(int numBuffers) { m_NumYV12Buffers = numBuffers; } -+ virtual unsigned int GetMaxBufferSize() { return NUM_BUFFERS; } - virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; } - - #ifdef HAVE_LIBVDPAU -diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -index 94aaaf5..5236390 100644 ---- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -@@ -93,24 +93,28 @@ long COverlayMainThread::Release() - - CRenderer::~CRenderer() - { -- for(int i = 0; i < 2; i++) -+ for(int i = 0; i < NUM_BUFFERS; i++) - Release(m_buffers[i]); - } - --void CRenderer::AddOverlay(CDVDOverlay* o, double pts) -+void CRenderer::AddOverlay(CDVDOverlay* o, double pts, int index) - { - CSingleLock lock(m_section); - -+ m_decode = index; -+ - SElement e; - e.pts = pts; - e.overlay_dvd = o->Acquire(); - m_buffers[m_decode].push_back(e); - } - --void CRenderer::AddOverlay(COverlay* o, double pts) -+void CRenderer::AddOverlay(COverlay* o, double pts, int index) - { - CSingleLock lock(m_section); - -+ m_decode = index; -+ - SElement e; - e.pts = pts; - e.overlay = o->Acquire(); -@@ -163,13 +167,6 @@ void CRenderer::Flip() - m_render = (m_render + 1) % m_iNumBuffers; - } - --void CRenderer::SetBuffer(int idx) --{ -- CSingleLock lock(m_section); -- Release(m_buffers[idx]); -- m_decode = idx; --} -- - void CRenderer::ReleaseBuffer(int idx) - { - CSingleLock lock(m_section); -diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.h b/xbmc/cores/VideoRenderers/OverlayRenderer.h -index c6740a5..66c592a 100644 ---- a/xbmc/cores/VideoRenderers/OverlayRenderer.h -+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.h -@@ -23,6 +23,7 @@ - #pragma once - - #include "threads/CriticalSection.h" -+#include "BaseRenderer.h" - - #include - -@@ -92,14 +93,13 @@ - CRenderer(); - ~CRenderer(); - -- void AddOverlay(CDVDOverlay* o, double pts); -- void AddOverlay(COverlay* o, double pts); -+ void AddOverlay(CDVDOverlay* o, double pts, int index); -+ void AddOverlay(COverlay* o, double pts, int index); - void AddCleanup(COverlay* o); - void Flip(); - void Render(); - void Flush(); - void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; } -- void SetBuffer(int idx); - void ReleaseBuffer(int idx); - - protected: -@@ -127,7 +127,7 @@ - void Release(SElementV& list); - - CCriticalSection m_section; -- SElementV m_buffers[10]; -+ SElementV m_buffers[NUM_BUFFERS]; - int m_iNumBuffers; - int m_decode; - int m_render; -diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index 9290f80..ca454eb 100644 ---- a/xbmc/cores/VideoRenderers/RenderManager.cpp -+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp -@@ -228,7 +228,7 @@ CStdString CXBMCRenderManager::GetVSyncState() - return state; - } - --bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation) -+bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation, bool buffering) - { - /* make sure any queued frame was fully presented */ - double timeout = m_presenttime + 0.1; -@@ -248,12 +248,8 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi - return false; - } - -- // check if decoder supports buffering -- m_bCodecSupportsBuffering = false; -- if (format == RENDER_FMT_VDPAU -- || format == RENDER_FMT_VDPAU_420 -- || format == RENDER_FMT_XVBA) -- m_bCodecSupportsBuffering = true; -+ // set buffering -+ m_bCodecSupportsBuffering = buffering; - - bool result = m_pRenderer->Configure(width, height, d_width, d_height, fps, flags, format, extended_format, orientation); - if(result) -@@ -325,7 +321,7 @@ void CXBMCRenderManager::RenderUpdate(bool clear, DWORD flags, DWORD alpha) - m_presentevent.Set(); - } - --unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock) -+unsigned int CXBMCRenderManager::PreInit() - { - CRetakeLock lock(m_sharedSection); - -@@ -333,7 +329,6 @@ unsigned int CXBMCRenderManager::PreInit(CDVDClock *pClock) - m_presenterr = 0.0; - m_errorindex = 0; - memset(m_errorbuff, 0, sizeof(m_errorbuff)); -- m_pClock = pClock; - - m_bIsStarted = false; - m_bPauseDrawing = false; -@@ -617,10 +612,12 @@ void CXBMCRenderManager::FlipPage(volatile bool& bStop, double timestamp /* = 0L - } - } - -- FlipFreeBuffer(); -- m_renderBuffers[m_iOutputRenderBuffer].pts = timestamp; -- m_renderBuffers[m_iOutputRenderBuffer].presentfield = presentfield; -- m_renderBuffers[m_iOutputRenderBuffer].presentmethod = presentmethod; -+ if (FlipFreeBuffer() >= 0) -+ { -+ m_renderBuffers[m_iOutputRenderBuffer].pts = timestamp; -+ m_renderBuffers[m_iOutputRenderBuffer].presentfield = presentfield; -+ m_renderBuffers[m_iOutputRenderBuffer].presentmethod = presentmethod; -+ } - m_speed = speed; - } - -@@ -880,9 +877,17 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) - #endif - m_pRenderer->ReleaseImage(index, false); - -+ m_bRenderBufferUsed = true; - return index; - } - -+void CXBMCRenderManager::AddOverlay(CDVDOverlay* o, double pts) -+{ -+ CSharedLock lock(m_sharedSection); -+ m_overlays.AddOverlay(o, pts, (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers); -+ m_bRenderBufferUsed = true; -+} -+ - bool CXBMCRenderManager::Supports(ERENDERFEATURE feature) - { - CSharedLock lock(m_sharedSection); -@@ -939,31 +944,28 @@ EINTERLACEMETHOD CXBMCRenderManager::AutoInterlaceMethodInternal(EINTERLACEMETHO - return mInt; - } - --int CXBMCRenderManager::WaitForBuffer(volatile bool& bStop) -+int CXBMCRenderManager::WaitForBuffer(volatile bool& bStop, int timeout) - { - CSharedLock lock(m_sharedSection); - if (!m_pRenderer) - return -1; - - //wait up to a second as this is our slowest allowed output rate -- double timeout = GetPresentTime() + 0.1; -+ double maxwait = GetPresentTime() + (float)timeout/1000; - while(!HasFreeBuffer() && !bStop) - { - lock.Leave(); -- m_flipEvent.WaitMSec(50); -- if(GetPresentTime() > timeout && !bStop) -+ m_flipEvent.WaitMSec(std::min(50, timeout)); -+ if(GetPresentTime() > maxwait && !bStop) - { -- CLog::Log(LOGWARNING, "CRenderManager::WaitForBuffer - timeout waiting for buffer"); -+ if (timeout != 0) -+ CLog::Log(LOGWARNING, "CRenderManager::WaitForBuffer - timeout waiting for buffer"); - return -1; - } - lock.Enter(); - } - lock.Leave(); - -- { CRetakeLock lock(m_sharedSection); -- m_overlays.SetBuffer((m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers); -- } -- - if (bStop) - return -1; - -@@ -987,10 +989,17 @@ int CXBMCRenderManager::FlipFreeBuffer() - // See "Render Buffer State Description" in header for information. - if (HasFreeBuffer()) - { -+ if (!m_bRenderBufferUsed) -+ { -+ return -1; -+ } -+ m_bRenderBufferUsed = false; - m_bAllRenderBuffersDisplayed = false; - m_iOutputRenderBuffer = (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers; - return m_iOutputRenderBuffer; - } -+ else -+ return -1; - } - - bool CXBMCRenderManager::HasFreeBuffer() -@@ -1013,7 +1022,7 @@ bool CXBMCRenderManager::HasFreeBuffer() - - void CXBMCRenderManager::ResetRenderBuffer() - { -- m_iNumRenderBuffers = m_pRenderer->GetMaxProcessorSize(); -+ m_iNumRenderBuffers = m_pRenderer->GetMaxBufferSize(); - m_iNumRenderBuffers = std::min(5, m_iNumRenderBuffers); - m_iNumRenderBuffers = std::max(2, m_iNumRenderBuffers); - -@@ -1022,7 +1031,7 @@ void CXBMCRenderManager::ResetRenderBuffer() - - CLog::Log(LOGNOTICE,"CXBMCRenderManager::ResetRenderBuffer - using %d render buffers", m_iNumRenderBuffers); - m_overlays.SetNumBuffers(m_iNumRenderBuffers); -- m_pRenderer->SetProcessorSize(m_iNumRenderBuffers); -+ m_pRenderer->SetBufferSize(m_iNumRenderBuffers); - - m_iCurrentRenderBuffer = 0; - m_iOutputRenderBuffer = 0; -@@ -1031,6 +1040,7 @@ void CXBMCRenderManager::ResetRenderBuffer() - m_sleeptime = 1.0; - m_presentPts = DVD_NOPTS_VALUE; - m_speed = 0; -+ m_bRenderBufferUsed = false; - } - - void CXBMCRenderManager::PrepareNextRender() -@@ -1045,7 +1055,11 @@ void CXBMCRenderManager::PrepareNextRender() - } - - double iClockSleep, iPlayingClock, iCurrentClock; -- iPlayingClock = m_pClock->GetClock(iCurrentClock, false); -+ if (g_application.m_pPlayer) -+ iPlayingClock = g_application.m_pPlayer->GetClock(iCurrentClock, false); -+ else -+ iPlayingClock = iCurrentClock = 0; -+ - iClockSleep = m_renderBuffers[idx].pts - iPlayingClock; - - if (m_speed) -diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h -index 6746957..1a460c7 100644 ---- a/xbmc/cores/VideoRenderers/RenderManager.h -+++ b/xbmc/cores/VideoRenderers/RenderManager.h -@@ -66,21 +66,44 @@ class CXBMCRenderManager - void SetViewMode(int iViewMode); - - // Functions called from mplayer -- bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation); -+ /** -+ * Called by video player to configure renderer -+ * @param width width of decoded frame -+ * @param height height of decoded frame -+ * @param d_width displayed width of frame (aspect ratio) -+ * @param d_height displayed height of frame -+ * @param fps frames per second of video -+ * @param flags see RenderFlags.h -+ * @param format see RenderFormats.h -+ * @param extended_format used by DXVA -+ * @param orientation -+ * @param buffering enable buffering in renderer, defaults to false -+ */ -+ bool Configure(unsigned int width, unsigned int height, unsigned int d_width, unsigned int d_height, float fps, unsigned flags, ERenderFormat format, unsigned extended_format, unsigned int orientation, bool buffering = false); - bool IsConfigured(); - - int AddVideoPicture(DVDVideoPicture& picture); - -+ /** -+ * Called by video player to flip render buffers -+ * If buffering is enabled this method does not block. In case of disabled buffering -+ * this method blocks waiting for the render thread to pass by. -+ * When buffering is used there might be no free buffer available after the call to -+ * this method. Player has to call WaitForBuffer. A free buffer will become -+ * available after the main thread has flipped front / back buffers. -+ * -+ * @param bStop reference to stop flag of calling thread -+ * @param timestamp pts of frame delivered with AddVideoPicture -+ * @param source depreciated -+ * @param sync signals frame, top, or bottom field -+ * @param speed current speed of player, needed to calculate presenttime when buffering is avtive -+ */ - void FlipPage(volatile bool& bStop, double timestamp = 0.0, int source = -1, EFIELDSYNC sync = FS_NONE, int speed = 0); -- unsigned int PreInit(CDVDClock *pClock); -+ unsigned int PreInit(); - void UnInit(); - bool Flush(); - -- void AddOverlay(CDVDOverlay* o, double pts) -- { -- CSharedLock lock(m_sharedSection); -- m_overlays.AddOverlay(o, pts); -- } -+ void AddOverlay(CDVDOverlay* o, double pts); - - void AddCleanup(OVERLAY::COverlay* o) - { -@@ -132,11 +155,43 @@ class CXBMCRenderManager - CSharedSection& GetSection() { return m_sharedSection; }; - - void RegisterRenderUpdateCallBack(const void *ctx, RenderUpdateCallBackFn fn); -- int WaitForBuffer(volatile bool& bStop); -+ -+ /** -+ * If player uses buffering it has to wait for a buffer before it calls -+ * AddVideoPicture and AddOverlay. It waits for max 50 ms before it returns -1 -+ * in case no buffer is available. Player may call this in a loop and decides -+ * by itself when it wants to drop a frame. -+ * If no buffering is requested in Configure, player does not need to call this, -+ * because FlipPage will block. -+ */ -+ int WaitForBuffer(volatile bool& bStop, int timeout = 100); -+ -+ /** -+ * Called by application right after flip. The buffer which has been rendered to -+ * display becomes available for player to deliver a new frame. -+ */ - void NotifyDisplayFlip(); -+ -+ /** -+ * Can be called by player for lateness detection. This is done best by -+ * looking at the end of the queue. -+ */ - bool GetStats(double &sleeptime, double &pts, int &bufferLevel); -+ -+ /** -+ * Called by application (main thread) to query if there is any frame to render -+ */ - bool HasFrame(); -+ -+ /** -+ * Video player can dynamically enable/disable buffering. In situations like -+ * rewind buffering is not ideal. -+ */ - void EnableBuffering(bool enable); -+ -+ /** -+ * Video player call this on flush in oder to discard any queued frames -+ */ - void DiscardBuffer(); - - protected: -@@ -202,6 +257,7 @@ class CXBMCRenderManager - bool m_bUseBuffering; - bool m_bCodecSupportsBuffering; - int m_speed; -+ bool m_bRenderBufferUsed; - CEvent m_flipEvent; - - struct -@@ -225,7 +281,6 @@ class CXBMCRenderManager - int m_presentsource; - CEvent m_presentevent; - CEvent m_flushEvent; -- CDVDClock *m_pClock; - - - OVERLAY::CRenderer m_overlays; -diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index 07df0d8..18fae70 100644 ---- a/xbmc/cores/dvdplayer/DVDPlayer.cpp -+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp -@@ -463,7 +463,7 @@ bool CDVDPlayer::OpenFile(const CFileItem& file, const CPlayerOptions &options) - m_ready.Reset(); - - #if defined(HAS_VIDEO_PLAYBACK) -- g_renderManager.PreInit(&m_clock); -+ g_renderManager.PreInit(); - #endif - - Create(); -@@ -4097,3 +4097,8 @@ bool CDVDPlayer::CachePVRStream(void) const - !g_PVRManager.IsPlayingRecording() && - g_advancedSettings.m_bPVRCacheInDvdPlayer; - } -+ -+double CDVDPlayer::GetClock(double& absolute, bool interpolated) -+{ -+ return m_clock.GetClock(absolute, interpolated); -+} -diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h -index 70ecea9..2b67d4c 100644 ---- a/xbmc/cores/dvdplayer/DVDPlayer.h -+++ b/xbmc/cores/dvdplayer/DVDPlayer.h -@@ -252,6 +252,8 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer - virtual bool SwitchChannel(const PVR::CPVRChannel &channel); - virtual bool CachePVRStream(void) const; - -+ virtual double GetClock(double& absolute, bool interpolated = true); -+ - enum ECacheState - { CACHESTATE_DONE = 0 - , CACHESTATE_FULL // player is filling up the demux queue -diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index d26ab9c..19ba35d 100644 ---- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -@@ -1117,53 +1117,69 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) - } - - CStdString formatstr; -+ bool buffering; - - switch(pPicture->format) - { - case RENDER_FMT_YUV420P: - formatstr = "YV12"; -+ buffering = true; - break; - case RENDER_FMT_YUV420P16: - formatstr = "YV12P16"; -+ buffering = true; - break; - case RENDER_FMT_YUV420P10: - formatstr = "YV12P10"; -+ buffering = true; - break; - case RENDER_FMT_NV12: - formatstr = "NV12"; -+ buffering = true; - break; - case RENDER_FMT_UYVY422: - formatstr = "UYVY"; -+ buffering = true; - break; - case RENDER_FMT_YUYV422: - formatstr = "YUY2"; -+ buffering = true; - break; - case RENDER_FMT_VDPAU: - formatstr = "VDPAU"; -+ buffering = true; - break; - case RENDER_FMT_VDPAU_420: - formatstr = "VDPAU_420"; -+ buffering = true; - break; - case RENDER_FMT_DXVA: - formatstr = "DXVA"; -+ buffering = true; - break; - case RENDER_FMT_VAAPI: - formatstr = "VAAPI"; -+ buffering = false; - break; - case RENDER_FMT_OMXEGL: - formatstr = "OMXEGL"; -+ buffering = false; - break; - case RENDER_FMT_CVBREF: - formatstr = "BGRA"; -+ buffering = false; - break; - case RENDER_FMT_BYPASS: - formatstr = "BYPASS"; -+ buffering = false; - break; - case RENDER_FMT_NONE: - formatstr = "NONE"; -+ buffering = false; - break; - case RENDER_FMT_XVBA: - formatstr = "XVBA"; -+ buffering = true; - break; - } - -@@ -1174,7 +1190,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) - } - - CLog::Log(LOGDEBUG,"%s - change configuration. %dx%d. framerate: %4.2f. format: %s",__FUNCTION__,pPicture->iWidth, pPicture->iHeight, config_framerate, formatstr.c_str()); -- if(!g_renderManager.Configure(pPicture->iWidth, pPicture->iHeight, pPicture->iDisplayWidth, pPicture->iDisplayHeight, config_framerate, flags, pPicture->format, pPicture->extended_format, m_hints.orientation)) -+ if(!g_renderManager.Configure(pPicture->iWidth, pPicture->iHeight, pPicture->iDisplayWidth, pPicture->iDisplayHeight, config_framerate, flags, pPicture->format, pPicture->extended_format, m_hints.orientation, buffering)) - { - CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__); - return EOS_ABORT; --- -1.7.10 - - -From 1cfeec2846a58b7e2ad44471bb085cef9d2c687d Mon Sep 17 00:00:00 2001 -From: xbmc -Date: Sat, 16 Feb 2013 08:32:18 +0100 -Subject: [PATCH 3/7] add buffering for GLES - ---- - xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp | 10 ---------- - xbmc/cores/VideoRenderers/LinuxRendererGLES.h | 6 ++++-- - 2 files changed, 4 insertions(+), 12 deletions(-) - -diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp -index 2a59e2b..1bf2f3b 100644 ---- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp -+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp -@@ -135,13 +135,6 @@ - delete m_dllSwScale; - } - --void CLinuxRendererGLES::ManageTextures() --{ -- m_NumYV12Buffers = 2; -- //m_iYV12RenderBuffer = 0; -- return; --} -- - bool CLinuxRendererGLES::ValidateRenderTarget() - { - if (!m_bValidated) -@@ -395,7 +388,6 @@ void CLinuxRendererGLES::Update(bool bPauseDrawing) - { - if (!m_bConfigured) return; - ManageDisplay(); -- ManageTextures(); - } - - void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha) -@@ -409,7 +401,6 @@ void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha) - if (m_renderMethod & RENDER_BYPASS) - { - ManageDisplay(); -- ManageTextures(); - // if running bypass, then the player might need the src/dst rects - // for sizing video playback on a layer other than the gles layer. - if (m_RenderUpdateCallBackFn) -@@ -449,7 +440,6 @@ void CLinuxRendererGLES::RenderUpdate(bool clear, DWORD flags, DWORD alpha) - return; - - ManageDisplay(); -- ManageTextures(); - - g_graphicsContext.BeginPaint(); - -diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h -index c6b69db..5bae10d 100644 ---- a/xbmc/cores/VideoRenderers/LinuxRendererGLES.h -+++ b/xbmc/cores/VideoRenderers/LinuxRendererGLES.h -@@ -41,7 +41,7 @@ - class COpenMaxVideo; - typedef std::vector Features; - --#define NUM_BUFFERS 3 -+#define NUM_BUFFERS 10 - - - #undef ALIGN -@@ -138,6 +138,9 @@ class CLinuxRendererGLES : public CBaseRenderer - virtual void UnInit(); - virtual void Reset(); /* resets renderer after seek for example */ - virtual void ReorderDrawPoints(); -+ virtual void SetBufferSize(int numBuffers) { m_NumYV12Buffers = numBuffers; } -+ virtual unsigned int GetMaxBufferSize() { return NUM_BUFFERS; } -+ virtual unsigned int GetProcessorSize() { return m_NumYV12Buffers; } - - virtual void RenderUpdate(bool clear, DWORD flags = 0, DWORD alpha = 255); - -@@ -162,7 +165,6 @@ class CLinuxRendererGLES : public CBaseRenderer - protected: - virtual void Render(DWORD flags, int index); - -- virtual void ManageTextures(); - int NextYV12Texture(); - virtual bool ValidateRenderTarget(); - virtual void LoadShaders(int field=FIELD_FULL); --- -1.7.10 - - -From 20fe728e43350442747c05adde545103516f377b Mon Sep 17 00:00:00 2001 -From: xbmc -Date: Sun, 10 Feb 2013 18:40:30 +0100 -Subject: [PATCH 4/7] OMXPlayer: adapt to buffering - ---- - xbmc/cores/omxplayer/OMXPlayer.cpp | 6 ++++++ - xbmc/cores/omxplayer/OMXPlayer.h | 2 ++ - xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 21 +++++++++++++-------- - 3 files changed, 21 insertions(+), 8 deletions(-) - -diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp -index 60aa9ab..b4eda41 100644 ---- a/xbmc/cores/omxplayer/OMXPlayer.cpp -+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp -@@ -4210,4 +4210,10 @@ void COMXPlayer::GetSubtitleCapabilities(std::vector &subCaps) - subCaps.push_back(IPC_SUBS_ALL); - } - -+double COMXPlayer::GetClock(double& absolute, bool interpolated) -+{ -+ m_av_clock.GetClock(absolute, interpolated); -+ return m_av_clock.OMXMediaTime(false, false); -+} -+ - #endif -diff --git a/xbmc/cores/omxplayer/OMXPlayer.h b/xbmc/cores/omxplayer/OMXPlayer.h -index d606e84..ad9d1e6 100644 ---- a/xbmc/cores/omxplayer/OMXPlayer.h -+++ b/xbmc/cores/omxplayer/OMXPlayer.h -@@ -332,6 +332,8 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer - virtual void GetScalingMethods(std::vector &scalingMethods); - virtual void GetAudioCapabilities(std::vector &audioCaps); - virtual void GetSubtitleCapabilities(std::vector &subCaps); -+ -+ virtual double GetClock(double& absolute, bool interpolated = true); - protected: - friend class COMXSelectionStreams; - -diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp -index 90f94aa..ecf4c9a 100644 ---- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp -+++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp -@@ -158,6 +158,8 @@ bool OMXPlayerVideo::OpenStream(CDVDStreamInfo &hints) - m_open = true; - m_send_eos = false; - -+ g_renderManager.EnableBuffering(false); -+ - return true; - } - -@@ -358,7 +360,7 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket) - - if(!g_renderManager.Configure(m_hints.width, m_hints.height, - iDisplayWidth, iDisplayHeight, m_fps, flags, format, 0, -- m_hints.orientation)) -+ m_hints.orientation, true)) - { - CLog::Log(LOGERROR, "%s - failed to configure renderer", __FUNCTION__); - return; -@@ -452,15 +454,15 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket) - m_dropbase = 0.0f; - #endif - -- double pts_media = m_av_clock->OMXMediaTime(false, false); -- ProcessOverlays(iGroupId, pts_media); -- -- while(!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < (iCurrentClock + iSleepTime + DVD_MSEC_TO_TIME(500)) ) -- Sleep(1); -+ int buffer = g_renderManager.WaitForBuffer(m_bStop, 0); -+ if (buffer < 0) -+ return; - -- g_renderManager.FlipPage(CThread::m_bStop, (iCurrentClock + iSleepTime) / DVD_TIME_BASE, -1, FS_NONE); -+ double pts_overlay = m_av_clock->OMXMediaTime(false, false) -+ + 2* (double)DVD_TIME_BASE / g_graphicsContext.GetFPS(); -+ ProcessOverlays(iGroupId, pts_overlay); - -- //m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime)); -+ g_renderManager.FlipPage(CThread::m_bStop, pts_overlay, -1, FS_NONE, m_speed); - } - - void OMXPlayerVideo::Process() -@@ -569,6 +571,7 @@ void OMXPlayerVideo::Process() - m_av_clock->OMXReset(false); - m_av_clock->UnLock(); - m_started = false; -+ g_renderManager.EnableBuffering(false); - } - else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush()) - { -@@ -580,6 +583,7 @@ void OMXPlayerVideo::Process() - m_av_clock->OMXReset(false); - m_av_clock->UnLock(); - m_flush = false; -+ g_renderManager.EnableBuffering(false); - } - else if (pMsg->IsType(CDVDMsg::PLAYER_SETSPEED)) - { -@@ -664,6 +668,7 @@ void OMXPlayerVideo::Process() - m_codecname = m_omxVideo.GetDecoderName(); - m_started = true; - m_messageParent.Put(new CDVDMsgInt(CDVDMsg::PLAYER_STARTED, DVDPLAYER_VIDEO)); -+ g_renderManager.EnableBuffering(true); - } - - // guess next frame pts. iDuration is always valid --- -1.7.10 - - -From 572031ecf662ee23af414e6961004b3cf1336644 Mon Sep 17 00:00:00 2001 -From: xbmc -Date: Sun, 24 Feb 2013 09:55:00 +0100 -Subject: [PATCH 6/7] flip free buffer after overlay has been released - ---- - xbmc/cores/VideoRenderers/OverlayRenderer.cpp | 19 ++++++++++++------- - xbmc/cores/VideoRenderers/OverlayRenderer.h | 6 +++--- - xbmc/cores/VideoRenderers/RenderManager.cpp | 6 ++++-- - xbmc/cores/VideoRenderers/RenderManager.h | 1 + - 4 files changed, 20 insertions(+), 12 deletions(-) - -diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -index 5236390..3039751 100644 ---- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -@@ -127,27 +127,32 @@ void CRenderer::AddCleanup(COverlay* o) - m_cleanup.push_back(o->Acquire()); - } - --void CRenderer::Release(SElementV& list) -+long CRenderer::Release(SElementV& list) - { - SElementV l = list; - list.clear(); - -+ long count = 0; - for(SElementV::iterator it = l.begin(); it != l.end(); it++) - { - if(it->overlay) -- it->overlay->Release(); -+ count += it->overlay->Release(); - if(it->overlay_dvd) -- it->overlay_dvd->Release(); -+ count += it->overlay_dvd->Release(); - } -+ return count; - } - --void CRenderer::Release(COverlayV& list) -+long CRenderer::Release(COverlayV& list) - { - COverlayV l = list; - list.clear(); - -+ long count = 0; - for(COverlayV::iterator it = l.begin(); it != l.end(); it++) -- (*it)->Release(); -+ count += (*it)->Release(); -+ -+ return count; - } - - void CRenderer::Flush() -@@ -167,10 +172,10 @@ void CRenderer::Flip() - m_render = (m_render + 1) % m_iNumBuffers; - } - --void CRenderer::ReleaseBuffer(int idx) -+long CRenderer::ReleaseBuffer(int idx) - { - CSingleLock lock(m_section); -- Release(m_buffers[idx]); -+ return Release(m_buffers[idx]); - } - - void CRenderer::Render() -diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.h b/xbmc/cores/VideoRenderers/OverlayRenderer.h -index 66c592a..2fcac4a 100644 ---- a/xbmc/cores/VideoRenderers/OverlayRenderer.h -+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.h -@@ -100,7 +100,7 @@ - void Render(); - void Flush(); - void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; } -- void ReleaseBuffer(int idx); -+ long ReleaseBuffer(int idx); - - protected: - -@@ -123,8 +123,8 @@ - COverlay* Convert(CDVDOverlay* o, double pts); - COverlay* Convert(CDVDOverlaySSA* o, double pts); - -- void Release(COverlayV& list); -- void Release(SElementV& list); -+ long Release(COverlayV& list); -+ long Release(SElementV& list); - - CCriticalSection m_section; - SElementV m_buffers[NUM_BUFFERS]; -diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index ca454eb..bc2e403 100644 ---- a/xbmc/cores/VideoRenderers/RenderManager.cpp -+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp -@@ -989,7 +989,7 @@ int CXBMCRenderManager::FlipFreeBuffer() - // See "Render Buffer State Description" in header for information. - if (HasFreeBuffer()) - { -- if (!m_bRenderBufferUsed) -+ if (!m_bRenderBufferUsed && !m_bOverlayReleased) - { - return -1; - } -@@ -1041,6 +1041,7 @@ void CXBMCRenderManager::ResetRenderBuffer() - m_presentPts = DVD_NOPTS_VALUE; - m_speed = 0; - m_bRenderBufferUsed = false; -+ m_bOverlayReleased = false; - } - - void CXBMCRenderManager::PrepareNextRender() -@@ -1119,7 +1120,8 @@ void CXBMCRenderManager::NotifyDisplayFlip() - && m_iDisplayedRenderBuffer != m_iCurrentRenderBuffer) - { - m_pRenderer->ReleaseBuffer(m_iDisplayedRenderBuffer); -- m_overlays.ReleaseBuffer(m_iDisplayedRenderBuffer); -+ if (m_overlays.ReleaseBuffer(m_iDisplayedRenderBuffer) > 0) -+ m_bOverlayReleased = true; - } - } - -diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h -index 1a460c7..fd85882 100644 ---- a/xbmc/cores/VideoRenderers/RenderManager.h -+++ b/xbmc/cores/VideoRenderers/RenderManager.h -@@ -258,6 +258,7 @@ class CXBMCRenderManager - bool m_bCodecSupportsBuffering; - int m_speed; - bool m_bRenderBufferUsed; -+ bool m_bOverlayReleased; - CEvent m_flipEvent; - - struct --- -1.7.10 - - -From 059b89b5e0b50af7560783a4e6a0638ab9f2680c Mon Sep 17 00:00:00 2001 -From: xbmc -Date: Sun, 24 Feb 2013 17:38:25 +0100 -Subject: [PATCH 7/7] RverlayRenderer: align buffers with index in - renderManager - ---- - xbmc/cores/VideoRenderers/OverlayRenderer.cpp | 7 +++++-- - xbmc/cores/VideoRenderers/OverlayRenderer.h | 2 +- - xbmc/cores/VideoRenderers/RenderManager.cpp | 5 +++-- - 3 files changed, 9 insertions(+), 5 deletions(-) - -diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -index 3039751..5592eca 100644 ---- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp -@@ -166,10 +166,13 @@ void CRenderer::Flush() - Release(m_cleanup); - } - --void CRenderer::Flip() -+void CRenderer::Flip(int source) - { - CSingleLock lock(m_section); -- m_render = (m_render + 1) % m_iNumBuffers; -+ if( source >= 0 && source < m_iNumBuffers ) -+ m_render = source; -+ else -+ m_render = (m_render + 1) % m_iNumBuffers; - } - - long CRenderer::ReleaseBuffer(int idx) -diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.h b/xbmc/cores/VideoRenderers/OverlayRenderer.h -index 2fcac4a..627dd9f 100644 ---- a/xbmc/cores/VideoRenderers/OverlayRenderer.h -+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.h -@@ -96,7 +96,7 @@ - void AddOverlay(CDVDOverlay* o, double pts, int index); - void AddOverlay(COverlay* o, double pts, int index); - void AddCleanup(COverlay* o); -- void Flip(); -+ void Flip(int source); - void Render(); - void Flush(); - void SetNumBuffers(int numBuffers) { m_iNumBuffers = numBuffers; } -diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index bc2e403..099eb4d 100644 ---- a/xbmc/cores/VideoRenderers/RenderManager.cpp -+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp -@@ -303,7 +303,7 @@ void CXBMCRenderManager::RenderUpdate(bool clear, DWORD flags, DWORD alpha) - if(m_presentstep == PRESENT_FLIP) - { - FlipRenderBuffer(); -- m_overlays.Flip(); -+ m_overlays.Flip(m_presentsource); - m_pRenderer->FlipPage(m_presentsource); - m_presentstep = PRESENT_FRAME; - m_presentevent.Set(); -@@ -703,7 +703,7 @@ void CXBMCRenderManager::Present() - if(m_presentstep == PRESENT_FLIP) - { - FlipRenderBuffer(); -- m_overlays.Flip(); -+ m_overlays.Flip(m_presentsource); - m_pRenderer->FlipPage(m_presentsource); - m_presentstep = PRESENT_FRAME; - m_presentevent.Set(); -@@ -994,6 +994,7 @@ int CXBMCRenderManager::FlipFreeBuffer() - return -1; - } - m_bRenderBufferUsed = false; -+ m_bOverlayReleased = false; - m_bAllRenderBuffersDisplayed = false; - m_iOutputRenderBuffer = (m_iOutputRenderBuffer + 1) % m_iNumRenderBuffers; - return m_iOutputRenderBuffer; --- -1.7.10 - diff --git a/packages/mediacenter/xbmc/unpack b/packages/mediacenter/xbmc/unpack new file mode 100755 index 0000000000..f21b1bc057 --- /dev/null +++ b/packages/mediacenter/xbmc/unpack @@ -0,0 +1,32 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +echo "### Applying architecture based patches ###" + +if [ ! $TARGET_ARCH = arm ]; then + for patch in `ls $PKG_DIR/patches.x86`; do + cat $PKG_DIR/patches.x86/$patch | patch -d \ + `echo $PKG_BUILD | cut -f1 -d\ ` -p1 + done +fi