Comments (1)
Spent a bit of time debugging this on my end. A few thoughts before I get back to work and forget all about this. 😉
- C++/WinRT support for weak references is limited to non-composable or at least non-open composable hierarchies. That's because it's implemented by swapping out the ref count on the object while open composable types delegate ref counting to the outer/derived object and thus there's really two ref counts at play and that's not supported by the C++/WinRT weak reference implementation.
- C++/WinRT support for open/binary composable hierarchies is limited to Xaml. Nothing else has ever been tested nor is it recommended.
- To the best of my knowledge, the base composable type in Xaml has always been implemented in something other than C++/WinRT. Its that base composable type(s) that must implement weak reference support. Derived types cannot do it - they simply delegate to the base.
- You may want to confirm that a derived type in the binary hierarchy isn't accidentally responding to queries for
IWeakReferenceSource
. That would be a big problem. - You can instruct C++/WinRT not to implement weak reference support for a particular implementation by using the
no_weak_ref
marker type.
Here's a more minimal example of open composability in C++/WinRT for debugging purposes only:
https://gist.github.com/kennykerr/2a5dd202274f49031adbd50e02d8b4d0
from cppwinrt.
Related Issues (20)
- GetChildrenInTabFocusOrder no longer a member of the generated code HOT 10
- Cannot use WinRT with MFC? HOT 3
- Bug: version 2.0.240111.5 does not work correctly with XAML HOT 10
- Bug:Build failure due to namespace changes in XamlTypeInfo after C++/WinRT update HOT 2
- Bug: throw_hresult should treat ERROR_COMMITMENT_LIMIT as OOM HOT 3
- Bug: co_await apartment_context crashs with ''CoInitialize has not been called.'' HOT 3
- Bug: Calling PropertyValue.Create to handle boxing is significantly slower than allocating an IReference directly HOT 5
- Bug: projection generator does not handle absolute unix path HOT 2
- Bug:Compiling Error with C++20, inheriting of winrt::implements HOT 5
- Feature: Support C++20 std::format for cppwinrt types (e.g. winrt::hstring) HOT 2
- Bug: DeviceInformation::FindAddAsync returns empty collection when specifying a usb device. HOT 1
- Bug: Weird c++20 MainWindow.xaml.g.hpp bug HOT 1
- Bug: observable_map_base::call_changed is private HOT 4
- `com_ptr::addressof` method? HOT 4
- Bug: C++WinRT does not correctly handles Chinese characters using `Windows.Foundation.Uri` HOT 5
- com_array should have a constructor accepting std::pair<uint32_t, T* const> HOT 1
- How does `winrt::auto_revoke` not result in memory leaks? HOT 1
- Bug: "Common properties" not showing in VC++ project HOT 4
- Best way to keep track of pending IAsyncActions HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cppwinrt.