From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/winemac.drv/cocoa_main.m | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/dlls/winemac.drv/cocoa_main.m b/dlls/winemac.drv/cocoa_main.m index 8c9507a75b1..b3190d80e2a 100644 --- a/dlls/winemac.drv/cocoa_main.m +++ b/dlls/winemac.drv/cocoa_main.m @@ -114,7 +114,7 @@ int macdrv_start_cocoa_app(unsigned long long tickcount) { int ret = -1; CFRunLoopSourceRef source; - struct cocoa_app_startup_info startup_info; + struct cocoa_app_startup_info startup_info = { .tickcount = tickcount }; uint64_t uptime_mach = mach_absolute_time(); mach_timebase_info_data_t mach_timebase; NSDate* timeLimit; @@ -126,24 +126,20 @@ int macdrv_start_cocoa_app(unsigned long long tickcount) toTarget:[NSThread class] withObject:nil]; - startup_info.lock = [[NSConditionLock alloc] initWithCondition:COCOA_APP_NOT_RUNNING]; - startup_info.tickcount = tickcount; - startup_info.success = FALSE; + if (!(timeLimit = [NSDate dateWithTimeIntervalSinceNow:5])) return -1; + if (!(startup_info.lock = [[NSConditionLock alloc] initWithCondition:COCOA_APP_NOT_RUNNING])) return -1; mach_timebase_info(&mach_timebase); startup_info.uptime_ns = uptime_mach * mach_timebase.numer / mach_timebase.denom; - timeLimit = [NSDate dateWithTimeIntervalSinceNow:5]; - source_context.info = &startup_info; source_context.perform = run_cocoa_app; - source = CFRunLoopSourceCreate(NULL, 0, &source_context); - - if (source && startup_info.lock && timeLimit) + if ((source = CFRunLoopSourceCreate(NULL, 0, &source_context))) { CFRunLoopAddSource(CFRunLoopGetMain(), source, kCFRunLoopCommonModes); CFRunLoopSourceSignal(source); CFRunLoopWakeUp(CFRunLoopGetMain()); + CFRelease(source); if ([startup_info.lock lockWhenCondition:COCOA_APP_RUNNING beforeDate:timeLimit]) { @@ -152,8 +148,6 @@ int macdrv_start_cocoa_app(unsigned long long tickcount) } } - if (source) - CFRelease(source); [startup_info.lock release]; return ret; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11333