mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	apt: Fix exiting to game list on application close. (#6353)
This commit is contained in:
		
							parent
							
								
									794d051f0c
								
							
						
					
					
						commit
						fbf53686c3
					
				
					 2 changed files with 23 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -882,7 +882,12 @@ ResultCode AppletManager::PrepareToCloseApplication(bool return_to_sys) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (application_close_target == AppletSlot::HomeMenu) {
 | 
			
		||||
        EnsureHomeMenuLoaded();
 | 
			
		||||
        // Real APT would make sure home menu is loaded here. However, this is only really
 | 
			
		||||
        // needed if the home menu wasn't loaded in the first place. Since we want to
 | 
			
		||||
        // preserve normal behavior when the user loaded the game directly without going
 | 
			
		||||
        // through home menu, we skip this. Then, later we just close to the game list
 | 
			
		||||
        // when the application finishes closing.
 | 
			
		||||
        // EnsureHomeMenuLoaded();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return RESULT_SUCCESS;
 | 
			
		||||
| 
						 | 
				
			
			@ -896,15 +901,21 @@ ResultCode AppletManager::CloseApplication(std::shared_ptr<Kernel::Object> objec
 | 
			
		|||
    GetAppletSlot(AppletSlot::Application)->Reset();
 | 
			
		||||
 | 
			
		||||
    if (application_close_target != AppletSlot::Error) {
 | 
			
		||||
        active_slot = application_close_target;
 | 
			
		||||
        // If exiting to the home menu and it is not loaded, exit to game list.
 | 
			
		||||
        if (application_close_target == AppletSlot::HomeMenu &&
 | 
			
		||||
            !GetAppletSlot(application_close_target)->registered) {
 | 
			
		||||
            system.RequestShutdown();
 | 
			
		||||
        } else {
 | 
			
		||||
            active_slot = application_close_target;
 | 
			
		||||
 | 
			
		||||
        CancelAndSendParameter({
 | 
			
		||||
            .sender_id = AppletId::Application,
 | 
			
		||||
            .destination_id = GetAppletSlot(application_close_target)->applet_id,
 | 
			
		||||
            .signal = SignalType::WakeupByExit,
 | 
			
		||||
            .object = std::move(object),
 | 
			
		||||
            .buffer = buffer,
 | 
			
		||||
        });
 | 
			
		||||
            CancelAndSendParameter({
 | 
			
		||||
                .sender_id = AppletId::Application,
 | 
			
		||||
                .destination_id = GetAppletSlot(application_close_target)->applet_id,
 | 
			
		||||
                .signal = SignalType::WakeupByExit,
 | 
			
		||||
                .object = std::move(object),
 | 
			
		||||
                .buffer = buffer,
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // TODO: Terminate the application process.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue