summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Debugger/NetworkWidget.cpp
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2023-04-17 04:38:48 +0200
committerAdmiral H. Curtiss <pikachu025@gmail.com>2023-04-18 01:24:10 +0200
commitb2ee95805864168e38fe79845ba071d6fd60868e (patch)
treede5aa88eb71c555af184d9cd32175d1b84e4581d /Source/Core/DolphinQt/Debugger/NetworkWidget.cpp
parent37a30a5e506107aac7ea1c2d6d215edde41019c2 (diff)
IOS/WiiSockMan: Move instance to IOS Kernel.
Diffstat (limited to 'Source/Core/DolphinQt/Debugger/NetworkWidget.cpp')
-rw-r--r--Source/Core/DolphinQt/Debugger/NetworkWidget.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/Source/Core/DolphinQt/Debugger/NetworkWidget.cpp b/Source/Core/DolphinQt/Debugger/NetworkWidget.cpp
index 6439a061ba..b9504e64ff 100644
--- a/Source/Core/DolphinQt/Debugger/NetworkWidget.cpp
+++ b/Source/Core/DolphinQt/Debugger/NetworkWidget.cpp
@@ -24,8 +24,10 @@
#include "Common/FileUtil.h"
#include "Core/Config/MainSettings.h"
+#include "Core/Core.h"
#include "Core/IOS/Network/SSL.h"
#include "Core/IOS/Network/Socket.h"
+#include "Core/System.h"
#include "DolphinQt/Host.h"
#include "DolphinQt/Settings.h"
@@ -95,9 +97,8 @@ QTableWidgetItem* GetSocketState(s32 host_fd)
return new QTableWidgetItem(QTableWidget::tr("Unbound"));
}
-QTableWidgetItem* GetSocketBlocking(s32 wii_fd)
+static QTableWidgetItem* GetSocketBlocking(const IOS::HLE::WiiSockMan& socket_manager, s32 wii_fd)
{
- const auto& socket_manager = IOS::HLE::WiiSockMan::GetInstance();
if (socket_manager.GetHostSocket(wii_fd) < 0)
return new QTableWidgetItem();
const bool is_blocking = socket_manager.IsSocketBlocking(wii_fd);
@@ -238,16 +239,27 @@ void NetworkWidget::Update()
if (!isVisible())
return;
+ // needed because there's a race condition on the IOS instance otherwise
+ Core::CPUThreadGuard guard(Core::System::GetInstance());
+
+ auto* ios = IOS::HLE::GetIOS();
+ if (!ios)
+ return;
+
+ auto socket_manager = ios->GetSocketManager();
+ if (!socket_manager)
+ return;
+
m_socket_table->setRowCount(0);
for (u32 wii_fd = 0; wii_fd < IOS::HLE::WII_SOCKET_FD_MAX; wii_fd++)
{
m_socket_table->insertRow(wii_fd);
- const s32 host_fd = IOS::HLE::WiiSockMan::GetInstance().GetHostSocket(wii_fd);
+ const s32 host_fd = socket_manager->GetHostSocket(wii_fd);
m_socket_table->setItem(wii_fd, 0, new QTableWidgetItem(QString::number(wii_fd)));
m_socket_table->setItem(wii_fd, 1, GetSocketDomain(host_fd));
m_socket_table->setItem(wii_fd, 2, GetSocketType(host_fd));
m_socket_table->setItem(wii_fd, 3, GetSocketState(host_fd));
- m_socket_table->setItem(wii_fd, 4, GetSocketBlocking(wii_fd));
+ m_socket_table->setItem(wii_fd, 4, GetSocketBlocking(*socket_manager, wii_fd));
m_socket_table->setItem(wii_fd, 5, GetSocketName(host_fd));
}
m_socket_table->resizeColumnsToContents();