1
0
Fork 0
mirror of https://github.com/ocornut/imgui.git synced 2026-01-22 01:54:21 +00:00
Commit graph

584 commits

Author SHA1 Message Date
Tim Kane
f35459a0f9 Added a scoped lock, rather than explicitly unlocking at all return points 2025-07-12 18:46:26 +10:00
Tim Kane
6054b1a2a1 Needed a little more work to resolve a number of outstanding thread sanitiser concerns
This is a little nasty..
I'm trying to keep all changes localised to imgui_impl_osx.mm

Ideally the ImGui_IO_lock would live within ImGuiIO but I didn't want to muddy the waters

Perhaps better if this lock primitive is delivered through BackendPlatformUserData, and only used where provided

This change requires the client platform to explicitly lock the primitive from outside of ImGui around ImGui::NewFrame specifically, and additionally from anywhere on the client side (external to ImGui) that concurrently hooks into ImGuiIO

That requires the client to define an extern lock (and use it appropriately)
 extern NSlock *ImGui_IO_lock

If this lock were native to ImGui we could have ImGui::NewFrame() handle the lock on our behalf, negating the need for client side locking
2025-07-12 18:46:26 +10:00
Tim Kane
6508586fc2 Resolve Xcode runtime warnings regarding access of NSView/NSWindow properties from a non-main thread
This issue presents when rendering from a thread that is other than the window thread, more easily reproduced when disabling vsync

This commit aims to populate the relevant data into backend_data, by way of dispatch_async (ocurring on the main thread). Those particular backend data items are protected by an NSlock

There may be more elegant ways to do this

