From ab4d8087a349fa580a4fca1053eca44b1813be16 Mon Sep 17 00:00:00 2001 From: Stefan Wildemann Date: Wed, 7 Aug 2019 13:29:37 +0200 Subject: fix:core: Correct default layout handling. (#816) This commit corrects the default layout handling broken when splitting the layouts to own files. It restores the layout saving of the internal gui. So now it starts again with the last selected layout. --- navit/main.c | 4 ---- navit/main.h | 1 - navit/navit.c | 22 +++++++++++++++++++++- navit/start_real.c | 1 - 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/navit/main.c b/navit/main.c index 986947f0d..f4a59970d 100644 --- a/navit/main.c +++ b/navit/main.c @@ -328,10 +328,6 @@ static void win_set_nls(void) { } #endif -void main_update_default_layout(struct navit *navit) { - navit_update_current_layout(navit, NULL); -} - void main_init(const char *program) { char *s; #ifdef _UNICODE /* currently for wince */ diff --git a/navit/main.h b/navit/main.h index 910d56200..47f275c09 100644 --- a/navit/main.h +++ b/navit/main.h @@ -35,7 +35,6 @@ void main_add_navit(struct navit *nav); void main_remove_navit(struct navit *nav); int main_add_attr(struct attr *attr); int main_remove_attr(struct attr *attr); -void main_update_default_layout(struct navit *navit); void main_init(const char *program); void main_init_nls(void); int main(int argc, char **argv); diff --git a/navit/navit.c b/navit/navit.c index 1d1b8e664..ae39aca59 100644 --- a/navit/navit.c +++ b/navit/navit.c @@ -2551,6 +2551,7 @@ static int navit_set_attr_do(struct navit *this_, struct attr *attr, int init) { case attr_layout: if(!attr->u.layout) return 0; + dbg(lvl_debug,"setting attr_layout to %s", attr->u.layout->name); if(this_->layout_current!=attr->u.layout) { navit_update_current_layout(this_, attr->u.layout); graphics_font_destroy_all(this_->gra); @@ -2563,6 +2564,7 @@ static int navit_set_attr_do(struct navit *this_, struct attr *attr, int init) { case attr_layout_name: if(!attr->u.str) return 0; + dbg(lvl_debug,"setting attr_layout_name to %s", attr->u.str); l=this_->layouts; while (l) { lay=l->data; @@ -3000,9 +3002,27 @@ static int navit_add_log(struct navit *this_, struct log *log) { static int navit_add_layout(struct navit *this_, struct layout *layout) { struct attr active; + int is_default=0; + int is_active=0; this_->layouts = g_list_append(this_->layouts, layout); + /** check if we want to immediately activate this layout. + * Unfortunately we have concurring conditions about when to activate + * a layout: + * - A layout could bear the "active" property + * - A layout's name could match this_->default_layout_name + * This cannot be fully resolved, as we cannot predict the future, so + * lets set the last parsed layout active, which either matches default_layout_name or + * bears the "active" tag, or is the first layout ever parsed. + */ + if((layout->name != NULL) && (this_->default_layout_name != NULL)) { + if (strcmp(layout->name, this_->default_layout_name) == 0) + is_default = 1; + } layout_get_attr(layout, attr_active, &active, NULL); - if(active.u.num || !this_->layout_current) { + if(active.u.num) + is_active = 1; + dbg(lvl_debug, "add layout '%s' is_default %d, is_active %d", layout->name, is_default, is_active); + if(is_default || is_active || !this_->layout_current) { this_->layout_current=layout; return 1; } diff --git a/navit/start_real.c b/navit/start_real.c index ad990d874..a29d558bf 100644 --- a/navit/start_real.c +++ b/navit/start_real.c @@ -207,7 +207,6 @@ int main_real(int argc, char * const* argv) { dbg(lvl_error, "%s", _("Internal initialization failed, exiting. Check previous error messages.")); exit(5); } - main_update_default_layout(navit.u.navit); conf.type=attr_config; conf.u.config=config; if (startup_file) { -- cgit v1.2.1 From c2f9838f07a52cc64cb05e9cf95bb378261946d9 Mon Sep 17 00:00:00 2001 From: jandegr Date: Fri, 16 Aug 2019 20:45:07 +0200 Subject: Android build fix and update (#827) --- .circleci/config.yml | 11 ++++++++--- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- navit/CMakeLists.txt | 11 +++++------ navit/android/build.gradle | 14 +++++++------- navit/android/src/org/navitproject/navit/Navit.java | 2 +- scripts/build_android.sh | 9 ++++++++- 7 files changed, 31 insertions(+), 20 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 823ca54d0..273406c54 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -68,7 +68,7 @@ jobs: build_android: working_directory: ~/code docker: - - image: circleci/android:api-28-ndk + - image: circleci/android:api-29 environment: JVM_OPTS: -Xmx3200m GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' @@ -78,13 +78,18 @@ jobs: name: Id command: cat /etc/*release - run: - name: Install cmake gettext libsaxonb-java librsvg2-bin pkg-config libprotobuf-c-dev protobuf-c-compiler + name: Install cmake gettext libsaxonb-java librsvg2-bin pkg-config rename command: | sudo apt-get update - sudo apt-get install -y cmake gettext libsaxonb-java librsvg2-bin pkg-config libprotobuf-c-dev protobuf-c-compiler + sudo apt-get install -y cmake gettext libsaxonb-java librsvg2-bin pkg-config rename - run: name: Install Android SDK components command: sdkmanager "cmake;3.6.4111459" + - run: + name: Install ndk + command: | + echo y | sdkmanager --licenses + echo y | sdkmanager ndk-bundle - run: name: Build for Android command: bash scripts/build_android.sh diff --git a/build.gradle b/build.gradle index 5d598ab8b..8fe92d2f1 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.4.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 73bb13d55..25f587d12 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-all.zip diff --git a/navit/CMakeLists.txt b/navit/CMakeLists.txt index 0c4d4243d..1234bd0cb 100644 --- a/navit/CMakeLists.txt +++ b/navit/CMakeLists.txt @@ -95,13 +95,12 @@ if(NOT ANDROID) endif() endif() -#if (SHARED_LIBNAVIT) -# add_library (${NAVIT_LIBNAME} SHARED ${NAVIT_SRC} ) -#else(SHARED_LIBNAVIT) -# add_library (${NAVIT_LIBNAME} STATIC ${NAVIT_SRC} ) -#endif(SHARED_LIBNAVIT) +if (SHARED_LIBNAVIT) + add_library (${NAVIT_LIBNAME} SHARED ${NAVIT_SRC} ) +else(SHARED_LIBNAVIT) + add_library (${NAVIT_LIBNAME} STATIC ${NAVIT_SRC} ) +endif(SHARED_LIBNAVIT) -add_library (${NAVIT_LIBNAME} ${NAVIT_SRC} ) if(NOT MSVC) SET(NAVIT_LIBS ${NAVIT_LIBS} m) endif(NOT MSVC) diff --git a/navit/android/build.gradle b/navit/android/build.gradle index 1385336bf..faf5acc03 100644 --- a/navit/android/build.gradle +++ b/navit/android/build.gradle @@ -3,17 +3,17 @@ apply from: "$project.rootDir/gradle/scripts/git-scm-version.gradle" apply plugin: 'checkstyle' android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" + compileSdkVersion 28 + buildToolsVersion "29.0.1" defaultConfig { applicationId "org.navitproject.navit" minSdkVersion 9 - targetSdkVersion 27 + targetSdkVersion 28 versionCode gitVersionCode versionName gitVersionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - ndk { // need for now for 'x86_64' and , 'armeabi' and , 'arm64-v8a' - abiFilters 'x86', 'armeabi-v7a' + ndk { // need for now for 'x86_64' and 'armeabi' + abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a' } externalNativeBuild { cmake { @@ -61,10 +61,10 @@ android { xml.enabled = true html.enabled = true xml { - destination "checkstyle/checkstyleMain.xml" + destination file("checkstyle/checkstyleMain.xml") } html { - destination "checkstyle/checkstyleMain.html" + destination file("checkstyle/checkstyleMain.html") } } diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java index bc2af1632..a2c1a4ff1 100644 --- a/navit/android/src/org/navitproject/navit/Navit.java +++ b/navit/android/src/org/navitproject/navit/Navit.java @@ -444,7 +444,7 @@ public class Navit extends Activity { ActivityResults = new NavitActivityResult[16]; setVolumeControlStream(AudioManager.STREAM_MUSIC); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); - wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"NavitDoNotDimScreen"); + wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"navit:DoNotDimScreen"); if (!extractRes(langc, NAVIT_DATA_DIR + "/locale/" + langc + "/LC_MESSAGES/navit.mo")) { Log.e(TAG, "Failed to extract language resource " + langc); diff --git a/scripts/build_android.sh b/scripts/build_android.sh index 4b915f35e..3f2738451 100755 --- a/scripts/build_android.sh +++ b/scripts/build_android.sh @@ -22,8 +22,13 @@ export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin export JVM_OPTS="-Xmx3200m" export GRADLE_OPTS='-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' +# processing xml is messed up a bit after the original introduction of gradle +# so a useless install of ant here even if using gradle/ninja + +sudo apt-get install -y ant + echo Run CMake -cmake ./ -Dvehicle/gpsd_dbus:BOOL=FALSE -Dsvg2png_scaling:STRING=-1,24,32,48,64,96,128,192,256 -Dsvg2png_scaling_nav:STRING=-1,24,32,48,64,96,128,192,256 -Dsvg2png_scaling_flag:STRING=-1,24,32,64,96 -DUSE_PLUGINS=n -DBUILD_MAPTOOL=n -DXSL_PROCESSING=y -DXSLTS=android -DANDROID=y -DSAMPLE_MAP=n || exit 1 +cmake ./ -Dvehicle/gpsd_dbus:BOOL=FALSE -Dsvg2png_scaling:STRING=-1,24,32,48,64,96,128,192,256 -Dsvg2png_scaling_nav:STRING=-1,24,32,48,64,96,128,192,256 -Dsvg2png_scaling_flag:STRING=-1,24,32,64,96 -DXSL_PROCESSING=y -DXSLTS=android -DANDROID=y || exit 1 echo Process icons pushd navit/icons @@ -45,6 +50,8 @@ rename 'y/A-Z/a-z/' ./*.mo popd popd + + echo Process xml config files make navit_config_xml || exit 96 pushd navit -- cgit v1.2.1