mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Backends: Metal, OSX: Various fixes (ARC / Autorelease fixes with metal-cpp and extensions). (#5403)
This commit is contained in:
		
				
					committed by
					
						 ocornut
						ocornut
					
				
			
			
				
	
			
			
			
						parent
						
							609b935a8c
						
					
				
				
					commit
					67410d53f7
				
			| @@ -44,9 +44,7 @@ IMGUI_IMPL_API void ImGui_ImplMetal_DestroyDeviceObjects(); | ||||
| // More info about using Metal from C++: https://developer.apple.com/metal/cpp/ | ||||
|  | ||||
| #ifdef IMGUI_IMPL_METAL_CPP | ||||
|  | ||||
| #include <Metal/Metal.hpp> | ||||
|  | ||||
| #ifndef __OBJC__ | ||||
|  | ||||
| IMGUI_IMPL_API bool ImGui_ImplMetal_Init(MTL::Device* device); | ||||
| @@ -63,5 +61,4 @@ IMGUI_IMPL_API bool ImGui_ImplMetal_CreateDeviceObjects(MTL::Device* device); | ||||
| IMGUI_IMPL_API void ImGui_ImplMetal_DestroyDeviceObjects(); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -84,12 +84,12 @@ static inline CFTimeInterval     GetMachAbsoluteTimeInSeconds()       { return s | ||||
|  | ||||
| bool ImGui_ImplMetal_Init(MTL::Device* device) | ||||
| { | ||||
|     return ImGui_ImplMetal_Init((id<MTLDevice>)(device)); | ||||
|     return ImGui_ImplMetal_Init((__bridge id<MTLDevice>)(device)); | ||||
| } | ||||
|  | ||||
| void ImGui_ImplMetal_NewFrame(MTL::RenderPassDescriptor* renderPassDescriptor) | ||||
| { | ||||
|     ImGui_ImplMetal_NewFrame((MTLRenderPassDescriptor*)(renderPassDescriptor)); | ||||
|     ImGui_ImplMetal_NewFrame((__bridge MTLRenderPassDescriptor*)(renderPassDescriptor)); | ||||
| } | ||||
|  | ||||
| void ImGui_ImplMetal_RenderDrawData(ImDrawData* draw_data, | ||||
| @@ -97,19 +97,19 @@ void ImGui_ImplMetal_RenderDrawData(ImDrawData* draw_data, | ||||
|                                     MTL::RenderCommandEncoder* commandEncoder) | ||||
| { | ||||
|     ImGui_ImplMetal_RenderDrawData(draw_data, | ||||
|                                    (id<MTLCommandBuffer>)(commandBuffer), | ||||
|                                    (id<MTLRenderCommandEncoder>)(commandEncoder)); | ||||
|                                    (__bridge id<MTLCommandBuffer>)(commandBuffer), | ||||
|                                    (__bridge id<MTLRenderCommandEncoder>)(commandEncoder)); | ||||
|  | ||||
| } | ||||
|  | ||||
| bool ImGui_ImplMetal_CreateFontsTexture(MTL::Device* device) | ||||
| { | ||||
|     return ImGui_ImplMetal_CreateFontsTexture((id<MTLDevice>)(device)); | ||||
|     return ImGui_ImplMetal_CreateFontsTexture((__bridge id<MTLDevice>)(device)); | ||||
| } | ||||
|  | ||||
| bool ImGui_ImplMetal_CreateDeviceObjects(MTL::Device* device) | ||||
| { | ||||
|     return ImGui_ImplMetal_CreateDeviceObjects((id<MTLDevice>)(device)); | ||||
|     return ImGui_ImplMetal_CreateDeviceObjects((__bridge id<MTLDevice>)(device)); | ||||
| } | ||||
|  | ||||
| #endif // #ifdef IMGUI_IMPL_METAL_CPP | ||||
| @@ -429,8 +429,8 @@ void ImGui_ImplMetal_DestroyDeviceObjects() | ||||
| { | ||||
|     if ((self = [super init])) | ||||
|     { | ||||
|         _renderPipelineStateCache = [NSMutableDictionary dictionary]; | ||||
|         _bufferCache = [NSMutableArray array]; | ||||
|         self.renderPipelineStateCache = [NSMutableDictionary dictionary]; | ||||
|         self.bufferCache = [NSMutableArray array]; | ||||
|         _lastBufferCachePurge = GetMachAbsoluteTimeInSeconds(); | ||||
|     } | ||||
|     return self; | ||||
|   | ||||
| @@ -16,9 +16,28 @@ | ||||
|  | ||||
| #include "imgui.h"      // IMGUI_IMPL_API | ||||
|  | ||||
| #ifdef __OBJC__ | ||||
|  | ||||
| @class NSEvent; | ||||
| @class NSView; | ||||
|  | ||||
| IMGUI_IMPL_API bool     ImGui_ImplOSX_Init(NSView* _Nonnull view); | ||||
| IMGUI_IMPL_API void     ImGui_ImplOSX_Shutdown(); | ||||
| IMGUI_IMPL_API void     ImGui_ImplOSX_NewFrame(NSView* _Nullable view); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // C++ API | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| #ifdef IMGUI_IMPL_METAL_CPP_EXTENSIONS | ||||
| // #include <AppKit/AppKit.hpp> | ||||
| #ifndef __OBJC__ | ||||
|  | ||||
| IMGUI_IMPL_API bool     ImGui_ImplOSX_Init(void* _Nonnull view); | ||||
| IMGUI_IMPL_API void     ImGui_ImplOSX_Shutdown(); | ||||
| IMGUI_IMPL_API void     ImGui_ImplOSX_NewFrame(void* _Nullable view); | ||||
|  | ||||
| #endif | ||||
| #endif | ||||
|   | ||||
| @@ -364,6 +364,18 @@ static ImGuiKey ImGui_ImplOSX_KeyCodeToImGuiKey(int key_code) | ||||
|     } | ||||
| } | ||||
|  | ||||
| #ifdef IMGUI_IMPL_METAL_CPP_EXTENSIONS | ||||
|  | ||||
| IMGUI_IMPL_API bool ImGui_ImplOSX_Init(void* _Nonnull view) { | ||||
|     return ImGui_ImplOSX_Init((__bridge NSView*)(view)); | ||||
| } | ||||
|  | ||||
| IMGUI_IMPL_API void ImGui_ImplOSX_NewFrame(void* _Nullable view) { | ||||
|     return ImGui_ImplOSX_NewFrame((__bridge NSView*)(view)); | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
| bool ImGui_ImplOSX_Init(NSView* view) | ||||
| { | ||||
|   | ||||
| @@ -41,6 +41,8 @@ Other Changes: | ||||
|  | ||||
| - InputText: added experimental io.ConfigInputTextEnterKeepActive feature to make pressing | ||||
|   Enter keep the input active and select all text. | ||||
| - Backends: Metal: Use __bridge for ARC based systems. (#5403) [@stack] | ||||
| - Backends: OSX: Fixes to support full app creation in C++. (#5403) [@stack] | ||||
|  | ||||
|  | ||||
| ----------------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user