Changeset 85872 in webkit


Ignore:
Timestamp:
May 5, 2011 1:21:38 PM (13 years ago)
Author:
eric.carlson@apple.com
Message:

2011-05-05 Eric Carlson <eric.carlson@apple.com>

Reviewed by Adam Roben.

Block callbacks delivered during destruction
https://bugs.webkit.org/show_bug.cgi?id=60291
<rdar://problem/9382942>

No new tests, tested by existing tests.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::~MediaPlayerPrivateAVFoundation): Call

setIgnoreLoadStateChanges(true) to cancel all callbacks.

(WebCore::MediaPlayerPrivateAVFoundation::updateStates): Return immediately if

m_ignoreLoadStateChanges is true.

(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification): loadStateChanged -> updateStates.

Don't call updateStates after calling loadedTimeRangesChanged, it already does it.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r85869 r85872  
     12011-05-05  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Reviewed by Adam Roben.
     4
     5        Block callbacks delivered during destruction
     6        https://bugs.webkit.org/show_bug.cgi?id=60291
     7        <rdar://problem/9382942>
     8
     9        No new tests, tested by existing tests.
     10
     11        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
     12        (WebCore::MediaPlayerPrivateAVFoundation::~MediaPlayerPrivateAVFoundation): Call
     13            setIgnoreLoadStateChanges(true) to cancel all callbacks.
     14        (WebCore::MediaPlayerPrivateAVFoundation::updateStates): Return immediately if
     15            m_ignoreLoadStateChanges is true.
     16        (WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification): loadStateChanged -> updateStates.
     17            Don't call updateStates after calling loadedTimeRangesChanged, it already does it.
     18        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
     19
    1202011-05-05  David Hyatt  <hyatt@apple.com>
    221
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp

    r85865 r85872  
    8080{
    8181    LOG(Media, "MediaPlayerPrivateAVFoundation::~MediaPlayerPrivateAVFoundation(%p)", this);
     82    setIgnoreLoadStateChanges(true);
    8283    cancelCallOnMainThread(mainThreadCallback, this);
    8384}
     
    383384void MediaPlayerPrivateAVFoundation::updateStates()
    384385{
     386    if (m_ignoreLoadStateChanges)
     387        return;
     388
    385389    MediaPlayer::NetworkState oldNetworkState = m_networkState;
    386390    MediaPlayer::ReadyState oldReadyState = m_readyState;
     
    509513}
    510514
    511 void MediaPlayerPrivateAVFoundation::loadStateChanged()
    512 {
    513     if (m_ignoreLoadStateChanges)
    514         return;
    515     updateStates();
    516 }
    517 
    518515void MediaPlayerPrivateAVFoundation::rateChanged()
    519516{
     
    731728        break;
    732729    case Notification::ItemStatusChanged:
    733         loadStateChanged();
     730        updateStates();
    734731        break;
    735732    case Notification::ItemSeekableTimeRangesChanged:
    736733        seekableTimeRangesChanged();
    737         loadStateChanged();
    738734        break;
    739735    case Notification::ItemLoadedTimeRangesChanged:
    740736        loadedTimeRangesChanged();
    741         loadStateChanged();
    742737        break;
    743738    case Notification::ItemPresentationSizeChanged:
     
    746741        break;
    747742    case Notification::ItemIsPlaybackLikelyToKeepUpChanged:
    748         loadStateChanged();
     743        updateStates();
    749744        break;
    750745    case Notification::ItemIsPlaybackBufferEmptyChanged:
    751         loadStateChanged();
     746        updateStates();
    752747        break;
    753748    case Notification::ItemIsPlaybackBufferFullChanged:
    754         loadStateChanged();
     749        updateStates();
    755750        break;
    756751    case Notification::PlayerRateChanged:
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h

    r85865 r85872  
    4343    virtual void repaint();
    4444    virtual void metadataLoaded();
    45     virtual void loadStateChanged();
    4645    virtual void playabilityKnown();
    4746    virtual void rateChanged();
Note: See TracChangeset for help on using the changeset viewer.