diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/memchecker.cc | 25 | ||||
| -rw-r--r-- | src/platform.h | 60 | 
2 files changed, 75 insertions, 10 deletions
| diff --git a/src/memchecker.cc b/src/memchecker.cc index 1110e69..81c9da7 100644 --- a/src/memchecker.cc +++ b/src/memchecker.cc @@ -26,12 +26,12 @@   */  #include "memchecker.h" -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#else +#include "platform.h" + +#if DG_PLATFORM == DG_PLATFORM_LINUX  #include <sys/sysinfo.h>  #endif +  #include <sndfile.h>  #include <hugin.hpp> @@ -48,15 +48,19 @@ uint64_t MemChecker::calcFreeMemory() const  	uint64_t free_memory = 0;  	// Platform specific calculation of the amount of free memory. -#ifdef WIN32 +#if DG_PLATFORM == DG_PLATFORM_LINUX +	struct sysinfo sys_info; +	sysinfo(&sys_info); +	free_memory = sys_info.freeram * sys_info.mem_unit; +#elif DG_PLATFORM == DG_PLATFORM_WINDOWS  	MEMORYSTATUSEX status;  	status.dwLength = sizeof(status);  	GlobalMemoryStatusEx(&status);  	free_memory = status.ullAvailPhys; -#else -	struct sysinfo sys_info; -	sysinfo(&sys_info); -	free_memory = sys_info.freeram * sys_info.mem_unit; +#elif DG_PLATFORM == DG_PLATFORM_OSX +	// TODO +#elif DG_PLATFORM == DG_PLATFORM_UNIX +	// TODO  #endif  	DEBUG(memchecker, "Calculated %" PRIu64 " free memory.\n", free_memory); @@ -92,7 +96,8 @@ uint64_t MemChecker::calcBytesPerChannel(const std::string& filename) const  	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)); +		ERR(memchecker, "SNDFILE Error (%s): %s\n", +		    filename.c_str(), sf_strerror(f));  		return 0;  	} diff --git a/src/platform.h b/src/platform.h new file mode 100644 index 0000000..0357f15 --- /dev/null +++ b/src/platform.h @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            platform.h + * + *  Fri May 20 18:46:17 CEST 2016 + *  Copyright 2016 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  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 + +//! The DG platform types: +#define DG_PLATFORM_LINUX 1   //!< Platform is Linux based. +#define DG_PLATFORM_WINDOWS 2 //!< Platform is Windows based +#define DG_PLATFORM_OSX 3     //!< Platform is MacOSX based. +#define DG_PLATFORM_UNIX 4    //!< Platform is Unix based. + +#ifdef __linux__ +	#define DG_PLATFORM DG_PLATFORM_LINUX + +#elif _WIN32 +	#define DG_PLATFORM DG_PLATFORM_WINDOWS + +	#define WIN32_LEAN_AND_MEAN +	#include <windows.h> + +#elif __APPLE__ +	#define DG_PLATFORM DG_PLATFORM_OSX + +#elif __unix__ +	// All other unices (*BSD etc) +	#define DG_PLATFORM DG_PLATFORM_UNIX + +#endif + +#ifndef DG_PLATFORM +	#error "Platform not defined!" +#endif + +#if defined(_POSIX_VERSION) +	// POSIX +	#define DG_POSIX +#endif | 
