rpms/kdebase-runtime/devel kdebase-runtime-4.0.3-deinterlace-crash.patch, NONE, 1.1 kdebase-runtime.spec, 1.26, 1.27
Kevin Kofler (kkofler)
fedora-extras-commits at redhat.com
Sat Apr 5 15:25:04 UTC 2008
Author: kkofler
Update of /cvs/pkgs/rpms/kdebase-runtime/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv12725/devel
Modified Files:
kdebase-runtime.spec
Added Files:
kdebase-runtime-4.0.3-deinterlace-crash.patch
Log Message:
* Sat Apr 05 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.3-4
- don't crash if we don't have deinterlacing support in xine-lib (#440299)
kdebase-runtime-4.0.3-deinterlace-crash.patch:
--- NEW FILE kdebase-runtime-4.0.3-deinterlace-crash.patch ---
diff -ur kdebase-runtime-4.0.3/phonon/xine/kcm/xineoptions.cpp kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/kcm/xineoptions.cpp
--- kdebase-runtime-4.0.3/phonon/xine/kcm/xineoptions.cpp 2008-01-05 00:54:43.000000000 +0100
+++ kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/kcm/xineoptions.cpp 2008-04-05 17:07:45.000000000 +0200
@@ -30,7 +30,7 @@
K_EXPORT_PLUGIN(XineOptionsFactory("kcm_phononxine"))
XineOptions::XineOptions(QWidget *parent, const QVariantList &args)
- : KCModule(XineOptionsFactory::componentData(), parent, args)
+ : KCModule(XineOptionsFactory::componentData(), parent, args), m_noDeinterlace(false)
{
setupUi(this);
@@ -60,35 +60,39 @@
xine_init(xine);
xine_video_port_t *nullVideoPort = xine_open_video_driver(xine, "auto", XINE_VISUAL_TYPE_NONE, 0);
xine_post_t *deinterlacer = xine_post_init(xine, "tvtime", 1, 0, &nullVideoPort);
- Q_ASSERT(deinterlacer);
- xine_post_in_t *paraInput = xine_post_input(deinterlacer, "parameters");
- Q_ASSERT(paraInput);
- Q_ASSERT(paraInput->data);
- xine_post_api_t *api = reinterpret_cast<xine_post_api_t *>(paraInput->data);
- xine_post_api_descr_t *desc = api->get_param_descr();
- for (int i = 0; desc->parameter[i].type != POST_PARAM_TYPE_LAST; ++i) {
- xine_post_api_parameter_t &p = desc->parameter[i];
- switch (p.type) {
- case POST_PARAM_TYPE_INT: /* integer (or vector of integers) */
- if (0 == strcmp(p.name, "method") && p.enum_values) {
- for (int j = 0; p.enum_values[j]; ++j) {
- deinterlaceMethodBox->addItem(p.enum_values[j]);
+ if (deinterlacer) {
+ xine_post_in_t *paraInput = xine_post_input(deinterlacer, "parameters");
+ Q_ASSERT(paraInput);
+ Q_ASSERT(paraInput->data);
+ xine_post_api_t *api = reinterpret_cast<xine_post_api_t *>(paraInput->data);
+ xine_post_api_descr_t *desc = api->get_param_descr();
+ for (int i = 0; desc->parameter[i].type != POST_PARAM_TYPE_LAST; ++i) {
+ xine_post_api_parameter_t &p = desc->parameter[i];
+ switch (p.type) {
+ case POST_PARAM_TYPE_INT: /* integer (or vector of integers) */
+ if (0 == strcmp(p.name, "method") && p.enum_values) {
+ for (int j = 0; p.enum_values[j]; ++j) {
+ deinterlaceMethodBox->addItem(p.enum_values[j]);
+ }
}
+ break;
+ case POST_PARAM_TYPE_DOUBLE: /* double (or vector of doubles) */
+ case POST_PARAM_TYPE_CHAR: /* char (or vector of chars = string) */
+ case POST_PARAM_TYPE_STRING: /* (char *), ASCIIZ */
+ case POST_PARAM_TYPE_STRINGLIST: /* (char **) list, NULL terminated */
+ case POST_PARAM_TYPE_BOOL: /* integer (0 or 1) */
+ break;
+ case POST_PARAM_TYPE_LAST: /* terminator of parameter list */
+ default:
+ kFatal() << "invalid type";
}
- break;
- case POST_PARAM_TYPE_DOUBLE: /* double (or vector of doubles) */
- case POST_PARAM_TYPE_CHAR: /* char (or vector of chars = string) */
- case POST_PARAM_TYPE_STRING: /* (char *), ASCIIZ */
- case POST_PARAM_TYPE_STRINGLIST: /* (char **) list, NULL terminated */
- case POST_PARAM_TYPE_BOOL: /* integer (0 or 1) */
- break;
- case POST_PARAM_TYPE_LAST: /* terminator of parameter list */
- default:
- kFatal() << "invalid type";
}
- }
- xine_post_dispose(xine, deinterlacer);
+ xine_post_dispose(xine, deinterlacer);
+ } else {
+ m_noDeinterlace = true;
+ deinterlaceGroupBox->setEnabled(false);
+ }
xine_close_video_driver(xine, nullVideoPort);
xine_exit(xine);
}
@@ -108,29 +112,35 @@
{
KConfigGroup cg(m_config, "Settings");
m_ossCheckbox->setChecked(cg.readEntry("showOssDevices", false));
- deinterlaceMediaList->item(0)->setCheckState(cg.readEntry("deinterlaceDVD", true) ? Qt::Checked : Qt::Unchecked);
- deinterlaceMediaList->item(1)->setCheckState(cg.readEntry("deinterlaceVCD", false) ? Qt::Checked : Qt::Unchecked);
- deinterlaceMediaList->item(2)->setCheckState(cg.readEntry("deinterlaceFile", false) ? Qt::Checked : Qt::Unchecked);
- deinterlaceMethodBox->setCurrentIndex(cg.readEntry("deinterlaceMethod", 0));
+ if (!m_noDeinterlace) {
+ deinterlaceMediaList->item(0)->setCheckState(cg.readEntry("deinterlaceDVD", true) ? Qt::Checked : Qt::Unchecked);
+ deinterlaceMediaList->item(1)->setCheckState(cg.readEntry("deinterlaceVCD", false) ? Qt::Checked : Qt::Unchecked);
+ deinterlaceMediaList->item(2)->setCheckState(cg.readEntry("deinterlaceFile", false) ? Qt::Checked : Qt::Unchecked);
+ deinterlaceMethodBox->setCurrentIndex(cg.readEntry("deinterlaceMethod", 0));
+ }
}
void XineOptions::save()
{
KConfigGroup cg(m_config, "Settings");
cg.writeEntry("showOssDevices", m_ossCheckbox->isChecked());
- cg.writeEntry("deinterlaceDVD", deinterlaceMediaList->item(0)->checkState() == Qt::Checked);
- cg.writeEntry("deinterlaceVCD", deinterlaceMediaList->item(1)->checkState() == Qt::Checked);
- cg.writeEntry("deinterlaceFile", deinterlaceMediaList->item(2)->checkState() == Qt::Checked);
- cg.writeEntry("deinterlaceMethod", deinterlaceMethodBox->currentIndex());
+ if (!m_noDeinterlace) {
+ cg.writeEntry("deinterlaceDVD", deinterlaceMediaList->item(0)->checkState() == Qt::Checked);
+ cg.writeEntry("deinterlaceVCD", deinterlaceMediaList->item(1)->checkState() == Qt::Checked);
+ cg.writeEntry("deinterlaceFile", deinterlaceMediaList->item(2)->checkState() == Qt::Checked);
+ cg.writeEntry("deinterlaceMethod", deinterlaceMethodBox->currentIndex());
+ }
}
void XineOptions::defaults()
{
m_ossCheckbox->setChecked(false);
- deinterlaceMediaList->item(0)->setCheckState(Qt::Checked);
- deinterlaceMediaList->item(1)->setCheckState(Qt::Unchecked);
- deinterlaceMediaList->item(2)->setCheckState(Qt::Unchecked);
- deinterlaceMethodBox->setCurrentIndex(0);
+ if (!m_noDeinterlace) {
+ deinterlaceMediaList->item(0)->setCheckState(Qt::Checked);
+ deinterlaceMediaList->item(1)->setCheckState(Qt::Unchecked);
+ deinterlaceMediaList->item(2)->setCheckState(Qt::Unchecked);
+ deinterlaceMethodBox->setCurrentIndex(0);
+ }
}
#include "xineoptions.moc"
diff -ur kdebase-runtime-4.0.3/phonon/xine/kcm/xineoptions.h kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/kcm/xineoptions.h
--- kdebase-runtime-4.0.3/phonon/xine/kcm/xineoptions.h 2008-01-05 00:54:43.000000000 +0100
+++ kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/kcm/xineoptions.h 2008-04-05 17:04:20.000000000 +0200
@@ -42,6 +42,7 @@
private:
KSharedConfigPtr m_config;
+ bool m_noDeinterlace;
};
#endif // PHONON_XINEOPTIONS_H
diff -ur kdebase-runtime-4.0.3/phonon/xine/kcm/xineoptions.ui kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/kcm/xineoptions.ui
--- kdebase-runtime-4.0.3/phonon/xine/kcm/xineoptions.ui 2008-03-27 21:34:21.000000000 +0100
+++ kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/kcm/xineoptions.ui 2008-04-05 17:07:25.000000000 +0200
@@ -85,7 +85,7 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="groupBox" >
+ <widget class="QGroupBox" name="deinterlaceGroupBox" >
<property name="title" >
<string>Deinterlacing</string>
</property>
diff -ur kdebase-runtime-4.0.3/phonon/xine/xinestream.cpp kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/xinestream.cpp
--- kdebase-runtime-4.0.3/phonon/xine/xinestream.cpp 2008-03-27 21:34:21.000000000 +0100
+++ kdebase-runtime-4.0.3-deinterlace-crash/phonon/xine/xinestream.cpp 2008-04-05 17:10:33.000000000 +0200
@@ -171,33 +171,33 @@
videoPort = XineEngine::nullVideoPort();
}
m_deinterlacer = xine_post_init(XineEngine::xine(), "tvtime", 1, 0, &videoPort);
- Q_ASSERT(m_deinterlacer);
-
- // set method
- xine_post_in_t *paraInput = xine_post_input(m_deinterlacer, "parameters");
- Q_ASSERT(paraInput);
- Q_ASSERT(paraInput->data);
- xine_post_api_t *api = reinterpret_cast<xine_post_api_t *>(paraInput->data);
- xine_post_api_descr_t *desc = api->get_param_descr();
- char *pluginParams = static_cast<char *>(malloc(desc->struct_size));
- api->get_parameters(m_deinterlacer, pluginParams);
- for (int i = 0; desc->parameter[i].type != POST_PARAM_TYPE_LAST; ++i) {
- xine_post_api_parameter_t &p = desc->parameter[i];
- if (p.type == POST_PARAM_TYPE_INT && 0 == strcmp(p.name, "method")) {
- int *value = reinterpret_cast<int *>(pluginParams + p.offset);
- *value = XineEngine::deinterlaceMethod();
- break;
+ if (m_deinterlacer) {
+ // set method
+ xine_post_in_t *paraInput = xine_post_input(m_deinterlacer, "parameters");
+ Q_ASSERT(paraInput);
+ Q_ASSERT(paraInput->data);
+ xine_post_api_t *api = reinterpret_cast<xine_post_api_t *>(paraInput->data);
+ xine_post_api_descr_t *desc = api->get_param_descr();
+ char *pluginParams = static_cast<char *>(malloc(desc->struct_size));
+ api->get_parameters(m_deinterlacer, pluginParams);
+ for (int i = 0; desc->parameter[i].type != POST_PARAM_TYPE_LAST; ++i) {
+ xine_post_api_parameter_t &p = desc->parameter[i];
+ if (p.type == POST_PARAM_TYPE_INT && 0 == strcmp(p.name, "method")) {
+ int *value = reinterpret_cast<int *>(pluginParams + p.offset);
+ *value = XineEngine::deinterlaceMethod();
+ break;
+ }
}
- }
- api->set_parameters(m_deinterlacer, pluginParams);
- free(pluginParams);
+ api->set_parameters(m_deinterlacer, pluginParams);
+ free(pluginParams);
- // connect to xine_stream_t
- xine_post_in_t *x = xine_post_input(m_deinterlacer, "video");
- Q_ASSERT(x);
- xine_post_out_t *videoOutputPort = xine_get_video_source(m_stream);
- Q_ASSERT(videoOutputPort);
- xine_post_wire(videoOutputPort, x);
+ // connect to xine_stream_t
+ xine_post_in_t *x = xine_post_input(m_deinterlacer, "video");
+ Q_ASSERT(x);
+ xine_post_out_t *videoOutputPort = xine_get_video_source(m_stream);
+ Q_ASSERT(videoOutputPort);
+ xine_post_wire(videoOutputPort, x);
+ }
} else if (m_deinterlacer) {
xine_post_dispose(XineEngine::xine(), m_deinterlacer);
m_deinterlacer = 0;
Index: kdebase-runtime.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kdebase-runtime/devel/kdebase-runtime.spec,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- kdebase-runtime.spec 3 Apr 2008 16:57:49 -0000 1.26
+++ kdebase-runtime.spec 5 Apr 2008 15:24:27 -0000 1.27
@@ -9,7 +9,7 @@
Name: kdebase-runtime
Summary: K Desktop Environment - Runtime
Version: 4.0.3
-Release: 3%{?dist}
+Release: 4%{?dist}
License: GPLv2
Group: User Interface/Desktops
@@ -17,6 +17,8 @@
Source0: ftp://ftp.kde.org/pub/kde/stable/%{version}/src/kdebase-runtime-%{version}.tar.bz2
# KDE 3 version of this service description
Source1: khelpcenter.desktop
+# Don't crash if we don't have deinterlacing support in xine-lib (#440299)
+Patch0: kdebase-runtime-4.0.3-deinterlace-crash.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
#ifarch noarch
@@ -87,6 +89,7 @@
%prep
%setup -q -n kdebase-runtime-%{version}
+%patch0 -p1 -b .deinterlace-crash
%build
@@ -287,6 +290,9 @@
%changelog
+* Sat Apr 05 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.3-4
+- don't crash if we don't have deinterlacing support in xine-lib (#440299)
+
* Thu Apr 03 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.3-3
- rebuild for the new %%{_kde4_buildtype}
More information about the fedora-extras-commits
mailing list