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.