[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/phonon/platform_kde
From: Matthias Kretz <kretz () kde ! org>
Date: 2007-08-22 18:11:59
Message-ID: 1187806319.939360.28960.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 703514 by mkretz:
Yay, playback over sftp:/ works again: the job would emit result and delete itself \
and the KioMediaStream has to recreate the job when it wants to seek back. :'(
M +14 -9 kiomediastream.cpp
M +0 -1 kiomediastream.h
M +0 -1 kiomediastream_p.h
--- trunk/KDE/kdelibs/phonon/platform_kde/kiomediastream.cpp #703513:703514
@@ -78,6 +78,10 @@
void KioMediaStream::needData()
{
Q_D(KioMediaStream);
+ if (!d->kiojob) {
+ // no job => job is finished and endOfData was already sent
+ return;
+ }
KIO::FileJob *filejob = qobject_cast<KIO::FileJob *>(d->kiojob);
if (filejob) {
// while d->seeking the backend won't get any data
@@ -109,6 +113,11 @@
void KioMediaStream::seekStream(qint64 position)
{
Q_D(KioMediaStream);
+ if (!d->kiojob) {
+ // no job => job is finished and endOfData was already sent
+ reset();
+ }
+ Q_ASSERT(d->kiojob);
kDebug(600) << position << " = " << qulonglong(position);
d->seeking = true;
if (d->open) {
@@ -122,6 +131,7 @@
void KioMediaStreamPrivate::_k_bytestreamData(KIO::Job *, const QByteArray &data)
{
Q_Q(KioMediaStream);
+ Q_ASSERT(kiojob);
if (seeking) {
// seek doesn't block, so don't send data to the backend until it signals us
// that the seek is done
@@ -151,6 +161,7 @@
void KioMediaStreamPrivate::_k_bytestreamResult(KJob *job)
{
Q_Q(KioMediaStream);
+ Q_ASSERT(kiojob == job);
if (job->error()) {
QString kioErrorString = job->errorString();
kDebug(600) << "KIO Job error: " << kioErrorString;
@@ -172,6 +183,7 @@
q->error(NormalError, kioErrorString);
}
kiojob = 0;
+ kDebug(600) << "KIO Job is done (will delete itself) and d->kiojob reset to 0";
endOfDataSent = true;
q->endOfData();
reading = false;
@@ -184,18 +196,10 @@
q->setStreamSize(size);
}
-void KioMediaStreamPrivate::_k_cleanupByteStream()
-{
- if (kiojob) {
- kiojob->kill();
- kiojob = 0;
- reading = false;
- }
-}
-
void KioMediaStreamPrivate::_k_bytestreamFileJobOpen(KIO::Job *)
{
Q_Q(KioMediaStream);
+ Q_ASSERT(kiojob);
open = true;
endOfDataSent = false;
KIO::FileJob *filejob = static_cast<KIO::FileJob *>(kiojob);
@@ -211,6 +215,7 @@
void KioMediaStreamPrivate::_k_bytestreamSeekDone(KIO::Job *, KIO::filesize_t \
offset) {
+ Q_ASSERT(kiojob);
kDebug(600) << offset;
seeking = false;
endOfDataSent = false;
--- trunk/KDE/kdelibs/phonon/platform_kde/kiomediastream.h #703513:703514
@@ -47,7 +47,6 @@
Q_PRIVATE_SLOT(d_func(), void _k_bytestreamData(KIO::Job *, const QByteArray \
&)) Q_PRIVATE_SLOT(d_func(), void _k_bytestreamResult(KJob *))
Q_PRIVATE_SLOT(d_func(), void _k_bytestreamTotalSize(KJob *, qulonglong))
- Q_PRIVATE_SLOT(d_func(), void _k_cleanupByteStream())
Q_PRIVATE_SLOT(d_func(), void _k_bytestreamFileJobOpen(KIO::Job *))
Q_PRIVATE_SLOT(d_func(), void _k_bytestreamSeekDone(KIO::Job *, \
KIO::filesize_t)) };
--- trunk/KDE/kdelibs/phonon/platform_kde/kiomediastream_p.h #703513:703514
@@ -56,7 +56,6 @@
void _k_bytestreamData(KIO::Job *, const QByteArray &);
void _k_bytestreamResult(KJob *);
void _k_bytestreamTotalSize(KJob *, qulonglong);
- void _k_cleanupByteStream();
void _k_bytestreamSeekStream(qint64);
void _k_bytestreamFileJobOpen(KIO::Job *);
void _k_bytestreamSeekDone(KIO::Job *, KIO::filesize_t);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic