[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

crogers at google.com crogers at google.com
Wed Dec 22 13:55:46 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 5a1b652656de6d675cd6b5ae69ab1932abe6a8c7
Author: crogers at google.com <crogers at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Sep 29 21:56:46 2010 +0000

    2010-09-29  Chris Rogers  <crogers at google.com>
    
            Reviewed by Kenneth Russell.
    
            Limit number of AudioNode deletions per render quantum in AudioContext
            https://bugs.webkit.org/show_bug.cgi?id=46834
    
            No new tests since audio API is not yet implemented.
    
            * webaudio/AudioContext.cpp:
            (WebCore::AudioContext::handlePostRenderTasks):
            (WebCore::AudioContext::deleteMarkedNodes):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68689 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index f15dad8..fe84988 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,16 @@
+2010-09-29  Chris Rogers  <crogers at google.com>
+
+        Reviewed by Kenneth Russell.
+
+        Limit number of AudioNode deletions per render quantum in AudioContext
+        https://bugs.webkit.org/show_bug.cgi?id=46834
+
+        No new tests since audio API is not yet implemented.
+
+        * webaudio/AudioContext.cpp:
+        (WebCore::AudioContext::handlePostRenderTasks):
+        (WebCore::AudioContext::deleteMarkedNodes):
+
 2010-09-29  David Hyatt  <hyatt at apple.com>
 
         Reviewed by Simon Fraser.
diff --git a/WebCore/webaudio/AudioContext.cpp b/WebCore/webaudio/AudioContext.cpp
index 6ca8ee1..63a26a2 100644
--- a/WebCore/webaudio/AudioContext.cpp
+++ b/WebCore/webaudio/AudioContext.cpp
@@ -58,7 +58,9 @@
 
 // FIXME: check the proper way to reference an undefined thread ID
 const int UndefinedThreadIdentifier = 0xffffffff;
- 
+
+const unsigned MaxNodesToDeletePerQuantum = 10;
+
 namespace WebCore {
 
 PassRefPtr<CachedAudio> AudioContext::createAudioRequest(const String &url, bool mixToMono)
@@ -412,7 +414,7 @@ void AudioContext::addDeferredFinishDeref(AudioNode* node, AudioNode::RefType re
 void AudioContext::handlePostRenderTasks()
 {
     ASSERT(isAudioThread());
-    
+ 
     // Must use a tryLock() here too.  Don't worry, the lock will very rarely be contended and this method is called frequently.
     // The worst that can happen is that there will be some nodes which will take slightly longer than usual to be deleted or removed
     // from the render graph (in which case they'll render silence).
@@ -455,10 +457,15 @@ void AudioContext::deleteMarkedNodes()
     ASSERT(isGraphOwner() || isAudioThreadFinished());
 
     // Note: deleting an AudioNode can cause m_nodesToDelete to grow.
+    size_t nodesDeleted = 0;
     while (size_t n = m_nodesToDelete.size()) {
         AudioNode* node = m_nodesToDelete[n - 1];
         m_nodesToDelete.removeLast();
         delete node;
+
+        // Don't delete too many nodes per render quantum since we don't want to do too much work in the realtime audio thread.
+        if (++nodesDeleted > MaxNodesToDeletePerQuantum)
+            break;
     }
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list