1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-21 01:24:21 +00:00

Collected all the platform-specific code from the different build folders into a new folder in src/native. Also removed support for OSX10.2

This commit is contained in:
jules 2009-08-20 09:19:37 +00:00
parent f5a3fb0fb3
commit ea83c7ee5e
88 changed files with 930 additions and 1349 deletions

View file

@ -0,0 +1,257 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-9 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE 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 General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
// (This file gets included by juce_linux_NativeCode.cpp, rather than being
// compiled on its own).
#ifdef JUCE_INCLUDED_FILE
//==============================================================================
/*static juce_noinline unsigned int getCPUIDWord (int* familyModel, int* extFeatures) throw()
{
unsigned int cpu = 0;
unsigned int ext = 0;
unsigned int family = 0;
unsigned int dummy = 0;
#if JUCE_64BIT
__asm__ ("cpuid"
: "=a" (family), "=b" (ext), "=c" (dummy), "=d" (cpu) : "a" (1));
#else
__asm__ ("push %%ebx; cpuid; mov %%ebx, %%edi; pop %%ebx"
: "=a" (family), "=D" (ext), "=c" (dummy), "=d" (cpu) : "a" (1));
#endif
if (familyModel != 0)
*familyModel = family;
if (extFeatures != 0)
*extFeatures = ext;
return cpu;
}*/
//==============================================================================
void Logger::outputDebugString (const String& text) throw()
{
fputs (text.toUTF8(), stdout);
fputs ("\n", stdout);
}
void Logger::outputDebugPrintf (const tchar* format, ...) throw()
{
String text;
va_list args;
va_start (args, format);
text.vprintf(format, args);
outputDebugString(text);
}
SystemStats::OperatingSystemType SystemStats::getOperatingSystemType() throw()
{
return Linux;
}
const String SystemStats::getOperatingSystemName() throw()
{
return T("Linux");
}
bool SystemStats::isOperatingSystem64Bit() throw()
{
#if JUCE_64BIT
return true;
#else
//xxx not sure how to find this out?..
return false;
#endif
}
static const String getCpuInfo (const char* key, bool lastOne = false) throw()
{
String info;
char buf [256];
FILE* f = fopen ("/proc/cpuinfo", "r");
while (f != 0 && fgets (buf, sizeof(buf), f))
{
if (strncmp (buf, key, strlen (key)) == 0)
{
char* p = buf;
while (*p && *p != '\n')
++p;
if (*p != 0)
*p = 0;
p = buf;
while (*p != 0 && *p != ':')
++p;
if (*p != 0 && *(p + 1) != 0)
info = p + 2;
if (! lastOne)
break;
}
}
fclose (f);
return info;
}
bool SystemStats::hasMMX() throw()
{
return getCpuInfo ("flags").contains (T("mmx"));
}
bool SystemStats::hasSSE() throw()
{
return getCpuInfo ("flags").contains (T("sse"));
}
bool SystemStats::hasSSE2() throw()
{
return getCpuInfo ("flags").contains (T("sse2"));
}
bool SystemStats::has3DNow() throw()
{
return getCpuInfo ("flags").contains (T("3dnow"));
}
const String SystemStats::getCpuVendor() throw()
{
return getCpuInfo ("vendor_id");
}
int SystemStats::getCpuSpeedInMegaherz() throw()
{
const String speed (getCpuInfo ("cpu MHz"));
return (int) (speed.getFloatValue() + 0.5f);
}
int SystemStats::getMemorySizeInMegabytes() throw()
{
struct sysinfo sysi;
if (sysinfo (&sysi) == 0)
return (sysi.totalram * sysi.mem_unit / (1024 * 1024));
return 0;
}
uint32 juce_millisecondsSinceStartup() throw()
{
static unsigned int calibrate = 0;
static bool calibrated = false;
timeval t;
unsigned int ret = 0;
if (! gettimeofday (&t, 0))
{
if (! calibrated)
{
struct sysinfo sysi;
if (sysinfo (&sysi) == 0)
// Safe to assume system was not brought up earlier than 1970!
calibrate = t.tv_sec - sysi.uptime;
calibrated = true;
}
ret = 1000 * (t.tv_sec - calibrate) + (t.tv_usec / 1000);
}
return ret;
}
double Time::getMillisecondCounterHiRes() throw()
{
return getHighResolutionTicks() * 0.001;
}
int64 Time::getHighResolutionTicks() throw()
{
timeval t;
if (gettimeofday (&t, 0))
return 0;
return ((int64) t.tv_sec * (int64) 1000000) + (int64) t.tv_usec;
}
int64 Time::getHighResolutionTicksPerSecond() throw()
{
// Microseconds
return 1000000;
}
bool Time::setSystemTimeToThisTime() const throw()
{
timeval t;
t.tv_sec = millisSinceEpoch % 1000000;
t.tv_usec = millisSinceEpoch - t.tv_sec;
return settimeofday (&t, NULL) ? false : true;
}
int SystemStats::getPageSize() throw()
{
static int systemPageSize = 0;
if (systemPageSize == 0)
systemPageSize = sysconf (_SC_PAGESIZE);
return systemPageSize;
}
int SystemStats::getNumCpus() throw()
{
const int lastCpu = getCpuInfo ("processor", true).getIntValue();
return lastCpu + 1;
}
//==============================================================================
void SystemStats::initialiseStats() throw()
{
// Process starts off as root when running suid
Process::lowerPrivilege();
String s (SystemStats::getJUCEVersion());
}
void PlatformUtilities::fpuReset()
{
}
#endif