On Fri Oct 14 13:58:34 2022 +0000, Kevin Puetz wrote:
> > I'd suggest moving some of the existing code into helper functions first.
> You asked for that the first time too. I've tried, but I just couldn't
> find any good seams to carve it along besides consolidating the
> PeekMessage calls (e7e4c3d8eee915975e958521b8caffe94ef7a34d). The 3
> major hunks (message pump, the IMessageFilter_MessagePending stuff, and
> polling the handles for completions/APCs) all tie into how the loop
> exits and the post conditions (re-posting QuitMessage, writing `*index`
> (or leaving it unmodified), errors, translating previous Wait* result),
> and the order is quite important (because of side-effects like
> consuming/preserving QS_ALLPOSTMESSAGE).
> If you have any ideas I'd love to hear them. I could certainly pull
> those 3 major hunks out into functions, but when they have get passed in
> pointers to a bunch of outside-the-loop variables, and their return
> value ends up being decoded into ends up with stuff like `if(hr ==
> S_FALSE) break; else if(FAILED(hr)) goto err;` then the flow control
> just turned into spaghetti I hated even more than what it started as.
> > ten commits per MR is rather too many (especially when they're non trivial).
> Yeah, for lack of coming up with decent helper functions I tried to dice
> it *really* finely separate testable commits that changed only one
> behavior. I think they are all correct and improvements on the status
> quo, but the very first commit fixes the same bug (short-timeout race)
> for MTAs that the last finally fixes for STAs, so it felt weird to
> propose actually merging it partially. And yet that's really the order
> in which the steps make the most sense to read (in terms of minimizing
> extraneous code change); getting the MTA out of the loop, so that it's
> *only* the mesage loops, then building toward toward the case where
> everything is happening in the right order and there's a correct place
> to put the timeout.
> The part that I dislike about this series is temporarily introducing use
> of MWMO_INPUTAVAILABLE; that was a detour born of trying to split the
> last 3 commits apart from each other, so there's only one behavior
> change at a time.
> 1. WAIT_OBJECT_* signaled after dispatching a message
> 2. WAIT_IO_COMPLETION after dispatching a message (rather than just once
> at the start)
> 3. making sure to we're out of relevant messages before escalating
> WAIT_TIMOUET to RPC_S_CALLPENDING).
> Required some careful work to *preserve* bugs until the next commit.
> I guess there's a few things in the middle that basically just
> refactor/add tests without changing any observable behavior, so I'll
> move those to the front and make a separate MR, just to cut down the
> size of this one... And I guess I could also put a lot of the new tests
> in as just new `todo_wine` tests, separate from the actual changes that
> fix them. That would at least get a lot of lines of code out of this MR,
> though not much of the conceptual complexity.
Looked at it some more and since I (already) gave up on trying to fix the todo_wine about spurious calls to MessagePending, extracting that much to a helper shouldn't be so bad. It was my (abandoned) theory about how PeekMessage/QueueStatus should interact to suppress those unwanted calls that made things so tangled together - and the didn't make the conformance tests work any better, and it had nothing to do with the actual application I was working on, so it got dropped.
The existing behavior (which this MR leaves alone) just needs an early exit to return RPC_E_CALL_CANCELED. So I'll extract that helper too; fixing IMessageFilter todo will probably have to revisit this, but we can just preserve the status quo (and make things more readable) for now. No need to borrow trouble from the future when I'm out of ideas and not trying to tackle that anymore.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/969#note_10685
Currently, the code copies one extra character than requested and does not terminate the string.
Signed-off-by: David Kahurani <k.kahurani(a)gmail.com>
--
v2: xmllite/writer: Correctly partially duplicate strings
https://gitlab.winehq.org/wine/wine/-/merge_requests/1024
This shows that media session samples are correctly oriented, but that mfmediaengine renders them upside down.
--
v5: mfmediaengine: Remove vertical flipping of video frames.
mfmediaengine/tests: Check IMFMediaEngine_TransferVideoFrames output orientation.
mfmediaengine/tests: Pass a device manager and output format to create_media_engine.
mf/tests: Check sample grabber RGB / NV12 orientation.
mf/tests: Factor test grabber callback implementations.
https://gitlab.winehq.org/wine/wine/-/merge_requests/874
On Thu Oct 13 19:11:33 2022 +0000, Rémi Bernon wrote:
> Sorry, I'll have a look.
I'm having a hard time reproducing it, is this with some specific tests?
The first commit indeed changes some behavior, where it was only repositioning the current process windows before and is now repositioning all windows from the desktop thread.
I suspect that it could be about the message being sent to the desktop, which is now waiting for all windows to reposition by broadcasting a message itself. If they aren't actively processing messages, it could probably lock up.
I created https://gitlab.winehq.org/wine/wine/-/merge_requests/1056 to address that issue, but I cannot confirm if it fixes anything. Other than that I experienced some random and seldom crashes running d3d9:device for instance, but I'm not sure to see how it's related.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/944#note_10671
Hello, this is the first part of a patch series to support:
* Complex broadcasts.
* Complex implicit casts between component-wise equal types.
* Complex explicit casts between component-wise compatible types.
This first part of the series includes mostly tests.
Following patches in: https://gitlab.winehq.org/fcasas/vkd3d/-/commits/complex_broadcasts_2/
This supersedes !16 .
--
v2: tests: Test explicit casts between types that are component-wise
tests: Test implicit casts between types that are equal component-wise.
vkd3d-shader/hlsl: Always go through implicit conversion in assignments.
tests: Test for invalid complex broadcasts.
tests: Set ULPs to 2 in normalize() test.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/29
The removed interfaces cannot be found in the windows SDK, so making it one step close to being the same.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1060