Skip to content

Commit 87fc0b8

Browse files
authored
Merge pull request #959 from gircore/fix-boxed-wrapper-for-opaque-typed-records
Fix wrapping opaque typed records
2 parents 372b389 + 27bed06 commit 87fc0b8

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/Generation/Generator/Renderer/Public/OpaqueTypedRecord.cs

+6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ public partial class {name}
3434
Initialize();
3535
}}
3636
37+
//TODO: This is a workaround constructor as long as we are
38+
//not having https://github.com/gircore/gir.core/issues/397
39+
private {name}(IntPtr ptr, bool ownsHandle) : this(ownsHandle
40+
? new {Model.OpaqueTypedRecord.GetFullyQuallifiedOwnedHandle(record)}(ptr)
41+
: new {Model.OpaqueTypedRecord.GetFullyQuallifiedUnownedHandle(record)}(ptr).OwnedCopy()){{ }}
42+
3743
// Implement this to perform additional steps in the constructor
3844
partial void Initialize();
3945

src/Tests/Libs/GirTest-0.1.Tests/OpaqueTypedRecordTest.cs

+16
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,20 @@ void Callback(OpaqueTypedRecordTester? obj)
287287

288288
called.Should().BeTrue();
289289
}
290+
291+
[TestMethod]
292+
public void SupportsWrapHandle()
293+
{
294+
var recordTester = OpaqueTypedRecordTester.New();
295+
296+
var wrapped = (OpaqueTypedRecordTester) GObject.Internal.BoxedWrapper.WrapHandle(
297+
handle: recordTester.Handle.DangerousGetHandle(),
298+
ownsHandle: false,
299+
gtype: OpaqueTypedRecordTester.GetGType()
300+
);
301+
302+
wrapped.Handle.DangerousGetHandle().Should().Be(recordTester.Handle.DangerousGetHandle());
303+
recordTester.GetRefCount().Should().Be(2);
304+
wrapped.GetRefCount().Should().Be(2);
305+
}
290306
}

0 commit comments

Comments
 (0)