~ubuntu-branches/ubuntu/trusty/phonon/trusty-updates

« back to all changes in this revision

Viewing changes to xine/sourcenode.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Modestas Vainius
  • Date: 2011-03-11 21:39:20 UTC
  • mfrom: (6.1.4 experimental)
  • Revision ID: james.westby@ubuntu.com-20110311213920-pvkmqc1gdpy88uzx
Tags: 4:4.6.0really4.4.4-2
* Drop phonon-backends-dbg from phonon-dbg Recommends/Breaks. No longer
  needed.
* Readd packaging copyright/licensing to debian/copyright.
* Bump libphonon-dev Breaks/Replaces to << 4:4.6.0really4.4.4 for
  libphononexperimental-dev. experimental/avcaptureinterface.h header which
  used to be there up to 4.4.4 (see changelog below).
* Switch debian/rules build engine to dhmk (qt-kde-team/2/*):
  - build-depend on pkg-kde-tools >= 0.11;
  - port debian/rules to dhmk keeping it dh compatible as much as possible.
* Drop unused ${shlibs:Depends} from libphonon-dev and
  libphononexperimental-dev packages.
* Add README.Debian to phonon-backend-null package.
* Remove phonon-backend-null.lintian-overrides: phonon-backend-null is no
  longer and empty package due to README.Debian (see above).
* Release to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*  This file is part of the KDE project
2
 
    Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
3
 
 
4
 
    This program is free software; you can redistribute it and/or
5
 
    modify it under the terms of the GNU Library General Public
6
 
    License as published by the Free Software Foundation; either
7
 
    version 2 of the License, or (at your option) any later version.
8
 
 
9
 
    This library is distributed in the hope that it will be useful,
10
 
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
 
    Library General Public License for more details.
13
 
 
14
 
    You should have received a copy of the GNU Library General Public License
15
 
    along with this library; see the file COPYING.LIB.  If not, write to
16
 
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17
 
    Boston, MA 02110-1301, USA.
18
 
 
19
 
*/
20
 
 
21
 
#include "sourcenode.h"
22
 
#include "sinknode.h"
23
 
#include "events.h"
24
 
#include "keepreference.h"
25
 
#include "audiooutput.h"
26
 
 
27
 
namespace Phonon
28
 
{
29
 
namespace Xine
30
 
{
31
 
 
32
 
SourceNodeXT::SourceNodeXT(const char *name)
33
 
    : className(name), deleted(false)
34
 
{
35
 
}
36
 
 
37
 
SourceNodeXT::~SourceNodeXT()
38
 
{
39
 
    deleted = true;
40
 
}
41
 
 
42
 
xine_post_out_t *SourceNodeXT::audioOutputPort() const
43
 
{
44
 
    return 0;
45
 
}
46
 
 
47
 
xine_post_out_t *SourceNodeXT::videoOutputPort() const
48
 
{
49
 
    return 0;
50
 
}
51
 
 
52
 
SourceNode::SourceNode(SourceNodeXT *_xt)
53
 
    : m_threadSafeObject(_xt)
54
 
{
55
 
    Q_ASSERT(_xt);
56
 
}
57
 
 
58
 
SourceNode::~SourceNode()
59
 
{
60
 
    if (!m_sinks.isEmpty()) {
61
 
        foreach (SinkNode *s, m_sinks) {
62
 
            s->unsetSource(this);
63
 
        }
64
 
    }
65
 
    KeepReference<0> *keep = new KeepReference<0>;
66
 
    keep->addObject(m_threadSafeObject.data());
67
 
    m_threadSafeObject = 0;
68
 
    keep->ready();
69
 
}
70
 
 
71
 
void SourceNode::addSink(SinkNode *s)
72
 
{
73
 
    Q_ASSERT(!m_sinks.contains(s));
74
 
    m_sinks << s;
75
 
}
76
 
 
77
 
void SourceNode::removeSink(SinkNode *s)
78
 
{
79
 
    Q_ASSERT(m_sinks.contains(s));
80
 
    m_sinks.remove(s);
81
 
}
82
 
 
83
 
QSet<SinkNode *> SourceNode::sinks() const
84
 
{
85
 
    return m_sinks;
86
 
}
87
 
 
88
 
SinkNode *SourceNode::sinkInterface()
89
 
{
90
 
    return 0;
91
 
}
92
 
 
93
 
void SourceNode::upstreamEvent(Event *e)
94
 
{
95
 
    Q_ASSERT(e);
96
 
    SinkNode *iface = sinkInterface();
97
 
    if (iface) {
98
 
        iface->SinkNode::upstreamEvent(e);
99
 
    } else {
100
 
        if (!--e->ref) {
101
 
            delete e;
102
 
        }
103
 
    }
104
 
}
105
 
 
106
 
void SourceNode::downstreamEvent(Event *e)
107
 
{
108
 
    Q_ASSERT(e);
109
 
    foreach (SinkNode *sink, m_sinks) {
110
 
        ++e->ref;
111
 
        sink->downstreamEvent(e);
112
 
    }
113
 
    if (!--e->ref) {
114
 
        delete e;
115
 
    }
116
 
}
117
 
 
118
 
} // namespace Xine
119
 
} // namespace Phonon