Emil Velikov (@xexaxo) commented about dlls/wineandroid.drv/window.c:
- - TRACE( "flushing %p hwnd %p surface %s rect %s bits %p alpha %02x key %08x region %u rects\n", - surface, surface->hwnd, wine_dbgstr_rect( &surface->header.rect ), - wine_dbgstr_rect( &rect ), surface->bits, surface->alpha, (int)surface->color_key, - surface->region_data ? (int)surface->region_data->rdh.nCount : 0 ); - - rc.left = rect.left; - rc.top = rect.top; - rc.right = rect.right; - rc.bottom = rect.bottom; + rc.left = dirty->left; + rc.top = dirty->top; + rc.right = dirty->right; + rc.bottom = dirty->bottom;
if (!surface->window->perform( surface->window, NATIVE_WINDOW_LOCK, &buffer, &rc )) The commit changes the behaviour in the Android driver. Namely the perform callbacks (and all the copying below) are called with a lock held.
Haven't checked if it matters here, but it did for Mesa/egl/android. Then again the latter is an EGL implementation, not a user. Might be worth adding a note in the commit message IMHO. That aside - massive thanks for all the amazing work in the drivers. Do you plan on further reducing/nuking window_surface_funcs? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5747#note_71632