Changeset 287775 in webkit
- Timestamp:
- Jan 7, 2022, 11:57:05 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
Shared/RemoteLayerTree/RemoteLayerBackingStore.mm (modified) (2 diffs)
-
WebProcess/GPU/graphics/RemoteImageBufferProxy.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r287774 r287775 1 2021-10-30 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Web process shouldn't crash if ImageBuffer::ensureBackendCreated() fails 4 https://bugs.webkit.org/show_bug.cgi?id=232520 5 <rdar://problem/84829717> 6 7 Reviewed by Simon Fraser. 8 9 Guard against the possibility of it returning null. 10 11 No new tests because there shouldn't be any behavior change after https://bugs.webkit.org/show_bug.cgi?id=232470. 12 It's still good to do this, though, to be defensive. 13 14 * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: 15 (WebKit::RemoteLayerBackingStore::encode const): 16 * WebProcess/GPU/graphics/RemoteImageBufferProxy.h: 17 (WebKit::RemoteImageBufferProxy::createImageBufferBackendHandle): 18 1 19 2022-01-07 Myles C. Maxfield <mmaxfield@apple.com> 2 20 -
trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
r287774 r287775 123 123 switch (m_type) { 124 124 case Type::IOSurface: 125 if (m_frontBuffer.imageBuffer->canMapBackingStore()) 126 handle = static_cast<AcceleratedImageBufferShareableMappedBackend&>(*m_frontBuffer.imageBuffer->ensureBackendCreated()).createImageBufferBackendHandle(); 127 else 128 handle = static_cast<AcceleratedImageBufferShareableBackend&>(*m_frontBuffer.imageBuffer->ensureBackendCreated()).createImageBufferBackendHandle(); 125 if (auto* backend = m_frontBuffer.imageBuffer->ensureBackendCreated()) { 126 if (m_frontBuffer.imageBuffer->canMapBackingStore()) 127 handle = static_cast<AcceleratedImageBufferShareableMappedBackend&>(*backend).createImageBufferBackendHandle(); 128 else 129 handle = static_cast<AcceleratedImageBufferShareableBackend&>(*backend).createImageBufferBackendHandle(); 130 } 129 131 break; 130 132 case Type::Bitmap: 131 handle = static_cast<UnacceleratedImageBufferShareableBackend&>(*m_frontBuffer.imageBuffer->ensureBackendCreated()).createImageBufferBackendHandle(); 133 if (auto* backend = m_frontBuffer.imageBuffer->ensureBackendCreated()) 134 handle = static_cast<UnacceleratedImageBufferShareableBackend&>(*backend).createImageBufferBackendHandle(); 132 135 break; 133 136 } … … 138 141 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 139 142 std::optional<ImageBufferBackendHandle> displayListHandle; 140 if (m_frontBuffer.displayListImageBuffer) 141 displayListHandle = static_cast<CGDisplayListImageBufferBackend&>(*m_frontBuffer.displayListImageBuffer->ensureBackendCreated()).createImageBufferBackendHandle(); 143 if (m_frontBuffer.displayListImageBuffer) { 144 if (auto* backend = m_frontBuffer.displayListImageBuffer->ensureBackendCreated()) 145 displayListHandle = static_cast<CGDisplayListImageBufferBackend&>(*backend).createImageBufferBackendHandle(); 146 } 142 147 143 148 encoder << displayListHandle; -
trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
r287436 r287775 76 76 ImageBufferBackendHandle createImageBufferBackendHandle() 77 77 { 78 ensureBackendCreated(); 79 return m_backend->createImageBufferBackendHandle(); 78 if (ensureBackendCreated()) 79 return m_backend->createImageBufferBackendHandle(); 80 return { }; 80 81 } 81 82
Note:
See TracChangeset
for help on using the changeset viewer.