1.86 WIP + internals: tweaks table temp data code.
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 0bb5855..2ff3373 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -31,6 +31,18 @@
- Please report any issue!
-----------------------------------------------------------------------
+ VERSION 1.86 WIP (In Progress)
+-----------------------------------------------------------------------
+
+Breaking Changes:
+
+Other Changes:
+
+- Misc: Fix MinGW DLL build issue (when IMGUI_API is defined). [@rokups]
+- CI: Add MinGW DLL build to test suite. [@rokups]
+
+
+-----------------------------------------------------------------------
VERSION 1.85 (Released 2021-10-12)
-----------------------------------------------------------------------
diff --git a/imgui.cpp b/imgui.cpp
index e6f206e..6368266 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (main code and documentation)
// Help:
@@ -4130,9 +4130,9 @@
for (int i = 0; i < g.TablesLastTimeActive.Size; i++)
if (g.TablesLastTimeActive[i] >= 0.0f && g.TablesLastTimeActive[i] < memory_compact_start_time)
TableGcCompactTransientBuffers(g.Tables.GetByIndex(i));
- for (int i = 0; i < g.TablesTempDataStack.Size; i++)
- if (g.TablesTempDataStack[i].LastTimeActive >= 0.0f && g.TablesTempDataStack[i].LastTimeActive < memory_compact_start_time)
- TableGcCompactTransientBuffers(&g.TablesTempDataStack[i]);
+ for (int i = 0; i < g.TablesTempData.Size; i++)
+ if (g.TablesTempData[i].LastTimeActive >= 0.0f && g.TablesTempData[i].LastTimeActive < memory_compact_start_time)
+ TableGcCompactTransientBuffers(&g.TablesTempData[i]);
if (g.GcCompactAll)
GcCompactTransientMiscBuffers();
g.GcCompactAll = false;
@@ -4246,7 +4246,7 @@
g.ShrinkWidthBuffer.clear();
g.Tables.Clear();
- g.TablesTempDataStack.clear_destruct();
+ g.TablesTempData.clear_destruct();
g.DrawChannelsTempMergeBuffer.clear();
g.ClipboardHandlerData.clear();
diff --git a/imgui.h b/imgui.h
index 496e143..cd41d54 100644
--- a/imgui.h
+++ b/imgui.h
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (headers)
// Help:
@@ -63,8 +63,8 @@
// Version
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
-#define IMGUI_VERSION "1.85"
-#define IMGUI_VERSION_NUM 18501
+#define IMGUI_VERSION "1.86 WIP"
+#define IMGUI_VERSION_NUM 18502
#define IMGUI_CHECKVERSION() ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
#define IMGUI_HAS_TABLE
diff --git a/imgui_demo.cpp b/imgui_demo.cpp
index d4bac48..6af064a 100644
--- a/imgui_demo.cpp
+++ b/imgui_demo.cpp
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (demo code)
// Help:
diff --git a/imgui_draw.cpp b/imgui_draw.cpp
index 30b100b..86bc0f2 100644
--- a/imgui_draw.cpp
+++ b/imgui_draw.cpp
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (drawing and font code)
/*
diff --git a/imgui_internal.h b/imgui_internal.h
index bd3edad..0447b5a 100644
--- a/imgui_internal.h
+++ b/imgui_internal.h
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (internal structures/api)
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
@@ -1629,9 +1629,9 @@
// Table
ImGuiTable* CurrentTable;
- int CurrentTableStackIdx;
- ImPool<ImGuiTable> Tables;
- ImVector<ImGuiTableTempData> TablesTempDataStack;
+ int TablesTempDataStacked; // Temporary table data size (because we leave previous instances undestructed, we generally don't use TablesTempData.Size)
+ ImVector<ImGuiTableTempData> TablesTempData; // Temporary table data (buffers reused/shared across instances, support nesting)
+ ImPool<ImGuiTable> Tables; // Persistent table data
ImVector<float> TablesLastTimeActive; // Last used timestamp of each tables (SOA, for efficient GC)
ImVector<ImDrawChannel> DrawChannelsTempMergeBuffer;
@@ -1815,7 +1815,7 @@
memset(DragDropPayloadBufLocal, 0, sizeof(DragDropPayloadBufLocal));
CurrentTable = NULL;
- CurrentTableStackIdx = -1;
+ TablesTempDataStacked = 0;
CurrentTabBar = NULL;
TempInputId = 0;
diff --git a/imgui_tables.cpp b/imgui_tables.cpp
index 56056ae..1c61180 100644
--- a/imgui_tables.cpp
+++ b/imgui_tables.cpp
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (tables and columns code)
/*
@@ -340,10 +340,9 @@
// Acquire temporary buffers
const int table_idx = g.Tables.GetIndex(table);
- g.CurrentTableStackIdx++;
- if (g.CurrentTableStackIdx + 1 > g.TablesTempDataStack.Size)
- g.TablesTempDataStack.resize(g.CurrentTableStackIdx + 1, ImGuiTableTempData());
- ImGuiTableTempData* temp_data = table->TempData = &g.TablesTempDataStack[g.CurrentTableStackIdx];
+ if (++g.TablesTempDataStacked > g.TablesTempData.Size)
+ g.TablesTempData.resize(g.TablesTempDataStacked, ImGuiTableTempData());
+ ImGuiTableTempData* temp_data = table->TempData = &g.TablesTempData[g.TablesTempDataStacked - 1];
temp_data->TableIndex = table_idx;
table->DrawSplitter = &table->TempData->DrawSplitter;
table->DrawSplitter->Clear();
@@ -1382,9 +1381,8 @@
// Clear or restore current table, if any
IM_ASSERT(g.CurrentWindow == outer_window && g.CurrentTable == table);
- IM_ASSERT(g.CurrentTableStackIdx >= 0);
- g.CurrentTableStackIdx--;
- temp_data = g.CurrentTableStackIdx >= 0 ? &g.TablesTempDataStack[g.CurrentTableStackIdx] : NULL;
+ IM_ASSERT(g.TablesTempDataStacked > 0);
+ temp_data = (--g.TablesTempDataStacked > 0) ? &g.TablesTempData[g.TablesTempDataStacked - 1] : NULL;
g.CurrentTable = temp_data ? g.Tables.GetByIndex(temp_data->TableIndex) : NULL;
if (g.CurrentTable)
{
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index 7da069b..0ad4f9a 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -1,4 +1,4 @@
-// dear imgui, v1.85
+// dear imgui, v1.86 WIP
// (widgets code)
/*