Title: [187544] trunk/Source
- Revision
- 187544
- Author
- cdu...@apple.com
- Date
- 2015-07-29 00:16:34 -0700 (Wed, 29 Jul 2015)
Log 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):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (187543 => 187544)
--- trunk/Source/WebCore/ChangeLog 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebCore/ChangeLog 2015-07-29 07:16:34 UTC (rev 187544)
@@ -1,3 +1,24 @@
+2015-07-29 Chris Dumez <cdu...@apple.com>
+
+ 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
+ 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):
+
2015-07-28 Simon Fraser <simon.fra...@apple.com>
Fix debug builds.
Modified: trunk/Source/WebCore/dom/Document.cpp (187543 => 187544)
--- trunk/Source/WebCore/dom/Document.cpp 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebCore/dom/Document.cpp 2015-07-29 07:16:34 UTC (rev 187544)
@@ -634,7 +634,8 @@
m_cachedResourceLoader->setDocument(nullptr);
#if ENABLE(VIDEO)
- PlatformMediaSessionManager::sharedManager().stopAllMediaPlaybackForDocument(this);
+ if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
+ platformMediaSessionManager->stopAllMediaPlaybackForDocument(this);
#endif
// We must call clearRareData() here since a Document class inherits TreeScope
Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp (187543 => 187544)
--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp 2015-07-29 07:16:34 UTC (rev 187544)
@@ -37,11 +37,19 @@
namespace WebCore {
#if !PLATFORM(IOS)
+static PlatformMediaSessionManager* platformMediaSessionManager = nullptr;
+
PlatformMediaSessionManager& PlatformMediaSessionManager::sharedManager()
{
- DEPRECATED_DEFINE_STATIC_LOCAL(PlatformMediaSessionManager, manager, ());
- return manager;
+ if (!platformMediaSessionManager)
+ platformMediaSessionManager = new PlatformMediaSessionManager;
+ return *platformMediaSessionManager;
}
+
+PlatformMediaSessionManager* PlatformMediaSessionManager::sharedManagerIfExists()
+{
+ return platformMediaSessionManager;
+}
#endif
PlatformMediaSessionManager::PlatformMediaSessionManager()
Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h (187543 => 187544)
--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h 2015-07-29 07:16:34 UTC (rev 187544)
@@ -44,6 +44,7 @@
class PlatformMediaSessionManager : private RemoteCommandListenerClient, private SystemSleepListener::Client, private AudioHardwareListener::Client {
WTF_MAKE_FAST_ALLOCATED;
public:
+ WEBCORE_EXPORT static PlatformMediaSessionManager* sharedManagerIfExists();
WEBCORE_EXPORT static PlatformMediaSessionManager& sharedManager();
virtual ~PlatformMediaSessionManager() { }
Modified: trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm (187543 => 187544)
--- trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm 2015-07-29 07:16:34 UTC (rev 187544)
@@ -114,12 +114,20 @@
namespace WebCore {
+static MediaSessionManageriOS* platformMediaSessionManager = nullptr;
+
PlatformMediaSessionManager& PlatformMediaSessionManager::sharedManager()
{
- DEPRECATED_DEFINE_STATIC_LOCAL(MediaSessionManageriOS, manager, ());
- return manager;
+ if (!platformMediaSessionManager)
+ platformMediaSessionManager = new MediaSessionManageriOS;
+ return *platformMediaSessionManager;
}
+PlatformMediaSessionManager* PlatformMediaSessionManager::sharedManagerIfExists()
+{
+ return platformMediaSessionManager;
+}
+
MediaSessionManageriOS::MediaSessionManageriOS()
: PlatformMediaSessionManager()
, m_objcObserver(adoptNS([[WebMediaSessionHelper alloc] initWithCallback:this]))
Modified: trunk/Source/WebKit2/ChangeLog (187543 => 187544)
--- trunk/Source/WebKit2/ChangeLog 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebKit2/ChangeLog 2015-07-29 07:16:34 UTC (rev 187544)
@@ -1,3 +1,17 @@
+2015-07-29 Chris Dumez <cdu...@apple.com>
+
+ 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
+ destructors if an PlatformMediaSessionManager instance already exists, to
+ avoid constructing one unecessarily at that point.
+
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::didClose):
+
2015-07-28 Carlos Garcia Campos <cgar...@igalia.com>
[GTK] Add API to set the maximum number of web processes per WebKitWebContext
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (187543 => 187544)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2015-07-29 06:50:50 UTC (rev 187543)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2015-07-29 07:16:34 UTC (rev 187544)
@@ -661,7 +661,8 @@
#if ENABLE(VIDEO)
// FIXME(146657): This explicit media stop command should not be necessary
- PlatformMediaSessionManager::sharedManager().stopAllMediaPlaybackForProcess();
+ if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
+ platformMediaSessionManager->stopAllMediaPlaybackForProcess();
#endif
// The UI process closed this connection, shut down.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes