Android: add ARM64 and clang support

This commit is contained in:
MoNTE48 2019-07-11 01:04:18 +02:00
parent b40d176021
commit 2c45593015
19 changed files with 635 additions and 843 deletions

1
.gitignore vendored
View File

@ -102,6 +102,7 @@ build/android/obj
build/android/local.properties
build/android/.gradle
timestamp
.idea
## iOS build files
build/iOS/MultiCraft/MultiCraft.xcodeproj/xcuserdata

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +1,34 @@
buildscript {
repositories {
maven { url 'https://maven.google.com' }
jcenter()
google()
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.android.tools.build:gradle:3.4.2'
classpath 'com.google.gms:google-services:4.3.0'
classpath 'io.fabric.tools:gradle:1.29.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven { url 'https://maven.google.com' }
google()
jcenter()
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
compileSdkVersion 29
buildToolsVersion "29.0.0"
defaultConfig {
applicationId 'com.multicraft.game'
minSdkVersion 16
targetSdkVersion 28
targetSdkVersion 29
versionCode 1
}
Properties props = new Properties()
@ -53,15 +57,13 @@ android {
abi {
enable true
reset()
include "armeabi-v7a", "x86"
//include 'armeabi-v7a', 'arm64-v8a', 'x86'
include "armeabi-v7a", "arm64-v8a", "x86"
}
}
}
// build multiple APKs for all ABI
ext.abiCodes = ['armeabi-v7a': 0, 'x86': 1]
//ext.abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1, 'x86': 2]
ext.abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1, 'x86': 2]
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
@ -76,10 +78,11 @@ android.applicationVariants.all { variant ->
}
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.firebase:firebase-core:17.0.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
// Third-party libraries
implementation 'com.itlgl:iosdialog:1.0.0'
implementation 'gun0912.ted:tedpermission:2.2.2'
implementation 'org.apache.commons:commons-io:1.3.2'
implementation group: 'commons-io', name: 'commons-io', version: '2.4'
}

View File

@ -0,0 +1,2 @@
android.enableJetifier=true
android.useAndroidX=true

View File

@ -40,23 +40,7 @@ include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := MultiCraft
ifdef GPROF
GPROF_DEF=-DGPROF
endif
ifeq ($(TARGET_ABI),armeabi-v7a)
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
endif
ifeq ($(TARGET_ABI),x86)
LOCAL_CFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops
endif
ifndef NDEBUG
LOCAL_CFLAGS := -g -D_DEBUG -O0 -fno-omit-frame-pointer
endif
LOCAL_CFLAGS := \
LOCAL_CFLAGS += \
-DJSONCPP_NO_LOCALE_SUPPORT \
-DHAVE_TOUCHSCREENGUI \
-DUSE_CURL=1 \
@ -68,14 +52,11 @@ LOCAL_CFLAGS := \
-pipe
ifdef GPROF
GPROF_DEF := -DGPROF
PROFILER_LIBS := android-ndk-profiler
LOCAL_CFLAGS += -pg
endif
LOCAL_CFLAGS += -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto
LOCAL_CXXFLAGS := $(LOCAL_CFLAGS)
LOCAL_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
LOCAL_C_INCLUDES := \
jni/src \
jni/src/script \
@ -90,6 +71,8 @@ LOCAL_C_INCLUDES := \
deps/libvorbis-android/jni/include \
deps/leveldb/include \
deps/luajit/src \
deps/libiconv/include \
deps/libiconv/libcharset/include
LOCAL_SRC_FILES := \
jni/src/ban.cpp \
@ -311,14 +294,6 @@ LOCAL_SRC_FILES += \
# JSONCPP
LOCAL_SRC_FILES += jni/lib/jsoncpp/jsoncpp.cpp
# libiconv
LOCAL_CFLAGS += -D_ANDROID -DLIBDIR -DBUILDING_LIBICONV
LOCAL_C_INCLUDES += \
deps/libiconv/include \
deps/libiconv/lib \
deps/libiconv/libcharset/include
LOCAL_SRC_FILES += \
deps/libiconv/lib/iconv.c \
deps/libiconv/libcharset/lib/localcharset.c

View File

@ -1,8 +1,39 @@
APP_PLATFORM := ${APP_PLATFORM}
APP_ABI := ${TARGET_ABI}
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := 4.9
APP_DEPRECATED_HEADERS := true
APP_STL := ${APP_STL}
NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
APP_MODULES := MultiCraft
APP_CPPFLAGS += -fexceptions -frtti
APP_CPPFLAGS := -Ofast -fvisibility=hidden -fpic -fexceptions -Wno-deprecated-declarations
ifeq ($(COMPILER_VERSION),4.9)
APP_CPPFLAGS += -flto
endif
ifeq ($(TARGET_ABI),armeabi-v7a)
APP_CPPFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
endif
ifeq ($(TARGET_ABI),x86)
APP_CPPFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops
endif
ifndef NDEBUG
APP_CPPFLAGS := -g -D_DEBUG -O0 -fno-omit-frame-pointer
endif
APP_CFLAGS := $(APP_CPPFLAGS)
APP_CXXFLAGS := $(APP_CPPFLAGS) -frtti
APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
ifeq ($(COMPILER_VERSION),clang)
APP_CFLAGS += $(APP_CPPFLAGS) -Wno-parentheses-equality
APP_CXXFLAGS += $(APP_CPPFLAGS) -std=gnu++17
ifeq ($(TARGET_ABI),arm64-v8a)
APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections
endif
endif
ifndef NDEBUG
APP_LDFLAGS :=
endif

View File

@ -1,9 +1,6 @@
APP_PLATFORM := ${APP_PLATFORM}
APP_ABI := ${TARGET_ABI}
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := 4.9
APP_DEPRECATED_HEADERS := true
APP_STL := ${APP_STL}
NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
APP_CLAFGS += ${TARGET_CFLAGS_ADDON}
APP_CPPFLAGS += ${TARGET_CXXFLAGS_ADDON} -fexceptions -frtti
APP_LDFLAGS += ${TARGET_LDFLAGS_ADDON}
APP_CFLAGS := ${TARGET_CXXFLAGS_ADDON}

View File

@ -1,8 +1,15 @@
APP_PLATFORM := ${APP_PLATFORM}
APP_ABI := ${TARGET_ABI}
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := 4.9
APP_DEPRECATED_HEADERS := true
APP_STL := ${APP_STL}
NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
APP_MODULES := Irrlicht
APP_CPPFLAGS += -fexceptions -frtti
APP_CPPFLAGS := ${TARGET_CPPFLAGS_ADDON}
ifeq ($(COMPILER_VERSION),4.9)
APP_CPPFLAGS += -flto
endif
ifeq ($(COMPILER_VERSION),clang)
APP_CPPFLAGS += -std=gnu++11
endif

View File

@ -1,19 +0,0 @@
--- irrlicht/source/Irrlicht/Android/jni/Android.mk.orig 2016-02-15 05:33:03.000000000 +0200
+++ irrlicht/source/Irrlicht/Android/jni/Android.mk 2016-02-15 05:34:34.913711815 +0200
@@ -11,7 +11,15 @@
ifndef NDEBUG
LOCAL_CFLAGS += -g -D_DEBUG
else
-LOCAL_CFLAGS += -fexpensive-optimizations -O3
+ifeq ($(TARGET_ABI),armeabi-v7a)
+LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
+endif
+ifeq ($(TARGET_ABI),x86)
+LOCAL_CFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops
+endif
+LOCAL_CFLAGS += -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto
+LOCAL_CXXFLAGS := $(LOCAL_CFLAGS)
+LOCAL_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
endif
LOCAL_C_INCLUDES := ../../../include

View File

@ -1,240 +0,0 @@
--- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-22 17:01:13.266568869 +0200
+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-22 17:03:59.298572810 +0200
@@ -366,112 +366,140 @@
void(*convert)(const void*, s32, void*) = 0;
getFormatParameters(ColorFormat, InternalFormat, filtering, PixelFormat, PixelType, convert);
- // make sure we don't change the internal format of existing images
- if (!newTexture)
- InternalFormat = oldInternalFormat;
-
- Driver->setActiveTexture(0, this);
-
- if (Driver->testGLError())
- os::Printer::log("Could not bind Texture", ELL_ERROR);
-
- // mipmap handling for main texture
- if (!level && newTexture)
- {
- // auto generate if possible and no mipmap data is given
- if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE))
- {
- if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED))
- glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
- else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY))
- glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST);
- else
- glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE);
+ bool retry = false;
+
+ do {
+ if (retry) {
+ InternalFormat = GL_RGBA;
+ PixelFormat = GL_RGBA;
+ convert = CColorConverter::convert_A8R8G8B8toA8B8G8R8;
+ }
+ // make sure we don't change the internal format of existing images
+ if (!newTexture)
+ InternalFormat = oldInternalFormat;
- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
- AutomaticMipmapUpdate=true;
- }
+ Driver->setActiveTexture(0, this);
- // enable bilinear filter without mipmaps
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
- }
+ if (Driver->testGLError())
+ os::Printer::log("Could not bind Texture", ELL_ERROR);
- // now get image data and upload to GPU
+ // mipmap handling for main texture
+ if (!level && newTexture)
+ {
+ // auto generate if possible and no mipmap data is given
+ if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE))
+ {
+ if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED))
+ glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
+ else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY))
+ glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST);
+ else
+ glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE);
+
+ glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
+ AutomaticMipmapUpdate=true;
+ }
+
+ // enable bilinear filter without mipmaps
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
+ }
- u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height);
+ // now get image data and upload to GPU
- void* source = image->lock();
+ u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height);
- IImage* tmpImage = 0;
+ void* source = image->lock();
- if (convert)
- {
- tmpImage = new CImage(image->getColorFormat(), image->getDimension());
- void* dest = tmpImage->lock();
- convert(source, image->getDimension().getArea(), dest);
- image->unlock();
- source = dest;
- }
+ IImage* tmpImage = 0;
- if (newTexture)
- {
- if (IsCompressed)
+ if (convert)
{
- glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width,
- image->getDimension().Height, 0, compressedImageSize, source);
+ tmpImage = new CImage(image->getColorFormat(), image->getDimension());
+ void* dest = tmpImage->lock();
+ convert(source, image->getDimension().getArea(), dest);
+ image->unlock();
+ source = dest;
}
- else
- glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width,
- image->getDimension().Height, 0, PixelFormat, PixelType, source);
- }
- else
- {
- if (IsCompressed)
+
+ if (newTexture)
{
- glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
- image->getDimension().Height, PixelFormat, compressedImageSize, source);
+ if (IsCompressed)
+ {
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width,
+ image->getDimension().Height, 0, compressedImageSize, source);
+ }
+ else
+ glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width,
+ image->getDimension().Height, 0, PixelFormat, PixelType, source);
}
else
- glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
- image->getDimension().Height, PixelFormat, PixelType, source);
- }
-
- if (convert)
- {
- tmpImage->unlock();
- tmpImage->drop();
- }
- else
- image->unlock();
-
- if (!level && newTexture)
- {
- if (IsCompressed && !mipmapData)
{
- if (image->hasMipMaps())
- mipmapData = static_cast<u8*>(image->lock())+compressedImageSize;
+ if (IsCompressed)
+ {
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
+ image->getDimension().Height, PixelFormat, compressedImageSize, source);
+ }
else
- HasMipMaps = false;
+ glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width,
+ image->getDimension().Height, PixelFormat, PixelType, source);
}
- regenerateMipMapLevels(mipmapData);
-
- if (HasMipMaps) // might have changed in regenerateMipMapLevels
+ if (convert)
{
- // enable bilinear mipmap filter
- GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST;
-
- if (filtering != GL_LINEAR)
- filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST;
+ tmpImage->unlock();
+ tmpImage->drop();
+ }
+ else
+ image->unlock();
+
+ if (glGetError() != GL_NO_ERROR) {
+ static bool warned = false;
+ if ((!retry) && (ColorFormat == ECF_A8R8G8B8)) {
+
+ if (!warned) {
+ os::Printer::log("Your driver claims to support GL_BGRA but fails on trying to upload a texture, converting to GL_RGBA and trying again", ELL_ERROR);
+ warned = true;
+ }
+ }
+ else if (retry) {
+ os::Printer::log("Neither uploading texture as GL_BGRA nor, converted one using GL_RGBA succeeded", ELL_ERROR);
+ }
+ retry = !retry;
+ continue;
+ } else {
+ retry = false;
+ }
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps);
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
+ if (!level && newTexture)
+ {
+ if (IsCompressed && !mipmapData)
+ {
+ if (image->hasMipMaps())
+ mipmapData = static_cast<u8*>(image->lock())+compressedImageSize;
+ else
+ HasMipMaps = false;
+ }
+
+ regenerateMipMapLevels(mipmapData);
+
+ if (HasMipMaps) // might have changed in regenerateMipMapLevels
+ {
+ // enable bilinear mipmap filter
+ GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST;
+
+ if (filtering != GL_LINEAR)
+ filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST;
+
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps);
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
+ }
}
- }
- if (Driver->testGLError())
- os::Printer::log("Could not glTexImage2D", ELL_ERROR);
+ if (Driver->testGLError())
+ os::Printer::log("Could not glTexImage2D", ELL_ERROR);
+ }
+ while(retry);
}
--- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-25 00:28:50.820501856 +0200
+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-25 00:08:37.712544692 +0200
@@ -422,6 +422,9 @@
source = dest;
}
+ //clear old error
+ glGetError();
+
if (newTexture)
{
if (IsCompressed)

View File

@ -8,6 +8,7 @@ import android.content.Intent;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.WindowManager;
@ -20,8 +21,16 @@ import static com.multicraft.game.AdManager.stopAd;*/
public class GameActivity extends NativeActivity {
static {
System.loadLibrary("MultiCraft");
//System.loadLibrary("c++_shared");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (TextUtils.join(", ", Build.SUPPORTED_ABIS).contains("64")) {
//System.loadLibrary("c++_shared"); // uncomment when upgrading to Clang
System.loadLibrary("MultiCraft");
} else {
System.loadLibrary("MultiCraft");
}
} else {
System.loadLibrary("MultiCraft");
}
}
private int messageReturnCode;

View File

@ -21,7 +21,7 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.provider.Settings;
import android.support.v4.content.ContextCompat;
import androidx.core.content.ContextCompat;
import android.text.method.LinkMovementMethod;
import android.view.ContextThemeWrapper;
import android.view.Display;

View File

@ -3,6 +3,7 @@
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>

View File

@ -12,30 +12,17 @@
#if defined USE_CMAKE_CONFIG_H
#include "cmake_config.h"
#elif defined (__ANDROID__)
#define PROJECT_NAME "MultiCraft"
#define PROJECT_NAME_C "MultiCraft"
#define STATIC_SHAREDIR ""
#include "android_version.h"
#ifdef NDEBUG
#define BUILD_TYPE "Release"
#else
#define BUILD_TYPE "Debug"
#endif
#elif defined (__IOS__)
#elif defined(__ANDROID__) || defined(__IOS__)
#define PROJECT_NAME "MultiCraft"
#define PROJECT_NAME_C "MultiCraft"
#define STATIC_SHAREDIR ""
#define VERSION_MAJOR 1
#define VERSION_MINOR 2
#define VERSION_PATCH 1
#define VERSION_STRING "1.2.1"
#ifdef NDEBUG
#define BUILD_TYPE "Release"
#else
#define BUILD_TYPE "Debug"
#endif
#else
#define VERSION_PATCH 2
#define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) "." STR(VERSION_PATCH)
#endif
#ifndef USE_CMAKE_CONFIG_H
#ifdef NDEBUG
#define BUILD_TYPE "Release"
#else
@ -51,5 +38,4 @@
" USE_FREETYPE=" STR(USE_FREETYPE) \
" USE_LUAJIT=" STR(USE_LUAJIT) \
" STATIC_SHAREDIR=" STR(STATIC_SHAREDIR)
#endif

View File

@ -391,10 +391,11 @@ void set_default_settings(Settings *settings)
settings->setDefault("touchscreen_threshold", "20");
settings->setDefault("doubletap_jump", "true");
settings->setDefault("abm_interval", "2.0");
settings->setDefault("dedicated_server_step", "0.2");
settings->setDefault("emergequeue_limit_diskonly", "16");
settings->setDefault("emergequeue_limit_generate", "16");
settings->setDefault("curl_verify_cert", "false");
settings->setDefault("gui_scaling_filter_txr2img", "false");
settings->setDefault("mapgens_available", "v7p, v6, flat");
settings->setDefault("mapgens_available", "v7p, flat");
// FIXME: this code should be in init_gettext() ideally
char lang[3] = {0};
@ -417,8 +418,6 @@ void set_default_settings(Settings *settings)
settings->setDefault("pause_fps_max", "10");
settings->setDefault("smooth_lighting", "false");
settings->setDefault("selectionbox_width", "6");
settings->setDefault("emergequeue_limit_diskonly", "8");
settings->setDefault("emergequeue_limit_generate", "8");
settings->setDefault("chunksize", "3");
settings->setDefault("active_block_range", "1");
settings->setDefault("max_block_generate_distance", "3");
@ -439,7 +438,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("mouse_sensitivity", "0.25");
} else if (x_inches > 3.7 && x_inches < 5) {
// all phones
settings->setDefault("hud_scaling", "0.65");
settings->setDefault("hud_scaling", "0.7");
settings->setDefault("mouse_sensitivity", "0.15");
} else if (x_inches >= 5) {
// tablets
@ -449,8 +448,6 @@ void set_default_settings(Settings *settings)
// iOS Settings
#ifdef __IOS__
settings->setDefault("emergequeue_limit_diskonly", "16");
settings->setDefault("emergequeue_limit_generate", "16");
settings->setDefault("debug_log_level", "none");
// set font_path
settings->setDefault("mono_font_path", g_settings->get("font_path"));

View File

@ -3707,14 +3707,14 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
m_invmgr->inventoryAction(a);
} else if (craft_amount > 0) {
assert(s.isValid());
// if there are no items selected or the selected item
// belongs to craftresult list, proceed with crafting
if (m_selected_item == NULL ||
!m_selected_item->isValid() || m_selected_item->listname == "craftresult") {
m_selected_content_guess = ItemStack(); // Clear
assert(inv_s);
// Send IACTION_CRAFT
@ -3829,10 +3829,11 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
}
}
}
if (event.GUIEvent.EventType == gui::EGET_EDITBOX_CHANGED) {
if (event.GUIEvent.Caller->getID() > 257) {
for (GUIFormSpecMenu::FieldSpec &s : m_fields) {
if (event.GUIEvent.EventType == gui::EGET_EDITBOX_CHANGED) {
if (event.GUIEvent.Caller->getID() > 257) {
for (u32 i = 0; i < m_fields.size(); i++) {
FieldSpec &s = m_fields[i];
if (s.ftype == f_Unknown && s.is_dynamic &&
s.fid == event.GUIEvent.Caller->getID()) {
s.send = true;

View File

@ -112,11 +112,7 @@ FileLogOutput file_log_output;
static OptionList allowed_options;
#ifdef __IOS__
int real_main(int argc, char *argv[])
#else
int main(int argc, char *argv[])
#endif
{
int retval;
debug_set_exception_handler();

View File

@ -96,11 +96,11 @@ namespace porting {
}
}
extern int real_main(int argc, char *argv[]);
extern int main(int argc, char *argv[]);
void irrlicht_main() {
static const char *args[] = {
PROJECT_NAME,
};
real_main(1, (char**) args);
main(1, (char**) args);
}

View File

@ -20,10 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "version.h"
#include "config.h"
#if defined(__ANDROID__)
#include "android_version.h"
#include "android_version_githash.h"
#elif defined(USE_CMAKE_CONFIG_H)
#if USE_CMAKE_CONFIG_H
#include "cmake_config_githash.h"
#endif
@ -35,4 +32,3 @@ with this program; if not, write to the Free Software Foundation, Inc.,
const char *g_version_string = VERSION_STRING;
const char *g_version_hash = VERSION_GITHASH;
const char *g_build_info = "VER=" VERSION_GITHASH " " BUILD_INFO;