Exemple #1
0
	type_result DX9::restore()
	{
		HRESULT	results = _device->TestCooperativeLevel();
		while(results == D3DERR_DEVICELOST)
		{
			while(results != D3DERR_DEVICENOTRESET)
			{
				Sleep(1000);
				MSG	message;
				PeekMessage(&message, NULL, 0, 0, PM_REMOVE);
				TranslateMessage(&message);
				DispatchMessage(&message);

				results = _device->TestCooperativeLevel();
			}		

			_releaseShaders();
			_releaseResources();

			if ( FAILED(_device->Reset(&_present_parameter)) )
				results = D3DERR_DEVICELOST;
			else
			{			
				_restoreResources();
				_releaseShaders();
				results = _device->TestCooperativeLevel();
			}		
		}

		return RESULT_SUCCESS;
	}
Exemple #2
0
	void DX9::_release()
	{
		_releaseShaders();
		_releaseResources();
		_releaseDevice();
		_present_parameter.release();
		_capabilities.release();
		_display_mode_manager.release();
		_window_handle = NE_NULL;
	}
Status CollectionBulkLoaderImpl::_runTaskReleaseResourcesOnFailure(const F& task) noexcept {
    AlternativeClientRegion acr(_client);
    auto guard = makeGuard([this] { _releaseResources(); });
    try {
        const auto status = task();
        if (status.isOK()) {
            guard.dismiss();
        }
        return status;
    } catch (...) {
        std::terminate();
    }
}