On Tue Feb 25 20:23:00 2025 +0000, Stefan Brüns wrote:
> @d1saster - Maybe you could extend the test so all 4 cases (2 fill
> modes, intersecting/non-intersecting) are tested (marking the
> ALTERNATE-intersecting one as known-fail).
This isn't about percentage or how common it is. It's not clear this is the right direction to me, for example groups could contain path geometries with different filling modes, or other groups.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6492#note_95936
The problem is that registry save is a very heavy operation (scheduled each 30sec in wineserver) during which server doesn't process any requests and the whole prefix is stalled for the duration of the operation.
For some reference, the process takes from 50-100ms here up to 1-1.5sec with default initial registry (after some registry modifications which trigger actual registry flush), depending on the filesystem type and state (as huge time may be spent in file close / rename). With the same registry after this patchset the server part (flush_key returning the whole registry data) is taking ~4-5mcs, measured from the client side so that already includes data transfer.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3124
On Tue Feb 25 20:20:12 2025 +0000, Stefan Brüns wrote:
> I think the current implementation is only incorrect when the fill mode
> is D2D1_FILL_MODE_ALTERNATE (0) (aka Even-Odd), but correct for
> D2D1_FILL_MODE_WINDING (1). More specifically, when the fill mode is
> ALTERNATE *and* there are intersections - for all of the other three
> cases (WINDING with and without intersections, ALTERNATE without), it is correct.
> According to my experience, even-odd fill mode is quite uncommon. Having
> an implementation which is correct 99% of the time in real-world usage,
> and leaving the remainder with an explicit, verbose FIXME is an
> definitive improvement. Today, the result is always incorrect.
@d1saster - Maybe you could extend the test so all 4 cases (2 fill modes, intersecting/non-intersecting) are tested (marking the ALTERNATE-intersecting one as known-fail).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6492#note_95932
On Sat Sep 28 19:59:05 2024 +0000, Nikolay Sivov wrote:
> It wouldn't consider it sufficient, it's clear that there is more to it
> than copying data from individual geometries. So the question is the
> same - what needs to be done to make it work properly, once it's
> understood, we could implement it partially if it's too hard to do properly.
I think the current implementation is only incorrect when the fill mode is D2D1_FILL_MODE_ALTERNATE (0) (aka Even-Odd), but correct for D2D1_FILL_MODE_WINDING (1). More specifically, when the fill mode is ALTERNATE *and* there are intersections - for all of the other three cases (WINDING with and without intersections, ALTERNATE without), it is correct.
According to my experience, even-odd fill mode is quite uncommon. Having an implementation which is correct 99% of the time in real-world usage, and leaving the remainder with an explicit, verbose FIXME is an definitive improvement. Today, the result is always incorrect.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6492#note_95931