src/3rdparty/phonon/mmf/audiooutput.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    22 
    22 
    23 #include "audiooutput.h"
    23 #include "audiooutput.h"
    24 #include "defs.h"
    24 #include "defs.h"
    25 #include "mediaobject.h"
    25 #include "mediaobject.h"
    26 #include "utils.h"
    26 #include "utils.h"
    27 #include "volumeobserver.h"
       
    28 
    27 
    29 QT_BEGIN_NAMESPACE
    28 QT_BEGIN_NAMESPACE
    30 
    29 
    31 using namespace Phonon;
    30 using namespace Phonon;
    32 using namespace Phonon::MMF;
    31 using namespace Phonon::MMF;
    39 // Constructor / destructor
    38 // Constructor / destructor
    40 //-----------------------------------------------------------------------------
    39 //-----------------------------------------------------------------------------
    41 
    40 
    42 MMF::AudioOutput::AudioOutput(Backend *, QObject *parent) : MediaNode(parent)
    41 MMF::AudioOutput::AudioOutput(Backend *, QObject *parent) : MediaNode(parent)
    43         , m_volume(InitialVolume)
    42         , m_volume(InitialVolume)
    44         , m_observer(0)
       
    45 {
    43 {
    46 
    44 
    47 }
    45 }
    48 
    46 
    49 
    47 
    57 }
    55 }
    58 
    56 
    59 void MMF::AudioOutput::setVolume(qreal volume)
    57 void MMF::AudioOutput::setVolume(qreal volume)
    60 {
    58 {
    61     TRACE_CONTEXT(AudioOutput::setVolume, EAudioApi);
    59     TRACE_CONTEXT(AudioOutput::setVolume, EAudioApi);
    62     TRACE_ENTRY("observer 0x%08x volume %f", m_observer, volume);
    60     TRACE_ENTRY("volume %f", volume);
    63 
    61 
    64     if (volume != m_volume) {
    62     if (volume != m_volume) {
    65         if (m_observer) {
       
    66             m_observer->volumeChanged(volume);
       
    67         }
       
    68 
    63 
    69         m_volume = volume;
    64         m_volume = volume;
    70         TRACE("emit volumeChanged(%f)", volume)
    65         TRACE("emit volumeChanged(%f)", volume)
    71         emit volumeChanged(volume);
    66         emit volumeChanged(volume);
    72     }
    67     }
    84     Q_ASSERT_X(index == AudioOutputDeviceID, Q_FUNC_INFO,
    79     Q_ASSERT_X(index == AudioOutputDeviceID, Q_FUNC_INFO,
    85                "We only support one output device, with id 0");
    80                "We only support one output device, with id 0");
    86     return true;
    81     return true;
    87 }
    82 }
    88 
    83 
    89 void MMF::AudioOutput::setVolumeObserver(VolumeObserver* observer)
       
    90 {
       
    91     m_observer = observer;
       
    92     if (m_observer) {
       
    93         m_observer->volumeChanged(m_volume);
       
    94     }
       
    95 }
       
    96 
       
    97 bool MMF::AudioOutput::activateOnMediaObject(MediaObject *mo)
    84 bool MMF::AudioOutput::activateOnMediaObject(MediaObject *mo)
    98 {
    85 {
    99     setVolumeObserver(mo);
    86     // Ensure that the MediaObject has the correct initial volume
       
    87     mo->volumeChanged(m_volume);
       
    88     // Connect MediaObject to receive future volume changes
       
    89     connect(this, SIGNAL(volumeChanged(qreal)), mo, SLOT(volumeChanged(qreal)));
   100     return true;
    90     return true;
   101 }
    91 }
   102 
    92 
   103 QHash<QByteArray, QVariant> MMF::AudioOutput::audioOutputDescription(int index)
    93 QHash<QByteArray, QVariant> MMF::AudioOutput::audioOutputDescription(int index)
   104 {
    94 {