⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 187544 in webkit


Ignore:
Timestamp:
Jul 29, 2015, 12:16:34 AM (11 years ago)
Author:
Chris Dumez
Message:

Avoid unnecessarily constructing PlatformMediaSessionManager on Document destruction
https://bugs.webkit.org/show_bug.cgi?id=147398

Reviewed by Jer Noble.

Only call PlatformMediaSessionManager::stopAllMediaPlaybackForProcess() in
Source/WebCore:

destructors if an PlatformMediaSessionManager instance already exists, to
avoid constructing one unecessarily at that point.

  • dom/Document.cpp:

(WebCore::Document::~Document):

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::sharedManager):
(WebCore::PlatformMediaSessionManager::sharedManagerIfExists):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::PlatformMediaSessionManager::sharedManager):
(WebCore::PlatformMediaSessionManager::sharedManagerIfExists):

Source/WebKit2:

destructors if an PlatformMediaSessionManager instance already exists, to
avoid constructing one unecessarily at that point.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::didClose):

Location:
trunk/Source
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r187536 r187544  
     12015-07-29  Chris Dumez  <cdumez@apple.com>
     2
     3        Avoid unnecessarily constructing PlatformMediaSessionManager on Document destruction
     4        https://bugs.webkit.org/show_bug.cgi?id=147398
     5
     6        Reviewed by Jer Noble.
     7
     8        Only call PlatformMediaSessionManager::stopAllMediaPlaybackForProcess() in
     9        destructors if an PlatformMediaSessionManager instance already exists, to
     10        avoid constructing one unecessarily at that point.
     11
     12        * dom/Document.cpp:
     13        (WebCore::Document::~Document):
     14        * platform/audio/PlatformMediaSessionManager.cpp:
     15        (WebCore::PlatformMediaSessionManager::sharedManager):
     16        (WebCore::PlatformMediaSessionManager::sharedManagerIfExists):
     17        * platform/audio/PlatformMediaSessionManager.h:
     18        * platform/audio/ios/MediaSessionManagerIOS.mm:
     19        (WebCore::PlatformMediaSessionManager::sharedManager):
     20        (WebCore::PlatformMediaSessionManager::sharedManagerIfExists):
     21
    1222015-07-28  Simon Fraser  <simon.fraser@apple.com>
    223
  • trunk/Source/WebCore/dom/Document.cpp

    r187251 r187544  
    635635
    636636#if ENABLE(VIDEO)
    637     PlatformMediaSessionManager::sharedManager().stopAllMediaPlaybackForDocument(this);
     637    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
     638        platformMediaSessionManager->stopAllMediaPlaybackForDocument(this);
    638639#endif
    639640   
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp

    r187522 r187544  
    3838
    3939#if !PLATFORM(IOS)
     40static PlatformMediaSessionManager* platformMediaSessionManager = nullptr;
     41
    4042PlatformMediaSessionManager& PlatformMediaSessionManager::sharedManager()
    4143{
    42     DEPRECATED_DEFINE_STATIC_LOCAL(PlatformMediaSessionManager, manager, ());
    43     return manager;
     44    if (!platformMediaSessionManager)
     45        platformMediaSessionManager = new PlatformMediaSessionManager;
     46    return *platformMediaSessionManager;
     47}
     48
     49PlatformMediaSessionManager* PlatformMediaSessionManager::sharedManagerIfExists()
     50{
     51    return platformMediaSessionManager;
    4452}
    4553#endif
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h

    r187522 r187544  
    4545    WTF_MAKE_FAST_ALLOCATED;
    4646public:
     47    WEBCORE_EXPORT static PlatformMediaSessionManager* sharedManagerIfExists();
    4748    WEBCORE_EXPORT static PlatformMediaSessionManager& sharedManager();
    4849    virtual ~PlatformMediaSessionManager() { }
  • trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm

    r187522 r187544  
    115115namespace WebCore {
    116116
     117static MediaSessionManageriOS* platformMediaSessionManager = nullptr;
     118
    117119PlatformMediaSessionManager& PlatformMediaSessionManager::sharedManager()
    118120{
    119     DEPRECATED_DEFINE_STATIC_LOCAL(MediaSessionManageriOS, manager, ());
    120     return manager;
     121    if (!platformMediaSessionManager)
     122        platformMediaSessionManager = new MediaSessionManageriOS;
     123    return *platformMediaSessionManager;
     124}
     125
     126PlatformMediaSessionManager* PlatformMediaSessionManager::sharedManagerIfExists()
     127{
     128    return platformMediaSessionManager;
    121129}
    122130
  • trunk/Source/WebKit2/ChangeLog

    r187543 r187544  
     12015-07-29  Chris Dumez  <cdumez@apple.com>
     2
     3        Avoid unnecessarily constructing PlatformMediaSessionManager on Document destruction
     4        https://bugs.webkit.org/show_bug.cgi?id=147398
     5
     6        Reviewed by Jer Noble.
     7
     8        Only call PlatformMediaSessionManager::stopAllMediaPlaybackForProcess() in
     9        destructors if an PlatformMediaSessionManager instance already exists, to
     10        avoid constructing one unecessarily at that point.
     11
     12        * WebProcess/WebProcess.cpp:
     13        (WebKit::WebProcess::didClose):
     14
    1152015-07-28  Carlos Garcia Campos  <cgarcia@igalia.com>
    216
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r187029 r187544  
    662662#if ENABLE(VIDEO)
    663663    // FIXME(146657): This explicit media stop command should not be necessary
    664     PlatformMediaSessionManager::sharedManager().stopAllMediaPlaybackForProcess();
     664    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
     665        platformMediaSessionManager->stopAllMediaPlaybackForProcess();
    665666#endif
    666667
Note: See TracChangeset for help on using the changeset viewer.