From c23b4a48ec0cd29d178b4eec19a4662b0493b350 Mon Sep 17 00:00:00 2001 From: Rafael Nobre Date: Mon, 7 Aug 2017 16:28:00 -0300 Subject: [PATCH] Fixes NSUserActivityDelegate that was called on a background thread thus not working. --- atom/browser/mac/atom_application.mm | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/atom/browser/mac/atom_application.mm b/atom/browser/mac/atom_application.mm index 578c25a82c..d825fe4272 100644 --- a/atom/browser/mac/atom_application.mm +++ b/atom/browser/mac/atom_application.mm @@ -38,6 +38,7 @@ [currentActivity_ setWebpageURL:webpageURL]; [currentActivity_ setDelegate: self]; [currentActivity_ becomeCurrent]; + [currentActivity_ setNeedsSave:YES]; } - (NSUserActivity*)getCurrentActivity { @@ -58,26 +59,28 @@ } } -- (void)updateUserActivityState:(NSUserActivity *)userActivity { - std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType)); - std::unique_ptr user_info = - atom::NSDictionaryToDictionaryValue(userActivity.userInfo); +- (void)userActivityWillSave:(NSUserActivity *)userActivity { + dispatch_sync(dispatch_get_main_queue(), ^{ + std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType)); + std::unique_ptr user_info = + atom::NSDictionaryToDictionaryValue(userActivity.userInfo); - atom::Browser* browser = atom::Browser::Get(); - browser->UpdateUserActivityState(activity_type, *user_info); - + atom::Browser* browser = atom::Browser::Get(); + browser->UpdateUserActivityState(activity_type, *user_info); + }); [userActivity setNeedsSave:YES]; - [super updateUserActivityState:userActivity]; } - (void)userActivityWasContinued:(NSUserActivity *)userActivity { - std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType)); - std::unique_ptr user_info = + dispatch_async(dispatch_get_main_queue(), ^{ + std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType)); + std::unique_ptr user_info = atom::NSDictionaryToDictionaryValue(userActivity.userInfo); - atom::Browser* browser = atom::Browser::Get(); + atom::Browser* browser = atom::Browser::Get(); - browser->UserActivityWasContinued(activity_type, *user_info); + browser->UserActivityWasContinued(activity_type, *user_info); + }); [userActivity setNeedsSave:YES]; }