If wine dlls are built with frame pointers enabled, the frame pointer will be
used during unwinding.
If we don't restore frame pointer before calling the user mode callback, then
later when the unwinder encounters the user mode callback frame, it will set
the frame pointer to something unexpected (depends on what it was during
`call_user_mode_callback`). Then for the subsequent frame it adjusts the stack
pointer based on the frame pointer, thus derailing the unwinding process.
--
v7: ntdll: Also restore rbp before calling user mode callback.
user32/tests: Test unwinding through a user callback.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8466
If wine dlls are built with frame pointers enabled, the frame pointer will be
used during unwinding.
If we don't restore frame pointer before calling the user mode callback, then
later when the unwinder encounters the user mode callback frame, it will set
the frame pointer to something unexpected (depends on what it was during
`call_user_mode_callback`). Then for the subsequent frame it adjusts the stack
pointer based on the frame pointer, thus derailing the unwinding process.
--
v6: ntdll: Also restore rbp before calling user mode callback.
user32/tests: Test unwinding through a user callback.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8466
As discussed in !8402. @cmccarthy what do you think of this? I think queueing an event right before shutting down the queue is enough to get the media session notified? It won't get the actual event but it will be able to see the MF_E_SHUTDOWN error after calling `EndGetEvent`?
--
v2: include: Remove now unnecessary IMFMediaShutdownNotify interface.
mf/session: Remove now unnecessary IMFMediaShutdownNotify.
winegstreamer: Remove now unnecessary IMFMediaShutdownNotify.
mf/session: Handle an optional MEError event from sources on shutdown.
winegstreamer: Queue an event before shutting down the event queues.
mfsrcsnk: Queue an event before shutting down the event queues.
mfplat/tests: Add more tests for event queue shutdown.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8415
shader_set_function is inconsistent in whether it will cleanup the shader
before returning an error. Most of the callers of shader_set_function will do
the cleanup, which could double-free; but not all of them do, which means there
are also potential leaks. So make sure all callers do, and remove shader_cleanup
calls from shader_set_function.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8472