BiquadFilterNode must not reset filter state if type attribute is set to the same...
authorcrogers@google.com <crogers@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Oct 2011 19:20:45 +0000 (19:20 +0000)
committercrogers@google.com <crogers@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Oct 2011 19:20:45 +0000 (19:20 +0000)
https://bugs.webkit.org/show_bug.cgi?id=69485

Reviewed by Kenneth Russell.

No new tests.  This particular case is difficult to test with a layout test using OfflineAudioContext.

* webaudio/BiquadProcessor.cpp:
(WebCore::BiquadProcessor::setType):
* webaudio/BiquadProcessor.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@96846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/webaudio/BiquadProcessor.cpp
Source/WebCore/webaudio/BiquadProcessor.h

index 90f37eb31062a4301af898a2cd7f0c28cdf20dee..524960f65a83fdc3bfad2db3435126e53f81c2e8 100644 (file)
@@ -1,3 +1,16 @@
+2011-10-06  Chris Rogers  <crogers@google.com>
+
+        BiquadFilterNode must not reset filter state if type attribute is set to the same type
+        https://bugs.webkit.org/show_bug.cgi?id=69485
+
+        Reviewed by Kenneth Russell.
+
+        No new tests.  This particular case is difficult to test with a layout test using OfflineAudioContext.
+
+        * webaudio/BiquadProcessor.cpp:
+        (WebCore::BiquadProcessor::setType):
+        * webaudio/BiquadProcessor.h:
+
 2011-10-06  Raphael Kubo da Costa  <kubo@profusion.mobi>
 
         [EFL] Do not create cairo surfaces with the wrong size for form elements
index c755277485b679df3e89f3af0e315d8ef6392a69..192755a5b8ef9935fabc64290e7641d6e2588978 100644 (file)
@@ -122,6 +122,14 @@ void BiquadProcessor::process(AudioBus* source, AudioBus* destination, size_t fr
         m_kernels[i]->process(source->channel(i)->data(), destination->channel(i)->data(), framesToProcess);
 }
 
+void BiquadProcessor::setType(FilterType type)
+{
+    if (type != m_type) {
+        m_type = type;
+        reset(); // The filter state must be reset only if the type has changed.
+    }
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(WEB_AUDIO)
index e7487262ada10eab548b59a34a5b8102353175f5..16ef405de2c4457f3a14cddc5115c39c17505c9f 100644 (file)
@@ -67,7 +67,7 @@ public:
     AudioParam* parameter3() { return m_parameter3.get(); }
 
     FilterType type() const { return m_type; }
-    void setType(FilterType type) { m_type = type; reset(); }
+    void setType(FilterType);
 
 private:
     FilterType m_type;