[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    =?utf-8?q?=5Bphonon-vlc=5D_vlc/experimental=3A_Add_stateChanged_?=
From:       Casian Andrei <skeletk13 () gmail ! com>
Date:       2011-02-28 21:50:32
Message-ID: 20110228215032.0463DA60E8 () git ! kde ! org
[Download RAW message or body]

Git commit a977bbcdc27b4b935993e432250f81caa23418cf by Casian Andrei.
Committed on 28/02/2011 at 21:49.
Pushed by casianandrei into branch 'master'.

Add stateChanged signal to AvCapture

M  +24   -1    vlc/experimental/avcapture.cpp     
M  +7    -0    vlc/experimental/avcapture.h     

http://commits.kde.org/phonon-vlc/a977bbcdc27b4b935993e432250f81caa23418cf

diff --git a/vlc/experimental/avcapture.cpp b/vlc/experimental/avcapture.cpp
index 54d07dd..b3a962c 100644
--- a/vlc/experimental/avcapture.cpp
+++ b/vlc/experimental/avcapture.cpp
@@ -36,7 +36,7 @@ AvCapture::AvCapture(QObject* parent)
     m_audioMedia(parent),
     m_videoMedia(parent)
 {
-
+    m_connectedMO = NULL;
 }
 
 AvCapture::~AvCapture()
@@ -80,12 +80,35 @@ void AvCapture::setAudioCaptureDevice(const \
Phonon::AudioCaptureDevice &device)  {
     m_audioMedia.setSource(device);
     m_audioCaptureDevice = device;
+    setupStateChangedSignal();
 }
 
 void AvCapture::setVideoCaptureDevice(const Phonon::VideoCaptureDevice &device)
 {
     m_videoMedia.setSource(device);
     m_videoCaptureDevice = device;
+    setupStateChangedSignal();
+}
+
+void AvCapture::setupStateChangedSignal()
+{
+    // Disconnect the old media object state change signal
+    if (m_connectedMO)
+        disconnect(m_connectedMO, SIGNAL(stateChanged(Phonon::State,Phonon::State)), \
this, SIGNAL(stateChanged(Phonon::State,Phonon::State))); +
+    // Determine the media object from which the state change signal will be \
connected +    m_connectedMO = NULL;
+    if (m_videoCaptureDevice.isValid()) {
+        m_connectedMO = &m_videoMedia;
+    } else {
+        if (m_audioCaptureDevice.isValid()) {
+            m_connectedMO = &m_audioMedia;
+        }
+    }
+
+    // Connect the state change signal
+    if (m_connectedMO)
+        connect(m_connectedMO, SIGNAL(stateChanged(Phonon::State,Phonon::State)), \
this, SIGNAL(stateChanged(Phonon::State,Phonon::State)));  }
 
 } // Experimental namespace
diff --git a/vlc/experimental/avcapture.h b/vlc/experimental/avcapture.h
index cb18f76..14d3b07 100644
--- a/vlc/experimental/avcapture.h
+++ b/vlc/experimental/avcapture.h
@@ -57,11 +57,18 @@ class AvCapture : public QObject, public \
Phonon::Experimental::AvCaptureInterfac  MediaObject* audioMediaObject();
         MediaObject* videoMediaObject();
 
+    signals:
+        void stateChanged(Phonon::State newState, Phonon::State oldState);
+
+    private:
+        void setupStateChangedSignal();
+
     private:
         AudioCaptureDevice m_audioCaptureDevice;
         VideoCaptureDevice m_videoCaptureDevice;
         MediaObject m_audioMedia;
         MediaObject m_videoMedia;
+        MediaObject *m_connectedMO;
 };
 
 } // Experimental namespace


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic