diff options
| -rw-r--r-- | .travis.yml | 2 | ||||
| -rw-r--r-- | appveyor.yml | 13 | ||||
| -rw-r--r-- | src/core/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/core/hle/ipc.h | 4 | ||||
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 34 | ||||
| -rw-r--r-- | src/core/hle/kernel/hle_ipc.h | 6 | ||||
| -rw-r--r-- | src/core/hle/service/am/applet_oe.cpp | 86 | ||||
| -rw-r--r-- | src/core/hle/service/lm/lm.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/bsd_u.cpp | 67 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/bsd_u.h | 29 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/sfdnsres.h | 22 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/sockets.cpp | 18 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/sockets.h | 16 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure.ui | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input.ui | 132 | ||||
| -rw-r--r-- | src/yuzu/debugger/profiler.cpp | 5 | ||||
| -rw-r--r-- | src/yuzu/game_list.cpp | 5 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 46 | ||||
| -rw-r--r-- | src/yuzu/util/spinbox.cpp | 2 |
22 files changed, 402 insertions, 109 deletions
diff --git a/.travis.yml b/.travis.yml index 7db6f297e..f94a5c75e 100644 --- a/.travis.yml +++ b/.travis.yml | |||
| @@ -24,7 +24,7 @@ matrix: | |||
| 24 | - os: osx | 24 | - os: osx |
| 25 | env: NAME="macos build" | 25 | env: NAME="macos build" |
| 26 | sudo: false | 26 | sudo: false |
| 27 | osx_image: xcode7.3 | 27 | osx_image: xcode9.2 |
| 28 | install: "./.travis/macos/deps.sh" | 28 | install: "./.travis/macos/deps.sh" |
| 29 | script: "./.travis/macos/build.sh" | 29 | script: "./.travis/macos/build.sh" |
| 30 | after_success: "./.travis/macos/upload.sh" | 30 | after_success: "./.travis/macos/upload.sh" |
diff --git a/appveyor.yml b/appveyor.yml index 77d8c8554..fe6b649f5 100644 --- a/appveyor.yml +++ b/appveyor.yml | |||
| @@ -13,8 +13,8 @@ environment: | |||
| 13 | # Tell msys2 to inherit the current directory when starting the shell | 13 | # Tell msys2 to inherit the current directory when starting the shell |
| 14 | CHERE_INVOKING: 1 | 14 | CHERE_INVOKING: 1 |
| 15 | matrix: | 15 | matrix: |
| 16 | - BUILD_TYPE: mingw | ||
| 17 | - BUILD_TYPE: msvc | 16 | - BUILD_TYPE: msvc |
| 17 | - BUILD_TYPE: mingw | ||
| 18 | 18 | ||
| 19 | platform: | 19 | platform: |
| 20 | - x64 | 20 | - x64 |
| @@ -80,12 +80,19 @@ after_build: | |||
| 80 | $env:BUILD_SYMBOLS = $MSVC_BUILD_PDB | 80 | $env:BUILD_SYMBOLS = $MSVC_BUILD_PDB |
| 81 | $env:BUILD_UPDATE = $MSVC_SEVENZIP | 81 | $env:BUILD_UPDATE = $MSVC_SEVENZIP |
| 82 | 82 | ||
| 83 | $BUILD_DIR = ".\msvc_build\bin\Release" | ||
| 84 | |||
| 85 | # Make a debug symbol upload | ||
| 83 | mkdir pdb | 86 | mkdir pdb |
| 84 | Get-ChildItem ".\msvc_build\bin\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb | 87 | Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb |
| 85 | 7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb | 88 | 7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb |
| 89 | rm "$BUILD_DIR\*.pdb" | ||
| 86 | 90 | ||
| 87 | mkdir $RELEASE_DIST | 91 | mkdir $RELEASE_DIST |
| 88 | Get-ChildItem ".\msvc_build\bin\" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST | 92 | # get rid of extra exes by copying everything over, then deleting all the exes, then copying just the exes we want |
| 93 | Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse | ||
| 94 | rm "$RELEASE_DIST\*.exe" | ||
| 95 | Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST | ||
| 89 | Copy-Item .\license.txt -Destination $RELEASE_DIST | 96 | Copy-Item .\license.txt -Destination $RELEASE_DIST |
| 90 | Copy-Item .\README.md -Destination $RELEASE_DIST | 97 | Copy-Item .\README.md -Destination $RELEASE_DIST |
| 91 | 7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* | 98 | 7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* |
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 98fd2a4cc..57f578bae 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -128,6 +128,11 @@ add_library(core STATIC | |||
| 128 | hle/service/sm/controller.h | 128 | hle/service/sm/controller.h |
| 129 | hle/service/sm/sm.cpp | 129 | hle/service/sm/sm.cpp |
| 130 | hle/service/sm/sm.h | 130 | hle/service/sm/sm.h |
| 131 | hle/service/sockets/bsd_u.cpp | ||
| 132 | hle/service/sockets/bsd_u.h | ||
| 133 | hle/service/sockets/sfdnsres.h | ||
| 134 | hle/service/sockets/sockets.cpp | ||
| 135 | hle/service/sockets/sockets.h | ||
| 131 | hle/service/time/time.cpp | 136 | hle/service/time/time.cpp |
| 132 | hle/service/time/time.h | 137 | hle/service/time/time.h |
| 133 | hle/service/time/time_s.cpp | 138 | hle/service/time/time_s.cpp |
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h index 1840fac12..0dcaede67 100644 --- a/src/core/hle/ipc.h +++ b/src/core/hle/ipc.h | |||
| @@ -133,6 +133,10 @@ struct BufferDescriptorC { | |||
| 133 | address |= static_cast<VAddr>(address_bits_32_47) << 32; | 133 | address |= static_cast<VAddr>(address_bits_32_47) << 32; |
| 134 | return address; | 134 | return address; |
| 135 | } | 135 | } |
| 136 | |||
| 137 | u64 Size() const { | ||
| 138 | return static_cast<u64>(size); | ||
| 139 | } | ||
| 136 | }; | 140 | }; |
| 137 | static_assert(sizeof(BufferDescriptorC) == 8, "BufferDescriptorC size is incorrect"); | 141 | static_assert(sizeof(BufferDescriptorC) == 8, "BufferDescriptorC size is incorrect"); |
| 138 | 142 | ||
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 25530a3c8..4c9b0de28 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h | |||
| @@ -54,6 +54,10 @@ public: | |||
| 54 | unsigned GetCurrentOffset() const { | 54 | unsigned GetCurrentOffset() const { |
| 55 | return static_cast<unsigned>(index); | 55 | return static_cast<unsigned>(index); |
| 56 | } | 56 | } |
| 57 | |||
| 58 | void SetCurrentOffset(unsigned offset) { | ||
| 59 | index = static_cast<ptrdiff_t>(offset); | ||
| 60 | } | ||
| 57 | }; | 61 | }; |
| 58 | 62 | ||
| 59 | class RequestBuilder : public RequestHelperBase { | 63 | class RequestBuilder : public RequestHelperBase { |
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index ac62a0d5a..73bb6a8be 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp | |||
| @@ -81,13 +81,8 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) { | |||
| 81 | for (unsigned i = 0; i < command_header->num_buf_w_descriptors; ++i) { | 81 | for (unsigned i = 0; i < command_header->num_buf_w_descriptors; ++i) { |
| 82 | buffer_w_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); | 82 | buffer_w_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorABW>()); |
| 83 | } | 83 | } |
| 84 | if (command_header->buf_c_descriptor_flags != | 84 | |
| 85 | IPC::CommandHeader::BufferDescriptorCFlag::Disabled) { | 85 | buffer_c_offset = rp.GetCurrentOffset() + command_header->data_size; |
| 86 | if (command_header->buf_c_descriptor_flags != | ||
| 87 | IPC::CommandHeader::BufferDescriptorCFlag::OneDescriptor) { | ||
| 88 | UNIMPLEMENTED(); | ||
| 89 | } | ||
| 90 | } | ||
| 91 | 86 | ||
| 92 | // Padding to align to 16 bytes | 87 | // Padding to align to 16 bytes |
| 93 | rp.AlignWithPadding(); | 88 | rp.AlignWithPadding(); |
| @@ -117,6 +112,31 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) { | |||
| 117 | ASSERT(data_payload_header->magic == Common::MakeMagic('S', 'F', 'C', 'O')); | 112 | ASSERT(data_payload_header->magic == Common::MakeMagic('S', 'F', 'C', 'O')); |
| 118 | } | 113 | } |
| 119 | 114 | ||
| 115 | rp.SetCurrentOffset(buffer_c_offset); | ||
| 116 | |||
| 117 | // For Inline buffers, the response data is written directly to buffer_c_offset | ||
| 118 | // and in this case we don't have any BufferDescriptorC on the request. | ||
| 119 | if (command_header->buf_c_descriptor_flags > | ||
| 120 | IPC::CommandHeader::BufferDescriptorCFlag::InlineDescriptor) { | ||
| 121 | if (command_header->buf_c_descriptor_flags == | ||
| 122 | IPC::CommandHeader::BufferDescriptorCFlag::OneDescriptor) { | ||
| 123 | buffer_c_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorC>()); | ||
| 124 | } else { | ||
| 125 | unsigned num_buf_c_descriptors = | ||
| 126 | static_cast<unsigned>(command_header->buf_c_descriptor_flags.Value()) - 2; | ||
| 127 | |||
| 128 | // This is used to detect possible underflows, in case something is broken | ||
| 129 | // with the two ifs above and the flags value is == 0 || == 1. | ||
| 130 | ASSERT(num_buf_c_descriptors < 14); | ||
| 131 | |||
| 132 | for (unsigned i = 0; i < num_buf_c_descriptors; ++i) { | ||
| 133 | buffer_c_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorC>()); | ||
| 134 | } | ||
| 135 | } | ||
| 136 | } | ||
| 137 | |||
| 138 | rp.SetCurrentOffset(data_payload_offset); | ||
| 139 | |||
| 120 | command = rp.Pop<u32_le>(); | 140 | command = rp.Pop<u32_le>(); |
| 121 | rp.Skip(1, false); // The command is actually an u64, but we don't use the high part. | 141 | rp.Skip(1, false); // The command is actually an u64, but we don't use the high part. |
| 122 | } | 142 | } |
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h index 6dceb766d..80fa48d7f 100644 --- a/src/core/hle/kernel/hle_ipc.h +++ b/src/core/hle/kernel/hle_ipc.h | |||
| @@ -143,6 +143,10 @@ public: | |||
| 143 | return buffer_b_desciptors; | 143 | return buffer_b_desciptors; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | const std::vector<IPC::BufferDescriptorC>& BufferDescriptorC() const { | ||
| 147 | return buffer_c_desciptors; | ||
| 148 | } | ||
| 149 | |||
| 146 | const std::unique_ptr<IPC::DomainMessageHeader>& GetDomainMessageHeader() const { | 150 | const std::unique_ptr<IPC::DomainMessageHeader>& GetDomainMessageHeader() const { |
| 147 | return domain_message_header; | 151 | return domain_message_header; |
| 148 | } | 152 | } |
| @@ -200,8 +204,10 @@ private: | |||
| 200 | std::vector<IPC::BufferDescriptorABW> buffer_a_desciptors; | 204 | std::vector<IPC::BufferDescriptorABW> buffer_a_desciptors; |
| 201 | std::vector<IPC::BufferDescriptorABW> buffer_b_desciptors; | 205 | std::vector<IPC::BufferDescriptorABW> buffer_b_desciptors; |
| 202 | std::vector<IPC::BufferDescriptorABW> buffer_w_desciptors; | 206 | std::vector<IPC::BufferDescriptorABW> buffer_w_desciptors; |
| 207 | std::vector<IPC::BufferDescriptorC> buffer_c_desciptors; | ||
| 203 | 208 | ||
| 204 | unsigned data_payload_offset{}; | 209 | unsigned data_payload_offset{}; |
| 210 | unsigned buffer_c_offset{}; | ||
| 205 | u32_le command{}; | 211 | u32_le command{}; |
| 206 | }; | 212 | }; |
| 207 | 213 | ||
diff --git a/src/core/hle/service/am/applet_oe.cpp b/src/core/hle/service/am/applet_oe.cpp index b360e7e5f..0d7f9c03d 100644 --- a/src/core/hle/service/am/applet_oe.cpp +++ b/src/core/hle/service/am/applet_oe.cpp | |||
| @@ -201,10 +201,76 @@ private: | |||
| 201 | Kernel::SharedPtr<Kernel::Event> event; | 201 | Kernel::SharedPtr<Kernel::Event> event; |
| 202 | }; | 202 | }; |
| 203 | 203 | ||
| 204 | class IStorageAccessor final : public ServiceFramework<IStorageAccessor> { | ||
| 205 | public: | ||
| 206 | explicit IStorageAccessor(std::vector<u8> buffer) | ||
| 207 | : ServiceFramework("IStorageAccessor"), buffer(std::move(buffer)) { | ||
| 208 | static const FunctionInfo functions[] = { | ||
| 209 | {0, &IStorageAccessor::GetSize, "GetSize"}, | ||
| 210 | {11, &IStorageAccessor::Read, "Read"}, | ||
| 211 | }; | ||
| 212 | RegisterHandlers(functions); | ||
| 213 | } | ||
| 214 | |||
| 215 | private: | ||
| 216 | std::vector<u8> buffer; | ||
| 217 | |||
| 218 | void GetSize(Kernel::HLERequestContext& ctx) { | ||
| 219 | IPC::RequestBuilder rb{ctx, 4}; | ||
| 220 | |||
| 221 | rb.Push(RESULT_SUCCESS); | ||
| 222 | rb.Push(static_cast<u64>(buffer.size())); | ||
| 223 | |||
| 224 | LOG_DEBUG(Service, "called"); | ||
| 225 | } | ||
| 226 | |||
| 227 | void Read(Kernel::HLERequestContext& ctx) { | ||
| 228 | IPC::RequestParser rp{ctx}; | ||
| 229 | |||
| 230 | u64 offset = rp.Pop<u64>(); | ||
| 231 | |||
| 232 | const auto& output_buffer = ctx.BufferDescriptorC()[0]; | ||
| 233 | |||
| 234 | ASSERT(offset + output_buffer.Size() <= buffer.size()); | ||
| 235 | |||
| 236 | Memory::WriteBlock(output_buffer.Address(), buffer.data() + offset, output_buffer.Size()); | ||
| 237 | |||
| 238 | IPC::RequestBuilder rb{ctx, 2}; | ||
| 239 | |||
| 240 | rb.Push(RESULT_SUCCESS); | ||
| 241 | |||
| 242 | LOG_DEBUG(Service, "called"); | ||
| 243 | } | ||
| 244 | }; | ||
| 245 | |||
| 246 | class IStorage final : public ServiceFramework<IStorage> { | ||
| 247 | public: | ||
| 248 | explicit IStorage(std::vector<u8> buffer) | ||
| 249 | : ServiceFramework("IStorage"), buffer(std::move(buffer)) { | ||
| 250 | static const FunctionInfo functions[] = { | ||
| 251 | {0, &IStorage::Open, "Open"}, | ||
| 252 | }; | ||
| 253 | RegisterHandlers(functions); | ||
| 254 | } | ||
| 255 | |||
| 256 | private: | ||
| 257 | std::vector<u8> buffer; | ||
| 258 | |||
| 259 | void Open(Kernel::HLERequestContext& ctx) { | ||
| 260 | IPC::RequestBuilder rb{ctx, 2, 0, 0, 1}; | ||
| 261 | |||
| 262 | rb.Push(RESULT_SUCCESS); | ||
| 263 | rb.PushIpcInterface<AM::IStorageAccessor>(buffer); | ||
| 264 | |||
| 265 | LOG_DEBUG(Service, "called"); | ||
| 266 | } | ||
| 267 | }; | ||
| 268 | |||
| 204 | class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> { | 269 | class IApplicationFunctions final : public ServiceFramework<IApplicationFunctions> { |
| 205 | public: | 270 | public: |
| 206 | IApplicationFunctions() : ServiceFramework("IApplicationFunctions") { | 271 | IApplicationFunctions() : ServiceFramework("IApplicationFunctions") { |
| 207 | static const FunctionInfo functions[] = { | 272 | static const FunctionInfo functions[] = { |
| 273 | {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"}, | ||
| 208 | {22, &IApplicationFunctions::SetTerminateResult, "SetTerminateResult"}, | 274 | {22, &IApplicationFunctions::SetTerminateResult, "SetTerminateResult"}, |
| 209 | {66, &IApplicationFunctions::InitializeGamePlayRecording, | 275 | {66, &IApplicationFunctions::InitializeGamePlayRecording, |
| 210 | "InitializeGamePlayRecording"}, | 276 | "InitializeGamePlayRecording"}, |
| @@ -215,6 +281,26 @@ public: | |||
| 215 | } | 281 | } |
| 216 | 282 | ||
| 217 | private: | 283 | private: |
| 284 | void PopLaunchParameter(Kernel::HLERequestContext& ctx) { | ||
| 285 | constexpr u8 data[0x88] = { | ||
| 286 | 0xca, 0x97, 0x94, 0xc7, // Magic | ||
| 287 | 1, 0, 0, 0, // IsAccountSelected (bool) | ||
| 288 | 1, 0, 0, 0, // User Id (word 0) | ||
| 289 | 0, 0, 0, 0, // User Id (word 1) | ||
| 290 | 0, 0, 0, 0, // User Id (word 2) | ||
| 291 | 0, 0, 0, 0 // User Id (word 3) | ||
| 292 | }; | ||
| 293 | |||
| 294 | std::vector<u8> buffer(data, data + sizeof(data)); | ||
| 295 | |||
| 296 | IPC::RequestBuilder rb{ctx, 2, 0, 0, 1}; | ||
| 297 | |||
| 298 | rb.Push(RESULT_SUCCESS); | ||
| 299 | rb.PushIpcInterface<AM::IStorage>(buffer); | ||
| 300 | |||
| 301 | LOG_DEBUG(Service, "called"); | ||
| 302 | } | ||
| 303 | |||
| 218 | void SetTerminateResult(Kernel::HLERequestContext& ctx) { | 304 | void SetTerminateResult(Kernel::HLERequestContext& ctx) { |
| 219 | // Takes an input u32 Result, no output. | 305 | // Takes an input u32 Result, no output. |
| 220 | // For example, in some cases official apps use this with error 0x2A2 then uses svcBreak. | 306 | // For example, in some cases official apps use this with error 0x2A2 then uses svcBreak. |
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp index 2d0d2fb65..13c9ee3d3 100644 --- a/src/core/hle/service/lm/lm.cpp +++ b/src/core/hle/service/lm/lm.cpp | |||
| @@ -47,6 +47,7 @@ private: | |||
| 47 | 47 | ||
| 48 | /// Log field type | 48 | /// Log field type |
| 49 | enum class Field : u8 { | 49 | enum class Field : u8 { |
| 50 | Skip = 1, | ||
| 50 | Message = 2, | 51 | Message = 2, |
| 51 | Line = 3, | 52 | Line = 3, |
| 52 | Filename = 4, | 53 | Filename = 4, |
| @@ -85,6 +86,11 @@ private: | |||
| 85 | while (addr < end_addr) { | 86 | while (addr < end_addr) { |
| 86 | const Field field{static_cast<Field>(Memory::Read8(addr++))}; | 87 | const Field field{static_cast<Field>(Memory::Read8(addr++))}; |
| 87 | size_t length{Memory::Read8(addr++)}; | 88 | size_t length{Memory::Read8(addr++)}; |
| 89 | |||
| 90 | if (static_cast<Field>(Memory::Read8(addr)) == Field::Skip) { | ||
| 91 | ++addr; | ||
| 92 | } | ||
| 93 | |||
| 88 | switch (field) { | 94 | switch (field) { |
| 89 | case Field::Message: | 95 | case Field::Message: |
| 90 | message = Memory::ReadCString(addr, length); | 96 | message = Memory::ReadCString(addr, length); |
| @@ -99,6 +105,7 @@ private: | |||
| 99 | function = Memory::ReadCString(addr, length); | 105 | function = Memory::ReadCString(addr, length); |
| 100 | break; | 106 | break; |
| 101 | } | 107 | } |
| 108 | |||
| 102 | addr += length; | 109 | addr += length; |
| 103 | } | 110 | } |
| 104 | 111 | ||
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index fe76b381c..9a49d9e9c 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include "core/hle/service/service.h" | 26 | #include "core/hle/service/service.h" |
| 27 | #include "core/hle/service/sm/controller.h" | 27 | #include "core/hle/service/sm/controller.h" |
| 28 | #include "core/hle/service/sm/sm.h" | 28 | #include "core/hle/service/sm/sm.h" |
| 29 | #include "core/hle/service/sockets/sockets.h" | ||
| 29 | #include "core/hle/service/time/time.h" | 30 | #include "core/hle/service/time/time.h" |
| 30 | #include "core/hle/service/vi/vi.h" | 31 | #include "core/hle/service/vi/vi.h" |
| 31 | 32 | ||
| @@ -174,6 +175,7 @@ void Init() { | |||
| 174 | LM::InstallInterfaces(*SM::g_service_manager); | 175 | LM::InstallInterfaces(*SM::g_service_manager); |
| 175 | Nvidia::InstallInterfaces(*SM::g_service_manager); | 176 | Nvidia::InstallInterfaces(*SM::g_service_manager); |
| 176 | PCTL::InstallInterfaces(*SM::g_service_manager); | 177 | PCTL::InstallInterfaces(*SM::g_service_manager); |
| 178 | Sockets::InstallInterfaces(*SM::g_service_manager); | ||
| 177 | Time::InstallInterfaces(*SM::g_service_manager); | 179 | Time::InstallInterfaces(*SM::g_service_manager); |
| 178 | VI::InstallInterfaces(*SM::g_service_manager); | 180 | VI::InstallInterfaces(*SM::g_service_manager); |
| 179 | 181 | ||
diff --git a/src/core/hle/service/sockets/bsd_u.cpp b/src/core/hle/service/sockets/bsd_u.cpp new file mode 100644 index 000000000..a819acc96 --- /dev/null +++ b/src/core/hle/service/sockets/bsd_u.cpp | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/hle/ipc_helpers.h" | ||
| 6 | #include "core/hle/service/sockets/bsd_u.h" | ||
| 7 | |||
| 8 | namespace Service { | ||
| 9 | namespace Sockets { | ||
| 10 | |||
| 11 | void BSD_U::RegisterClient(Kernel::HLERequestContext& ctx) { | ||
| 12 | LOG_WARNING(Service, "(STUBBED) called"); | ||
| 13 | |||
| 14 | IPC::RequestBuilder rb{ctx, 3}; | ||
| 15 | |||
| 16 | rb.Push(RESULT_SUCCESS); | ||
| 17 | rb.Push<u32>(0); // bsd errno | ||
| 18 | } | ||
| 19 | |||
| 20 | void BSD_U::Socket(Kernel::HLERequestContext& ctx) { | ||
| 21 | IPC::RequestParser rp{ctx}; | ||
| 22 | |||
| 23 | u32 domain = rp.Pop<u32>(); | ||
| 24 | u32 type = rp.Pop<u32>(); | ||
| 25 | u32 protocol = rp.Pop<u32>(); | ||
| 26 | |||
| 27 | LOG_WARNING(Service, "(STUBBED) called domain=%u type=%u protocol=%u", domain, type, protocol); | ||
| 28 | |||
| 29 | u32 fd = next_fd++; | ||
| 30 | |||
| 31 | IPC::RequestBuilder rb{ctx, 4}; | ||
| 32 | |||
| 33 | rb.Push(RESULT_SUCCESS); | ||
| 34 | rb.Push<u32>(fd); | ||
| 35 | rb.Push<u32>(0); // bsd errno | ||
| 36 | } | ||
| 37 | |||
| 38 | void BSD_U::Connect(Kernel::HLERequestContext& ctx) { | ||
| 39 | LOG_WARNING(Service, "(STUBBED) called"); | ||
| 40 | |||
| 41 | IPC::RequestBuilder rb{ctx, 4}; | ||
| 42 | |||
| 43 | rb.Push(RESULT_SUCCESS); | ||
| 44 | rb.Push<u32>(0); // ret | ||
| 45 | rb.Push<u32>(0); // bsd errno | ||
| 46 | } | ||
| 47 | |||
| 48 | void BSD_U::SendTo(Kernel::HLERequestContext& ctx) { | ||
| 49 | LOG_WARNING(Service, "(STUBBED) called"); | ||
| 50 | |||
| 51 | IPC::RequestBuilder rb{ctx, 4}; | ||
| 52 | |||
| 53 | rb.Push(RESULT_SUCCESS); | ||
| 54 | rb.Push<u32>(0); // ret | ||
| 55 | rb.Push<u32>(0); // bsd errno | ||
| 56 | } | ||
| 57 | |||
| 58 | BSD_U::BSD_U() : ServiceFramework("bsd:u") { | ||
| 59 | static const FunctionInfo functions[] = {{0, &BSD_U::RegisterClient, "RegisterClient"}, | ||
| 60 | {2, &BSD_U::Socket, "Socket"}, | ||
| 61 | {11, &BSD_U::SendTo, "SendTo"}, | ||
| 62 | {14, &BSD_U::Connect, "Connect"}}; | ||
| 63 | RegisterHandlers(functions); | ||
| 64 | } | ||
| 65 | |||
| 66 | } // namespace Sockets | ||
| 67 | } // namespace Service | ||
diff --git a/src/core/hle/service/sockets/bsd_u.h b/src/core/hle/service/sockets/bsd_u.h new file mode 100644 index 000000000..1fe96d850 --- /dev/null +++ b/src/core/hle/service/sockets/bsd_u.h | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace Sockets { | ||
| 12 | |||
| 13 | class BSD_U final : public ServiceFramework<BSD_U> { | ||
| 14 | public: | ||
| 15 | BSD_U(); | ||
| 16 | ~BSD_U() = default; | ||
| 17 | |||
| 18 | private: | ||
| 19 | void RegisterClient(Kernel::HLERequestContext& ctx); | ||
| 20 | void Socket(Kernel::HLERequestContext& ctx); | ||
| 21 | void Connect(Kernel::HLERequestContext& ctx); | ||
| 22 | void SendTo(Kernel::HLERequestContext& ctx); | ||
| 23 | |||
| 24 | /// Id to use for the next open file descriptor. | ||
| 25 | u32 next_fd = 1; | ||
| 26 | }; | ||
| 27 | |||
| 28 | } // namespace Sockets | ||
| 29 | } // namespace Service | ||
diff --git a/src/core/hle/service/sockets/sfdnsres.h b/src/core/hle/service/sockets/sfdnsres.h new file mode 100644 index 000000000..32a3ac8c5 --- /dev/null +++ b/src/core/hle/service/sockets/sfdnsres.h | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace Sockets { | ||
| 12 | |||
| 13 | class SFDNSRES final : public ServiceFramework<SFDNSRES> { | ||
| 14 | public: | ||
| 15 | SFDNSRES() : ServiceFramework("sfdnsres") {} | ||
| 16 | ~SFDNSRES() = default; | ||
| 17 | |||
| 18 | private: | ||
| 19 | }; | ||
| 20 | |||
| 21 | } // namespace Sockets | ||
| 22 | } // namespace Service | ||
diff --git a/src/core/hle/service/sockets/sockets.cpp b/src/core/hle/service/sockets/sockets.cpp new file mode 100644 index 000000000..f1396eaa1 --- /dev/null +++ b/src/core/hle/service/sockets/sockets.cpp | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/hle/service/sockets/bsd_u.h" | ||
| 6 | #include "core/hle/service/sockets/sfdnsres.h" | ||
| 7 | #include "core/hle/service/sockets/sockets.h" | ||
| 8 | |||
| 9 | namespace Service { | ||
| 10 | namespace Sockets { | ||
| 11 | |||
| 12 | void InstallInterfaces(SM::ServiceManager& service_manager) { | ||
| 13 | std::make_shared<BSD_U>()->InstallAsService(service_manager); | ||
| 14 | std::make_shared<SFDNSRES>()->InstallAsService(service_manager); | ||
| 15 | } | ||
| 16 | |||
| 17 | } // namespace Sockets | ||
| 18 | } // namespace Service | ||
diff --git a/src/core/hle/service/sockets/sockets.h b/src/core/hle/service/sockets/sockets.h new file mode 100644 index 000000000..7e89c8d2c --- /dev/null +++ b/src/core/hle/service/sockets/sockets.h | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Service { | ||
| 10 | namespace Sockets { | ||
| 11 | |||
| 12 | /// Registers all Sockets services with the specified service manager. | ||
| 13 | void InstallInterfaces(SM::ServiceManager& service_manager); | ||
| 14 | |||
| 15 | } // namespace Sockets | ||
| 16 | } // namespace Service | ||
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index b9dc4943a..469988d63 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp | |||
| @@ -289,6 +289,6 @@ void GRenderWindow::showEvent(QShowEvent* event) { | |||
| 289 | QWidget::showEvent(event); | 289 | QWidget::showEvent(event); |
| 290 | 290 | ||
| 291 | // windowHandle() is not initialized until the Window is shown, so we connect it here. | 291 | // windowHandle() is not initialized until the Window is shown, so we connect it here. |
| 292 | connect(this->windowHandle(), SIGNAL(screenChanged(QScreen*)), this, | 292 | connect(windowHandle(), &QWindow::screenChanged, this, &GRenderWindow::OnFramebufferSizeChanged, |
| 293 | SLOT(OnFramebufferSizeChanged()), Qt::UniqueConnection); | 293 | Qt::UniqueConnection); |
| 294 | } | 294 | } |
diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index babd583a2..c5303851c 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | <rect> | 6 | <rect> |
| 7 | <x>0</x> | 7 | <x>0</x> |
| 8 | <y>0</y> | 8 | <y>0</y> |
| 9 | <width>740</width> | 9 | <width>461</width> |
| 10 | <height>500</height> | 10 | <height>500</height> |
| 11 | </rect> | 11 | </rect> |
| 12 | </property> | 12 | </property> |
diff --git a/src/yuzu/configuration/configure_input.ui b/src/yuzu/configuration/configure_input.ui index c162ca02c..377b79c77 100644 --- a/src/yuzu/configuration/configure_input.ui +++ b/src/yuzu/configuration/configure_input.ui | |||
| @@ -15,9 +15,9 @@ | |||
| 15 | </property> | 15 | </property> |
| 16 | <layout class="QVBoxLayout" name="verticalLayout_5"> | 16 | <layout class="QVBoxLayout" name="verticalLayout_5"> |
| 17 | <item> | 17 | <item> |
| 18 | <layout class="QGridLayout" name="gridLayout_7"> | 18 | <layout class="QGridLayout" name="buttons"> |
| 19 | <item row="3" column="1"> | 19 | <item row="3" column="1"> |
| 20 | <widget class="QGroupBox" name="faceButtons_6"> | 20 | <widget class="QGroupBox" name="misc"> |
| 21 | <property name="title"> | 21 | <property name="title"> |
| 22 | <string>Misc.</string> | 22 | <string>Misc.</string> |
| 23 | </property> | 23 | </property> |
| @@ -29,9 +29,9 @@ | |||
| 29 | </property> | 29 | </property> |
| 30 | <layout class="QGridLayout" name="gridLayout_6"> | 30 | <layout class="QGridLayout" name="gridLayout_6"> |
| 31 | <item row="0" column="0"> | 31 | <item row="0" column="0"> |
| 32 | <layout class="QVBoxLayout" name="verticalLayout_25"> | 32 | <layout class="QVBoxLayout" name="buttonMiscPlusVerticalLayout"> |
| 33 | <item> | 33 | <item> |
| 34 | <widget class="QLabel" name="label_29"> | 34 | <widget class="QLabel" name="labelPlus"> |
| 35 | <property name="text"> | 35 | <property name="text"> |
| 36 | <string>Plus:</string> | 36 | <string>Plus:</string> |
| 37 | </property> | 37 | </property> |
| @@ -47,9 +47,9 @@ | |||
| 47 | </layout> | 47 | </layout> |
| 48 | </item> | 48 | </item> |
| 49 | <item row="0" column="1"> | 49 | <item row="0" column="1"> |
| 50 | <layout class="QVBoxLayout" name="verticalLayout_26"> | 50 | <layout class="QVBoxLayout" name="buttonMiscMinusVerticalLayout"> |
| 51 | <item> | 51 | <item> |
| 52 | <widget class="QLabel" name="label_30"> | 52 | <widget class="QLabel" name="labelMinus"> |
| 53 | <property name="text"> | 53 | <property name="text"> |
| 54 | <string>Minus:</string> | 54 | <string>Minus:</string> |
| 55 | </property> | 55 | </property> |
| @@ -65,9 +65,9 @@ | |||
| 65 | </layout> | 65 | </layout> |
| 66 | </item> | 66 | </item> |
| 67 | <item row="1" column="0"> | 67 | <item row="1" column="0"> |
| 68 | <layout class="QVBoxLayout" name="verticalLayout_27"> | 68 | <layout class="QVBoxLayout" name="buttonMiscHomeVerticalLayout"> |
| 69 | <item> | 69 | <item> |
| 70 | <widget class="QLabel" name="label_31"> | 70 | <widget class="QLabel" name="labelHome"> |
| 71 | <property name="text"> | 71 | <property name="text"> |
| 72 | <string>Home:</string> | 72 | <string>Home:</string> |
| 73 | </property> | 73 | </property> |
| @@ -83,9 +83,9 @@ | |||
| 83 | </layout> | 83 | </layout> |
| 84 | </item> | 84 | </item> |
| 85 | <item row="1" column="1"> | 85 | <item row="1" column="1"> |
| 86 | <layout class="QVBoxLayout" name="verticalLayout_28"> | 86 | <layout class="QVBoxLayout" name="buttonMiscScrCapVerticalLayout"> |
| 87 | <item> | 87 | <item> |
| 88 | <widget class="QLabel" name="label_11"> | 88 | <widget class="QLabel" name="labelScrCap"> |
| 89 | <property name="text"> | 89 | <property name="text"> |
| 90 | <string>Screen | 90 | <string>Screen |
| 91 | Capture:</string> | 91 | Capture:</string> |
| @@ -130,9 +130,9 @@ Capture:</string> | |||
| 130 | </property> | 130 | </property> |
| 131 | <layout class="QGridLayout" name="gridLayout"> | 131 | <layout class="QGridLayout" name="gridLayout"> |
| 132 | <item row="0" column="0"> | 132 | <item row="0" column="0"> |
| 133 | <layout class="QVBoxLayout" name="verticalLayout"> | 133 | <layout class="QVBoxLayout" name="buttonFaceButtonsAVerticalLayout"> |
| 134 | <item> | 134 | <item> |
| 135 | <widget class="QLabel" name="label"> | 135 | <widget class="QLabel" name="labelA"> |
| 136 | <property name="text"> | 136 | <property name="text"> |
| 137 | <string>A:</string> | 137 | <string>A:</string> |
| 138 | </property> | 138 | </property> |
| @@ -148,9 +148,9 @@ Capture:</string> | |||
| 148 | </layout> | 148 | </layout> |
| 149 | </item> | 149 | </item> |
| 150 | <item row="0" column="1"> | 150 | <item row="0" column="1"> |
| 151 | <layout class="QVBoxLayout" name="verticalLayout_2"> | 151 | <layout class="QVBoxLayout" name="buttonFaceButtonsBVerticalLayout"> |
| 152 | <item> | 152 | <item> |
| 153 | <widget class="QLabel" name="label_2"> | 153 | <widget class="QLabel" name="labelB"> |
| 154 | <property name="text"> | 154 | <property name="text"> |
| 155 | <string>B:</string> | 155 | <string>B:</string> |
| 156 | </property> | 156 | </property> |
| @@ -166,9 +166,9 @@ Capture:</string> | |||
| 166 | </layout> | 166 | </layout> |
| 167 | </item> | 167 | </item> |
| 168 | <item row="1" column="0"> | 168 | <item row="1" column="0"> |
| 169 | <layout class="QVBoxLayout" name="verticalLayout_3"> | 169 | <layout class="QVBoxLayout" name="buttonFaceButtonsXVerticalLayout"> |
| 170 | <item> | 170 | <item> |
| 171 | <widget class="QLabel" name="label_3"> | 171 | <widget class="QLabel" name="labelX"> |
| 172 | <property name="text"> | 172 | <property name="text"> |
| 173 | <string>X:</string> | 173 | <string>X:</string> |
| 174 | </property> | 174 | </property> |
| @@ -184,9 +184,9 @@ Capture:</string> | |||
| 184 | </layout> | 184 | </layout> |
| 185 | </item> | 185 | </item> |
| 186 | <item row="1" column="1"> | 186 | <item row="1" column="1"> |
| 187 | <layout class="QVBoxLayout" name="verticalLayout_4"> | 187 | <layout class="QVBoxLayout" name="buttonFaceButtonsYVerticalLayout"> |
| 188 | <item> | 188 | <item> |
| 189 | <widget class="QLabel" name="label_4"> | 189 | <widget class="QLabel" name="labelY"> |
| 190 | <property name="text"> | 190 | <property name="text"> |
| 191 | <string>Y:</string> | 191 | <string>Y:</string> |
| 192 | </property> | 192 | </property> |
| @@ -205,7 +205,7 @@ Capture:</string> | |||
| 205 | </widget> | 205 | </widget> |
| 206 | </item> | 206 | </item> |
| 207 | <item row="0" column="1"> | 207 | <item row="0" column="1"> |
| 208 | <widget class="QGroupBox" name="faceButtons_2"> | 208 | <widget class="QGroupBox" name="Dpad"> |
| 209 | <property name="title"> | 209 | <property name="title"> |
| 210 | <string>Directional Pad</string> | 210 | <string>Directional Pad</string> |
| 211 | </property> | 211 | </property> |
| @@ -217,9 +217,9 @@ Capture:</string> | |||
| 217 | </property> | 217 | </property> |
| 218 | <layout class="QGridLayout" name="gridLayout_2"> | 218 | <layout class="QGridLayout" name="gridLayout_2"> |
| 219 | <item row="1" column="0"> | 219 | <item row="1" column="0"> |
| 220 | <layout class="QVBoxLayout" name="verticalLayout_12"> | 220 | <layout class="QVBoxLayout" name="buttonDpadUpVerticalLayout"> |
| 221 | <item> | 221 | <item> |
| 222 | <widget class="QLabel" name="label_34"> | 222 | <widget class="QLabel" name="labelDpadUp"> |
| 223 | <property name="text"> | 223 | <property name="text"> |
| 224 | <string>Up:</string> | 224 | <string>Up:</string> |
| 225 | </property> | 225 | </property> |
| @@ -235,9 +235,9 @@ Capture:</string> | |||
| 235 | </layout> | 235 | </layout> |
| 236 | </item> | 236 | </item> |
| 237 | <item row="1" column="1"> | 237 | <item row="1" column="1"> |
| 238 | <layout class="QVBoxLayout" name="verticalLayout_9"> | 238 | <layout class="QVBoxLayout" name="buttonDpadDownVerticalLayout"> |
| 239 | <item> | 239 | <item> |
| 240 | <widget class="QLabel" name="label_35"> | 240 | <widget class="QLabel" name="labelDpadDown"> |
| 241 | <property name="text"> | 241 | <property name="text"> |
| 242 | <string>Down:</string> | 242 | <string>Down:</string> |
| 243 | </property> | 243 | </property> |
| @@ -253,9 +253,9 @@ Capture:</string> | |||
| 253 | </layout> | 253 | </layout> |
| 254 | </item> | 254 | </item> |
| 255 | <item row="0" column="0"> | 255 | <item row="0" column="0"> |
| 256 | <layout class="QVBoxLayout" name="verticalLayout_10"> | 256 | <layout class="QVBoxLayout" name="buttonDpadLeftVerticalLayout"> |
| 257 | <item> | 257 | <item> |
| 258 | <widget class="QLabel" name="label_32"> | 258 | <widget class="QLabel" name="labelDpadLeft"> |
| 259 | <property name="text"> | 259 | <property name="text"> |
| 260 | <string>Left:</string> | 260 | <string>Left:</string> |
| 261 | </property> | 261 | </property> |
| @@ -271,9 +271,9 @@ Capture:</string> | |||
| 271 | </layout> | 271 | </layout> |
| 272 | </item> | 272 | </item> |
| 273 | <item row="0" column="1"> | 273 | <item row="0" column="1"> |
| 274 | <layout class="QVBoxLayout" name="verticalLayout_11"> | 274 | <layout class="QVBoxLayout" name="buttonDpadRightVerticalLayout"> |
| 275 | <item> | 275 | <item> |
| 276 | <widget class="QLabel" name="label_33"> | 276 | <widget class="QLabel" name="labelDpadRight"> |
| 277 | <property name="text"> | 277 | <property name="text"> |
| 278 | <string>Right:</string> | 278 | <string>Right:</string> |
| 279 | </property> | 279 | </property> |
| @@ -292,7 +292,7 @@ Capture:</string> | |||
| 292 | </widget> | 292 | </widget> |
| 293 | </item> | 293 | </item> |
| 294 | <item row="3" column="0"> | 294 | <item row="3" column="0"> |
| 295 | <widget class="QGroupBox" name="faceButtons_3"> | 295 | <widget class="QGroupBox" name="shoulderButtons"> |
| 296 | <property name="title"> | 296 | <property name="title"> |
| 297 | <string>Shoulder Buttons</string> | 297 | <string>Shoulder Buttons</string> |
| 298 | </property> | 298 | </property> |
| @@ -304,9 +304,9 @@ Capture:</string> | |||
| 304 | </property> | 304 | </property> |
| 305 | <layout class="QGridLayout" name="gridLayout_3"> | 305 | <layout class="QGridLayout" name="gridLayout_3"> |
| 306 | <item row="0" column="0"> | 306 | <item row="0" column="0"> |
| 307 | <layout class="QVBoxLayout" name="verticalLayout_13"> | 307 | <layout class="QVBoxLayout" name="buttonShoulderButtonsLVerticalLayout"> |
| 308 | <item> | 308 | <item> |
| 309 | <widget class="QLabel" name="label_17"> | 309 | <widget class="QLabel" name="labelL"> |
| 310 | <property name="text"> | 310 | <property name="text"> |
| 311 | <string>L:</string> | 311 | <string>L:</string> |
| 312 | </property> | 312 | </property> |
| @@ -322,9 +322,9 @@ Capture:</string> | |||
| 322 | </layout> | 322 | </layout> |
| 323 | </item> | 323 | </item> |
| 324 | <item row="0" column="1"> | 324 | <item row="0" column="1"> |
| 325 | <layout class="QVBoxLayout" name="verticalLayout_14"> | 325 | <layout class="QVBoxLayout" name="buttonShoulderButtonsRVerticalLayout"> |
| 326 | <item> | 326 | <item> |
| 327 | <widget class="QLabel" name="label_19"> | 327 | <widget class="QLabel" name="labelR"> |
| 328 | <property name="text"> | 328 | <property name="text"> |
| 329 | <string>R:</string> | 329 | <string>R:</string> |
| 330 | </property> | 330 | </property> |
| @@ -340,9 +340,9 @@ Capture:</string> | |||
| 340 | </layout> | 340 | </layout> |
| 341 | </item> | 341 | </item> |
| 342 | <item row="1" column="0"> | 342 | <item row="1" column="0"> |
| 343 | <layout class="QVBoxLayout" name="verticalLayout_15"> | 343 | <layout class="QVBoxLayout" name="buttonShoulderButtonsZLVerticalLayout"> |
| 344 | <item> | 344 | <item> |
| 345 | <widget class="QLabel" name="label_20"> | 345 | <widget class="QLabel" name="labelZL"> |
| 346 | <property name="text"> | 346 | <property name="text"> |
| 347 | <string>ZL:</string> | 347 | <string>ZL:</string> |
| 348 | </property> | 348 | </property> |
| @@ -358,9 +358,9 @@ Capture:</string> | |||
| 358 | </layout> | 358 | </layout> |
| 359 | </item> | 359 | </item> |
| 360 | <item row="1" column="1"> | 360 | <item row="1" column="1"> |
| 361 | <layout class="QVBoxLayout" name="verticalLayout_16"> | 361 | <layout class="QVBoxLayout" name="buttonShoulderButtonsZRVerticalLayout"> |
| 362 | <item> | 362 | <item> |
| 363 | <widget class="QLabel" name="label_18"> | 363 | <widget class="QLabel" name="labelZR"> |
| 364 | <property name="text"> | 364 | <property name="text"> |
| 365 | <string>ZR:</string> | 365 | <string>ZR:</string> |
| 366 | </property> | 366 | </property> |
| @@ -376,9 +376,9 @@ Capture:</string> | |||
| 376 | </layout> | 376 | </layout> |
| 377 | </item> | 377 | </item> |
| 378 | <item row="2" column="0"> | 378 | <item row="2" column="0"> |
| 379 | <layout class="QVBoxLayout" name="verticalLayout_8"> | 379 | <layout class="QVBoxLayout" name="buttonShoulderButtonsSLVerticalLayout"> |
| 380 | <item> | 380 | <item> |
| 381 | <widget class="QLabel" name="label_7"> | 381 | <widget class="QLabel" name="labelSL"> |
| 382 | <property name="text"> | 382 | <property name="text"> |
| 383 | <string>SL:</string> | 383 | <string>SL:</string> |
| 384 | </property> | 384 | </property> |
| @@ -394,9 +394,9 @@ Capture:</string> | |||
| 394 | </layout> | 394 | </layout> |
| 395 | </item> | 395 | </item> |
| 396 | <item row="2" column="1"> | 396 | <item row="2" column="1"> |
| 397 | <layout class="QVBoxLayout" name="verticalLayout_29"> | 397 | <layout class="QVBoxLayout" name="buttonShoulderButtonsSRVerticalLayout"> |
| 398 | <item> | 398 | <item> |
| 399 | <widget class="QLabel" name="label_8"> | 399 | <widget class="QLabel" name="labelSR"> |
| 400 | <property name="text"> | 400 | <property name="text"> |
| 401 | <string>SR:</string> | 401 | <string>SR:</string> |
| 402 | </property> | 402 | </property> |
| @@ -415,7 +415,7 @@ Capture:</string> | |||
| 415 | </widget> | 415 | </widget> |
| 416 | </item> | 416 | </item> |
| 417 | <item row="1" column="1"> | 417 | <item row="1" column="1"> |
| 418 | <widget class="QGroupBox" name="faceButtons_5"> | 418 | <widget class="QGroupBox" name="RStick"> |
| 419 | <property name="title"> | 419 | <property name="title"> |
| 420 | <string>Right Stick</string> | 420 | <string>Right Stick</string> |
| 421 | </property> | 421 | </property> |
| @@ -430,9 +430,9 @@ Capture:</string> | |||
| 430 | </property> | 430 | </property> |
| 431 | <layout class="QGridLayout" name="gridLayout_5"> | 431 | <layout class="QGridLayout" name="gridLayout_5"> |
| 432 | <item row="1" column="1"> | 432 | <item row="1" column="1"> |
| 433 | <layout class="QVBoxLayout" name="verticalLayout_24"> | 433 | <layout class="QVBoxLayout" name="buttonRStickDownVerticalLayout"> |
| 434 | <item> | 434 | <item> |
| 435 | <widget class="QLabel" name="label_26"> | 435 | <widget class="QLabel" name="labelRStickDown"> |
| 436 | <property name="text"> | 436 | <property name="text"> |
| 437 | <string>Down:</string> | 437 | <string>Down:</string> |
| 438 | </property> | 438 | </property> |
| @@ -448,9 +448,9 @@ Capture:</string> | |||
| 448 | </layout> | 448 | </layout> |
| 449 | </item> | 449 | </item> |
| 450 | <item row="0" column="1"> | 450 | <item row="0" column="1"> |
| 451 | <layout class="QVBoxLayout" name="verticalLayout_22"> | 451 | <layout class="QVBoxLayout" name="buttonRStickRightVerticalLayout"> |
| 452 | <item> | 452 | <item> |
| 453 | <widget class="QLabel" name="label_27"> | 453 | <widget class="QLabel" name="labelRStickRight"> |
| 454 | <property name="text"> | 454 | <property name="text"> |
| 455 | <string>Right:</string> | 455 | <string>Right:</string> |
| 456 | </property> | 456 | </property> |
| @@ -473,9 +473,9 @@ Capture:</string> | |||
| 473 | </widget> | 473 | </widget> |
| 474 | </item> | 474 | </item> |
| 475 | <item row="1" column="0"> | 475 | <item row="1" column="0"> |
| 476 | <layout class="QVBoxLayout" name="verticalLayout_21"> | 476 | <layout class="QVBoxLayout" name="buttonRStickLeftVerticalLayout"> |
| 477 | <item> | 477 | <item> |
| 478 | <widget class="QLabel" name="label_25"> | 478 | <widget class="QLabel" name="labelRStickLeft"> |
| 479 | <property name="text"> | 479 | <property name="text"> |
| 480 | <string>Left:</string> | 480 | <string>Left:</string> |
| 481 | </property> | 481 | </property> |
| @@ -491,9 +491,9 @@ Capture:</string> | |||
| 491 | </layout> | 491 | </layout> |
| 492 | </item> | 492 | </item> |
| 493 | <item row="0" column="0"> | 493 | <item row="0" column="0"> |
| 494 | <layout class="QVBoxLayout" name="verticalLayout_25"> | 494 | <layout class="QVBoxLayout" name="buttonRStickUpVerticalLayout"> |
| 495 | <item> | 495 | <item> |
| 496 | <widget class="QLabel" name="label_28"> | 496 | <widget class="QLabel" name="labelRStickUp"> |
| 497 | <property name="text"> | 497 | <property name="text"> |
| 498 | <string>Up:</string> | 498 | <string>Up:</string> |
| 499 | </property> | 499 | </property> |
| @@ -509,9 +509,9 @@ Capture:</string> | |||
| 509 | </layout> | 509 | </layout> |
| 510 | </item> | 510 | </item> |
| 511 | <item row="2" column="0"> | 511 | <item row="2" column="0"> |
| 512 | <layout class="QVBoxLayout" name="verticalLayout_6"> | 512 | <layout class="QVBoxLayout" name="buttonRStickPressedVerticalLayout"> |
| 513 | <item> | 513 | <item> |
| 514 | <widget class="QLabel" name="label_5"> | 514 | <widget class="QLabel" name="labelRStickPressed"> |
| 515 | <property name="text"> | 515 | <property name="text"> |
| 516 | <string>Pressed:</string> | 516 | <string>Pressed:</string> |
| 517 | </property> | 517 | </property> |
| @@ -527,9 +527,9 @@ Capture:</string> | |||
| 527 | </layout> | 527 | </layout> |
| 528 | </item> | 528 | </item> |
| 529 | <item row="2" column="1"> | 529 | <item row="2" column="1"> |
| 530 | <layout class="QVBoxLayout" name="verticalLayout_32"> | 530 | <layout class="QVBoxLayout" name="buttonRStickModVerticalLayout"> |
| 531 | <item> | 531 | <item> |
| 532 | <widget class="QLabel" name="label_10"> | 532 | <widget class="QLabel" name="labelRStickMod"> |
| 533 | <property name="text"> | 533 | <property name="text"> |
| 534 | <string>Modifier:</string> | 534 | <string>Modifier:</string> |
| 535 | </property> | 535 | </property> |
| @@ -548,7 +548,7 @@ Capture:</string> | |||
| 548 | </widget> | 548 | </widget> |
| 549 | </item> | 549 | </item> |
| 550 | <item row="1" column="0"> | 550 | <item row="1" column="0"> |
| 551 | <widget class="QGroupBox" name="faceButtons_4"> | 551 | <widget class="QGroupBox" name="LStick"> |
| 552 | <property name="title"> | 552 | <property name="title"> |
| 553 | <string>Left Stick</string> | 553 | <string>Left Stick</string> |
| 554 | </property> | 554 | </property> |
| @@ -560,9 +560,9 @@ Capture:</string> | |||
| 560 | </property> | 560 | </property> |
| 561 | <layout class="QGridLayout" name="gridLayout_4"> | 561 | <layout class="QGridLayout" name="gridLayout_4"> |
| 562 | <item row="1" column="1"> | 562 | <item row="1" column="1"> |
| 563 | <layout class="QVBoxLayout" name="verticalLayout_20"> | 563 | <layout class="QVBoxLayout" name="buttonLStickDownVerticalLayout"> |
| 564 | <item> | 564 | <item> |
| 565 | <widget class="QLabel" name="label_22"> | 565 | <widget class="QLabel" name="labelLStickDown"> |
| 566 | <property name="text"> | 566 | <property name="text"> |
| 567 | <string>Down:</string> | 567 | <string>Down:</string> |
| 568 | </property> | 568 | </property> |
| @@ -585,9 +585,9 @@ Capture:</string> | |||
| 585 | </widget> | 585 | </widget> |
| 586 | </item> | 586 | </item> |
| 587 | <item row="0" column="1"> | 587 | <item row="0" column="1"> |
| 588 | <layout class="QVBoxLayout" name="verticalLayout_18"> | 588 | <layout class="QVBoxLayout" name="buttonLStickRightVerticalLayout"> |
| 589 | <item> | 589 | <item> |
| 590 | <widget class="QLabel" name="label_23"> | 590 | <widget class="QLabel" name="labelLStickRight"> |
| 591 | <property name="text"> | 591 | <property name="text"> |
| 592 | <string>Right:</string> | 592 | <string>Right:</string> |
| 593 | </property> | 593 | </property> |
| @@ -603,9 +603,9 @@ Capture:</string> | |||
| 603 | </layout> | 603 | </layout> |
| 604 | </item> | 604 | </item> |
| 605 | <item row="0" column="0"> | 605 | <item row="0" column="0"> |
| 606 | <layout class="QVBoxLayout" name="verticalLayout_17"> | 606 | <layout class="QVBoxLayout" name="buttonLStickLeftVerticalLayout"> |
| 607 | <item> | 607 | <item> |
| 608 | <widget class="QLabel" name="label_21"> | 608 | <widget class="QLabel" name="labelLStickLeft"> |
| 609 | <property name="text"> | 609 | <property name="text"> |
| 610 | <string>Left:</string> | 610 | <string>Left:</string> |
| 611 | </property> | 611 | </property> |
| @@ -621,9 +621,9 @@ Capture:</string> | |||
| 621 | </layout> | 621 | </layout> |
| 622 | </item> | 622 | </item> |
| 623 | <item row="1" column="0"> | 623 | <item row="1" column="0"> |
| 624 | <layout class="QVBoxLayout" name="verticalLayout_19"> | 624 | <layout class="QVBoxLayout" name="buttonLStickUpVerticalLayout"> |
| 625 | <item> | 625 | <item> |
| 626 | <widget class="QLabel" name="label_24"> | 626 | <widget class="QLabel" name="labelLStickUp"> |
| 627 | <property name="text"> | 627 | <property name="text"> |
| 628 | <string>Up:</string> | 628 | <string>Up:</string> |
| 629 | </property> | 629 | </property> |
| @@ -639,9 +639,9 @@ Capture:</string> | |||
| 639 | </layout> | 639 | </layout> |
| 640 | </item> | 640 | </item> |
| 641 | <item row="3" column="0"> | 641 | <item row="3" column="0"> |
| 642 | <layout class="QVBoxLayout" name="verticalLayout_31"> | 642 | <layout class="QVBoxLayout" name="buttonLStickModVerticalLayout"> |
| 643 | <item> | 643 | <item> |
| 644 | <widget class="QLabel" name="label_9"> | 644 | <widget class="QLabel" name="labelLStickMod"> |
| 645 | <property name="text"> | 645 | <property name="text"> |
| 646 | <string>Modifier:</string> | 646 | <string>Modifier:</string> |
| 647 | </property> | 647 | </property> |
| @@ -657,9 +657,9 @@ Capture:</string> | |||
| 657 | </layout> | 657 | </layout> |
| 658 | </item> | 658 | </item> |
| 659 | <item row="3" column="1"> | 659 | <item row="3" column="1"> |
| 660 | <layout class="QVBoxLayout" name="verticalLayout_7" stretch="0,0"> | 660 | <layout class="QVBoxLayout" name="buttonLStickPressedVerticalLayout" stretch="0,0"> |
| 661 | <item> | 661 | <item> |
| 662 | <widget class="QLabel" name="label_6"> | 662 | <widget class="QLabel" name="labelLStickPressed"> |
| 663 | <property name="text"> | 663 | <property name="text"> |
| 664 | <string>Pressed:</string> | 664 | <string>Pressed:</string> |
| 665 | </property> | 665 | </property> |
diff --git a/src/yuzu/debugger/profiler.cpp b/src/yuzu/debugger/profiler.cpp index cc9babe84..8b30e0a85 100644 --- a/src/yuzu/debugger/profiler.cpp +++ b/src/yuzu/debugger/profiler.cpp | |||
| @@ -74,7 +74,7 @@ QAction* MicroProfileDialog::toggleViewAction() { | |||
| 74 | toggle_view_action = new QAction(windowTitle(), this); | 74 | toggle_view_action = new QAction(windowTitle(), this); |
| 75 | toggle_view_action->setCheckable(true); | 75 | toggle_view_action->setCheckable(true); |
| 76 | toggle_view_action->setChecked(isVisible()); | 76 | toggle_view_action->setChecked(isVisible()); |
| 77 | connect(toggle_view_action, SIGNAL(toggled(bool)), SLOT(setVisible(bool))); | 77 | connect(toggle_view_action, &QAction::toggled, this, &MicroProfileDialog::setVisible); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | return toggle_view_action; | 80 | return toggle_view_action; |
| @@ -107,7 +107,8 @@ MicroProfileWidget::MicroProfileWidget(QWidget* parent) : QWidget(parent) { | |||
| 107 | MicroProfileSetDisplayMode(1); // Timers screen | 107 | MicroProfileSetDisplayMode(1); // Timers screen |
| 108 | MicroProfileInitUI(); | 108 | MicroProfileInitUI(); |
| 109 | 109 | ||
| 110 | connect(&update_timer, SIGNAL(timeout()), SLOT(update())); | 110 | connect(&update_timer, &QTimer::timeout, this, |
| 111 | static_cast<void (MicroProfileWidget::*)()>(&MicroProfileWidget::update)); | ||
| 111 | } | 112 | } |
| 112 | 113 | ||
| 113 | void MicroProfileWidget::paintEvent(QPaintEvent* ev) { | 114 | void MicroProfileWidget::paintEvent(QPaintEvent* ev) { |
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp index 6d7c409d0..76ced4de4 100644 --- a/src/yuzu/game_list.cpp +++ b/src/yuzu/game_list.cpp | |||
| @@ -114,8 +114,7 @@ GameList::SearchField::SearchField(GameList* parent) : QWidget{parent} { | |||
| 114 | edit_filter->setPlaceholderText(tr("Enter pattern to filter")); | 114 | edit_filter->setPlaceholderText(tr("Enter pattern to filter")); |
| 115 | edit_filter->installEventFilter(keyReleaseEater); | 115 | edit_filter->installEventFilter(keyReleaseEater); |
| 116 | edit_filter->setClearButtonEnabled(true); | 116 | edit_filter->setClearButtonEnabled(true); |
| 117 | connect(edit_filter, SIGNAL(textChanged(const QString&)), parent, | 117 | connect(edit_filter, &QLineEdit::textChanged, parent, &GameList::onTextChanged); |
| 118 | SLOT(onTextChanged(const QString&))); | ||
| 119 | label_filter_result = new QLabel; | 118 | label_filter_result = new QLabel; |
| 120 | button_filter_close = new QToolButton(this); | 119 | button_filter_close = new QToolButton(this); |
| 121 | button_filter_close->setText("X"); | 120 | button_filter_close->setText("X"); |
| @@ -124,7 +123,7 @@ GameList::SearchField::SearchField(GameList* parent) : QWidget{parent} { | |||
| 124 | "#000000; font-weight: bold; background: #F0F0F0; }" | 123 | "#000000; font-weight: bold; background: #F0F0F0; }" |
| 125 | "QToolButton:hover{ border: none; padding: 0px; color: " | 124 | "QToolButton:hover{ border: none; padding: 0px; color: " |
| 126 | "#EEEEEE; font-weight: bold; background: #E81123}"); | 125 | "#EEEEEE; font-weight: bold; background: #E81123}"); |
| 127 | connect(button_filter_close, SIGNAL(clicked()), parent, SLOT(onFilterCloseClicked())); | 126 | connect(button_filter_close, &QToolButton::clicked, parent, &GameList::onFilterCloseClicked); |
| 128 | layout_filter->setSpacing(10); | 127 | layout_filter->setSpacing(10); |
| 129 | layout_filter->addWidget(label_filter); | 128 | layout_filter->addWidget(label_filter); |
| 130 | layout_filter->addWidget(edit_filter); | 129 | layout_filter->addWidget(edit_filter); |
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 31f2825ee..e5252abdc 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -175,7 +175,7 @@ void GMainWindow::InitializeRecentFileMenuActions() { | |||
| 175 | for (int i = 0; i < max_recent_files_item; ++i) { | 175 | for (int i = 0; i < max_recent_files_item; ++i) { |
| 176 | actions_recent_files[i] = new QAction(this); | 176 | actions_recent_files[i] = new QAction(this); |
| 177 | actions_recent_files[i]->setVisible(false); | 177 | actions_recent_files[i]->setVisible(false); |
| 178 | connect(actions_recent_files[i], SIGNAL(triggered()), this, SLOT(OnMenuRecentFile())); | 178 | connect(actions_recent_files[i], &QAction::triggered, this, &GMainWindow::OnMenuRecentFile); |
| 179 | 179 | ||
| 180 | ui.menu_recent_files->addAction(actions_recent_files[i]); | 180 | ui.menu_recent_files->addAction(actions_recent_files[i]); |
| 181 | } | 181 | } |
| @@ -190,10 +190,10 @@ void GMainWindow::InitializeHotkeys() { | |||
| 190 | RegisterHotkey("Main Window", "Exit Fullscreen", QKeySequence::Cancel, Qt::ApplicationShortcut); | 190 | RegisterHotkey("Main Window", "Exit Fullscreen", QKeySequence::Cancel, Qt::ApplicationShortcut); |
| 191 | LoadHotkeys(); | 191 | LoadHotkeys(); |
| 192 | 192 | ||
| 193 | connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this, | 193 | connect(GetHotkey("Main Window", "Load File", this), &QShortcut::activated, this, |
| 194 | SLOT(OnMenuLoadFile())); | 194 | &GMainWindow::OnMenuLoadFile); |
| 195 | connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, | 195 | connect(GetHotkey("Main Window", "Start Emulation", this), &QShortcut::activated, this, |
| 196 | SLOT(OnStartGame())); | 196 | &GMainWindow::OnStartGame); |
| 197 | connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activated, | 197 | connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activated, |
| 198 | ui.action_Fullscreen, &QAction::trigger); | 198 | ui.action_Fullscreen, &QAction::trigger); |
| 199 | connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activatedAmbiguously, | 199 | connect(GetHotkey("Main Window", "Fullscreen", render_window), &QShortcut::activatedAmbiguously, |
| @@ -245,13 +245,14 @@ void GMainWindow::RestoreUIState() { | |||
| 245 | } | 245 | } |
| 246 | 246 | ||
| 247 | void GMainWindow::ConnectWidgetEvents() { | 247 | void GMainWindow::ConnectWidgetEvents() { |
| 248 | connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString))); | 248 | connect(game_list, &GameList::GameChosen, this, &GMainWindow::OnGameListLoadFile); |
| 249 | connect(game_list, SIGNAL(OpenSaveFolderRequested(u64)), this, | 249 | connect(game_list, &GameList::OpenSaveFolderRequested, this, |
| 250 | SLOT(OnGameListOpenSaveFolder(u64))); | 250 | &GMainWindow::OnGameListOpenSaveFolder); |
| 251 | 251 | ||
| 252 | connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, | 252 | connect(this, &GMainWindow::EmulationStarting, render_window, |
| 253 | SLOT(OnEmulationStarting(EmuThread*))); | 253 | &GRenderWindow::OnEmulationStarting); |
| 254 | connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping())); | 254 | connect(this, &GMainWindow::EmulationStopping, render_window, |
| 255 | &GRenderWindow::OnEmulationStopping); | ||
| 255 | 256 | ||
| 256 | connect(&status_bar_update_timer, &QTimer::timeout, this, &GMainWindow::UpdateStatusBar); | 257 | connect(&status_bar_update_timer, &QTimer::timeout, this, &GMainWindow::UpdateStatusBar); |
| 257 | } | 258 | } |
| @@ -398,17 +399,17 @@ void GMainWindow::BootGame(const QString& filename) { | |||
| 398 | render_window->moveContext(); | 399 | render_window->moveContext(); |
| 399 | emu_thread->start(); | 400 | emu_thread->start(); |
| 400 | 401 | ||
| 401 | connect(render_window, SIGNAL(Closed()), this, SLOT(OnStopGame())); | 402 | connect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); |
| 402 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views | 403 | // BlockingQueuedConnection is important here, it makes sure we've finished refreshing our views |
| 403 | // before the CPU continues | 404 | // before the CPU continues |
| 404 | connect(emu_thread.get(), SIGNAL(DebugModeEntered()), registersWidget, | 405 | connect(emu_thread.get(), &EmuThread::DebugModeEntered, registersWidget, |
| 405 | SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); | 406 | &RegistersWidget::OnDebugModeEntered, Qt::BlockingQueuedConnection); |
| 406 | connect(emu_thread.get(), SIGNAL(DebugModeEntered()), waitTreeWidget, | 407 | connect(emu_thread.get(), &EmuThread::DebugModeEntered, waitTreeWidget, |
| 407 | SLOT(OnDebugModeEntered()), Qt::BlockingQueuedConnection); | 408 | &WaitTreeWidget::OnDebugModeEntered, Qt::BlockingQueuedConnection); |
| 408 | connect(emu_thread.get(), SIGNAL(DebugModeLeft()), registersWidget, SLOT(OnDebugModeLeft()), | 409 | connect(emu_thread.get(), &EmuThread::DebugModeLeft, registersWidget, |
| 409 | Qt::BlockingQueuedConnection); | 410 | &RegistersWidget::OnDebugModeLeft, Qt::BlockingQueuedConnection); |
| 410 | connect(emu_thread.get(), SIGNAL(DebugModeLeft()), waitTreeWidget, SLOT(OnDebugModeLeft()), | 411 | connect(emu_thread.get(), &EmuThread::DebugModeLeft, waitTreeWidget, |
| 411 | Qt::BlockingQueuedConnection); | 412 | &WaitTreeWidget::OnDebugModeLeft, Qt::BlockingQueuedConnection); |
| 412 | 413 | ||
| 413 | // Update the GUI | 414 | // Update the GUI |
| 414 | registersWidget->OnDebugModeEntered(); | 415 | registersWidget->OnDebugModeEntered(); |
| @@ -437,7 +438,7 @@ void GMainWindow::ShutdownGame() { | |||
| 437 | emu_thread = nullptr; | 438 | emu_thread = nullptr; |
| 438 | 439 | ||
| 439 | // The emulation is stopped, so closing the window or not does not matter anymore | 440 | // The emulation is stopped, so closing the window or not does not matter anymore |
| 440 | disconnect(render_window, SIGNAL(Closed()), this, SLOT(OnStopGame())); | 441 | disconnect(render_window, &GRenderWindow::Closed, this, &GMainWindow::OnStopGame); |
| 441 | 442 | ||
| 442 | // Update the GUI | 443 | // Update the GUI |
| 443 | ui.action_Start->setEnabled(false); | 444 | ui.action_Start->setEnabled(false); |
| @@ -548,8 +549,7 @@ void GMainWindow::OnStartGame() { | |||
| 548 | emu_thread->SetRunning(true); | 549 | emu_thread->SetRunning(true); |
| 549 | qRegisterMetaType<Core::System::ResultStatus>("Core::System::ResultStatus"); | 550 | qRegisterMetaType<Core::System::ResultStatus>("Core::System::ResultStatus"); |
| 550 | qRegisterMetaType<std::string>("std::string"); | 551 | qRegisterMetaType<std::string>("std::string"); |
| 551 | connect(emu_thread.get(), SIGNAL(ErrorThrown(Core::System::ResultStatus, std::string)), this, | 552 | connect(emu_thread.get(), &EmuThread::ErrorThrown, this, &GMainWindow::OnCoreError); |
| 552 | SLOT(OnCoreError(Core::System::ResultStatus, std::string))); | ||
| 553 | 553 | ||
| 554 | ui.action_Start->setEnabled(false); | 554 | ui.action_Start->setEnabled(false); |
| 555 | ui.action_Start->setText(tr("Continue")); | 555 | ui.action_Start->setText(tr("Continue")); |
diff --git a/src/yuzu/util/spinbox.cpp b/src/yuzu/util/spinbox.cpp index 92753ec1c..14ef1e884 100644 --- a/src/yuzu/util/spinbox.cpp +++ b/src/yuzu/util/spinbox.cpp | |||
| @@ -39,7 +39,7 @@ CSpinBox::CSpinBox(QWidget* parent) | |||
| 39 | // TODO: Might be nice to not immediately call the slot. | 39 | // TODO: Might be nice to not immediately call the slot. |
| 40 | // Think of an address that is being replaced by a different one, in which case a lot | 40 | // Think of an address that is being replaced by a different one, in which case a lot |
| 41 | // invalid intermediate addresses would be read from during editing. | 41 | // invalid intermediate addresses would be read from during editing. |
| 42 | connect(lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(OnEditingFinished())); | 42 | connect(lineEdit(), &QLineEdit::textEdited, this, &CSpinBox::OnEditingFinished); |
| 43 | 43 | ||
| 44 | UpdateText(); | 44 | UpdateText(); |
| 45 | } | 45 | } |