mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Handle cases when std::optional does not contain a value
This commit is contained in:
		
							parent
							
								
									d37a2270d6
								
							
						
					
					
						commit
						2306af3600
					
				
					 9 changed files with 15 additions and 7 deletions
				
			
		|  | @ -317,7 +317,7 @@ void ConfigureInput::setPollingResult(const Common::ParamPackage& params, bool a | |||
|         poller->Stop(); | ||||
|     } | ||||
| 
 | ||||
|     if (!abort) { | ||||
|     if (!abort && input_setter) { | ||||
|         (*input_setter)(params); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -116,6 +116,7 @@ System::ResultStatus System::Load(EmuWindow& emu_window, const std::string& file | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     ASSERT(system_mode.first); | ||||
|     ResultStatus init_result{Init(emu_window, *system_mode.first)}; | ||||
|     if (init_result != ResultStatus::Success) { | ||||
|         LOG_CRITICAL(Core, "Failed to initialize system (Error {})!", | ||||
|  |  | |||
|  | @ -147,7 +147,9 @@ ResultCode SharedMemory::Map(Process* target_process, VAddr address, MemoryPermi | |||
| 
 | ||||
|     if (base_address == 0 && target_address == 0) { | ||||
|         // Calculate the address at which to map the memory block.
 | ||||
|         target_address = *Memory::PhysicalToVirtualAddress(linear_heap_phys_address); | ||||
|         auto maybe_vaddr = Memory::PhysicalToVirtualAddress(linear_heap_phys_address); | ||||
|         ASSERT(maybe_vaddr); | ||||
|         target_address = *maybe_vaddr; | ||||
|     } | ||||
| 
 | ||||
|     // Map the memory block into the target process
 | ||||
|  |  | |||
|  | @ -142,7 +142,6 @@ public: | |||
| 
 | ||||
| private: | ||||
|     /// Parameter data to be returned in the next call to Glance/ReceiveParameter.
 | ||||
|     /// TODO(Subv): Use std::optional once we migrate to C++17.
 | ||||
|     std::optional<MessageParameter> next_parameter; | ||||
| 
 | ||||
|     static constexpr std::size_t NumAppletSlot = 4; | ||||
|  |  | |||
|  | @ -205,8 +205,10 @@ void Module::Interface::GetSharedFont(Kernel::HLERequestContext& ctx) { | |||
| 
 | ||||
|     // The shared font has to be relocated to the new address before being passed to the
 | ||||
|     // application.
 | ||||
|     VAddr target_address = | ||||
|         *Memory::PhysicalToVirtualAddress(apt->shared_font_mem->linear_heap_phys_address); | ||||
|     auto maybe_vaddr = | ||||
|         Memory::PhysicalToVirtualAddress(apt->shared_font_mem->linear_heap_phys_address); | ||||
|     ASSERT(maybe_vaddr); | ||||
|     VAddr target_address = *maybe_vaddr; | ||||
|     if (!apt->shared_font_relocated) { | ||||
|         BCFNT::RelocateSharedFont(apt->shared_font_mem, target_address); | ||||
|         apt->shared_font_relocated = true; | ||||
|  |  | |||
|  | @ -433,7 +433,9 @@ void RasterizerFlushVirtualRegion(VAddr start, u32 size, FlushMode mode) { | |||
|         VAddr overlap_start = std::max(start, region_start); | ||||
|         VAddr overlap_end = std::min(end, region_end); | ||||
| 
 | ||||
|         PAddr physical_start = *TryVirtualToPhysicalAddress(overlap_start); | ||||
|         auto maybe_paddr = TryVirtualToPhysicalAddress(overlap_start); | ||||
|         ASSERT(maybe_paddr); | ||||
|         PAddr physical_start = *maybe_paddr; | ||||
|         u32 overlap_size = overlap_end - overlap_start; | ||||
| 
 | ||||
|         auto* rasterizer = VideoCore::g_renderer->Rasterizer(); | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ public: | |||
|     std::unique_ptr<Input::TouchDevice> Create(const Common::ParamPackage& params) override { | ||||
|         { | ||||
|             std::lock_guard<std::mutex> guard(status->update_mutex); | ||||
|             status->touch_calibration.reset(); | ||||
|             status->touch_calibration.emplace(); | ||||
|             // These default values work well for DS4 but probably not other touch inputs
 | ||||
|             status->touch_calibration->min_x = params.Get("min_x", 100); | ||||
|             status->touch_calibration->min_y = params.Get("min_y", 50); | ||||
|  |  | |||
|  | @ -948,6 +948,7 @@ Surface FindMatch(const SurfaceCache& surface_cache, const SurfaceParams& params | |||
|                 return std::make_pair(surface->CanSubRect(params), surface->GetInterval()); | ||||
|             }); | ||||
|             IsMatch_Helper(std::integral_constant<MatchFlags, MatchFlags::Copy>{}, [&] { | ||||
|                 ASSERT(validate_interval); | ||||
|                 auto copy_interval = | ||||
|                     params.FromInterval(*validate_interval).GetCopyableInterval(surface); | ||||
|                 bool matched = boost::icl::length(copy_interval & *validate_interval) != 0 && | ||||
|  |  | |||
|  | @ -600,6 +600,7 @@ void JitShader::Compile_BREAKC(Instruction instr) { | |||
|     Compile_Assert(looping, "BREAKC must be inside a LOOP"); | ||||
|     if (looping) { | ||||
|         Compile_EvaluateCondition(instr); | ||||
|         ASSERT(loop_break_label); | ||||
|         jnz(*loop_break_label); | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue