mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-11 00:04:24 +00:00
Merge b7d1f7f86e into 6d910d5487
This commit is contained in:
commit
b2d477bd0d
1 changed files with 39 additions and 2 deletions
|
|
@ -403,8 +403,33 @@ IMGUI_IMPL_API void ImGui_ImplOSX_NewFrame(void* _Nullable view) {
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
NSLock *ImGui_IO_lock;
|
||||
|
||||
|
||||
@interface ScopedLock : NSObject
|
||||
@property (strong) NSLock *lockptr;
|
||||
@end
|
||||
|
||||
@implementation ScopedLock
|
||||
|
||||
- (id)init:(NSLock *)incoming
|
||||
{
|
||||
_lockptr = incoming;
|
||||
[_lockptr lock];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[_lockptr unlock];
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
bool ImGui_ImplOSX_Init(NSView* view)
|
||||
{
|
||||
ImGui_IO_lock = [[NSLock alloc] init];
|
||||
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO();
|
||||
IMGUI_CHECKVERSION();
|
||||
|
|
@ -629,8 +654,18 @@ void ImGui_ImplOSX_NewFrame(NSView* view)
|
|||
// Setup display size
|
||||
if (view)
|
||||
{
|
||||
const float dpi = (float)[view.window backingScaleFactor];
|
||||
io.DisplaySize = ImVec2((float)view.bounds.size.width, (float)view.bounds.size.height);
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[bd->exclusive.lock lock];
|
||||
bd->exclusive.backingScaleFactor = view.window.backingScaleFactor;
|
||||
bd->exclusive.bounds = view.bounds;
|
||||
[bd->exclusive.lock unlock];
|
||||
});
|
||||
|
||||
[bd->exclusive.lock lock];
|
||||
const float dpi = (float) bd->exclusive.backingScaleFactor;
|
||||
io.DisplaySize = ImVec2((float) bd->exclusive.bounds.size.width, bd->exclusive.bounds.size.height);
|
||||
[bd->exclusive.lock unlock];
|
||||
|
||||
io.DisplayFramebufferScale = ImVec2(dpi, dpi);
|
||||
}
|
||||
|
||||
|
|
@ -674,6 +709,8 @@ static bool ImGui_ImplOSX_HandleEvent(NSEvent* event, NSView* view)
|
|||
return false;
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
ScopedLock *sclock = [[ScopedLock alloc] init:ImGui_IO_lock];
|
||||
|
||||
if (event.type == NSEventTypeLeftMouseDown || event.type == NSEventTypeRightMouseDown || event.type == NSEventTypeOtherMouseDown)
|
||||
{
|
||||
int button = (int)[event buttonNumber];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue