Changeset 245935 in webkit
- Timestamp:
- May 30, 2019, 5:33:35 PM (7 years ago)
- Location:
- branches/safari-607-branch/Source/WebKit
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
WebProcess/cocoa/UserMediaCaptureManager.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-607-branch/Source/WebKit/ChangeLog
r245931 r245935 1 2019-05-30 Kocsen Chung <kocsen_chung@apple.com> 2 3 Apply patch. rdar://problem/51264770 4 5 2019-05-30 Youenn Fablet <youenn@apple.com> 6 7 UserMediaCaptureManager should remove a source from its map once the source is ended 8 https://bugs.webkit.org/show_bug.cgi?id=198337 9 10 When the source is stopped, for instance using MediaStreamTrack.stop, 11 remove the source from UserMediaCaptureManager sources map. 12 This makes sure the map will not grow over time. 13 Add an if check to ensure that the source is still there before processing an incoming IPC call. 14 15 When UIProcess tells us the capture is finished (typically capture failed), remove the entry on WebProcess side as well. 16 17 * WebProcess/cocoa/UserMediaCaptureManager.cpp: 18 (WebKit::UserMediaCaptureManager::createCaptureSource): 19 (WebKit::UserMediaCaptureManager::sourceStopped): 20 (WebKit::UserMediaCaptureManager::captureFailed): 21 (WebKit::UserMediaCaptureManager::sourceMutedChanged): 22 (WebKit::UserMediaCaptureManager::sourceSettingsChanged): 23 (WebKit::UserMediaCaptureManager::storageChanged): 24 (WebKit::UserMediaCaptureManager::ringBufferFrameBoundsChanged): 25 (WebKit::UserMediaCaptureManager::audioSamplesAvailable): 26 (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable): 27 (WebKit::UserMediaCaptureManager::sourceEnded): 28 (WebKit::UserMediaCaptureManager::applyConstraintsSucceeded): 29 (WebKit::UserMediaCaptureManager::applyConstraintsFailed): 30 1 31 2019-05-30 Kocsen Chung <kocsen_chung@apple.com> 2 32 -
branches/safari-607-branch/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp
r239427 r245935 254 254 auto source = adoptRef(*new Source(String::number(id), type, String { settings.label() }, WTFMove(hashSalt), id, *this)); 255 255 source->setSettings(WTFMove(settings)); 256 m_sources. set(id, source.copyRef());256 m_sources.add(id, source.copyRef()); 257 257 return WebCore::CaptureSourceOrError(WTFMove(source)); 258 258 } … … 260 260 void UserMediaCaptureManager::sourceStopped(uint64_t id) 261 261 { 262 ASSERT(m_sources.contains(id));263 m_sources.get(id)->stop();262 if (auto source = m_sources.get(id)) 263 source->stop(); 264 264 } 265 265 266 266 void UserMediaCaptureManager::captureFailed(uint64_t id) 267 267 { 268 ASSERT(m_sources.contains(id));269 m_sources.get(id)->captureFailed();268 if (auto source = m_sources.get(id)) 269 source->captureFailed(); 270 270 } 271 271 272 272 void UserMediaCaptureManager::sourceMutedChanged(uint64_t id, bool muted) 273 273 { 274 ASSERT(m_sources.contains(id));275 m_sources.get(id)->setMuted(muted);274 if (auto source = m_sources.get(id)) 275 source->setMuted(muted); 276 276 } 277 277 278 278 void UserMediaCaptureManager::sourceSettingsChanged(uint64_t id, const RealtimeMediaSourceSettings& settings) 279 279 { 280 ASSERT(m_sources.contains(id));281 m_sources.get(id)->setSettings(RealtimeMediaSourceSettings(settings));280 if (auto source = m_sources.get(id)) 281 source->setSettings(RealtimeMediaSourceSettings(settings)); 282 282 } 283 283 284 284 void UserMediaCaptureManager::storageChanged(uint64_t id, const SharedMemory::Handle& handle, const WebCore::CAAudioStreamDescription& description, uint64_t numberOfFrames) 285 285 { 286 ASSERT(m_sources.contains(id));287 m_sources.get(id)->setStorage(handle, description, numberOfFrames);286 if (auto source = m_sources.get(id)) 287 source->setStorage(handle, description, numberOfFrames); 288 288 } 289 289 290 290 void UserMediaCaptureManager::ringBufferFrameBoundsChanged(uint64_t id, uint64_t startFrame, uint64_t endFrame) 291 291 { 292 ASSERT(m_sources.contains(id));293 m_sources.get(id)->setRingBufferFrameBounds(startFrame, endFrame);292 if (auto source = m_sources.get(id)) 293 source->setRingBufferFrameBounds(startFrame, endFrame); 294 294 } 295 295 296 296 void UserMediaCaptureManager::audioSamplesAvailable(uint64_t id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame) 297 297 { 298 ASSERT(m_sources.contains(id));299 auto& source = *m_sources.get(id);300 source.setRingBufferFrameBounds(startFrame, endFrame);301 source.audioSamplesAvailable(time, numberOfFrames);298 if (auto source = m_sources.get(id)) { 299 source->setRingBufferFrameBounds(startFrame, endFrame); 300 source->audioSamplesAvailable(time, numberOfFrames); 301 } 302 302 } 303 303 … … 305 305 void UserMediaCaptureManager::remoteVideoSampleAvailable(uint64_t id, RemoteVideoSample&& sample) 306 306 { 307 ASSERT(m_sources.contains(id));308 m_sources.get(id)->remoteVideoSampleAvailable(WTFMove(sample));307 if (auto source = m_sources.get(id)) 308 source->remoteVideoSampleAvailable(WTFMove(sample)); 309 309 } 310 310 #else … … 344 344 void UserMediaCaptureManager::applyConstraintsSucceeded(uint64_t id, const WebCore::RealtimeMediaSourceSettings& settings) 345 345 { 346 ASSERT(m_sources.contains(id)); 347 auto& source = *m_sources.get(id); 348 source.applyConstraintsSucceeded(settings); 346 if (auto source = m_sources.get(id)) 347 source->applyConstraintsSucceeded(settings); 349 348 } 350 349 351 350 void UserMediaCaptureManager::applyConstraintsFailed(uint64_t id, const String& failedConstraint, const String& message) 352 351 { 353 ASSERT(m_sources.contains(id)); 354 auto& source = *m_sources.get(id); 355 source.applyConstraintsFailed(failedConstraint, message); 352 if (auto source = m_sources.get(id)) 353 source->applyConstraintsFailed(failedConstraint, message); 356 354 } 357 355
Note:
See TracChangeset
for help on using the changeset viewer.