mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Addressed issues
This commit is contained in:
		
							parent
							
								
									192f1f7ebe
								
							
						
					
					
						commit
						c2146c4eef
					
				@ -1,4 +1,4 @@
 | 
				
			|||||||
// Copyright 2018 yuzu emulator team
 | 
					// Copyright 2019 yuzu emulator team
 | 
				
			||||||
// Licensed under GPLv2 or any later version
 | 
					// Licensed under GPLv2 or any later version
 | 
				
			||||||
// Refer to the license.txt file included.
 | 
					// Refer to the license.txt file included.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -9,4 +9,5 @@
 | 
				
			|||||||
namespace Service::Friend {
 | 
					namespace Service::Friend {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
constexpr ResultCode ERR_NO_NOTIFICATIONS{ErrorModule::Account, 15};
 | 
					constexpr ResultCode ERR_NO_NOTIFICATIONS{ErrorModule::Account, 15};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -135,15 +135,13 @@ private:
 | 
				
			|||||||
        IPC::ResponseBuilder rb{ctx, 2, 1};
 | 
					        IPC::ResponseBuilder rb{ctx, 2, 1};
 | 
				
			||||||
        rb.Push(RESULT_SUCCESS);
 | 
					        rb.Push(RESULT_SUCCESS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (is_event_created) {
 | 
					        if (!is_event_created) {
 | 
				
			||||||
            rb.PushCopyObjects(notification_event.readable);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            auto& kernel = Core::System::GetInstance().Kernel();
 | 
					            auto& kernel = Core::System::GetInstance().Kernel();
 | 
				
			||||||
            notification_event = Kernel::WritableEvent::CreateEventPair(
 | 
					            notification_event = Kernel::WritableEvent::CreateEventPair(
 | 
				
			||||||
                kernel, Kernel::ResetType::Manual, "INotificationService:NotifyEvent");
 | 
					                kernel, Kernel::ResetType::Manual, "INotificationService:NotifyEvent");
 | 
				
			||||||
            is_event_created = true;
 | 
					            is_event_created = true;
 | 
				
			||||||
            rb.PushCopyObjects(notification_event.readable);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        rb.PushCopyObjects(notification_event.readable);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void Clear(Kernel::HLERequestContext& ctx) {
 | 
					    void Clear(Kernel::HLERequestContext& ctx) {
 | 
				
			||||||
@ -151,8 +149,7 @@ private:
 | 
				
			|||||||
        while (!notifications.empty()) {
 | 
					        while (!notifications.empty()) {
 | 
				
			||||||
            notifications.pop();
 | 
					            notifications.pop();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        states.has_received_friend_request = false;
 | 
					        std::memset(&states, 0, sizeof(States));
 | 
				
			||||||
        states.has_updated_friends = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        IPC::ResponseBuilder rb{ctx, 2};
 | 
					        IPC::ResponseBuilder rb{ctx, 2};
 | 
				
			||||||
        rb.Push(RESULT_SUCCESS);
 | 
					        rb.Push(RESULT_SUCCESS);
 | 
				
			||||||
@ -167,9 +164,8 @@ private:
 | 
				
			|||||||
            rb.Push(ERR_NO_NOTIFICATIONS);
 | 
					            rb.Push(ERR_NO_NOTIFICATIONS);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        IPC::ResponseBuilder rb{ctx, 6};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        auto notification = notifications.front();
 | 
					        const auto notification = notifications.front();
 | 
				
			||||||
        notifications.pop();
 | 
					        notifications.pop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (notification.notification_type) {
 | 
					        switch (notification.notification_type) {
 | 
				
			||||||
@ -185,11 +181,13 @@ private:
 | 
				
			|||||||
                        static_cast<u32>(notification.notification_type));
 | 
					                        static_cast<u32>(notification.notification_type));
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        IPC::ResponseBuilder rb{ctx, 6};
 | 
				
			||||||
        rb.Push(RESULT_SUCCESS);
 | 
					        rb.Push(RESULT_SUCCESS);
 | 
				
			||||||
        rb.PushRaw<SizedNotificationInfo>(notification);
 | 
					        rb.PushRaw<SizedNotificationInfo>(notification);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    enum class NotificationTypes : u32_le {
 | 
					    enum class NotificationTypes : u32 {
 | 
				
			||||||
        HasUpdatedFriendsList = 0x65,
 | 
					        HasUpdatedFriendsList = 0x65,
 | 
				
			||||||
        HasReceivedFriendRequest = 0x1
 | 
					        HasReceivedFriendRequest = 0x1
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@ -208,10 +206,10 @@ private:
 | 
				
			|||||||
        bool has_received_friend_request;
 | 
					        bool has_received_friend_request;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Common::UUID uuid{};
 | 
					    Common::UUID uuid;
 | 
				
			||||||
    bool is_event_created = false;
 | 
					    bool is_event_created = false;
 | 
				
			||||||
    Kernel::EventPair notification_event;
 | 
					    Kernel::EventPair notification_event;
 | 
				
			||||||
    std::queue<SizedNotificationInfo> notifications{};
 | 
					    std::queue<SizedNotificationInfo> notifications;
 | 
				
			||||||
    States states{};
 | 
					    States states{};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -226,10 +224,11 @@ void Module::Interface::CreateNotificationService(Kernel::HLERequestContext& ctx
 | 
				
			|||||||
    IPC::RequestParser rp{ctx};
 | 
					    IPC::RequestParser rp{ctx};
 | 
				
			||||||
    auto uuid = rp.PopRaw<Common::UUID>();
 | 
					    auto uuid = rp.PopRaw<Common::UUID>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    LOG_DEBUG(Service_ACC, "called, uuid={}", uuid.Format());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
					    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
				
			||||||
    rb.Push(RESULT_SUCCESS);
 | 
					    rb.Push(RESULT_SUCCESS);
 | 
				
			||||||
    rb.PushIpcInterface<INotificationService>(uuid);
 | 
					    rb.PushIpcInterface<INotificationService>(uuid);
 | 
				
			||||||
    LOG_DEBUG(Service_ACC, "called");
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
 | 
					Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user