Track ticks since draw start per window_surface, instead of per DC as is currently the case. This change helps reduce visual glitches caused by badly timed flushes when drawing to the same window_surface from multiple DCs, e.g., child windows (see first commit), or in some special scenarios when the window_surface is updated (see second commit).
(Much) more information about this issue and the rationale for the changes can be found in the commit messages.
Note that since this is an inherently timing related issue, the visual glitches depend on the application specific draw patterns, drawing speed (and thus processor performance and load) etc.
Here is a capture which exhibits the issue with the current implementation: [resizing-regedit-per-dc-ticks.mkv](/uploads/d7d30d009cc4db1337cbc3266df5ae17/resizing-regedit-per-dc-ticks.mkv)
And here is a capture of the same scenario with the proposed changes applied, which shows the improvement: [resizing-regedit-per-surface-ticks.mkv](/uploads/6f878568862f5fb5157567341e4e452f/resizing-regedit-per-surface-ticks.mkv)
-- v2: win32u: Reset draw_start_ticks for new window_surface. gdi32: Track ticks since draw start per window_surface.