[vdr-plugin-xine] 01/02: debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid' (Closes: #709031) (LP: #1198020)
Tobias Grimm
tiber-guest at moszumanska.debian.org
Sun Apr 6 19:06:15 UTC 2014
This is an automated email from the git hooks/post-receive script.
tiber-guest pushed a commit to branch master
in repository vdr-plugin-xine.
commit 778271dda85a4e5f29441cae45008ea2a073db6a
Author: Andreas Moog <Andreas Moog>
Date: Thu Nov 28 23:16:42 2013 +0100
debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid' (Closes: #709031) (LP: #1198020)
* debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr
version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid'
(Closes: #709031) (LP: #1198020)
* debian/patches/vdr-1.7.40.patch: Apply patch from
Lucian Muresan lucianm.AT.users.sourceforge.net to build with newer
vdr versions to fix: error: 'vidWin' was not declared in this scope
---
debian/changelog | 11 +++
debian/patches/series | 1 +
debian/patches/vdr-1.7.40.patch | 165 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 177 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index f6f59e3..46168fb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+vdr-plugin-xine (0.9.4-12) UNRELEASED; urgency=low
+
+ * debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr
+ version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid'
+ (Closes: #709031) (LP: #1198020)
+ * debian/patches/vdr-1.7.40.patch: Apply patch from
+ Lucian Muresan lucianm.AT.users.sourceforge.net to build with newer
+ vdr versions to fix: error: 'vidWin' was not declared in this scope
+
+ -- Andreas Moog <amoog at ubuntu.com> Thu, 28 Nov 2013 23:12:16 +0100
+
vdr-plugin-xine (0.9.4-11) unstable; urgency=low
* Build-depend on vdr-dev (>= 2.0.0)
diff --git a/debian/patches/series b/debian/patches/series
index 98e63ed..306b74e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@ enable-yaepg-support.patch
format-strings.patch
vdr-1.7.27.patch
vdr-1.7.33.patch
+vdr-1.7.40.patch
diff --git a/debian/patches/vdr-1.7.40.patch b/debian/patches/vdr-1.7.40.patch
new file mode 100644
index 0000000..e5d6795
--- /dev/null
+++ b/debian/patches/vdr-1.7.40.patch
@@ -0,0 +1,165 @@
+Author: Lucian Muresan <lucianm at users.sourceforge.net>
+Origin: https://patchwork.linuxtv.org/patch/16100/
+
+Index: vdr-plugin-xine-0.9.4/xineDevice.c
+===================================================================
+--- vdr-plugin-xine-0.9.4.orig/xineDevice.c 2013-11-28 23:06:14.746527860 +0100
++++ vdr-plugin-xine-0.9.4/xineDevice.c 2013-11-28 23:06:14.742527860 +0100
+@@ -4409,5 +4409,83 @@
+ {
+ return theXineDevice;
+ }
++#if APIVERSNUM >= 10733
++ ///< Asks the output device whether it can scale the currently shown video in
++ ///< such a way that it fits into the given Rect, while retaining its proper
++ ///< aspect ratio. If the scaled video doesn't exactly fit into Rect, Alignment
++ ///< is used to determine how to align the actual rectangle with the requested
++ ///< one. The actual rectangle can be smaller, larger or the same size as the
++ ///< given Rect, and its location may differ, depending on the capabilities of
++ ///< the output device, which may not be able to display a scaled video at
++ ///< arbitrary sizes and locations. The device shall, however, do its best to
++ ///< match the requested Rect as closely as possible, preferring a size and
++ ///< location that fits completely into the requested Rect if possible.
++ ///< Returns the rectangle that can actually be used when scaling the video.
++ ///< A skin plugin using this function should rearrange its content according
++ ///< to the rectangle returned from calling this function, and should especially
++ ///< be prepared for cases where the returned rectangle is way off the requested
++ ///< Rect, or even Null. In such cases, the skin may want to fall back to
++ ///< working with full screen video.
++ ///< If this device can't scale the video, a Null rectangle is returned (this
++ ///< is also the default implementation).
++ cRect cXineDevice::CanScaleVideo(const cRect &Rect, int Alignment/* = taCenter*/)
++ {
++ // first implementation: we can always scale, we're a soft device ;-), ignore alignment for now
++
++ // we need to store the value for the case we have to call ScaleVideo ourselves in vdr-xine
++ vidWinRect = Rect;
++ return vidWinRect;
++ }
++
++ ///< Scales the currently shown video in such a way that it fits into the given
++ ///< Rect. Rect should be one retrieved through a previous call to
++ ///< CanScaleVideo() (otherwise results may be undefined).
++ ///< Even if video output is scaled, the functions GetVideoSize() and
++ ///< GetOsdSize() must still return the same values as if in full screen mode!
++ ///< If this device can't scale the video, nothing happens.
++ ///< To restore full screen video, call this function with a Null rectangle.
++ void cXineDevice::ScaleVideo(const cRect &Rect/* = cRect::Null*/)
++ {
++ // refresh stored value
++ vidWinRect = Rect;
++ // let our specialized code do the actual resizing / repositioning, get accurate parameters first
++ int videoLeft, videoTop, videoWidth, videoHeight, videoZoomX, videoZoomY, osdWidth, osdHeight;
++ double videoAspect, pixelAspect;
++ m_xineLib.execFuncVideoSize(videoLeft, videoTop, videoWidth, videoHeight, videoZoomX, videoZoomY, &videoAspect);
++ GetOsdSize(osdWidth, osdHeight, pixelAspect);
++ tArea vidWinArea;
++ vidWinArea.x1 = vidWinRect.X();
++ vidWinArea.y1 = vidWinRect.Y();
++ vidWinArea.x2 = vidWinRect.X() + vidWinRect.Width();
++ vidWinArea.y2 = vidWinRect.Y() + vidWinRect.Height();
++ if (vidWinRect == cRect::Null) {
++ // will just resize to full size
++ vidWinArea.bpp = 0;
++ } else {
++ vidWinArea.bpp = 12;
++ // make corrections
++ double aspectFactor = (double(osdWidth) / double(osdHeight)) / videoAspect;
++ int output_width = vidWinRect.Height() * (videoAspect * aspectFactor);
++ int output_height = vidWinRect.Width() / (videoAspect * aspectFactor);
++ if (double(vidWinRect.Width())/double(vidWinRect.Height()) > videoAspect * aspectFactor) {
++ output_height = vidWinRect.Height();
++ vidWinArea.x1 += (vidWinRect.Width() - output_width) / 2;
++ }
++ else if (double(vidWinRect.Width())/double(vidWinRect.Height()) < videoAspect * aspectFactor) {
++ output_width = vidWinRect.Width();
++ vidWinArea.y1 += (vidWinRect.Height() - output_height) / 2;
++ }
++ vidWinArea.x2 = vidWinArea.x1 + output_width;
++ vidWinArea.y2 = vidWinArea.y1 + output_height;
++ }
++ m_xineLib.SetVideoWindow(videoWidth, videoHeight, vidWinArea);
++ }
++
++ const cRect & cXineDevice::GetScaleRect()
++ {
++ // just return the stored value
++ return vidWinRect;
++ }
+
++#endif // APIVERSNUM >= 10733
+ };
+Index: vdr-plugin-xine-0.9.4/xineDevice.h
+===================================================================
+--- vdr-plugin-xine-0.9.4.orig/xineDevice.h 2013-11-28 23:06:14.746527860 +0100
++++ vdr-plugin-xine-0.9.4/xineDevice.h 2013-11-28 23:06:14.742527860 +0100
+@@ -162,7 +162,14 @@
+ #else
+ void OnFreeOsd(cOsd *const osd);
+ #endif
+-
++#if APIVERSNUM >= 10733
++ virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter);
++ virtual void ScaleVideo(const cRect &Rect = cRect::Null);
++ const cRect & GetScaleRect();
++ private:
++ cRect vidWinRect;
++ public:
++#endif // APIVERSNUM >= 10733
+ cXineLib m_xineLib;
+ cMutex m_osdMutex;
+
+Index: vdr-plugin-xine-0.9.4/xineOsd.c
+===================================================================
+--- vdr-plugin-xine-0.9.4.orig/xineOsd.c 2013-11-28 23:06:14.746527860 +0100
++++ vdr-plugin-xine-0.9.4/xineOsd.c 2013-11-28 23:08:24.570528259 +0100
+@@ -105,11 +105,20 @@
+
+ #else
+
++#if APIVERSNUM >= 10733
++
++ // scale to the size and position stored by the last call to cDevice::CanScaleVideo
++ m_xineDevice.ScaleVideo(m_xineDevice.GetScaleRect());
++
++#else
++
+ #ifdef SET_VIDEO_WINDOW
+
+ m_xineLib.SetVideoWindow(maxOsdWidth, maxOsdHeight, vidWin, dontOptimize);
+
+ #endif
++
++#endif // APIVERSNUM >= 10733
+
+ int videoLeft = frameLeft;
+ int videoTop = frameTop;
+@@ -175,6 +184,7 @@
+
+ cXineOsd::~cXineOsd()
+ {
++
+ #if APIVERSNUM < 10509
+ HideOsd();
+ #else
+@@ -410,12 +420,20 @@
+ int maxOsdWidth, maxOsdHeight;
+ GetMaxOsdSize(maxOsdWidth, maxOsdHeight);
+
++#if APIVERSNUM >= 10733
++
++ // scale to the size and position stored by the last call to cDevice::CanScaleVideo
++ m_xineDevice.ScaleVideo(m_xineDevice.GetScaleRect());
++
++#else
+ #ifdef SET_VIDEO_WINDOW
+
+ m_xineLib.SetVideoWindow(maxOsdWidth, maxOsdHeight, vidWin);
+
+ #endif
+
++#endif // APIVERSUM >= 10733
++
+ int videoLeft = -1;
+ int videoTop = -1;
+ int videoWidth = -1;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vdr-dvb/vdr-plugin-xine.git
More information about the pkg-vdr-dvb-changes
mailing list