Main Thread Checker
imgui/backends/imgui_impl_osx.mm:608 -[NSView window] must be used from main thread only
imgui/backends/imgui_impl_osx.mm:608 -[NSWindow backingScaleFactor] must be used from main thread only
imgui/backends/imgui_impl_osx.mm:609 -[NSView bounds] must be used from main thread only
2025-07-12 18:46:26 +10:00
ocornut
336d9212fc Backends: using range-for to iterate draw_data->CmdLists[]. 2025-07-11 17:41:52 +02:00
Pascal Thomet
18dca11dd0 Backends: GLFW, SDL2: ImplXXX_GetContentScaleXXX() helpers return 1.0f on emscripten / apple / android (#8742, #8733)
We can divide platforms into two cases based on how they report screen geometry:
- Case 1: Platforms which report screen size in "physical pixels": Windows (for "Dpi aware" apps), Linux (with Wayland)
- Case 2: Platforms which report screen size in "density-independent pixels": macOS, iOS, Android, emscripten

As a consequence, there are two important things we need to know:
- FramebufferScale: The scaling factor FrameBufferSize / ScreenSize
  - In case 1, the framebuffer size is equal to the screen size and DisplayFramebufferScale=1.
  - In case 2, the framebuffer size is equal to the screen size multiplied by a factor, for example DisplayFramebufferScale=2.
- ContentScale The scaling factor for the content that we will display
  - In case 1, the content scale will often need to be > 1 (e.g., 2), because we will need to display bigger elements so that they show with a correct physical size on the screen.
  - In case 2, the content scale is equal to 1
This commit fixes ContentScale for platforms in case 2.
2025-07-08 15:53:42 +02:00
Moses Miller
032e1397d9 Backends: Vulkan: use separate barrier for buffer. (#8772) 2025-07-07 16:58:42 +02:00
Moses Miller
c2d9b07533 Backends: Vulkan: fixed texture synchronization. (#8772) 2025-07-07 16:58:41 +02:00
ocornut
57a93e1a19 Backends: Allegro5: fixed texture update broken on some platforms where ALLEGRO_LOCK_WRITEONLY needed all texels to be rewritten. (#8770) 2025-07-07 15:36:24 +02:00
ocornut
495d6f1e39 Undef 'Status' in main header file. (#8751, #8765) 2025-07-07 14:56:50 +02:00
ocornut
d99ab9f903 Backends: SDL2: undef Status for X11. (#8751) 2025-06-28 17:15:18 +02:00
morrazzzz
fff47f1119 Backends: SDL3: avoid calling SDL_StartTextInput() again if already active. (#8727) 2025-06-27 16:35:59 +02:00
Thomas Quante
8e3aac5744 Backends: Vulkan: use nonCoherentAtomSize to align upload_size, fixing validation error on some setups. (#8743, #8744) 2025-06-27 16:32:17 +02:00
Christian Fillion
22ad62c90c Backends: OSX: added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursor support. (#8739)
Yet another undocumented standard cursor.
Amend 8a35386.
2025-06-27 13:35:03 +02:00
ocornut
dcf14505e2 Backends: SDLGPU: fixes call to SDL_MapGPUTransferBuffer(). Fixes artifacts on OSX/Metal. (#8465, #8703) 2025-06-25 15:48:56 +02:00
Geert Bleyen
04a5b9c2cf Backends: SDL3: fixed pulling SDL_PROP_WINDOW_COCOA_WINDOW_POINTER into viewport->PlatformHandleRaw. (#8725, #8726)
SDL_VIDEO_DRIVER_COCOA does not exist on SDL3.
2025-06-24 18:14:39 +02:00
ocornut
afe20dc9b6 Backends: warning fix. 2025-06-20 15:23:52 +02:00
ocornut
e97e55adbc Backends: Fixed various warnings discovered when using MinGW GCC 15/Clang on latest backends.
dx12: 'ImGui_ImplDX12_Data* bd' shadowed local in spite of being in lambda.
2025-06-20 15:18:00 +02:00
ocornut
9a50c09172 Bsckends: SDL2, GLFW: fixed ImGui_ImplXXXX_GetContentScaleXXX functions never using SDL 2.0.4 & GLFW 3.3 path in master.
Amend 9da3e6696a, 8269924c (was broken for master)
2025-06-20 14:38:33 +02:00
ocornut
8d6e66d38c Backends: DX10, DX11, DX12, OpenGL3, Vulkan, WGPU: Assert when CreateDeviceObjects() calls return false. 2025-06-20 09:49:53 +02:00
ocornut
f7dabede8b Backends: Allegro5: Fixed missing invisible mouse cursor, broken by ee8941e0d. 2025-06-20 09:49:53 +02:00
PlayDay
725d185a31 Backends: DirectX12: fixed build on MinGW. (#8702, #4594) 2025-06-19 20:10:39 +02:00
ocornut
f633a60581 Backends: GLFW: Added support for multiple Dear ImGui contexts. (#8676, #8239, #8069) 2025-06-18 16:46:37 +02:00
ocornut
d290e583c5 Backends: GLFW: fixed WndProc relying on current context. (#8676, #8239, #8069)
This makes the backend closer to support multi-context.
2025-06-18 16:39:57 +02:00
Shawn Hatori
6b3cbb10a2
Backends: Vulkan: correct minimum pool size assertion (#8691) 2025-06-16 11:59:26 +02:00
ocornut
7ac99a4366 Backends: OSX: ImGui_ImplOSX_HandleEvent() only process event for window containing our view. (#8644) 2025-06-12 15:44:18 +02:00
ocornut
571dae9664 Backends: WGPU: added ImGuiBackendFlags_RendererHasTextures support. (#8465) 2025-06-12 15:31:51 +02:00
ocornut
b178fd4286 Backends: WebGPU: moved sampler creation out of ImGui_ImplWGPU_CreateFontsTexture(). 2025-06-12 14:55:46 +02:00
ocornut
df068ce11e Various/misc fixes following back-and-forth dynamic_fonts->master->docking merges. Added missing API BREAKING CHANGES section. 2025-06-11 18:50:16 +02:00
ocornut
b98e92839c Backends: SDL2, SDL3, GLFW: Backport small part of c90ea13 from docking. 2025-06-11 16:24:04 +02:00
ocornut
8269924c33 Backends: GLFW: added ImGui_ImplGlfw_GetContentScaleForMonitor(), ImGui_ImplGlfw_GetContentScaleForWindow() helpers.
# Conflicts:
#	backends/imgui_impl_glfw.cpp
2025-06-11 16:13:49 +02:00
ocornut
9da3e6696a Backends: SDL2: added ImGui_ImplSDL2_GetDpiScaleForDisplay(), ImGui_ImplSDL2_GetContentScaleForWindow() helpers. 2025-06-11 16:12:41 +02:00
thedmd
26c017d5ea Backends: Metal: added ImGuiBackendFlags_RendererHasTextures support.
# Conflicts:
#	backends/imgui_impl_metal.h
#	backends/imgui_impl_metal.mm
2025-06-11 15:41:05 +02:00
ocornut
ee8941e0de Backends: Allegro5: added ImGuiBackendFlags_RendererHasTextures support. 2025-06-11 15:41:05 +02:00
ocornut
16fe666e36 Backends: SDLGPU3: added ImGuiBackendFlags_RendererHasTextures support.
# Conflicts:
#	backends/imgui_impl_sdlgpu3.cpp
#	backends/imgui_impl_sdlgpu3.h
2025-06-11 15:38:14 +02:00
ocornut
e538883a20 Backends: SDL_Renderer3: added ImGuiBackendFlags_RendererHasTextures support. 2025-06-11 15:38:13 +02:00
ocornut
9fa65cd190 Backends: SDL_Renderer2: added ImGuiBackendFlags_RendererHasTextures support. 2025-06-11 15:37:50 +02:00
ocornut
abe294bfd0 Backends: Vulkan: added ImGuiBackendFlags_RendererHasTextures support.
# Conflicts:
#	backends/imgui_impl_vulkan.cpp
2025-06-11 15:33:28 +02:00
ocornut
0430c55b84 Backends: OpenGL2: added ImGuiBackendFlags_RendererHasTextures support.
Removed ImGui_ImplOpenGL2_CreateFontsTexture() and ImGui_ImplOpenGL2_DestroyFontsTexture().
2025-06-11 15:30:45 +02:00
ocornut
dbb91a574f Backends: OpenGL3: added ImGuiBackendFlags_RendererHasTextures support.
+ Removed ImGui_ImplOpenGL3_CreateFontsTexture() and ImGui_ImplOpenGL3_DestroyFontsTexture().
2025-06-11 15:29:14 +02:00
ocornut
eefe5d5aac Backends: DirectX12: added ImGuiBackendFlags_RendererHasTextures support.
# Conflicts:
#	backends/imgui_impl_dx12.cpp
2025-06-11 15:27:19 +02:00
ocornut
2d2b1bc1cc Backends: DirectX10: added ImGuiBackendFlags_RendererHasTextures support.
# Conflicts:
#	backends/imgui_impl_dx10.cpp
#	backends/imgui_impl_dx10.h
2025-06-11 15:27:16 +02:00
ocornut
75efba7ec7 Backends: DirectX9: added ImGuiBackendFlags_RendererHasTextures support
# Conflicts:
#	backends/imgui_impl_dx9.cpp
2025-06-11 15:27:11 +02:00
ocornut
372fd27e71 Backends: DirectX11: added ImGuiBackendFlags_RendererHasTextures support.
# Conflicts:
#	backends/imgui_impl_dx11.cpp
2025-06-11 15:26:00 +02:00
Dylam De La Torre
201899b611 Backends: OpenGL3: Fixed using non-existing features on GLES 3.20 which would push a GL error. (#8664)
* GL_PRIMITIVE_RESTART is not a valid enum for glEnable&co on GLES 3.20
* GL_CONTEXT_PROFILE_MASK is not a valid enum for glGetIntegerv on GLES 3.20
2025-06-04 23:48:56 +02:00
ocornut
9361c35176 Backends: SDL2, SDL3: maximum room for sanitizer to not be zealous. 2025-05-15 15:36:42 +02:00
ocornut
b5a73033ab Examples: Apple: Amend build scripts and gitignore, fix misc OSX warnings. (#8637)
# Conflicts:
#	backends/imgui_impl_metal.mm
2025-05-14 18:23:31 +02:00
ocornut
08689c51a9 Backends: GLFW, SDL2, SDL3: include GLFW/SDL version number in io.BackendPlatformName.
# Conflicts:
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
2025-05-13 15:50:51 +02:00
ocornut
4a6ba95392 Backends: SDL3: Comments (#6146) 2025-05-12 19:19:30 +02:00
tamas-rabel
b9ac32a0d5
Backends: DirectX12: Make sure texture sampling in the dx12 backend is not limited to the highest mip. (#8631) 2025-05-12 00:04:44 +02:00
WSSDude
ba513ba804 Backends: DX10, DX11, DX12: honor FramebufferScale. (#8412)
# Conflicts:
#	backends/imgui_impl_dx11.cpp
#	backends/imgui_impl_dx12.cpp
2025-05-07 19:19:30 +02:00