@@ -235,8 +235,10 @@ nfdresult_t NFD_OpenDialogN_With_Impl(nfdversion_t version,
235235 // We haven't needed to bump the interface version yet.
236236 (void )version;
237237
238- nfdresult_t result = NFD_CANCEL;
239- @autoreleasepool {
238+ __block nfdresult_t result = NFD_CANCEL;
239+ dispatch_sync (dispatch_get_main_queue (), ^{
240+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init ];
241+
240242 NSWindow * keyWindow = GetNativeWindowHandle (&args->parentWindow );
241243 if (keyWindow) {
242244 [keyWindow makeKeyAndOrderFront: nil ];
@@ -261,7 +263,9 @@ nfdresult_t NFD_OpenDialogN_With_Impl(nfdversion_t version,
261263
262264 // return focus to the key window (i.e. main window)
263265 [keyWindow makeKeyAndOrderFront: nil ];
264- }
266+
267+ [pool release ];
268+ });
265269 return result;
266270}
267271
@@ -295,8 +299,10 @@ nfdresult_t NFD_OpenDialogMultipleN_With_Impl(nfdversion_t version,
295299 // We haven't needed to bump the interface version yet.
296300 (void )version;
297301
298- nfdresult_t result = NFD_CANCEL;
299- @autoreleasepool {
302+ __block nfdresult_t result = NFD_CANCEL;
303+ dispatch_sync (dispatch_get_main_queue (), ^{
304+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init ];
305+
300306 NSWindow * keyWindow = GetNativeWindowHandle (&args->parentWindow );
301307 if (keyWindow) {
302308 [keyWindow makeKeyAndOrderFront: nil ];
@@ -326,7 +332,9 @@ nfdresult_t NFD_OpenDialogMultipleN_With_Impl(nfdversion_t version,
326332
327333 // return focus to the key window (i.e. main window)
328334 [keyWindow makeKeyAndOrderFront: nil ];
329- }
335+
336+ [pool release ];
337+ });
330338 return result;
331339}
332340
@@ -362,8 +370,10 @@ nfdresult_t NFD_SaveDialogN_With_Impl(nfdversion_t version,
362370 // We haven't needed to bump the interface version yet.
363371 (void )version;
364372
365- nfdresult_t result = NFD_CANCEL;
366- @autoreleasepool {
373+ __block nfdresult_t result = NFD_CANCEL;
374+ dispatch_sync (dispatch_get_main_queue (), ^{
375+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init ];
376+
367377 NSWindow * keyWindow = GetNativeWindowHandle (&args->parentWindow );
368378 if (keyWindow) {
369379 [keyWindow makeKeyAndOrderFront: nil ];
@@ -394,7 +404,9 @@ nfdresult_t NFD_SaveDialogN_With_Impl(nfdversion_t version,
394404
395405 // return focus to the key window (i.e. main window)
396406 [keyWindow makeKeyAndOrderFront: nil ];
397- }
407+
408+ [pool release ];
409+ });
398410 return result;
399411}
400412
@@ -424,8 +436,10 @@ nfdresult_t NFD_PickFolderN_With_Impl(nfdversion_t version,
424436 // We haven't needed to bump the interface version yet.
425437 (void )version;
426438
427- nfdresult_t result = NFD_CANCEL;
428- @autoreleasepool {
439+ __block nfdresult_t result = NFD_CANCEL;
440+ dispatch_sync (dispatch_get_main_queue (), ^{
441+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init ];
442+
429443 NSWindow * keyWindow = GetNativeWindowHandle (&args->parentWindow );
430444 if (keyWindow) {
431445 [keyWindow makeKeyAndOrderFront: nil ];
@@ -450,7 +464,9 @@ nfdresult_t NFD_PickFolderN_With_Impl(nfdversion_t version,
450464
451465 // return focus to the key window (i.e. main window)
452466 [keyWindow makeKeyAndOrderFront: nil ];
453- }
467+
468+ [pool release ];
469+ });
454470 return result;
455471}
456472
@@ -476,8 +492,10 @@ nfdresult_t NFD_PickFolderMultipleN_With_Impl(nfdversion_t version,
476492 // We haven't needed to bump the interface version yet.
477493 (void )version;
478494
479- nfdresult_t result = NFD_CANCEL;
480- @autoreleasepool {
495+ __block nfdresult_t result = NFD_CANCEL;
496+ dispatch_sync (dispatch_get_main_queue (), ^{
497+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init ];
498+
481499 NSWindow * keyWindow = GetNativeWindowHandle (&args->parentWindow );
482500 if (keyWindow) {
483501 [keyWindow makeKeyAndOrderFront: nil ];
@@ -507,7 +525,9 @@ nfdresult_t NFD_PickFolderMultipleN_With_Impl(nfdversion_t version,
507525
508526 // return focus to the key window (i.e. main window)
509527 [keyWindow makeKeyAndOrderFront: nil ];
510- }
528+
529+ [pool release ];
530+ });
511531 return result;
512532}
513533
0 commit comments