Changeset 247354 in webkit
- Timestamp:
- Jul 11, 2019 10:10:52 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r247350 r247354 1 2019-07-11 Chris Dumez <cdumez@apple.com> 2 3 Fix non thread-safe usage of makeWeakPtr() in MediaPlayerPrivateMediaFoundation 4 https://bugs.webkit.org/show_bug.cgi?id=199700 5 6 Reviewed by Eric Carlson. 7 8 The code was calling makeWeakPtr() on a main-thread object, from a background thread. 9 This is not thread safe. To address the issue, this patches creates the WeakPtr ahead 10 of time, on the main thread. 11 12 * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp: 13 (WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation): 14 (WebCore::MediaPlayerPrivateMediaFoundation::endCreatedMediaSource): 15 (WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent): 16 (WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::processInputNotify): 17 * platform/graphics/win/MediaPlayerPrivateMediaFoundation.h: 18 (WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::create): 19 (WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::wrapped): 20 (WebCore::MediaPlayerPrivateMediaFoundation::ThreadSafeWrapper::ThreadSafeWrapper): 21 1 22 2019-07-11 Zalan Bujtas <zalan@apple.com> 2 23 -
trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp
r246919 r247354 59 59 60 60 MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation(MediaPlayer* player) 61 : m_player(player) 61 : m_weakThis(makeWeakPtr(this)) 62 , m_player(player) 62 63 , m_visible(false) 63 64 , m_loadingProgress(false) … … 426 427 m_loadingProgress = SUCCEEDED(hr); 427 428 428 callOnMainThread([weakPtr = m akeWeakPtr(*this)] {429 callOnMainThread([weakPtr = m_weakThis] { 429 430 if (!weakPtr) 430 431 return; … … 455 456 switch (mediaEventType) { 456 457 case MESessionTopologySet: { 457 callOnMainThread([weakPtr = m akeWeakPtr(*this)] {458 callOnMainThread([weakPtr = m_weakThis] { 458 459 if (!weakPtr) 459 460 return; … … 464 465 465 466 case MESessionStarted: { 466 callOnMainThread([weakPtr = m akeWeakPtr(*this)] {467 callOnMainThread([weakPtr = m_weakThis] { 467 468 if (!weakPtr) 468 469 return; … … 473 474 474 475 case MEBufferingStarted: { 475 callOnMainThread([weakPtr = m akeWeakPtr(*this)] {476 callOnMainThread([weakPtr = m_weakThis] { 476 477 if (!weakPtr) 477 478 return; … … 482 483 483 484 case MEBufferingStopped: { 484 callOnMainThread([weakPtr = m akeWeakPtr(*this)] {485 callOnMainThread([weakPtr = m_weakThis] { 485 486 if (!weakPtr) 486 487 return; … … 491 492 492 493 case MESessionEnded: { 493 callOnMainThread([weakPtr = m akeWeakPtr(*this)] {494 callOnMainThread([weakPtr = m_weakThis] { 494 495 if (!weakPtr) 495 496 return; -
trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h
r246302 r247354 102 102 103 103 private: 104 WeakPtr<MediaPlayerPrivateMediaFoundation> m_weakThis; 104 105 MediaPlayer* m_player; 105 106 IntSize m_size;
Note: See TracChangeset
for help on using the changeset viewer.