From a1cc2056bcd2e07768a06eda7d9e8672cf3aaee6 Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Sun, 1 Dec 2019 22:39:38 +0100 Subject: [PATCH] Update NSImage with changes made to bitmap pixel data In order to get access to wxBitmap's pixel data we actually have to work with CGBitmapContext data and this context is created from NSImage by call to wxBitmapRefData::EnsureBitmapExists() when we prepare to get access to the data in wxBitmapRefData::GetRawAccess(). So, when we finish updating bitmap data we should update original NSImage with actual CGBitmapContext data in wxBitmapRefData::EndRawAccess(). See #18606. --- src/osx/core/bitmap.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/osx/core/bitmap.cpp b/src/osx/core/bitmap.cpp index a05ec18066..bb8b8da564 100644 --- a/src/osx/core/bitmap.cpp +++ b/src/osx/core/bitmap.cpp @@ -419,6 +419,15 @@ void wxBitmapRefData::EndRawAccess() wxASSERT( m_rawAccessCount == 1 ) ; --m_rawAccessCount ; + + // Update existing NSImage with new bitmap data + if ( m_nsImage ) + { + wxCFRef image(CGBitmapContextCreateImage(m_hBitmap)); + wxMacCocoaRelease(m_nsImage); + m_nsImage = wxOSXGetImageFromCGImage(image, GetScaleFactor(), IsTemplate()); + wxMacCocoaRetain(m_nsImage); + } } bool wxBitmapRefData::HasNativeSize()