summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/common/div_ceil.h10
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.cpp9
-rw-r--r--src/core/file_sys/registered_cache.h8
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue.cpp6
-rw-r--r--src/tests/common/ring_buffer.cpp30
-rw-r--r--src/video_core/renderer_vulkan/fixed_pipeline_state.cpp14
-rw-r--r--src/video_core/renderer_vulkan/fixed_pipeline_state.h11
-rw-r--r--src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp13
-rw-r--r--src/yuzu/configuration/configure_motion_touch.cpp2
-rw-r--r--src/yuzu/util/url_request_interceptor.cpp2
-rw-r--r--src/yuzu_cmd/yuzu.cpp2
12 files changed, 50 insertions, 62 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8777df751..61adbef28 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -45,10 +45,15 @@ if (MSVC)
45 45
46 # Warnings 46 # Warnings
47 /W3 47 /W3
48 /we4062 # enumerator 'identifier' in a switch of enum 'enumeration' is not handled
49 /we4101 # 'identifier': unreferenced local variable
50 /we4265 # 'class': class has virtual functions, but destructor is not virtual
51 /we4388 # signed/unsigned mismatch
48 /we4547 # 'operator' : operator before comma has no effect; expected operator with side-effect 52 /we4547 # 'operator' : operator before comma has no effect; expected operator with side-effect
49 /we4549 # 'operator1': operator before comma has no effect; did you intend 'operator2'? 53 /we4549 # 'operator1': operator before comma has no effect; did you intend 'operator2'?
50 /we4555 # Expression has no effect; expected expression with side-effect 54 /we4555 # Expression has no effect; expected expression with side-effect
51 /we4834 # Discarding return value of function with 'nodiscard' attribute 55 /we4834 # Discarding return value of function with 'nodiscard' attribute
56 /we5038 # data member 'member1' will be initialized after data member 'member2'
52 ) 57 )
53 58
54 # /GS- - No stack buffer overflow checks 59 # /GS- - No stack buffer overflow checks
diff --git a/src/common/div_ceil.h b/src/common/div_ceil.h
index 6b2c48f91..95e1489a9 100644
--- a/src/common/div_ceil.h
+++ b/src/common/div_ceil.h
@@ -11,16 +11,16 @@ namespace Common {
11 11
12/// Ceiled integer division. 12/// Ceiled integer division.
13template <typename N, typename D> 13template <typename N, typename D>
14requires std::is_integral_v<N>&& std::is_unsigned_v<D>[[nodiscard]] constexpr auto DivCeil( 14requires std::is_integral_v<N>&& std::is_unsigned_v<D>[[nodiscard]] constexpr N DivCeil(N number,
15 N number, D divisor) { 15 D divisor) {
16 return (static_cast<D>(number) + divisor - 1) / divisor; 16 return static_cast<N>((static_cast<D>(number) + divisor - 1) / divisor);
17} 17}
18 18
19/// Ceiled integer division with logarithmic divisor in base 2 19/// Ceiled integer division with logarithmic divisor in base 2
20template <typename N, typename D> 20template <typename N, typename D>
21requires std::is_integral_v<N>&& std::is_unsigned_v<D>[[nodiscard]] constexpr auto DivCeilLog2( 21requires std::is_integral_v<N>&& std::is_unsigned_v<D>[[nodiscard]] constexpr N DivCeilLog2(
22 N value, D alignment_log2) { 22 N value, D alignment_log2) {
23 return (static_cast<D>(value) + (D(1) << alignment_log2) - 1) >> alignment_log2; 23 return static_cast<N>((static_cast<D>(value) + (D(1) << alignment_log2) - 1) >> alignment_log2);
24} 24}
25 25
26} // namespace Common 26} // namespace Common
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index 0831dd5d2..6c4c8e9e4 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -71,15 +71,8 @@ public:
71 } 71 }
72 72
73 void ExceptionRaised(u32 pc, Dynarmic::A32::Exception exception) override { 73 void ExceptionRaised(u32 pc, Dynarmic::A32::Exception exception) override {
74 switch (exception) {
75 case Dynarmic::A32::Exception::UndefinedInstruction:
76 case Dynarmic::A32::Exception::UnpredictableInstruction:
77 break;
78 case Dynarmic::A32::Exception::Breakpoint:
79 break;
80 }
81 LOG_CRITICAL(Core_ARM, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", 74 LOG_CRITICAL(Core_ARM, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})",
82 static_cast<std::size_t>(exception), pc, MemoryReadCode(pc)); 75 exception, pc, MemoryReadCode(pc));
83 UNIMPLEMENTED(); 76 UNIMPLEMENTED();
84 } 77 }
85 78
diff --git a/src/core/file_sys/registered_cache.h b/src/core/file_sys/registered_cache.h
index 5b414b0f0..b08a1687a 100644
--- a/src/core/file_sys/registered_cache.h
+++ b/src/core/file_sys/registered_cache.h
@@ -67,18 +67,18 @@ public:
67 virtual void Refresh() = 0; 67 virtual void Refresh() = 0;
68 68
69 virtual bool HasEntry(u64 title_id, ContentRecordType type) const = 0; 69 virtual bool HasEntry(u64 title_id, ContentRecordType type) const = 0;
70 virtual bool HasEntry(ContentProviderEntry entry) const; 70 bool HasEntry(ContentProviderEntry entry) const;
71 71
72 virtual std::optional<u32> GetEntryVersion(u64 title_id) const = 0; 72 virtual std::optional<u32> GetEntryVersion(u64 title_id) const = 0;
73 73
74 virtual VirtualFile GetEntryUnparsed(u64 title_id, ContentRecordType type) const = 0; 74 virtual VirtualFile GetEntryUnparsed(u64 title_id, ContentRecordType type) const = 0;
75 virtual VirtualFile GetEntryUnparsed(ContentProviderEntry entry) const; 75 VirtualFile GetEntryUnparsed(ContentProviderEntry entry) const;
76 76
77 virtual VirtualFile GetEntryRaw(u64 title_id, ContentRecordType type) const = 0; 77 virtual VirtualFile GetEntryRaw(u64 title_id, ContentRecordType type) const = 0;
78 virtual VirtualFile GetEntryRaw(ContentProviderEntry entry) const; 78 VirtualFile GetEntryRaw(ContentProviderEntry entry) const;
79 79
80 virtual std::unique_ptr<NCA> GetEntry(u64 title_id, ContentRecordType type) const = 0; 80 virtual std::unique_ptr<NCA> GetEntry(u64 title_id, ContentRecordType type) const = 0;
81 virtual std::unique_ptr<NCA> GetEntry(ContentProviderEntry entry) const; 81 std::unique_ptr<NCA> GetEntry(ContentProviderEntry entry) const;
82 82
83 virtual std::vector<ContentProviderEntry> ListEntries() const; 83 virtual std::vector<ContentProviderEntry> ListEntries() const;
84 84
diff --git a/src/core/hle/service/nvflinger/buffer_queue.cpp b/src/core/hle/service/nvflinger/buffer_queue.cpp
index c68905e19..5578181a4 100644
--- a/src/core/hle/service/nvflinger/buffer_queue.cpp
+++ b/src/core/hle/service/nvflinger/buffer_queue.cpp
@@ -180,9 +180,11 @@ u32 BufferQueue::Query(QueryType type) {
180 switch (type) { 180 switch (type) {
181 case QueryType::NativeWindowFormat: 181 case QueryType::NativeWindowFormat:
182 return static_cast<u32>(PixelFormat::RGBA8888); 182 return static_cast<u32>(PixelFormat::RGBA8888);
183 case QueryType::NativeWindowWidth:
184 case QueryType::NativeWindowHeight:
185 break;
183 } 186 }
184 187 UNIMPLEMENTED_MSG("Unimplemented query type={}", type);
185 UNIMPLEMENTED();
186 return 0; 188 return 0;
187} 189}
188 190
diff --git a/src/tests/common/ring_buffer.cpp b/src/tests/common/ring_buffer.cpp
index c883c4d56..54def22da 100644
--- a/src/tests/common/ring_buffer.cpp
+++ b/src/tests/common/ring_buffer.cpp
@@ -20,60 +20,60 @@ TEST_CASE("RingBuffer: Basic Tests", "[common]") {
20 for (std::size_t i = 0; i < 4; i++) { 20 for (std::size_t i = 0; i < 4; i++) {
21 const char elem = static_cast<char>(i); 21 const char elem = static_cast<char>(i);
22 const std::size_t count = buf.Push(&elem, 1); 22 const std::size_t count = buf.Push(&elem, 1);
23 REQUIRE(count == 1); 23 REQUIRE(count == 1U);
24 } 24 }
25 25
26 REQUIRE(buf.Size() == 4); 26 REQUIRE(buf.Size() == 4U);
27 27
28 // Pushing values into a full ring buffer should fail. 28 // Pushing values into a full ring buffer should fail.
29 { 29 {
30 const char elem = static_cast<char>(42); 30 const char elem = static_cast<char>(42);
31 const std::size_t count = buf.Push(&elem, 1); 31 const std::size_t count = buf.Push(&elem, 1);
32 REQUIRE(count == 0); 32 REQUIRE(count == 0U);
33 } 33 }
34 34
35 REQUIRE(buf.Size() == 4); 35 REQUIRE(buf.Size() == 4U);
36 36
37 // Popping multiple values from a ring buffer with values should succeed. 37 // Popping multiple values from a ring buffer with values should succeed.
38 { 38 {
39 const std::vector<char> popped = buf.Pop(2); 39 const std::vector<char> popped = buf.Pop(2);
40 REQUIRE(popped.size() == 2); 40 REQUIRE(popped.size() == 2U);
41 REQUIRE(popped[0] == 0); 41 REQUIRE(popped[0] == 0);
42 REQUIRE(popped[1] == 1); 42 REQUIRE(popped[1] == 1);
43 } 43 }
44 44
45 REQUIRE(buf.Size() == 2); 45 REQUIRE(buf.Size() == 2U);
46 46
47 // Popping a single value from a ring buffer with values should succeed. 47 // Popping a single value from a ring buffer with values should succeed.
48 { 48 {
49 const std::vector<char> popped = buf.Pop(1); 49 const std::vector<char> popped = buf.Pop(1);
50 REQUIRE(popped.size() == 1); 50 REQUIRE(popped.size() == 1U);
51 REQUIRE(popped[0] == 2); 51 REQUIRE(popped[0] == 2);
52 } 52 }
53 53
54 REQUIRE(buf.Size() == 1); 54 REQUIRE(buf.Size() == 1U);
55 55
56 // Pushing more values than space available should partially suceed. 56 // Pushing more values than space available should partially suceed.
57 { 57 {
58 std::vector<char> to_push(6); 58 std::vector<char> to_push(6);
59 std::iota(to_push.begin(), to_push.end(), 88); 59 std::iota(to_push.begin(), to_push.end(), 88);
60 const std::size_t count = buf.Push(to_push); 60 const std::size_t count = buf.Push(to_push);
61 REQUIRE(count == 3); 61 REQUIRE(count == 3U);
62 } 62 }
63 63
64 REQUIRE(buf.Size() == 4); 64 REQUIRE(buf.Size() == 4U);
65 65
66 // Doing an unlimited pop should pop all values. 66 // Doing an unlimited pop should pop all values.
67 { 67 {
68 const std::vector<char> popped = buf.Pop(); 68 const std::vector<char> popped = buf.Pop();
69 REQUIRE(popped.size() == 4); 69 REQUIRE(popped.size() == 4U);
70 REQUIRE(popped[0] == 3); 70 REQUIRE(popped[0] == 3);
71 REQUIRE(popped[1] == 88); 71 REQUIRE(popped[1] == 88);
72 REQUIRE(popped[2] == 89); 72 REQUIRE(popped[2] == 89);
73 REQUIRE(popped[3] == 90); 73 REQUIRE(popped[3] == 90);
74 } 74 }
75 75
76 REQUIRE(buf.Size() == 0); 76 REQUIRE(buf.Size() == 0U);
77} 77}
78 78
79TEST_CASE("RingBuffer: Threaded Test", "[common]") { 79TEST_CASE("RingBuffer: Threaded Test", "[common]") {
@@ -93,7 +93,7 @@ TEST_CASE("RingBuffer: Threaded Test", "[common]") {
93 std::size_t i = 0; 93 std::size_t i = 0;
94 while (i < count) { 94 while (i < count) {
95 if (const std::size_t c = buf.Push(&value[0], 1); c > 0) { 95 if (const std::size_t c = buf.Push(&value[0], 1); c > 0) {
96 REQUIRE(c == 1); 96 REQUIRE(c == 1U);
97 i++; 97 i++;
98 next_value(value); 98 next_value(value);
99 } else { 99 } else {
@@ -108,7 +108,7 @@ TEST_CASE("RingBuffer: Threaded Test", "[common]") {
108 std::size_t i = 0; 108 std::size_t i = 0;
109 while (i < count) { 109 while (i < count) {
110 if (const std::vector<char> v = buf.Pop(1); v.size() > 0) { 110 if (const std::vector<char> v = buf.Pop(1); v.size() > 0) {
111 REQUIRE(v.size() == 2); 111 REQUIRE(v.size() == 2U);
112 REQUIRE(v[0] == value[0]); 112 REQUIRE(v[0] == value[0]);
113 REQUIRE(v[1] == value[1]); 113 REQUIRE(v[1] == value[1]);
114 i++; 114 i++;
@@ -123,7 +123,7 @@ TEST_CASE("RingBuffer: Threaded Test", "[common]") {
123 producer.join(); 123 producer.join();
124 consumer.join(); 124 consumer.join();
125 125
126 REQUIRE(buf.Size() == 0); 126 REQUIRE(buf.Size() == 0U);
127 printf("RingBuffer: Threaded Test: full: %zu, empty: %zu\n", full, empty); 127 printf("RingBuffer: Threaded Test: full: %zu, empty: %zu\n", full, empty);
128} 128}
129 129
diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp
index 67dd10500..5be6dabd9 100644
--- a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp
+++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp
@@ -76,7 +76,7 @@ void FixedPipelineState::Fill(const Maxwell& regs, bool has_extended_dynamic_sta
76 regs.instanced_arrays.IsInstancingEnabled(index) ? regs.vertex_array[index].divisor : 0; 76 regs.instanced_arrays.IsInstancingEnabled(index) ? regs.vertex_array[index].divisor : 0;
77 } 77 }
78 78
79 for (std::size_t index = 0; index < Maxwell::NumVertexAttributes; ++index) { 79 for (size_t index = 0; index < Maxwell::NumVertexAttributes; ++index) {
80 const auto& input = regs.vertex_attrib_format[index]; 80 const auto& input = regs.vertex_attrib_format[index];
81 auto& attribute = attributes[index]; 81 auto& attribute = attributes[index];
82 attribute.raw = 0; 82 attribute.raw = 0;
@@ -85,6 +85,7 @@ void FixedPipelineState::Fill(const Maxwell& regs, bool has_extended_dynamic_sta
85 attribute.offset.Assign(input.offset); 85 attribute.offset.Assign(input.offset);
86 attribute.type.Assign(static_cast<u32>(input.type.Value())); 86 attribute.type.Assign(static_cast<u32>(input.type.Value()));
87 attribute.size.Assign(static_cast<u32>(input.size.Value())); 87 attribute.size.Assign(static_cast<u32>(input.size.Value()));
88 attribute.binding_index_enabled.Assign(regs.vertex_array[index].IsEnabled() ? 1 : 0);
88 } 89 }
89 90
90 for (std::size_t index = 0; index < std::size(attachments); ++index) { 91 for (std::size_t index = 0; index < std::size(attachments); ++index) {
@@ -172,14 +173,9 @@ void FixedPipelineState::DynamicState::Fill(const Maxwell& regs) {
172 depth_test_func.Assign(PackComparisonOp(regs.depth_test_func)); 173 depth_test_func.Assign(PackComparisonOp(regs.depth_test_func));
173 cull_face.Assign(PackCullFace(regs.cull_face)); 174 cull_face.Assign(PackCullFace(regs.cull_face));
174 cull_enable.Assign(regs.cull_test_enabled != 0 ? 1 : 0); 175 cull_enable.Assign(regs.cull_test_enabled != 0 ? 1 : 0);
175 176 std::ranges::transform(regs.vertex_array, vertex_strides.begin(), [](const auto& array) {
176 for (std::size_t index = 0; index < Maxwell::NumVertexArrays; ++index) { 177 return static_cast<u16>(array.stride.Value());
177 const auto& input = regs.vertex_array[index]; 178 });
178 VertexBinding& binding = vertex_bindings[index];
179 binding.raw = 0;
180 binding.enabled.Assign(input.IsEnabled() ? 1 : 0);
181 binding.stride.Assign(static_cast<u16>(input.stride.Value()));
182 }
183} 179}
184 180
185std::size_t FixedPipelineState::Hash() const noexcept { 181std::size_t FixedPipelineState::Hash() const noexcept {
diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.h b/src/video_core/renderer_vulkan/fixed_pipeline_state.h
index 7e95e6fce..465a55fdb 100644
--- a/src/video_core/renderer_vulkan/fixed_pipeline_state.h
+++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.h
@@ -96,6 +96,8 @@ struct FixedPipelineState {
96 BitField<6, 14, u32> offset; 96 BitField<6, 14, u32> offset;
97 BitField<20, 3, u32> type; 97 BitField<20, 3, u32> type;
98 BitField<23, 6, u32> size; 98 BitField<23, 6, u32> size;
99 // Not really an element of a vertex attribute, but it can be packed here
100 BitField<29, 1, u32> binding_index_enabled;
99 101
100 constexpr Maxwell::VertexAttribute::Type Type() const noexcept { 102 constexpr Maxwell::VertexAttribute::Type Type() const noexcept {
101 return static_cast<Maxwell::VertexAttribute::Type>(type.Value()); 103 return static_cast<Maxwell::VertexAttribute::Type>(type.Value());
@@ -130,12 +132,6 @@ struct FixedPipelineState {
130 } 132 }
131 }; 133 };
132 134
133 union VertexBinding {
134 u16 raw;
135 BitField<0, 12, u16> stride;
136 BitField<12, 1, u16> enabled;
137 };
138
139 struct DynamicState { 135 struct DynamicState {
140 union { 136 union {
141 u32 raw1; 137 u32 raw1;
@@ -153,7 +149,8 @@ struct FixedPipelineState {
153 BitField<0, 2, u32> cull_face; 149 BitField<0, 2, u32> cull_face;
154 BitField<2, 1, u32> cull_enable; 150 BitField<2, 1, u32> cull_enable;
155 }; 151 };
156 std::array<VertexBinding, Maxwell::NumVertexArrays> vertex_bindings; 152 // Vertex stride is a 12 bits value, we have 4 bits to spare per element
153 std::array<u16, Maxwell::NumVertexArrays> vertex_strides;
157 154
158 void Fill(const Maxwell& regs); 155 void Fill(const Maxwell& regs);
159 156
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
index 8a94464f6..a5214d0bc 100644
--- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
+++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
@@ -212,11 +212,7 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const SPIRVProgram& program,
212 // state is ignored 212 // state is ignored
213 dynamic.raw1 = 0; 213 dynamic.raw1 = 0;
214 dynamic.raw2 = 0; 214 dynamic.raw2 = 0;
215 for (FixedPipelineState::VertexBinding& binding : dynamic.vertex_bindings) { 215 dynamic.vertex_strides.fill(0);
216 // Enable all vertex bindings
217 binding.raw = 0;
218 binding.enabled.Assign(1);
219 }
220 } else { 216 } else {
221 dynamic = state.dynamic_state; 217 dynamic = state.dynamic_state;
222 } 218 }
@@ -224,19 +220,16 @@ vk::Pipeline VKGraphicsPipeline::CreatePipeline(const SPIRVProgram& program,
224 std::vector<VkVertexInputBindingDescription> vertex_bindings; 220 std::vector<VkVertexInputBindingDescription> vertex_bindings;
225 std::vector<VkVertexInputBindingDivisorDescriptionEXT> vertex_binding_divisors; 221 std::vector<VkVertexInputBindingDivisorDescriptionEXT> vertex_binding_divisors;
226 for (std::size_t index = 0; index < Maxwell::NumVertexArrays; ++index) { 222 for (std::size_t index = 0; index < Maxwell::NumVertexArrays; ++index) {
227 const auto& binding = dynamic.vertex_bindings[index]; 223 if (state.attributes[index].binding_index_enabled == 0) {
228 if (!binding.enabled) {
229 continue; 224 continue;
230 } 225 }
231 const bool instanced = state.binding_divisors[index] != 0; 226 const bool instanced = state.binding_divisors[index] != 0;
232 const auto rate = instanced ? VK_VERTEX_INPUT_RATE_INSTANCE : VK_VERTEX_INPUT_RATE_VERTEX; 227 const auto rate = instanced ? VK_VERTEX_INPUT_RATE_INSTANCE : VK_VERTEX_INPUT_RATE_VERTEX;
233
234 vertex_bindings.push_back({ 228 vertex_bindings.push_back({
235 .binding = static_cast<u32>(index), 229 .binding = static_cast<u32>(index),
236 .stride = binding.stride, 230 .stride = dynamic.vertex_strides[index],
237 .inputRate = rate, 231 .inputRate = rate,
238 }); 232 });
239
240 if (instanced) { 233 if (instanced) {
241 vertex_binding_divisors.push_back({ 234 vertex_binding_divisors.push_back({
242 .binding = static_cast<u32>(index), 235 .binding = static_cast<u32>(index),
diff --git a/src/yuzu/configuration/configure_motion_touch.cpp b/src/yuzu/configuration/configure_motion_touch.cpp
index c2a7113da..eb8eacbf9 100644
--- a/src/yuzu/configuration/configure_motion_touch.cpp
+++ b/src/yuzu/configuration/configure_motion_touch.cpp
@@ -51,6 +51,8 @@ CalibrationConfigurationDialog::CalibrationConfigurationDialog(QWidget* parent,
51 case CalibrationConfigurationJob::Status::Completed: 51 case CalibrationConfigurationJob::Status::Completed:
52 text = tr("Configuration completed!"); 52 text = tr("Configuration completed!");
53 break; 53 break;
54 default:
55 break;
54 } 56 }
55 QMetaObject::invokeMethod(this, "UpdateLabelText", Q_ARG(QString, text)); 57 QMetaObject::invokeMethod(this, "UpdateLabelText", Q_ARG(QString, text));
56 if (status == CalibrationConfigurationJob::Status::Completed) { 58 if (status == CalibrationConfigurationJob::Status::Completed) {
diff --git a/src/yuzu/util/url_request_interceptor.cpp b/src/yuzu/util/url_request_interceptor.cpp
index 2d491d8c0..b637e771e 100644
--- a/src/yuzu/util/url_request_interceptor.cpp
+++ b/src/yuzu/util/url_request_interceptor.cpp
@@ -22,6 +22,8 @@ void UrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) {
22 case QWebEngineUrlRequestInfo::ResourceTypeXhr: 22 case QWebEngineUrlRequestInfo::ResourceTypeXhr:
23 emit FrameChanged(); 23 emit FrameChanged();
24 break; 24 break;
25 default:
26 break;
25 } 27 }
26} 28}
27 29
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index 39e0d35aa..4faf62ede 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -95,8 +95,6 @@ int main(int argc, char** argv) {
95 int option_index = 0; 95 int option_index = 0;
96 96
97 InitializeLogging(); 97 InitializeLogging();
98
99 char* endarg;
100#ifdef _WIN32 98#ifdef _WIN32
101 int argc_w; 99 int argc_w;
102 auto argv_w = CommandLineToArgvW(GetCommandLineW(), &argc_w); 100 auto argv_w = CommandLineToArgvW(GetCommandLineW(), &argc_w);