https://bugs.winehq.org/show_bug.cgi?id=47165 --- Comment #39 from Hajo Krabbenhöft <bugzilla+winehq.org(a)hajo.me> --- Hi Nikolay, Looking at this again now, I believe a test might even be much simpler: 1. Initialize HDC with any kind of data 2. BindDC(DCRenderTarget, hdc) 3. BeginDraw(hdc) 4. EndDraw => The HDC data is now lost. Without my patch, BeginDraw will just use the dxgi_target: https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/d2d1/dc_render_target... but the dxgi_target does NOT use the same storage as the HDC. Instead, BindDC has created a new bitmap which is used only in the dxgi_target but not in the HDC: https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/d2d1/dc_render_target... The result of BindDC creating a new bitmap is that afterwards, the ID2D1DCRenderTarget and the HDC are working with different storage locations. When EndDraw then calls Present, the storage buffer of the dxgi_target is copied into the HDC: https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/d2d1/dc_render_target... But because we never copied data from the HDC into the dxgi_target's buffer, that means anything that was in the HDC before is now lost. iTunes draws the backgrounds into the HDC and the text with BeginDraw+EndDraw, so they very clearly assume that the HDC and the BeginDraw will go to the same storage buffer. With Wine, they don't. Hope that helps, Hajo -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.