comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
LButtonDown should return when the treeview handle is invalid (e.g. destroyed) after NM_CLICK to prevent further message processing.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58211
--
v6: comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
comctl32/treeview: Add a function for sending notifications that also checks for invalid treeview.
comctl32/tests: Add a test for treeview deletion during NM_CLICK in LBUTTONDOWN.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8258
This should fix some spurious test failure in `test_media_session_Close`, as sometimes the source shutdown happens quickly enough and changes the session state to SESSION_STATE_STOPPED, causing the later Close command to succeed when it consistently returns E_SHUTDOWN on Windows.
--
v5: mf/session: Simplify the media session shutdown event handling.
mf/session: Introduce a SESSION_FLAG_SOURCE_SHUTDOWN presentation flag.
mf/session: Replace SESSION_FLAG_END_OF_PRESENTATION with dedicated states.
mf/session: Replace SESSION_FLAG_FINALIZE_SINKS with dedicated states.
mf/session: Remove unnecessary SESSION_FLAG_PENDING_COMMAND flag.
mf/session: Move internal states to a separate command_state enum.
mf/session: Clarify internal states from session states separation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8402
While preparing !8397 I wondered If there other uses of CallWindowProc[AW] which use a 4-byte sized type to store the return value, while at x86_64 LRESULT is 8 bytes.
--
v2: winetest: Use LRESULT to return value from CallWindowProcA.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8411
This should fix some spurious test failure in `test_media_session_Close`, as sometimes the source shutdown happens quickly enough and changes the session state to SESSION_STATE_STOPPED, causing the later Close command to succeed when it consistently returns E_SHUTDOWN on Windows.
--
v4: mf/session: Simplify the media session shutdown event handling.
mf/session: Introduce a SESSION_FLAG_SOURCE_SHUTDOWN presentation flag.
mf/session: Replace SESSION_FLAG_END_OF_PRESENTATION with dedicated states.
mf/session: Replace SESSION_FLAG_FINALIZE_SINKS with dedicated states.
mf/session: Remove unnecessary SESSION_FLAG_PENDING_COMMAND flag.
mf/session: Move internal states to a separate command_state enum.
mf/session: Clarify internal states from session states separation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8402
ddraw surfaces also hold references to their ddraw objects, but that's not
cleared in ddraw_destroy.
* * *
not sure if other uses of surface->ddraw need to be guarded too, let me know if i need to change them too.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8419
This consolidates the two separate `CGImage`s (`colorImage` and `shapeImage`) previously used in `WineContentView` into a single `IOSurface` that also holds the window mask information in its alpha channel now.
The alpha channel is now being updated in `macdrv_surface_flush`, whenever the shape changes (and stores that change for the next update, to also keep the front buffer in sync).
This reduces the delay from setting a `CGImage` to a layer from 50ms to about 1.5ms in the `IOSurface` case (also accounting for `vImageSelectChannels_ARGB8888` operation).
Based on a patch by @bshanks.
I am already putting it out for feedback, but I will so some more testing to see how the performance impact of this is and do more exhaustive testing with shaped windows.
Ideally the double buffer solution can be avoided as well... Also the `HBITMAP` for the windows is currently backed by a `CGDataProviderRef` and could also become an `IOSurface` I believe.
--
v2: winemac: Use IOSurface to update native window layers instead of CGImage.
winemac: Also return alpha channel in macdrv_window_background_color.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7938
This should fix some spurious test failure in `test_media_session_Close`, as sometimes the source shutdown happens quickly enough and changes the session state to SESSION_STATE_STOPPED, causing the later Close command to succeed when it consistently returns E_SHUTDOWN on Windows.
--
v3: mf/session: Simplify the media session shutdown event handling.
mf/session: Introduce a SESSION_FLAG_SOURCE_SHUTDOWN presentation flag.
mf/session: Replace SESSION_FLAG_END_OF_PRESENTATION with dedicated states.
mf/session: Replace SESSION_FLAG_FINALIZE_SINKS with dedicated states.
mf/session: Remove unnecessary SESSION_FLAG_PENDING_COMMAND flag.
mf/session: Move internal states to a separate command_state enum.
mf/session: Clarify internal states from session states separation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8402