File indexing completed on 2024-12-01 04:21:26

0001 /*
0002     Copyright (C) 2013 Harald Sitter <sitter@kde.org>
0003 
0004     This library is free software; you can redistribute it and/or
0005     modify it under the terms of the GNU Lesser General Public
0006     License as published by the Free Software Foundation; either
0007     version 2.1 of the License, or (at your option) any later version.
0008 
0009     This library is distributed in the hope that it will be useful,
0010     but WITHOUT ANY WARRANTY; without even the implied warranty of
0011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012     Lesser General Public License for more details.
0013 
0014     You should have received a copy of the GNU Lesser General Public
0015     License along with this library.  If not, see <http://www.gnu.org/licenses/>.
0016 */
0017 
0018 #include "sinknode.h"
0019 
0020 #include "utils/debug.h"
0021 #include "mediaobject.h"
0022 #include "mediaplayer.h"
0023 
0024 namespace Phonon {
0025 namespace VLC {
0026 
0027 SinkNode::SinkNode()
0028     : m_mediaObject(0)
0029     , m_player(0)
0030 {
0031 }
0032 
0033 SinkNode::~SinkNode()
0034 {
0035     if (m_mediaObject) {
0036         disconnectFromMediaObject(m_mediaObject);
0037     }
0038 }
0039 
0040 void SinkNode::connectToMediaObject(MediaObject *mediaObject)
0041 {
0042     if (m_mediaObject) {
0043         error() << Q_FUNC_INFO << "m_mediaObject already connected";
0044     }
0045 
0046     m_mediaObject = mediaObject;
0047     m_player = mediaObject->m_player;
0048     m_mediaObject->addSink(this);
0049 
0050     // ---> Global handling goes here! Above the derivee handle! <--- //
0051 
0052     handleConnectToMediaObject(mediaObject);
0053 }
0054 
0055 void SinkNode::disconnectFromMediaObject(MediaObject *mediaObject)
0056 {
0057     handleDisconnectFromMediaObject(mediaObject);
0058 
0059     // ---> Global handling goes here! Below the derivee handle! <--- //
0060 
0061     if (m_mediaObject != mediaObject) {
0062         error() << Q_FUNC_INFO << "SinkNode was not connected to mediaObject";
0063     }
0064 
0065     if (m_mediaObject) {
0066         m_mediaObject->removeSink(this);
0067     }
0068 
0069     m_mediaObject = 0;
0070     m_player = 0;
0071 }
0072 
0073 void SinkNode::addToMedia(Media *media)
0074 {
0075     // ---> Global handling goes here! Above the derivee handle! <--- //
0076 
0077     handleAddToMedia(media);
0078 }
0079 
0080 } // namespace VLC
0081 } // namespace Phonon