Replaced raw COM pointers with smart ones by kekekeks · Pull Request #21001 · AvaloniaUI/Avalonia (original) (raw)
src/Windows/Avalonia.Win32/WinRT/WinRTInspectable.cs
Switches WinRT callback base to Avalonia.MicroCom.CallbackBase for safer lifetime management.
src/Windows/Avalonia.Win32/WinRT/Composition/WinUiCompositionUtils.cs
Adds WinRT workaround lease + tightens disposal of effect objects.
src/Windows/Avalonia.Win32/WinRT/Composition/WinUIEffectBase.cs
Moves source cleanup into Destroyed() for deterministic disposal when COM object dies.
src/Windows/Avalonia.Win32/Avalonia.Win32.csproj
Enables generator MSBuild integration and imports shared MicroCOM props.
src/Avalonia.Native/avn.idl
Changes clipboard data source/item methods to HRESULT + out-params.
src/Avalonia.Native/Avalonia.Native.csproj
Enables generator MSBuild integration and imports shared MicroCOM props.
src/Avalonia.MicroCom/Avalonia.MicroCom.csproj
Switches runtime reference to shared MicroCOM props (UseMicroCom).
samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj
Imports MicroCOM props and enables UseMicroCom.
nukebuild/_build.csproj
Switches MicroCOM generator dependency to shared MicroCOM props.
native/Avalonia.Native/src/OSX/metal.mm
Replaces raw static singleton pointer with ComStaticPtr and lazy init.
native/Avalonia.Native/src/OSX/menu.mm
Replaces stored raw pointers with weak/static COM wrappers and updates access patterns.
native/Avalonia.Native/src/OSX/menu.h
Replaces callback/predicate raw pointers with ComPtr.
native/Avalonia.Native/src/OSX/cursor.mm
Converts cursor storage to ComPtr and introduces comnew usage.
native/Avalonia.Native/src/OSX/cursor.h
Updates exposed cursor map type to ComPtr (but currently inconsistent with implementation).
native/Avalonia.Native/src/OSX/common.h
Narrows GetAppMenu() return type to concrete AvnAppMenu*.
native/Avalonia.Native/src/OSX/clipboard.mm
Updates clipboard item access to new HRESULT/out-param calling convention and uses ComPtr.
native/Avalonia.Native/src/OSX/cgl.mm
Replaces raw static singleton pointer with ComStaticPtr and lazy init.
native/Avalonia.Native/src/OSX/automation.mm
Replaces stored automation peer raw pointer with ComPtr.
native/Avalonia.Native/src/OSX/WindowImpl.mm
Updates child window tracking to use weak pointers and safe access.
native/Avalonia.Native/src/OSX/WindowBaseImpl.mm
Updates children container element type to weak pointers.
native/Avalonia.Native/src/OSX/WindowBaseImpl.h
Updates children container field type to weak pointers.
native/Avalonia.Native/src/OSX/TopLevelImpl.mm
Updates DnD clipboard access to new HRESULT/out-param calling convention.
native/Avalonia.Native/src/OSX/AvnWindow.mm
Adjusts app menu usage to new GetAppMenu() return type and automation peer ownership.
native/Avalonia.Native/src/OSX/AvnString.mm
Uses comnew and stores concrete string impls in ComPtr vector.
native/Avalonia.Native/inc/comimpl.h
Enhances COM smart pointer utilities (getPPV reset, comnew, ComStaticPtr).
native/Avalonia.Native/README.md
Documents new COM ownership conventions and required smart pointer usage.
build/MicroCOM.props
Adds shared MSBuild props for MicroCOM packages / optional local build wiring.
Directory.Packages.props
Bumps MicroCOM packages to 0.11.4.
Avalonia.sln
Adds build/MicroCOM.props to solution “Props” folder.
.github/copilot-instructions.md
Points reviewers to native/Avalonia.Native/README.md for relevant changes.