From 963442d88af16dd8e6a53d46ce015a7833a46925 Mon Sep 17 00:00:00 2001 From: gucio321 <73652197+gucio321@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:10:11 +0200 Subject: [PATCH 1/4] codegen: pin Vectors[...] --- cmd/codegen/arguments_wrapper.go | 4 +++- extra_types.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cmd/codegen/arguments_wrapper.go b/cmd/codegen/arguments_wrapper.go index d11a79849..63a8aa555 100644 --- a/cmd/codegen/arguments_wrapper.go +++ b/cmd/codegen/arguments_wrapper.go @@ -187,6 +187,7 @@ func getArgWrapper(a *ArgDef, makeFirstArgReceiver, isGetter bool, structNames m %[2]sVecArg.Size = C.int(%[2]s.Size) %[2]sVecArg.Capacity = C.int(%[2]s.Capacity) %[2]sVecArg.Data = %[4]s +%[2]s.pinner.Pin(%[2]sVecArg.Data) `, w.ArgDef, a.Name, a.Type, w.VarName, dataName), ArgDefNoFin: fmt.Sprintf(`%[5]s := %[2]s.Data %[1]s @@ -194,8 +195,9 @@ func getArgWrapper(a *ArgDef, makeFirstArgReceiver, isGetter bool, structNames m %[2]sVecArg.Size = C.int(%[2]s.Size) %[2]sVecArg.Capacity = C.int(%[2]s.Capacity) %[2]sVecArg.Data = %[4]s +%[2]s.pinner.Pin(%[2]sVecArg.Data) `, w.ArgDefNoFin, a.Name, a.Type, w.VarName, dataName), - Finalizer: w.Finalizer, + Finalizer: fmt.Sprintf("%s\n%s.pinner.Unpin()", w.Finalizer, a.Name), NoFin: a.RemoveFinalizer, } diff --git a/extra_types.go b/extra_types.go index a8a7190ec..862f7542d 100644 --- a/extra_types.go +++ b/extra_types.go @@ -7,6 +7,7 @@ import "C" import ( "image/color" + "runtime" "time" ) @@ -212,10 +213,11 @@ type Vector[T any] struct { Size int Capacity int Data T + pinner *runtime.Pinner } func newVectorFromC[T any](size, capacity C.int, data T) Vector[T] { - return Vector[T]{Size: int(size), Capacity: int(capacity), Data: data} + return Vector[T]{Size: int(size), Capacity: int(capacity), Data: data, pinner: &runtime.Pinner{}} } // wrappableType represents a GO type that can be converted into a C value From a618ad5fcf6ac8f30c6e5a2b138b75391a5e6383 Mon Sep 17 00:00:00 2001 From: gucio321 <73652197+gucio321@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:10:22 +0200 Subject: [PATCH 2/4] regenerate code --- cimgui_funcs.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++ cimgui_structs.go | 32 +++++++++++++++++++++++++ cimplot_funcs.go | 22 +++++++++++++++++ cimplot_structs.go | 8 +++++++ 4 files changed, 121 insertions(+) diff --git a/cimgui_funcs.go b/cimgui_funcs.go index 6c630d0eb..1c1082112 100644 --- a/cimgui_funcs.go +++ b/cimgui_funcs.go @@ -12201,6 +12201,7 @@ func (self BitVector) SetStorage(v Vector[*uint32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12232,6 +12233,7 @@ func (self DrawChannel) SetCmdBuffer(v Vector[*DrawCmd]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12254,6 +12256,7 @@ func (self DrawChannel) SetIdxBuffer(v Vector[*DrawIdx]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12524,6 +12527,7 @@ func (self DrawList) SetCmdBuffer(v Vector[*DrawCmd]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12546,6 +12550,7 @@ func (self DrawList) SetIdxBuffer(v Vector[*DrawIdx]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12568,6 +12573,7 @@ func (self DrawList) SetVtxBuffer(v Vector[*DrawVert]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12688,6 +12694,7 @@ func (self DrawList) SetClipRectStack(v Vector[*Vec4]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12701,6 +12708,7 @@ func (self DrawList) SetPath(v Vector[*Vec2]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12874,6 +12882,7 @@ func (self DrawListSharedData) SetTempBuffer(v Vector[*Vec2]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -12949,6 +12958,7 @@ func (self DrawListSplitter) SetChannels(v Vector[*DrawChannel]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -13016,6 +13026,7 @@ func (self Font) SetIndexAdvanceX(v Vector[*float32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -13068,6 +13079,7 @@ func (self Font) SetIndexLookup(v Vector[(*Wchar)]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = (*C.ImWchar)(vData) + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -13090,6 +13102,7 @@ func (self Font) SetGlyphs(v Vector[*FontGlyph]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -13518,6 +13531,7 @@ func (self FontAtlas) SetCustomRects(v Vector[*FontAtlasCustomRect]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -13540,6 +13554,7 @@ func (self FontAtlas) SetConfigData(v Vector[*FontConfig]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14189,6 +14204,7 @@ func (self FontGlyphRangesBuilder) SetUsedChars(v Vector[*uint32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14670,6 +14686,7 @@ func (self Context) SetInputEventsQueue(v Vector[*InputEvent]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14692,6 +14709,7 @@ func (self Context) SetInputEventsTrail(v Vector[*InputEvent]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14744,6 +14762,7 @@ func (self Context) SetCurrentWindowStack(v Vector[*WindowStackData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15535,6 +15554,7 @@ func (self Context) SetColorStack(v Vector[*ColorMod]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15557,6 +15577,7 @@ func (self Context) SetStyleVarStack(v Vector[*StyleMod]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15579,6 +15600,7 @@ func (self Context) SetFocusScopeStack(v Vector[*ID]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15601,6 +15623,7 @@ func (self Context) SetGroupStack(v Vector[*GroupData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15623,6 +15646,7 @@ func (self Context) SetOpenPopupStack(v Vector[*PopupData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15645,6 +15669,7 @@ func (self Context) SetBeginPopupStack(v Vector[*PopupData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15667,6 +15692,7 @@ func (self Context) SetNavTreeNodeStack(v Vector[*NavTreeNodeData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -16850,6 +16876,7 @@ func (self Context) SetClipperTempData(v Vector[*ListClipperData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -16904,6 +16931,7 @@ func (self Context) SetTablesTempData(v Vector[*TableTempData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -16926,6 +16954,7 @@ func (self Context) SetTablesLastTimeActive(v Vector[*float32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -16948,6 +16977,7 @@ func (self Context) SetDrawChannelsTempMergeBuffer(v Vector[*DrawChannel]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -16987,6 +17017,7 @@ func (self Context) SetCurrentTabBarStack(v Vector[*PtrOrIndex]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17009,6 +17040,7 @@ func (self Context) SetShrinkWidthBuffer(v Vector[*ShrinkWidthItem]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17512,6 +17544,7 @@ func (self Context) SetClipboardHandlerData(v Vector[string]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17534,6 +17567,7 @@ func (self Context) SetMenusIdSubmittedThisFrame(v Vector[*ID]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17668,6 +17702,7 @@ func (self Context) SetSettingsHandlers(v Vector[*SettingsHandler]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17690,6 +17725,7 @@ func (self Context) SetHooks(v Vector[*ContextHook]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -18173,6 +18209,7 @@ func (self Context) SetTempBuffer(v Vector[string]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -20316,6 +20353,7 @@ func (self IO) SetInputQueueCharacters(v Vector[(*Wchar)]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = (*C.ImWchar)(vData) + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -20828,6 +20866,7 @@ func (self InputTextDeactivatedState) SetTextA(v Vector[string]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -20912,6 +20951,7 @@ func (self InputTextState) SetTextW(v Vector[(*Wchar)]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = (*C.ImWchar)(vData) + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -20934,6 +20974,7 @@ func (self InputTextState) SetTextA(v Vector[string]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -20956,6 +20997,7 @@ func (self InputTextState) SetInitialTextA(v Vector[string]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -21297,6 +21339,7 @@ func (self KeyRoutingTable) SetEntries(v Vector[*KeyRoutingData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -21319,6 +21362,7 @@ func (self KeyRoutingTable) SetEntriesNext(v Vector[*KeyRoutingData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -21591,6 +21635,7 @@ func (self ListClipperData) SetRanges(v Vector[*ListClipperRange]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -22812,6 +22857,7 @@ func (self OldColumns) SetColumns(v Vector[*OldColumnData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -22964,6 +23010,7 @@ func (self PlatformIO) SetMonitors(v Vector[*PlatformMonitor]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -23631,6 +23678,7 @@ func (self StackTool) SetResults(v Vector[*StackLevelInfo]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -23683,6 +23731,7 @@ func (self Storage) SetData(v Vector[*StoragePair]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -24470,6 +24519,7 @@ func (self TabBar) SetTabs(v Vector[*TabItem]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -25930,6 +25980,7 @@ func (self Table) SetInstanceDataExtra(v Vector[*TableInstanceData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -25971,6 +26022,7 @@ func (self Table) SetSortSpecsMulti(v Vector[*TableColumnSortSpecs]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -27882,6 +27934,7 @@ func (self TextBuffer) SetBuf(v Vector[string]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -27904,6 +27957,7 @@ func (self TextFilter) SetFilters(v Vector[*TextRange]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -27941,6 +27995,7 @@ func (self TextIndex) SetLineOffsets(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -29618,6 +29673,7 @@ func (self Window) SetIDStack(v Vector[*ID]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -29834,6 +29890,7 @@ func (self Window) SetColumnsStorage(v Vector[*OldColumns]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -31130,6 +31187,7 @@ func (self WindowTempData) SetItemWidthStack(v Vector[*float32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -31152,6 +31210,7 @@ func (self WindowTempData) SetTextWrapPosStack(v Vector[*float32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() diff --git a/cimgui_structs.go b/cimgui_structs.go index 1b69681af..b7643090d 100644 --- a/cimgui_structs.go +++ b/cimgui_structs.go @@ -25,10 +25,12 @@ func (self BitVector) handle() (result *C.ImBitVector, releaseFn func()) { FieldStorageVecArg.Size = C.int(FieldStorage.Size) FieldStorageVecArg.Capacity = C.int(FieldStorage.Capacity) FieldStorageVecArg.Data = FieldStorageDataArg + FieldStorage.pinner.Pin(FieldStorageVecArg.Data) result.Storage = *FieldStorageVecArg releaseFn = func() { FieldStorageDataFin() + FieldStorage.pinner.Unpin() } return result, releaseFn } @@ -59,6 +61,7 @@ func (self DrawChannel) handle() (result *C.ImDrawChannel, releaseFn func()) { FieldCmdBufferVecArg.Size = C.int(FieldCmdBuffer.Size) FieldCmdBufferVecArg.Capacity = C.int(FieldCmdBuffer.Capacity) FieldCmdBufferVecArg.Data = FieldCmdBufferDataArg + FieldCmdBuffer.pinner.Pin(FieldCmdBufferVecArg.Data) result._CmdBuffer = *FieldCmdBufferVecArg FieldIdxBuffer := self.FieldIdxBuffer @@ -68,11 +71,14 @@ func (self DrawChannel) handle() (result *C.ImDrawChannel, releaseFn func()) { FieldIdxBufferVecArg.Size = C.int(FieldIdxBuffer.Size) FieldIdxBufferVecArg.Capacity = C.int(FieldIdxBuffer.Capacity) FieldIdxBufferVecArg.Data = FieldIdxBufferDataArg + FieldIdxBuffer.pinner.Pin(FieldIdxBufferVecArg.Data) result._IdxBuffer = *FieldIdxBufferVecArg releaseFn = func() { FieldCmdBufferDataFin() + FieldCmdBuffer.pinner.Unpin() FieldIdxBufferDataFin() + FieldIdxBuffer.pinner.Unpin() } return result, releaseFn } @@ -272,10 +278,12 @@ func (self DrawListSplitter) handle() (result *C.ImDrawListSplitter, releaseFn f FieldChannelsVecArg.Size = C.int(FieldChannels.Size) FieldChannelsVecArg.Capacity = C.int(FieldChannels.Capacity) FieldChannelsVecArg.Data = FieldChannelsDataArg + FieldChannels.pinner.Pin(FieldChannelsVecArg.Data) result._Channels = *FieldChannelsVecArg releaseFn = func() { FieldChannelsDataFin() + FieldChannels.pinner.Unpin() } return result, releaseFn } @@ -534,10 +542,12 @@ func (self FontGlyphRangesBuilder) handle() (result *C.ImFontGlyphRangesBuilder, FieldUsedCharsVecArg.Size = C.int(FieldUsedChars.Size) FieldUsedCharsVecArg.Capacity = C.int(FieldUsedChars.Capacity) FieldUsedCharsVecArg.Data = FieldUsedCharsDataArg + FieldUsedChars.pinner.Pin(FieldUsedCharsVecArg.Data) result.UsedChars = *FieldUsedCharsVecArg releaseFn = func() { FieldUsedCharsDataFin() + FieldUsedChars.pinner.Unpin() } return result, releaseFn } @@ -1207,10 +1217,12 @@ func (self InputTextDeactivatedState) handle() (result *C.ImGuiInputTextDeactiva FieldTextAVecArg.Size = C.int(FieldTextA.Size) FieldTextAVecArg.Capacity = C.int(FieldTextA.Capacity) FieldTextAVecArg.Data = FieldTextADataArg + FieldTextA.pinner.Pin(FieldTextAVecArg.Data) result.TextA = *FieldTextAVecArg releaseFn = func() { FieldTextADataFin() + FieldTextA.pinner.Unpin() } return result, releaseFn } @@ -1269,6 +1281,7 @@ func (self InputTextState) handle() (result *C.ImGuiInputTextState, releaseFn fu FieldTextWVecArg.Size = C.int(FieldTextW.Size) FieldTextWVecArg.Capacity = C.int(FieldTextW.Capacity) FieldTextWVecArg.Data = (*C.ImWchar)(FieldTextWData) + FieldTextW.pinner.Pin(FieldTextWVecArg.Data) result.TextW = *FieldTextWVecArg FieldTextA := self.FieldTextA @@ -1278,6 +1291,7 @@ func (self InputTextState) handle() (result *C.ImGuiInputTextState, releaseFn fu FieldTextAVecArg.Size = C.int(FieldTextA.Size) FieldTextAVecArg.Capacity = C.int(FieldTextA.Capacity) FieldTextAVecArg.Data = FieldTextADataArg + FieldTextA.pinner.Pin(FieldTextAVecArg.Data) result.TextA = *FieldTextAVecArg FieldInitialTextA := self.FieldInitialTextA @@ -1287,6 +1301,7 @@ func (self InputTextState) handle() (result *C.ImGuiInputTextState, releaseFn fu FieldInitialTextAVecArg.Size = C.int(FieldInitialTextA.Size) FieldInitialTextAVecArg.Capacity = C.int(FieldInitialTextA.Capacity) FieldInitialTextAVecArg.Data = FieldInitialTextADataArg + FieldInitialTextA.pinner.Pin(FieldInitialTextAVecArg.Data) result.InitialTextA = *FieldInitialTextAVecArg FieldTextAIsValid := self.FieldTextAIsValid @@ -1319,8 +1334,11 @@ func (self InputTextState) handle() (result *C.ImGuiInputTextState, releaseFn fu releaseFn = func() { FieldCtxFin() + FieldTextW.pinner.Unpin() FieldTextADataFin() + FieldTextA.pinner.Unpin() FieldInitialTextADataFin() + FieldInitialTextA.pinner.Unpin() FieldStbFin() } @@ -1609,12 +1627,14 @@ func (self ListClipperData) handle() (result *C.ImGuiListClipperData, releaseFn FieldRangesVecArg.Size = C.int(FieldRanges.Size) FieldRangesVecArg.Capacity = C.int(FieldRanges.Capacity) FieldRangesVecArg.Data = FieldRangesDataArg + FieldRanges.pinner.Pin(FieldRangesVecArg.Data) result.Ranges = *FieldRangesVecArg releaseFn = func() { FieldListClipperFin() FieldRangesDataFin() + FieldRanges.pinner.Unpin() } return result, releaseFn } @@ -2093,6 +2113,7 @@ func (self OldColumns) handle() (result *C.ImGuiOldColumns, releaseFn func()) { FieldColumnsVecArg.Size = C.int(FieldColumns.Size) FieldColumnsVecArg.Capacity = C.int(FieldColumns.Capacity) FieldColumnsVecArg.Data = FieldColumnsDataArg + FieldColumns.pinner.Pin(FieldColumnsVecArg.Data) result.Columns = *FieldColumnsVecArg FieldSplitter := self.FieldSplitter @@ -2100,6 +2121,7 @@ func (self OldColumns) handle() (result *C.ImGuiOldColumns, releaseFn func()) { result.Splitter = FieldSplitterArg releaseFn = func() { FieldColumnsDataFin() + FieldColumns.pinner.Unpin() FieldSplitterFin() } return result, releaseFn @@ -2540,6 +2562,7 @@ func (self StackTool) handle() (result *C.ImGuiStackTool, releaseFn func()) { FieldResultsVecArg.Size = C.int(FieldResults.Size) FieldResultsVecArg.Capacity = C.int(FieldResults.Capacity) FieldResultsVecArg.Data = FieldResultsDataArg + FieldResults.pinner.Pin(FieldResultsVecArg.Data) result.Results = *FieldResultsVecArg FieldCopyToClipboardOnCtrlC := self.FieldCopyToClipboardOnCtrlC @@ -2550,6 +2573,7 @@ func (self StackTool) handle() (result *C.ImGuiStackTool, releaseFn func()) { result.CopyToClipboardLastTime = C.float(FieldCopyToClipboardLastTime) releaseFn = func() { FieldResultsDataFin() + FieldResults.pinner.Unpin() } return result, releaseFn } @@ -2591,10 +2615,12 @@ func (self Storage) handle() (result *C.ImGuiStorage, releaseFn func()) { FieldDataVecArg.Size = C.int(FieldData.Size) FieldDataVecArg.Capacity = C.int(FieldData.Capacity) FieldDataVecArg.Data = FieldDataDataArg + FieldData.pinner.Pin(FieldDataVecArg.Data) result.Data = *FieldDataVecArg releaseFn = func() { FieldDataDataFin() + FieldData.pinner.Unpin() } return result, releaseFn } @@ -2719,6 +2745,7 @@ func (self TabBar) handle() (result *C.ImGuiTabBar, releaseFn func()) { FieldTabsVecArg.Size = C.int(FieldTabs.Size) FieldTabsVecArg.Capacity = C.int(FieldTabs.Capacity) FieldTabsVecArg.Data = FieldTabsDataArg + FieldTabs.pinner.Pin(FieldTabsVecArg.Data) result.Tabs = *FieldTabsVecArg FieldFlags := self.FieldFlags @@ -2813,6 +2840,7 @@ func (self TabBar) handle() (result *C.ImGuiTabBar, releaseFn func()) { result.TabsNames = FieldTabsNamesArg releaseFn = func() { FieldTabsDataFin() + FieldTabs.pinner.Unpin() FieldTabsNamesFin() } @@ -3319,10 +3347,12 @@ func (self TextBuffer) handle() (result *C.ImGuiTextBuffer, releaseFn func()) { FieldBufVecArg.Size = C.int(FieldBuf.Size) FieldBufVecArg.Capacity = C.int(FieldBuf.Capacity) FieldBufVecArg.Data = FieldBufDataArg + FieldBuf.pinner.Pin(FieldBufVecArg.Data) result.Buf = *FieldBufVecArg releaseFn = func() { FieldBufDataFin() + FieldBuf.pinner.Unpin() } return result, releaseFn } @@ -3376,6 +3406,7 @@ func (self TextIndex) handle() (result *C.ImGuiTextIndex, releaseFn func()) { FieldLineOffsetsVecArg.Size = C.int(FieldLineOffsets.Size) FieldLineOffsetsVecArg.Capacity = C.int(FieldLineOffsets.Capacity) FieldLineOffsetsVecArg.Data = FieldLineOffsetsDataArg + FieldLineOffsets.pinner.Pin(FieldLineOffsetsVecArg.Data) result.LineOffsets = *FieldLineOffsetsVecArg FieldEndOffset := self.FieldEndOffset @@ -3383,6 +3414,7 @@ func (self TextIndex) handle() (result *C.ImGuiTextIndex, releaseFn func()) { result.EndOffset = C.int(FieldEndOffset) releaseFn = func() { FieldLineOffsetsDataFin() + FieldLineOffsets.pinner.Unpin() } return result, releaseFn } diff --git a/cimplot_funcs.go b/cimplot_funcs.go index 4aa3221cc..ebdc1af39 100644 --- a/cimplot_funcs.go +++ b/cimplot_funcs.go @@ -13677,6 +13677,7 @@ func (self PlotAnnotationCollection) SetAnnotations(v Vector[*PlotAnnotation]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14397,6 +14398,7 @@ func (self PlotColormapData) SetKeyCounts(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14419,6 +14421,7 @@ func (self PlotColormapData) SetKeyOffsets(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14441,6 +14444,7 @@ func (self PlotColormapData) SetTables(v Vector[*uint32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14463,6 +14467,7 @@ func (self PlotColormapData) SetTableSizes(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14485,6 +14490,7 @@ func (self PlotColormapData) SetTableOffsets(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14526,6 +14532,7 @@ func (self PlotColormapData) SetTextOffsets(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14548,6 +14555,7 @@ func (self PlotColormapData) SetQuals(v Vector[*bool]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14756,6 +14764,7 @@ func (self PlotContext) SetColorModifiers(v Vector[*ColorMod]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14778,6 +14787,7 @@ func (self PlotContext) SetStyleModifiers(v Vector[*StyleMod]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14828,6 +14838,7 @@ func (self PlotContext) SetTempDouble1(v Vector[*float64]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14850,6 +14861,7 @@ func (self PlotContext) SetTempDouble2(v Vector[*float64]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -14872,6 +14884,7 @@ func (self PlotContext) SetTempInt1(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -15535,6 +15548,7 @@ func (self PlotLegend) SetIndices(v Vector[*int32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17021,6 +17035,7 @@ func (self PlotSubplot) SetRowAlignmentData(v Vector[*PlotAlignmentData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17043,6 +17058,7 @@ func (self PlotSubplot) SetColAlignmentData(v Vector[*PlotAlignmentData]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17065,6 +17081,7 @@ func (self PlotSubplot) SetRowRatios(v Vector[*float32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17087,6 +17104,7 @@ func (self PlotSubplot) SetColRatios(v Vector[*float32]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17109,6 +17127,7 @@ func (self PlotSubplot) SetRowLinkData(v Vector[*PlotRange]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17131,6 +17150,7 @@ func (self PlotSubplot) SetColLinkData(v Vector[*PlotRange]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17269,6 +17289,7 @@ func (self PlotTagCollection) SetTags(v Vector[*PlotTag]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() @@ -17445,6 +17466,7 @@ func (self PlotTicker) SetTicks(v Vector[*PlotTick]) { vVecArg.Size = C.int(v.Size) vVecArg.Capacity = C.int(v.Capacity) vVecArg.Data = vDataArg + v.pinner.Pin(vVecArg.Data) selfArg, selfFin := self.handle() defer selfFin() diff --git a/cimplot_structs.go b/cimplot_structs.go index 6801d1443..53706085b 100644 --- a/cimplot_structs.go +++ b/cimplot_structs.go @@ -141,6 +141,7 @@ func (self PlotAnnotationCollection) handle() (result *C.ImPlotAnnotationCollect FieldAnnotationsVecArg.Size = C.int(FieldAnnotations.Size) FieldAnnotationsVecArg.Capacity = C.int(FieldAnnotations.Capacity) FieldAnnotationsVecArg.Data = FieldAnnotationsDataArg + FieldAnnotations.pinner.Pin(FieldAnnotationsVecArg.Data) result.Annotations = *FieldAnnotationsVecArg FieldTextBuffer := self.FieldTextBuffer @@ -151,6 +152,7 @@ func (self PlotAnnotationCollection) handle() (result *C.ImPlotAnnotationCollect result.Size = C.int(FieldSize) releaseFn = func() { FieldAnnotationsDataFin() + FieldAnnotations.pinner.Unpin() FieldTextBufferFin() } return result, releaseFn @@ -468,6 +470,7 @@ func (self PlotLegend) handle() (result *C.ImPlotLegend, releaseFn func()) { FieldIndicesVecArg.Size = C.int(FieldIndices.Size) FieldIndicesVecArg.Capacity = C.int(FieldIndices.Capacity) FieldIndicesVecArg.Data = FieldIndicesDataArg + FieldIndices.pinner.Pin(FieldIndicesVecArg.Data) result.Indices = *FieldIndicesVecArg FieldLabels := self.FieldLabels @@ -490,6 +493,7 @@ func (self PlotLegend) handle() (result *C.ImPlotLegend, releaseFn func()) { result.CanGoInside = C.bool(FieldCanGoInside) releaseFn = func() { FieldIndicesDataFin() + FieldIndices.pinner.Unpin() FieldLabelsFin() } return result, releaseFn @@ -787,6 +791,7 @@ func (self PlotTagCollection) handle() (result *C.ImPlotTagCollection, releaseFn FieldTagsVecArg.Size = C.int(FieldTags.Size) FieldTagsVecArg.Capacity = C.int(FieldTags.Capacity) FieldTagsVecArg.Data = FieldTagsDataArg + FieldTags.pinner.Pin(FieldTagsVecArg.Data) result.Tags = *FieldTagsVecArg FieldTextBuffer := self.FieldTextBuffer @@ -797,6 +802,7 @@ func (self PlotTagCollection) handle() (result *C.ImPlotTagCollection, releaseFn result.Size = C.int(FieldSize) releaseFn = func() { FieldTagsDataFin() + FieldTags.pinner.Unpin() FieldTextBufferFin() } return result, releaseFn @@ -893,6 +899,7 @@ func (self PlotTicker) handle() (result *C.ImPlotTicker, releaseFn func()) { FieldTicksVecArg.Size = C.int(FieldTicks.Size) FieldTicksVecArg.Capacity = C.int(FieldTicks.Capacity) FieldTicksVecArg.Data = FieldTicksDataArg + FieldTicks.pinner.Pin(FieldTicksVecArg.Data) result.Ticks = *FieldTicksVecArg FieldTextBuffer := self.FieldTextBuffer @@ -909,6 +916,7 @@ func (self PlotTicker) handle() (result *C.ImPlotTicker, releaseFn func()) { result.Levels = C.int(FieldLevels) releaseFn = func() { FieldTicksDataFin() + FieldTicks.pinner.Unpin() FieldTextBufferFin() } return result, releaseFn From 658e4bba5db78005573cca9d020e4179e227c8f6 Mon Sep 17 00:00:00 2001 From: gucio321 <73652197+gucio321@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:20:13 +0200 Subject: [PATCH 3/4] mod: require latest go (1.21) --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 245faf96d..848ceec04 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/AllenDang/cimgui-go -go 1.20 +go 1.21 require ( github.com/google/go-cmp v0.5.9 // indirect From d21a4a1cc1a4b5e7b9518bc3c9c2b1cbada3a869 Mon Sep 17 00:00:00 2001 From: gucio321 <73652197+gucio321@users.noreply.github.com> Date: Mon, 11 Sep 2023 22:21:06 +0200 Subject: [PATCH 4/4] workflows: update go version --- .github/workflows/golangci-lint.yaml | 2 +- .github/workflows/test.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 9d8f875b8..23a71a21c 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -18,7 +18,7 @@ jobs: - name: Set up Go environment uses: actions/setup-go@v4 with: - go-version: '1.19.x' + go-version: '1.21.x' - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v3.7.0 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e3caa5788..babbbc606 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -44,7 +44,7 @@ jobs: - name: Set up Go environment uses: actions/setup-go@v4 with: - go-version: '1.20.x' + go-version: '1.21.x' - name: Checkout out source code uses: actions/checkout@v4 with: