1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add support for Android 2.3+

There have been plenty of ppl involved in creating this version.
I don't wanna mention names as I'm sure I'd forget someone so I
just tell where help has been done:
- The partial android versions done by various ppl
- Testing on different android devices
- reviewing code (especially the in core changes)
- testing controls
- reviewing texts

A big thank you to everyone helping this to be completed!
This commit is contained in:
sapier 2014-04-21 14:10:59 +02:00
parent ff36071d93
commit 1cc40c0a7c
66 changed files with 4425 additions and 162 deletions

View file

@ -167,6 +167,7 @@ int getNumberOfProcessors() {
}
#ifndef __ANDROID__
bool threadBindToProcessor(threadid_t tid, int pnumber) {
#if defined(_WIN32)
@ -194,7 +195,7 @@ bool threadBindToProcessor(threadid_t tid, int pnumber) {
pnumber, NULL) == 0;
#elif defined(_AIX)
return bindprocessor(BINDTHREAD, (tid_t)tid, pnumber) == 0;
#elif defined(__hpux) || defined(hpux)
@ -203,11 +204,11 @@ bool threadBindToProcessor(threadid_t tid, int pnumber) {
return pthread_processor_bind_np(PTHREAD_BIND_ADVISORY_NP,
&answer, pnumber, tid) == 0;
#elif defined(__APPLE__)
struct thread_affinity_policy tapol;
thread_port_t threadport = pthread_mach_thread_np(tid);
tapol.affinity_tag = pnumber + 1;
return thread_policy_set(threadport, THREAD_AFFINITY_POLICY,
@ -219,7 +220,7 @@ bool threadBindToProcessor(threadid_t tid, int pnumber) {
#endif
}
#endif
bool threadSetPriority(threadid_t tid, int prio) {
#if defined(_WIN32)
@ -232,21 +233,21 @@ bool threadSetPriority(threadid_t tid, int prio) {
CloseHandle(hThread);
return success;
#else
struct sched_param sparam;
int policy;
if (pthread_getschedparam(tid, &policy, &sparam) != 0)
return false;
int min = sched_get_priority_min(policy);
int max = sched_get_priority_max(policy);
sparam.sched_priority = min + prio * (max - min) / THREAD_PRIORITY_HIGHEST;
return pthread_setschedparam(tid, policy, &sparam) == 0;
#endif
}
@ -458,9 +459,15 @@ void initializePaths()
{
char buf[BUFSIZ];
memset(buf, 0, BUFSIZ);
assert(readlink("/proc/self/exe", buf, BUFSIZ-1) != -1);
pathRemoveFile(buf, '/');
bindir = buf;
if (readlink("/proc/self/exe", buf, BUFSIZ-1) == -1) {
errorstream << "Unable to read bindir "<< std::endl;
#ifndef __ANDROID__
assert("Unable to read bindir" == 0);
#endif
} else {
pathRemoveFile(buf, '/');
bindir = buf;
}
}
// Find share directory from these.
@ -472,6 +479,9 @@ void initializePaths()
trylist.push_back(
bindir + DIR_DELIM + ".." + DIR_DELIM + "share" + DIR_DELIM + PROJECT_NAME);
trylist.push_back(bindir + DIR_DELIM + "..");
#ifdef __ANDROID__
trylist.push_back(DIR_DELIM "sdcard" DIR_DELIM PROJECT_NAME);
#endif
for(std::list<std::string>::const_iterator i = trylist.begin();
i != trylist.end(); i++)
@ -490,8 +500,11 @@ void initializePaths()
path_share = trypath;
break;
}
#ifndef __ANDROID__
path_user = std::string(getenv("HOME")) + DIR_DELIM + "." + PROJECT_NAME;
#else
path_user = std::string(DIR_DELIM "sdcard" DIR_DELIM PROJECT_NAME DIR_DELIM);
#endif
/*
OS X
@ -539,6 +552,7 @@ v2u32 getWindowSize() {
return device->getVideoDriver()->getScreenSize();
}
#ifndef __ANDROID__
float getDisplayDensity() {
float gui_scaling = g_settings->getFloat("gui_scaling");
@ -562,6 +576,7 @@ v2u32 getDisplaySize() {
return deskres;
}
#endif
#endif
} //namespace porting