src/3rdparty/phonon/mmf/backend.cpp
changeset 7 f7bc934e204c
parent 3 41300fa6a67c
--- a/src/3rdparty/phonon/mmf/backend.cpp	Tue Feb 02 00:43:10 2010 +0200
+++ b/src/3rdparty/phonon/mmf/backend.cpp	Wed Mar 31 11:06:36 2010 +0300
@@ -24,7 +24,6 @@
 #include <apmstd.h> // for TDataType
 
 #include "abstractaudioeffect.h"
-#include "ancestormovemonitor.h"
 #include "audiooutput.h"
 #include "audioplayer.h"
 #include "backend.h"
@@ -44,7 +43,10 @@
 
 Backend::Backend(QObject *parent)
     : QObject(parent)
+#ifndef PHONON_MMF_VIDEO_SURFACES
     , m_ancestorMoveMonitor(new AncestorMoveMonitor(this))
+#endif
+    , m_effectFactory(new EffectFactory(this))
 {
     TRACE_CONTEXT(Backend::Backend, EBackend);
     TRACE_ENTRY_0();
@@ -81,12 +83,19 @@
     {
         Q_ASSERT(args.count() == 1);
         Q_ASSERT(args.first().type() == QVariant::Int);
-        const AbstractAudioEffect::Type effect = AbstractAudioEffect::Type(args.first().toInt());
+        const EffectFactory::Type type =
+            static_cast<EffectFactory::Type>(args.first().toInt());
+        return m_effectFactory->createAudioEffect(type, parent);
+    }
 
-        return EffectFactory::createAudioEffect(effect, parent);
+    case VideoWidgetClass:
+    {
+        VideoWidget *widget = new VideoWidget(qobject_cast<QWidget *>(parent));
+#ifndef PHONON_MMF_VIDEO_SURFACES
+        widget->setAncestorMoveMonitor(m_ancestorMoveMonitor.data());
+#endif
+        result = widget;
     }
-    case VideoWidgetClass:
-        result = new VideoWidget(m_ancestorMoveMonitor.data(), qobject_cast<QWidget *>(parent));
         break;
 
     default:
@@ -105,7 +114,7 @@
     switch(type)
     {
         case EffectType:
-            retval.append(EffectFactory::effectIndexes());
+            retval.append(m_effectFactory->effectIndexes());
             break;
         case AudioOutputDeviceType:
             // We only have one possible output device, but we need at least
@@ -126,7 +135,7 @@
 
     switch (type) {
         case EffectType:
-            return EffectFactory::audioEffectDescriptions(AbstractAudioEffect::Type(index));
+            return m_effectFactory->audioEffectDescriptions(EffectFactory::Type(index));
         case AudioOutputDeviceType:
             return AudioOutput::audioOutputDescription(index);
         default:
@@ -139,29 +148,32 @@
     return true;
 }
 
-bool Backend::connectNodes(QObject *source, QObject *target)
+bool Backend::connectNodes(QObject *sourceObject, QObject *targetObject)
 {
     TRACE_CONTEXT(Backend::connectNodes, EBackend);
-    TRACE_ENTRY("source 0x%08x target 0x%08x", source, target);
-    Q_ASSERT(qobject_cast<MediaNode *>(source));
-    Q_ASSERT(qobject_cast<MediaNode *>(target));
+    TRACE_ENTRY("source 0x%08x target 0x%08x", sourceObject, targetObject);
+
+    MediaNode *const source = qobject_cast<MediaNode *>(sourceObject);
+    MediaNode *const target = qobject_cast<MediaNode *>(targetObject);
 
-    MediaNode *const mediaSource = static_cast<MediaNode *>(source);
-    MediaNode *const mediaTarget = static_cast<MediaNode *>(target);
+    Q_ASSERT_X(source, Q_FUNC_INFO, "source is not a MediaNode");
+    Q_ASSERT_X(target, Q_FUNC_INFO, "target is not a MediaNode");
 
-    return mediaSource->connectMediaNode(mediaTarget);
+    return source->connectOutput(target);
 }
 
-bool Backend::disconnectNodes(QObject *source, QObject *target)
+bool Backend::disconnectNodes(QObject *sourceObject, QObject *targetObject)
 {
     TRACE_CONTEXT(Backend::disconnectNodes, EBackend);
-    TRACE_ENTRY("source 0x%08x target 0x%08x", source, target);
-    Q_ASSERT(qobject_cast<MediaNode *>(source));
-    Q_ASSERT(qobject_cast<MediaNode *>(target));
+    TRACE_ENTRY("source 0x%08x target 0x%08x", sourceObject, targetObject);
+
+    MediaNode *const source = qobject_cast<MediaNode *>(sourceObject);
+    MediaNode *const target = qobject_cast<MediaNode *>(targetObject);
 
-    const bool result = static_cast<MediaNode *>(source)->disconnectMediaNode(static_cast<MediaNode *>(target));
+    Q_ASSERT_X(source, Q_FUNC_INFO, "source is not a MediaNode");
+    Q_ASSERT_X(target, Q_FUNC_INFO, "target is not a MediaNode");
 
-    TRACE_RETURN("%d", result);
+    return source->disconnectOutput(target);
 }
 
 bool Backend::endConnectionChange(QSet<QObject *>)