forked from dolphin-emu/dolphin
		
	g_compressAndDumpStateSyncEvent was Set() before destruction of file object (i.e. before flushing changes and closing file). Also, adds Common::ScopeGuard wrapper for RAII.
		
			
				
	
	
		
			51 lines
		
	
	
		
			778 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			778 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2015 Dolphin Emulator Project
 | |
| // Licensed under GPLv2+
 | |
| // Refer to the license.txt file included.
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <functional>
 | |
| 
 | |
| namespace Common
 | |
| {
 | |
| 
 | |
| class ScopeGuard final
 | |
| {
 | |
| public:
 | |
| 	template<class Callable>
 | |
| 	ScopeGuard(Callable&& finalizer) : m_finalizer(std::forward<Callable>(finalizer)) {}
 | |
| 
 | |
| 	ScopeGuard(ScopeGuard&& other) : m_finalizer(std::move(other.m_finalizer))
 | |
| 	{
 | |
| 		other.m_finalizer = nullptr;
 | |
| 	}
 | |
| 
 | |
| 	~ScopeGuard()
 | |
| 	{
 | |
| 		Exit();
 | |
| 	}
 | |
| 
 | |
| 	void Dismiss()
 | |
| 	{
 | |
| 		m_finalizer = nullptr;
 | |
| 	}
 | |
| 
 | |
| 	void Exit()
 | |
| 	{
 | |
| 		if (m_finalizer)
 | |
| 		{
 | |
| 			m_finalizer(); // must not throw
 | |
| 			m_finalizer = nullptr;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	ScopeGuard(const ScopeGuard&) = delete;
 | |
| 
 | |
| 	void operator=(const ScopeGuard&) = delete;
 | |
| 
 | |
| private:
 | |
| 	std::function<void()> m_finalizer;
 | |
| };
 | |
| 
 | |
| }  // Namespace Common
 |