Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Fix event listener leaks in Player #4229

Merged
merged 1 commit into from May 17, 2022

Commits on May 16, 2022

  1. fix: Fix event listener leaks in Player

    Event listeners were being leaked in Player across load() / unload()
    cycles.  This was fundamentally caused by the difficulty in keeping
    track of which event listeners to clean up at which stages of the load
    graph.  Everything is cleaned up by Player.destroy() and
    EventManager.release(), but for a Player with heavy re-use, there was
    still a small leak.
    
    This fixes the leak by splitting the EventManager instance into three
    instances, each of which is cleaned up in a different part of the load
    graph life cycle.  Listeners which should only live as long as a piece
    of content is loaded go into loadEventManager_.  Listeners which
    should only live as long as we are attached to the video element go
    into attachEventManager_.  Listeners which should live as long as the
    Player instance itself go into globalEventManager_.  It is now
    impossible to miss unlistening to a particular event, since we no
    longer have to unlisten to any individual events at all.  The
    removeAll() method of each event manager will clean up all listeners
    at the appropriate time.
    joeyparrish committed May 16, 2022
    Copy the full SHA
    a56d11f View commit details
    Browse the repository at this point in the history