diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2018-06-16 18:05:00 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2018-06-16 18:15:59 +0200 | 
| commit | 2abc107b24f73b8c4664189c34196d9a27a3e339 (patch) | |
| tree | b7067a45f7294dbd143c410bdfb690157c976e3c /src | |
| parent | e694a23ab28686ecc0635c2ac8c625e743b89a3b (diff) | |
Port the rest of the unittests to DGUnit and remove the CppUnit dependency.
Diffstat (limited to 'src')
| -rw-r--r-- | src/memchecker.cc | 137 | ||||
| -rw-r--r-- | src/memchecker.h | 52 | 
2 files changed, 0 insertions, 189 deletions
| diff --git a/src/memchecker.cc b/src/memchecker.cc deleted file mode 100644 index ec0c9df..0000000 --- a/src/memchecker.cc +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            memchecker.cc - * - *  Sat Jan 16 18:27:52 CET 2016 - *  Copyright 2016 André Nusser - *  andre.nusser@googlemail.com - ****************************************************************************/ - -/* - *  This file is part of DrumGizmo. - * - *  DrumGizmo is free software; you can redistribute it and/or modify - *  it under the terms of the GNU Lesser General Public License as published by - *  the Free Software Foundation; either version 3 of the License, or - *  (at your option) any later version. - * - *  DrumGizmo is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU Lesser General Public License for more details. - * - *  You should have received a copy of the GNU Lesser General Public License - *  along with DrumGizmo; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. - */ -#include "memchecker.h" - -#include "platform.h" - -#if DG_PLATFORM == DG_PLATFORM_LINUX -#include <sys/sysinfo.h> -#elif DG_PLATFORM == DG_PLATFORM_OSX -#include <mach/vm_statistics.h> -#include <mach/mach_types.h> -#include <mach/mach_init.h> -#include <mach/mach_host.h> -#elif DG_PLATFORM == DG_PLATFORM_FREEBSD -#include <sys/types.h> -#include <sys/sysctl.h> -#include <sys/vmmeter.h> -#endif - -#include <sndfile.h> -#include <hugin.hpp> - -bool MemChecker::enoughFreeMemory(const DrumKit& drumkit) const -{ -	uint64_t free_memory = calcFreeMemory(); -	uint64_t needed_memory = calcNeededMemory(drumkit); - -	return free_memory >= needed_memory; -} - -uint64_t MemChecker::calcFreeMemory() const -{ -	uint64_t free_memory = 0; - -	// Platform specific calculation of the amount of free memory. -#if DG_PLATFORM == DG_PLATFORM_LINUX -	struct sysinfo sys_info; -	sysinfo(&sys_info); -	free_memory = (uint64_t)sys_info.freeram * (uint64_t)sys_info.mem_unit; -#elif DG_PLATFORM == DG_PLATFORM_WINDOWS -	MEMORYSTATUSEX status; -	status.dwLength = sizeof(status); -	GlobalMemoryStatusEx(&status); -	free_memory = status.ullAvailPhys; -#elif DG_PLATFORM == DG_PLATFORM_OSX -	vm_size_t page_size; -	vm_statistics64_data_t vm_stats; -	mach_port_t mach_port = mach_host_self(); -	mach_msg_type_number_t count = sizeof(vm_stats) / sizeof(natural_t); - -	if (KERN_SUCCESS == host_page_size(mach_port, &page_size) && -	    KERN_SUCCESS == host_statistics64(mach_port, HOST_VM_INFO, (host_info64_t)&vm_stats, &count)) -	{ -		free_memory = (uint64_t)vm_stats.free_count * (uint64_t)page_size; -	} -#elif DG_PLATFORM == DG_PLATFORM_FREEBSD -	u_int page_size; -	struct vmtotal vmt; -	size_t vmt_size, uint_size; - -	vmt_size = sizeof(vmt); -	uint_size = sizeof(page_size); - -	sysctlbyname("vm.vmtotal", &vmt, &vmt_size, NULL, 0); -	sysctlbyname("vm.stats.vm.v_page_size", &page_size, &uint_size, NULL, 0); - -	free_memory = vmt.t_free * (u_int64_t)page_size; -#elif DG_PLATFORM == DG_PLATFORM_UNIX -	// TODO -#endif - -	DEBUG(memchecker, "Calculated %" PRIu64 " free memory.\n", free_memory); - -	return free_memory; -} - -uint64_t MemChecker::calcNeededMemory(const DrumKit& drumkit) const -{ -	uint64_t needed_memory = 0; - -	// Calculate memory usage of all instruments of drumkit. -	for(auto& instr_ptr: drumkit.instruments) -	{ -		const auto& audiofiles = instr_ptr->audiofiles; - -		// Calculate memory usage of all audiofiles. -		for(auto& audiofile: audiofiles) -		{ -			needed_memory += calcBytesPerChannel(audiofile->filename); -		} -	} - -	DEBUG(memchecker, "Calculated %" PRIu64 " needed memory.\n", needed_memory); - -	return needed_memory; -} - -uint64_t MemChecker::calcBytesPerChannel(const std::string& filename) const -{ -	SF_INFO sf_info{}; - -	SNDFILE* f = sf_open(filename.c_str(), SFM_READ, &sf_info); -	if(!f) -	{ -		ERR(memchecker, "SNDFILE Error (%s): %s\n", -		    filename.c_str(), sf_strerror(f)); -		return 0; -	} - -	sf_close(f); - -	return sf_info.frames * sizeof(sample_t); -} diff --git a/src/memchecker.h b/src/memchecker.h deleted file mode 100644 index aeefb3a..0000000 --- a/src/memchecker.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - *            memchecker.h - * - *  Sat Jan 16 18:27:52 CET 2016 - *  Copyright 2016 André Nusser - *  andre.nusser@googlemail.com - ****************************************************************************/ - -/* - *  This file is part of DrumGizmo. - * - *  DrumGizmo is free software; you can redistribute it and/or modify - *  it under the terms of the GNU Lesser General Public License as published by - *  the Free Software Foundation; either version 3 of the License, or - *  (at your option) any later version. - * - *  DrumGizmo is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU Lesser General Public License for more details. - * - *  You should have received a copy of the GNU Lesser General Public License - *  along with DrumGizmo; if not, write to the Free Software - *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. - */ -#pragma once - -#include "drumkit.h" - -#include <string> -// includes cstdint automatically and is needed for the PRIu64 macro -#include <cinttypes> - -class MemChecker -{ -public: -	//! Checks if there is enough memory left to load drumkit into RAM. -	//! \param drumkit The drumkit for which it is checked if there's enough memory left. -	//! \return True iff there is enough memory left. -	bool enoughFreeMemory(const DrumKit& drumkit) const; - -protected: -	// Computes how much RAM (in bytes) is left. -	uint64_t calcFreeMemory() const; - -	// Computes how much memory the drumkit takes when loaded into RAM (in bytes). -	uint64_t calcNeededMemory(const DrumKit& drumkit) const; - -	// Computes the number of bytes per channel of <filename> using libsnd. -	uint64_t calcBytesPerChannel(const std::string& filename) const; -}; | 
