Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update:Android:GUI/Internal: Show contextual GUI menu when receiving geo intent #987

Open
wants to merge 30 commits into
base: trunk
Choose a base branch
from

Conversation

lains
Copy link
Contributor

@lains lains commented Apr 6, 2020

In my previous PR #812, the default action when receiving a geo intent (for example by scanning a geo QR code), is to start navigating to the provided location.
This PR aims to give the user more control over which action is started when navit receives a geo intent.
For this (and only implemented when using the internal GUI), I bring up the contextual submenu for a geo position in the internal GUI, and let the user select what to do with this position (add bookmark, set as waypoint, destination, search for nearby POIs), in the same way as when the geo pos is entered manually in the internal GUI.

This is only for Android, and if this feature is not implemented in the active GUI plugin (only implemented in internal GUI for now), the behaviour will revert back to set destination to the GPS coords.

@lains lains added enhancement Improving an existing feature (but there is no actual bug) android WIP Work in progress. Do not merge as-is, but please contribute proposal Related to a proposal submitted to the community internal-gui Related to the internal GUI labels Apr 6, 2020
@lains lains self-assigned this Apr 6, 2020
@lains
Copy link
Contributor Author

lains commented Apr 6, 2020

This is the implementation of what I was proposing in a comment on my previous PR (#812 (comment))

@lains
Copy link
Contributor Author

lains commented Apr 19, 2020

Hello All,

I have an issue with this current implementation.
OSD items still display on top of internal menu.
I have the feeling that this could be fixed by running NavitGraphics.overlay_disable(1), but I don't know how to get a reference to the top NavitGraphics object from within Java_org_navitproject_navit_NavitCallbackHandler_callbackMessageChannel in android.c
If anyone has an idea?

@lains
Copy link
Contributor Author

lains commented Apr 19, 2020

I think I found a solution about access to overlay_disable() by directly using exported methods from graphics plugins.
I still have a crash when directly initiating a geo intent when Navit is not started yet... probably because access to Internal GUI is done at a too early stage...

@@ -646,7 +646,7 @@ private void setmActivity(final Navit navit) {

private native void motionCallback(long id, int x, int y);

private native String getCoordForPoint(int x, int y, boolean absoluteCoord);
private static native String getCoordForPoint(int x, int y, boolean absoluteCoord);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, can you give a motivation for this, does it solve or change anything ? thx.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, I searched a bit further and you have a point in changing it to static when it comes to MIM as described here #964. Just if you change it to static you will have to change jobject to jclass in the signature there https://github.com/navit-gps/navit/blob/trunk/navit/android.c#L325 for consistency, thx.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, yes, that was the reason for this change. This method does not access any member of the class.
I agree it has nothing to do with the feature in this PR. I just fixed this on the way while browsing through the code I wrote earlier in the previously related PR #794.

But you're right, this is not required to implement the feature described in this current PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review, I've just changed this.

@lains
Copy link
Contributor Author

lains commented Apr 20, 2020

Unfortunately, circle CI build for Android fails due to an external issue:

2020-04-20 06:01:51 (58.9 MB/s) - ‘keystore.gpg’ saved [2256/2256]

aes-256-cbc: Option -k needs a value
aes-256-cbc: Use -help for summary.

Exited with code exit status 1

@lains
Copy link
Contributor Author

lains commented Apr 27, 2020

Getting there. OSD icons are not displayed anymore and internal GUI submenu for the specific geo coord is now activated properly.
However, the internal GUI menu is only fully displayed correctly if the any internal GUI menu has been already been displayed at least once in the past. If this is the first internal GUI menu displayed since navit was started, then widgets are only rendered when clicking on them (they are not displayed by default).

stealing internal menu bringup sequence from gui_internal_cmd_log()
@lains
Copy link
Contributor Author

lains commented Apr 27, 2020

I fixed the display of the internal menu by stealing menu bringup sequence from gui_internal_cmd_log().
Now, remains one issue: Navit crashes when it is starts from scratch, directly by receiving the geo intent. It seems internal menu functions are invoked, while the display is not yet setup completely.

…ternal_enter(), invoked by gui_internal_show_coord_actions()
@jkoan
Copy link
Member

jkoan commented Jun 3, 2020

@lains still WIP?

@lains
Copy link
Contributor Author

lains commented Jun 3, 2020

Most of the work is done, menu is displayed when navit is already running.
But there is an issue when scanning a QR code while navit is not yet running. In that case, the navit app is started directly from the intent received and I'm then getting a crash. Maybe a race condition. If someone with a better understanding (about the Android+Internal GUI startup sequence) can help...
@jandegr , I think you refactored a lot of code around this, can you help?

@lains
Copy link
Contributor Author

lains commented Jun 5, 2020

Retested today, here is the crash I'm getting when navit is not yet started when the geo intent is fired:

06-05 08:03:26.787 20477 20477 D Navit   : onCreate
06-05 08:03:26.818 20477 20477 D Navit   : lang=fr
06-05 08:03:26.818 20477 20477 D Navit   : Country1 FR
06-05 08:03:26.818 20477 20477 D Navit   : Country2 FR
06-05 08:03:26.818 20477 20477 D Navit   : Language fr
06-05 08:03:26.821 20477 20477 I Navit   : NavitDataDir = /data/user/0/org.navitproject.navit/files
06-05 08:03:26.821 20477 20477 I Navit   : mapFilenamePath = /storage/emulated/0/Android/data/org.navitproject.navit/files/
06-05 08:03:26.823 20477 20477 D Navit   : -> pixels x=540 pixels y=960
06-05 08:03:26.823 20477 20477 D Navit   : -> dpi=239
06-05 08:03:26.823 20477 20477 D Navit   : -> density=1.5
06-05 08:03:26.823 20477 20477 D Navit   : -> scaledDensity=1.5
06-05 08:03:26.828 20477 20477 D Navit   : Res Name fr, result /data/user/0/org.navitproject.navit/files/locale/fr/LC_MESSAGES/navit.mo
06-05 08:03:26.834 20477 20477 D Navit   : Res ID 2131034138
06-05 08:03:26.836 20477 20477 I Navit   : Device density detected: hdpi
06-05 08:03:27.484 20477 20477 D Navit   : Processing config file 'navit.xml' from assets
06-05 08:03:27.484 20477 20477 D Navit   : Asset Name config/hdpi/navit.xml, output /data/user/0/org.navitproject.navit/files/share/navit.xml
06-05 08:03:27.486 20477 20477 D Navit   : Processing config file 'navit_layout_bike.xml' from assets
06-05 08:03:27.486 20477 20477 D Navit   : Asset Name config/hdpi/navit_layout_bike.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_bike.xml
06-05 08:03:27.488 20477 20477 D Navit   : Processing config file 'navit_layout_car.xml' from assets
06-05 08:03:27.488 20477 20477 D Navit   : Asset Name config/hdpi/navit_layout_car.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car.xml
06-05 08:03:27.490 20477 20477 D Navit   : Processing config file 'navit_layout_car_android.xml' from assets
06-05 08:03:27.490 20477 20477 D Navit   : Asset Name config/hdpi/navit_layout_car_android.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car_android.xml
06-05 08:03:27.492 20477 20477 D Navit   : Processing config file 'navit_layout_car_dark.xml' from assets
06-05 08:03:27.492 20477 20477 D Navit   : Asset Name config/hdpi/navit_layout_car_dark.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car_dark.xml
06-05 08:03:27.494 20477 20477 D Navit   : Processing config file 'navit_layout_car_simple.xml' from assets
06-05 08:03:27.494 20477 20477 D Navit   : Asset Name config/hdpi/navit_layout_car_simple.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car_simple.xml
06-05 08:03:27.496 20477 20477 D Navit   : Processing config file 'navit_layout_th.xml' from assets
06-05 08:03:27.496 20477 20477 D Navit   : Asset Name config/hdpi/navit_layout_th.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_th.xml
06-05 08:03:27.499 20477 20477 D Navit   : android.os.Build.VERSION.SDK_INT=23
06-05 08:03:27.512 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:27.512 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:27.512 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:27.513 20477 20477 E navit   : error:navit:struct attr *attr_new_from_text(const char *, const char *):Incorrect value 'false' for attribute 'keyboard';  expected a number. Defaulting to 0.
06-05 08:03:27.513 20477 20477 E navit   :
06-05 08:03:27.513 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):cannot retrieve attributes from navigation (0x0), func=0xb3e586e4
06-05 08:03:27.513 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'nav_status' from 'navigation'
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3e980:
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  navigation.nav_status>=3
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):             ^
06-05 08:03:27.513 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):navit (0xb4c6c280) has no attribute vehicle
06-05 08:03:27.513 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'vehicle' from 'navit'
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3ea20:
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  vehicle.position_valid
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  ^
06-05 08:03:27.513 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):cannot retrieve attributes from navigation (0x0), func=0xb3e586e4
06-05 08:03:27.513 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'nav_status' from 'navigation'
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3eac0:
06-05 08:03:27.513 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  navigation.nav_status>=3
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):             ^
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):cannot retrieve attributes from navigation (0x0), func=0xb3e586e4
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'nav_status' from 'navigation'
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3eb60:
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  navigation.nav_status==-1 || navigation.nav_status==1 || navigation.nav_status==2
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):             ^
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):cannot retrieve attributes from navigation (0x0), func=0xb3e586e4
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'nav_status' from 'navigation'
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3ec00:
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  navigation.nav_status>=3
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):             ^
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):cannot retrieve attributes from navigation (0x0), func=0xb3e586e4
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'nav_status' from 'navigation'
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3eca0:
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  navigation.nav_status>=3
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):             ^
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):cannot retrieve attributes from navigation (0x0), func=0xb3e586e4
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'nav_status' from 'navigation'
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3ed40:
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  navigation.nav_status>=3
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):             ^
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):navit (0xb4c6c280) has no attribute vehicle
06-05 08:03:27.514 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'vehicle' from 'navit'
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3ede0:
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  vehicle.position_valid
06-05 08:03:27.514 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  ^
06-05 08:03:27.515 20477 20477 W navit   : warning:navit:int command_object_get_attr(struct context *, struct attr *, enum attr_type, struct attr *):navit (0xb4c6c280) has no attribute follow
06-05 08:03:27.515 20477 20477 W navit   : warning:navit:void command_get_attr(struct context *, struct result *):could not retrieve 'follow' from 'navit'
06-05 08:03:27.515 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4d3efc0:
06-05 08:03:27.515 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  follow>1
06-05 08:03:27.515 20477 20477 E navit   : error:navit:int command_register_callbacks(struct command_saved *):  ^
06-05 08:03:27.530 20477 20477 D NavitVehicle: Providers [passive, gps, network]
06-05 08:03:27.532 20477 20477 D NavitVehicle: Precise Provider gps
06-05 08:03:27.533 20477 20477 D NavitVehicle: Fast Provider gps
06-05 08:03:27.566 20477 20477 D NavitSpeech2: Create
06-05 08:03:27.567 20477 20477 D NavitSpeech2: ACTION_CHECK_TTS_DATA available
06-05 08:03:27.568   581  1767 I ActivityManager: START u0 {act=android.speech.tts.engine.CHECK_TTS_DATA cmp=com.google.android.tts/.settings.CheckVoiceData} from uid 10178 on display 0
06-05 08:03:27.887   581  1767 I WindowManager: Screenshot max retries 4 of Token{e4443f4 ActivityRecord{b1b71c7 u0 org.navitproject.navit/.Navit t368}} appWin=Window{58ed2bf u0 Starting org.navitproject.navit} drawState=1
06-05 08:03:27.919   581  2966 W art     : Long monitor contention event with owner method=int com.android.server.am.ActivityStackSupervisor.startActivityMayWait(android.app.IApplicationThread, int, java.lang.String, android.content.Intent, java.lang.String, android.service.voice.IVoiceInteractionSession, com.android.internal.app.IVoiceInteractor, android.os.IBinder, java.lang.String, int, int, android.app.ProfilerInfo, android.app.IActivityManager$WaitResult, android.content.res.Configuration, android.os.Bundle, boolean, int, android.app.IActivityContainer, com.android.server.am.TaskRecord) from ActivityStackSupervisor.java:953 waiters=0 for 331ms
06-05 08:03:27.921   581   615 W art     : Long monitor contention event with owner method=int com.android.server.am.ActivityStackSupervisor.startActivityMayWait(android.app.IApplicationThread, int, java.lang.String, android.content.Intent, java.lang.String, android.service.voice.IVoiceInteractionSession, com.android.internal.app.IVoiceInteractor, android.os.IBinder, java.lang.String, int, int, android.app.ProfilerInfo, android.app.IActivityManager$WaitResult, android.content.res.Configuration, android.os.Bundle, boolean, int, android.app.IActivityContainer, com.android.server.am.TaskRecord) from ActivityStackSupervisor.java:953 waiters=1 for 341ms
06-05 08:03:28.077 20477 20477 E navit   : error:navit:int xml_parse_file(char *, void *, void (*)(xml_context *, const char *, const char **, const char **, void *, GError **), void (*)(xml_context *, const char *, void *, GError **), void (*)(xml_context *, const char *, gsize, void *, GError **)):could not open XML file
06-05 08:03:28.077 20477 20477 E navit   : error:navit:struct traffic_message **traffic_get_messages_from_xml_file(struct traffic *, char *):could not retrieve stored traffic messages
06-05 08:03:28.078 20477 20477 D Navit   : onCreate intent Intent { act=android.intent.action.VIEW dat=geo:48.858434,2.294481 flg=0x10000000 cmp=org.navitproject.navit/.Navit }
06-05 08:03:28.078 20477 20477 D Navit   : Using intent Intent { act=android.intent.action.VIEW dat=geo:48.858434,2.294481 flg=0x10000000 cmp=org.navitproject.navit/.Navit }
06-05 08:03:28.079 20477 20477 D Navit   : target found (b): 48.858434,2.294481
06-05 08:03:28.080 20477 20477 D Navit   : onStart
06-05 08:03:28.081 20477 20477 D Navit   : onResume
06-05 08:03:28.088 20477 20499 D OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
06-05 08:03:28.199 20477 20477 V Navit   : Handle Event
06-05 08:03:28.200 20477 20477 V Navit   : Handle Event
06-05 08:03:28.200 20477 20477 V Navit   : Handle Event
06-05 08:03:28.200 20477 20477 V Navit   : Handle Event
06-05 08:03:28.202 20477 20477 V Navit   : Handle Event
06-05 08:03:28.202 20477 20477 V Navit   : Handle Event
06-05 08:03:28.202 20477 20477 V Navit   : Handle Event
06-05 08:03:28.202 20477 20477 V Navit   : Handle Event
06-05 08:03:28.204 20477 20477 D Navit   : onPause
06-05 08:03:28.224 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: false
06-05 08:03:28.224 20477 20477 V NavitGraphics: workaround gui internal
06-05 08:03:28.239 20477 20477 E navit   : error:gui_internal:void gui_internal_box_pack(struct gui_priv *, struct widget *):Warning width and height of a widget are 0
06-05 08:03:28.259   581   851 I WindowManager: Screen frozen for +1s678ms due to Window{58ed2bf u0 Starting org.navitproject.navit}
06-05 08:03:28.271 20477 20477 E navit   : error:gui_internal:void gui_internal_box_pack(struct gui_priv *, struct widget *):Warning width and height of a widget are 0
06-05 08:03:28.271 20477 20477 E navit   : error:gui_internal:void gui_internal_box_pack(struct gui_priv *, struct widget *):Warning width and height of a widget are 0
06-05 08:03:28.274 20477 20477 D NavitGraphics: onApplyWindowInsets
06-05 08:03:28.275 20477 20477 V NavitGraphics: Padding -1a- left=0 top=36 right=0 bottom=0
06-05 08:03:28.286 20477 20499 I Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/21/15, 369a2ea, I96aee987eb
06-05 08:03:28.303 20477 20477 D NavitGraphics: onSizeChanged pixels x=540 pixels y=960
06-05 08:03:28.303 20477 20477 D NavitGraphics: handleResize w=540 h=960
06-05 08:03:28.327 20477 20499 I OpenGLRenderer: Initialized EGL, version 1.4
06-05 08:03:28.327 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe400: item->gr is NULL
06-05 08:03:28.332 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe400: item->gr is NULL
06-05 08:03:28.337 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.337 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.337 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.338 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.339 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe340: item->gr is NULL
06-05 08:03:28.339 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.339 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.339 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.339 20477 20477 V NavitGraphics: overlay_disable: 0, Parent: true
06-05 08:03:28.339 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe280: item->gr is NULL
06-05 08:03:28.342 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe280: item->gr is NULL
06-05 08:03:28.343 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.343 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.343 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.344 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.344 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe1c0: item->gr is NULL
06-05 08:03:28.346 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe1c0: item->gr is NULL
06-05 08:03:28.353 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.353 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.353 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.353 20477 20477 V NavitGraphics: overlay_disable: 0, Parent: true
06-05 08:03:28.354 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe100: item->gr is NULL
06-05 08:03:28.357 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe100: item->gr is NULL
06-05 08:03:28.358 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.358 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.358 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.359 20477 20477 V NavitGraphics: overlay_disable: 0, Parent: true
06-05 08:03:28.359 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe040: item->gr is NULL
06-05 08:03:28.361 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfe040: item->gr is NULL
06-05 08:03:28.362 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.362 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.362 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.362 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.362 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdf80: item->gr is NULL
06-05 08:03:28.368 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdf80: item->gr is NULL
06-05 08:03:28.370 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.370 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.370 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.370 20477 20477 V NavitGraphics: overlay_disable: 0, Parent: true
06-05 08:03:28.370 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdec0: item->gr is NULL
06-05 08:03:28.371 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.371 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.371 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.371 20477 20477 V NavitGraphics: overlay_disable: 0, Parent: true
06-05 08:03:28.373 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfde00: item->gr is NULL
06-05 08:03:28.374 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.374 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.374 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.374 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.376 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdd40: item->gr is NULL
06-05 08:03:28.376 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.376 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.376 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.376 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.377 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdc80: item->gr is NULL
06-05 08:03:28.377 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.377 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.377 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.377 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.378 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdbc0: item->gr is NULL
06-05 08:03:28.378 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.378 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.378 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.378 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.379 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfdb00: item->gr is NULL
06-05 08:03:28.379 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.379 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.379 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.379 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.385 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfda40: item->gr is NULL
06-05 08:03:28.386 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.386 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.386 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.386 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.387 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfd980: item->gr is NULL
06-05 08:03:28.387 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.388 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.388 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.388 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
06-05 08:03:28.389 20477 20477 W navit   : warning:navit:void osd_std_calculate_sizes(struct osd_item *, int, int):cannot get padding for item=0xb4cfd8c0: item->gr is NULL
06-05 08:03:28.389 20477 20477 V NavitGraphics: set Buttononcallback
06-05 08:03:28.389 20477 20477 V NavitGraphics: set Motioncallback
06-05 08:03:28.389 20477 20477 V NavitGraphics: set Keypresscallback
06-05 08:03:28.389 20477 20477 V NavitGraphics: overlay_disable: 1, Parent: true
--------- beginning of crash
06-05 08:03:28.395 20477 20477 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 20477 (itproject.navit)
06-05 08:03:28.399   211   211 I DEBUG   : property debug.db.uid not set; NOT waiting for gdb.
06-05 08:03:28.401   211   211 I DEBUG   : HINT: adb shell setprop debug.db.uid 100000
06-05 08:03:28.401   211   211 I DEBUG   : HINT: adb forward tcp:5039 tcp:5039
06-05 08:03:28.453   211   211 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-05 08:03:28.453   211   211 F DEBUG   : CM Version: '13.0-20161221-SNAPSHOT-ZNH5YAO3Y6-serranoltexx'
06-05 08:03:28.453   211   211 F DEBUG   : Build fingerprint: 'samsung/serranoltexx/serranolte:4.4.2/KOT49H/I9195XXUCNE6:user/release-keys'
06-05 08:03:28.453   211   211 F DEBUG   : Revision: '0'
06-05 08:03:28.453   211   211 F DEBUG   : ABI: 'arm'
06-05 08:03:28.455   211   211 F DEBUG   : pid: 20477, tid: 20477, name: itproject.navit  >>> org.navitproject.navit <<<
06-05 08:03:28.455   211   211 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
06-05 08:03:28.473   211   211 F DEBUG   :     r0 b4d3e8e0  r1 00000076  r2 00000001  r3 0000008a
06-05 08:03:28.474   211   211 F DEBUG   :     r4 b3deb909  r5 00000000  r6 00000000  r7 be9f7050
06-05 08:03:28.474   211   211 F DEBUG   :     r8 be9f7028  r9 a26e9898  sl b6d0cec0  fp 12c34420
06-05 08:03:28.474   211   211 F DEBUG   :     ip 00000000  sp be9f7018  lr 00010000  pc b3dbb9be  cpsr 60030030
06-05 08:03:28.481   211   211 F DEBUG   :
06-05 08:03:28.481   211   211 F DEBUG   : backtrace:
06-05 08:03:28.481   211   211 F DEBUG   :     #00 pc 0002d9be  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (graphics_draw_text+53)
06-05 08:03:28.481   211   211 F DEBUG   :     #01 pc 00072e77  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so
06-05 08:03:28.482   211   211 F DEBUG   :     #02 pc 000723df  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (gui_internal_widget_render+162)
06-05 08:03:28.482   211   211 F DEBUG   :     #03 pc 000723df  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (gui_internal_widget_render+162)
06-05 08:03:28.483   211   211 F DEBUG   :     #04 pc 000723df  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (gui_internal_widget_render+162)
06-05 08:03:28.483   211   211 F DEBUG   :     #05 pc 000723df  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (gui_internal_widget_render+162)
06-05 08:03:28.483   211   211 F DEBUG   :     #06 pc 000250bb  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (callback_call+450)
06-05 08:03:28.483   211   211 F DEBUG   :     #07 pc 00025227  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (callback_list_call_attr+62)
06-05 08:03:28.483   211   211 F DEBUG   :     #08 pc 0002528b  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (callback_list_call_attr_args+78)
06-05 08:03:28.483   211   211 F DEBUG   :     #09 pc 0005e841  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so
06-05 08:03:28.483   211   211 F DEBUG   :     #10 pc 000250bb  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (callback_call+450)
06-05 08:03:28.484   211   211 F DEBUG   :     #11 pc 000251bf  /data/app/org.navitproject.navit-1/lib/arm/libnavit.so (callback_call_args+78)
06-05 08:03:28.484   211   211 F DEBUG   :     #12 pc 002b8f3d  /data/app/org.navitproject.navit-1/oat/arm/base.odex (offset 0x1e3000)
06-05 08:03:29.258   211   211 F DEBUG   :
06-05 08:03:29.258   211   211 F DEBUG   : Tombstone written to: /data/tombstones/tombstone_06
06-05 08:03:29.258   211   211 E DEBUG   : AM write failed: Broken pipe
06-05 08:03:29.272   581   630 I BootReceiver: Copying /data/tombstones/tombstone_06 to DropBox (SYSTEM_TOMBSTONE)
06-05 08:03:29.275   581   596 D GraphicsStats: Buffer count: 7
06-05 08:03:29.275   581  1766 I WindowState: WIN DEATH: Window{84c3545 u0 org.navitproject.navit/org.navitproject.navit.Navit}
06-05 08:03:29.286   581   596 D GpsStatusListenerHelper: Remote Listener died: android.location.IGpsStatusListener$Stub$Proxy@bb8cc54
06-05 08:03:29.301   220   220 I Zygote  : Process 20477 exited due to signal (11)
06-05 08:03:29.320   581   597 I ActivityManager: Process org.navitproject.navit (pid 20477) has died
06-05 08:03:29.320   581   597 D ActivityManager: cleanUpApplicationRecord -- 20477
06-05 08:03:29.321   581   597 W ActivityManager: Force removing ActivityRecord{b1b71c7 u0 org.navitproject.navit/.Navit t368}: app died, no saved state
06-05 08:03:29.349   581   597 I ActivityManager: Config changes=480 {1.0 208mcc15mnc fr_FR ldltr sw360dp w640dp h336dp 240dpi nrml long land finger -keyb/v/h -nav/h s.19 themeResource=null}

Using ~/ANDROID_NDK_HOME/ndk-stack --sym ./navit/android/build/intermediates/cmake/debug/obj/armeabi-v7a on this crashdump, I get:

********** Crash dump: **********
Build fingerprint: 'samsung/serranoltexx/serranolte:4.4.2/KOT49H/I9195XXUCNE6:user/release-keys'
#00 0x0002d9be libnavit.so (graphics_draw_text+53)
                            debug_vprintf
                            navit/debug.c:396:50
#01 0x00072e77 libnavit.so
                            seg_data_equals
                            navit/traffic.c:425:10
#02 0x000723df libnavit.so (gui_internal_widget_render+162)
                            traffic_get_item_speed
                            navit/traffic.c:2766:9
#03 0x000723df libnavit.so (gui_internal_widget_render+162)
                            traffic_get_item_speed
                            navit/traffic.c:2766:9
#04 0x000723df libnavit.so (gui_internal_widget_render+162)
                            traffic_get_item_speed
                            navit/traffic.c:2766:9
#05 0x000723df libnavit.so (gui_internal_widget_render+162)
                            traffic_get_item_speed
                            navit/traffic.c:2766:9
#06 0x000250bb libnavit.so (callback_call+450)
                            cache_equal20
                            navit/cache.c:76:12
#07 0x00025227 libnavit.so (callback_list_call_attr+62)
                            cache_flush
                            navit/cache.c:239:31
#08 0x0002528b libnavit.so (callback_list_call_attr_args+78)
                            cache_remove_from_list
                            navit/cache.c:127:26
#09 0x0005e841 libnavit.so
                            rm_rect_destroy
                            navit/route.c:3846:9
#10 0x000250bb libnavit.so (callback_call+450)
                            cache_equal20
                            navit/cache.c:76:12
#11 0x000251bf libnavit.so (callback_call_args+78)
                            cache_entry_destroy
                            navit/cache.c:185:5
#12 0x002b8f3d /data/app/org.navitproject.navit-1/oat/arm/base.odex (offset 0x1e3000)
Crash dump is completed

@jandegr
Copy link
Contributor

jandegr commented Jun 12, 2020

Hi
I have one extra significant crashdump line

(Java_org_navitproject_navit_NavitGraphics_sizeChangedCallback+343)

So apparently it does not survive the initial resize.

I tested it with Navit already running before firing the intent and then it returned to mapview instead of handling the resize in gui internal as other gui screens do when rotating the device (causes a resize too).

It might be usefull to debug this does not handle resize properly issue first, and who knows the solution for the issue from cold start comes a bit closer

@lains
Copy link
Contributor Author

lains commented Jul 16, 2020

I gave it a try yesterday.
On my device, I only have an issue when the geo: intent fires while navit is not running yet.
When navit is already started, then the internal GUI displays properly and the feature works properly (for me).

I confirm (while digging a bit more the crash occuring when the intent fires while navit is not running) that there is a race condition between internal GUI startup and the intent processing in android.c, because if I delay the intent processing by, say, 250ms, then everything runs fine (no crash anymore).
I will submit these changes and line-up this code with trunk for others to test.
I don't like adding fixed time delays to get code working, so there must be something better to do here.

@lains
Copy link
Contributor Author

lains commented Jul 17, 2020

In order not to get the crash, it looks like the internal GUI contextual menu must only be invoked after NavitGraphics: handleResize has run.
And in order for the contextual menu to display properly (instead of having the map view displayed while already be inside the menu), the internal GUI contextual menu must only be invoked after Navit : onResume

@lains
Copy link
Contributor Author

lains commented Aug 31, 2020

Could someone give a try to this new version for Android and check that it is running better, without crash, whether navit is already started or not when the intent is fired?
If it works well, I will have a look at suppressing the fixed delay and rely on a better sequencing on the internal GUI startup.

@lains
Copy link
Contributor Author

lains commented Dec 30, 2020

Hi, I got my build environment back up. I will start testing again to sort out the race condition at startup.

@lains
Copy link
Contributor Author

lains commented Feb 5, 2021

I'm having issues with navit crashing at startup, just as soon as I accept access to GPS and SD card. But it looks like I'm getting the same behaviour even when building from trunk, not only when including the code from this PR...
Anyone having the same issue (SDK android-sdk-6858069, NDK android-ndk-r21d, device is running )?

02-05 19:50:23.763   595  4205 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.navitproject.navit/.Navit (has extras)} from uid 10037 on display 0
02-05 19:50:23.826   595   830 I ActivityManager: Start proc 8538:org.navitproject.navit/u0a213 for activity org.navitproject.navit/.Navit
02-05 19:50:23.970  8538  8538 D Navit   : onCreate
02-05 19:50:23.991  8538  8538 D Navit   : ask for permission(s)
02-05 19:50:24.006  8538  8538 D Navit   : lang=fr
02-05 19:50:24.006  8538  8538 D Navit   : Country1 FR
02-05 19:50:24.006  8538  8538 D Navit   : Country2 FR
02-05 19:50:24.006  8538  8538 D Navit   : Language fr
02-05 19:50:24.045   595  4109 D VoldConnector: SND -> {28 volume mkdirs /storage/emulated/0/Android/data/org.navitproject.navit/files/}
02-05 19:50:24.047  8538  8538 I Navit   : NavitDataDir = /data/user/0/org.navitproject.navit/files
02-05 19:50:24.047  8538  8538 I Navit   : mapFilenamePath = /storage/emulated/0/Android/data/org.navitproject.navit/files/
02-05 19:50:24.048  8538  8538 D Navit   : -> pixels x=540 pixels y=960
02-05 19:50:24.048  8538  8538 D Navit   : -> dpi=239
02-05 19:50:24.048  8538  8538 D Navit   : -> density=1.5
02-05 19:50:24.048  8538  8538 D Navit   : -> scaledDensity=1.5
02-05 19:50:24.049  8538  8538 D Navit   : Res Name fr, result /data/user/0/org.navitproject.navit/files/locale/fr/LC_MESSAGES/navit.mo
02-05 19:50:24.049  8538  8538 D Navit   : Res ID 2131099674
02-05 19:50:24.050  8538  8538 D Navit   : Extracting resource
02-05 19:50:24.059  8538  8538 I Navit   : Device density detected: hdpi
02-05 19:50:24.116  8538  8538 D Navit   : Processing config file 'navit.xml' from assets
02-05 19:50:24.116  8538  8538 D Navit   : Asset Name config/hdpi/navit.xml, output /data/user/0/org.navitproject.navit/files/share/navit.xml
02-05 19:50:24.116  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit.xml'
02-05 19:50:24.121  8538  8538 D Navit   : Processing config file 'navit_layout_bike.xml' from assets
02-05 19:50:24.121  8538  8538 D Navit   : Asset Name config/hdpi/navit_layout_bike.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_bike.xml
02-05 19:50:24.121  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit_layout_bike.xml'
02-05 19:50:24.124  8538  8538 D Navit   : Processing config file 'navit_layout_car.xml' from assets
02-05 19:50:24.124  8538  8538 D Navit   : Asset Name config/hdpi/navit_layout_car.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car.xml
02-05 19:50:24.124  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit_layout_car.xml'
02-05 19:50:24.129  8538  8538 D Navit   : Processing config file 'navit_layout_car_android.xml' from assets
02-05 19:50:24.129  8538  8538 D Navit   : Asset Name config/hdpi/navit_layout_car_android.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car_android.xml
02-05 19:50:24.129  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit_layout_car_android.xml'
02-05 19:50:24.132  8538  8538 D Navit   : Processing config file 'navit_layout_car_dark.xml' from assets
02-05 19:50:24.132  8538  8538 D Navit   : Asset Name config/hdpi/navit_layout_car_dark.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car_dark.xml
02-05 19:50:24.133  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit_layout_car_dark.xml'
02-05 19:50:24.140  8538  8538 D Navit   : Processing config file 'navit_layout_car_simple.xml' from assets
02-05 19:50:24.140  8538  8538 D Navit   : Asset Name config/hdpi/navit_layout_car_simple.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_car_simple.xml
02-05 19:50:24.140  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit_layout_car_simple.xml'
02-05 19:50:24.141  8538  8538 D Navit   : Processing config file 'navit_layout_th.xml' from assets
02-05 19:50:24.141  8538  8538 D Navit   : Asset Name config/hdpi/navit_layout_th.xml, output /data/user/0/org.navitproject.navit/files/share/navit_layout_th.xml
02-05 19:50:24.141  8538  8538 D Navit   : Extracting asset 'config/hdpi/navit_layout_th.xml'
02-05 19:50:24.143  8538  8538 D Navit   : android.os.Build.VERSION.SDK_INT=23
02-05 19:50:24.154  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.154  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.154  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.154  8538  8538 E navit   : error:navit:struct attr *attr_new_from_text(const char *, const char *):Incorrect value 'false' for attribute 'keyboard';  expected a number. Defaulting to 0.
02-05 19:50:24.154  8538  8538 E navit   : 
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfe8e0:
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	navigation.nav_status>=3
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	           ^
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfe980:
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	vehicle.position_valid
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	^
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfea20:
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	navigation.nav_status>=3
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	           ^
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfeac0:
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	navigation.nav_status==-1 || navigation.nav_status==1 || navigation.nav_status==2
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	           ^
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfeb60:
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	navigation.nav_status>=3
02-05 19:50:24.155  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	           ^
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfec00:
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	navigation.nav_status>=3
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	           ^
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfeca0:
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	navigation.nav_status>=3
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	           ^
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfed40:
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	vehicle.position_valid
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	^
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):could not resolve object in cs=0xb4cfef20:
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	follow>1
02-05 19:50:24.156  8538  8538 E navit   : error:navit:int command_register_callbacks(struct command_saved *):	^
02-05 19:50:24.165  8538  8538 D NavitSpeech2: Create
02-05 19:50:24.166  8538  8538 D NavitSpeech2: ACTION_CHECK_TTS_DATA available
02-05 19:50:24.368  8538  8538 E navit   : error:navit:int xml_parse_file(char *, void *, void (*)(xml_context *, const char *, const char **, const char **, void *, GError **), void (*)(xml_context *, const char *, void *, GError **), void (*)(xml_context *, const char *, gsize, void *, GError **)):could not open XML file
02-05 19:50:24.368  8538  8538 E navit   : error:navit:struct traffic_message **traffic_get_messages_from_xml_file(struct traffic *, char *):could not retrieve stored traffic messages
02-05 19:50:24.501   595   628 W ActivityManager: Activity pause timeout for ActivityRecord{eb12a5a u0 org.navitproject.navit/.Navit t590}
02-05 19:50:24.527  8538  8538 D Navit   : onCreate intent Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.navitproject.navit/.Navit bnds=[42,162][132,252] (has extras) }
02-05 19:50:24.528  8538  8538 D Navit   : onStart
02-05 19:50:24.529  8538  8538 D Navit   : onResume
02-05 19:50:24.550  8538  8538 D Navit   : onPause
02-05 19:50:24.551  8538  8538 V Navit   : Handle Event
02-05 19:50:24.552  8538  8538 V Navit   : Handle Event
02-05 19:50:24.552  8538  8538 V Navit   : Handle Event
02-05 19:50:24.552  8538  8538 V Navit   : Handle Event
02-05 19:50:24.553  8538  8538 V Navit   : Handle Event
02-05 19:50:24.554  8538  8538 V Navit   : Handle Event
02-05 19:50:24.554  8538  8538 V Navit   : Handle Event
02-05 19:50:24.554  8538  8538 V Navit   : Handle Event
02-05 19:50:24.612  8538  8538 D NavitGraphics: onApplyWindowInsets
02-05 19:50:24.613  8538  8538 V NavitGraphics: Padding -1a- left=0 top=36 right=0 bottom=0
02-05 19:50:24.680  8538  8538 D NavitGraphics: onSizeChanged pixels x=540 pixels y=960
02-05 19:50:24.681  8538  8538 D NavitGraphics: handleResize w=540 h=960
02-05 19:50:24.686  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.686  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.686  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.687  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.688  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.688  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.688  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.688  8538  8538 V NavitGraphics: overlay_disable: 0, Parent: true
02-05 19:50:24.690  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.691  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.691  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.691  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.694  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.694  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.694  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.694  8538  8538 V NavitGraphics: overlay_disable: 0, Parent: true
02-05 19:50:24.697  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.697  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.697  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.697  8538  8538 V NavitGraphics: overlay_disable: 0, Parent: true
02-05 19:50:24.700  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.700  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.700  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.700  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.705  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.705  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.705  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.705  8538  8538 V NavitGraphics: overlay_disable: 0, Parent: true
02-05 19:50:24.707  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.707  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.707  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.707  8538  8538 V NavitGraphics: overlay_disable: 0, Parent: true
02-05 19:50:24.710  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.710  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.710  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.710  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.712  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.712  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.712  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.712  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.713  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.713  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.713  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.713  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.715  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.715  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.715  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.715  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.716  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.716  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.716  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.716  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.722  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.722  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.722  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.722  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.723  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.723  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.723  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.723  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.725  8538  8538 V NavitGraphics: set Buttononcallback
02-05 19:50:24.725  8538  8538 V NavitGraphics: set Motioncallback
02-05 19:50:24.725  8538  8538 V NavitGraphics: set Keypresscallback
02-05 19:50:24.725  8538  8538 V NavitGraphics: overlay_disable: 1, Parent: true
02-05 19:50:24.877  8538  8538 D NavitSpeech2: onActivityResult 1 1
02-05 19:50:24.998  8538  8538 D Navit   : onResume
02-05 19:50:25.133  8538  8538 D NavitSpeech2: Status 0
02-05 19:50:25.160  8538  8538 V Navit   : Handle Event
02-05 19:50:25.368  8538  8538 V Navit   : Handle Event
02-05 19:50:25.689  8538  8538 V Navit   : Handle Event
02-05 19:50:26.175  8538  8538 V Navit   : Handle Event
02-05 19:50:26.406  8538  8538 V Navit   : Handle Event
02-05 19:50:26.446  8538  8538 D Navit   : onDestroy
02-05 19:50:26.495   595  1340 I WindowState: WIN DEATH: Window{aa489f3 u0 org.navitproject.navit/org.navitproject.navit.Navit}
02-05 19:50:26.502   595   712 W InputDispatcher: channel 'e1ad929 org.navitproject.navit/org.navitproject.navit.Navit (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
02-05 19:50:26.502   595   712 E InputDispatcher: channel 'e1ad929 org.navitproject.navit/org.navitproject.navit.Navit (server)' ~ Channel is unrecoverably broken and will be disposed!
02-05 19:50:26.502   595   712 W InputDispatcher: channel '71bc47 org.navitproject.navit/org.navitproject.navit.Navit (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
02-05 19:50:26.502   595   712 E InputDispatcher: channel '71bc47 org.navitproject.navit/org.navitproject.navit.Navit (server)' ~ Channel is unrecoverably broken and will be disposed!
02-05 19:50:26.508   595  1354 I WindowState: WIN DEATH: Window{e1ad929 u0 org.navitproject.navit/org.navitproject.navit.Navit}
02-05 19:50:26.508   595  1354 W InputDispatcher: Attempted to unregister already unregistered input channel 'e1ad929 org.navitproject.navit/org.navitproject.navit.Navit (server)'
02-05 19:50:26.513   595  4765 I WindowState: WIN DEATH: Window{71bc47 u0 org.navitproject.navit/org.navitproject.navit.Navit}
02-05 19:50:26.513   595  4765 W InputDispatcher: Attempted to unregister already unregistered input channel '71bc47 org.navitproject.navit/org.navitproject.navit.Navit (server)'
02-05 19:50:26.532   595  3946 I ActivityManager: Process org.navitproject.navit (pid 8538) has died
02-05 19:50:26.533   595  3946 W ActivityManager: Force removing ActivityRecord{eb12a5a u0 org.navitproject.navit/.Navit t590}: app died, no saved state

@lains
Copy link
Contributor Author

lains commented Feb 5, 2021

Indeed, I can get rid of this startup crash if I rebase this PR on 6b48a55, and then selectively cherry-picking the following commits:

@lains
Copy link
Contributor Author

lains commented Jul 30, 2022

Hello all.
I'm resurrecting this feature (available for android only) that I have just rebased on the current trunk.

If anyone wants to test this, here is what to to:
Flash a geo QR code using a compatible Android app.
For testing purposes, you can create a geo QR code here. Just use "Contents" type="Geo location" and enter the coordinates.
If using the internal GUI, Navit should now display a contextual menu for the location you just scanned (before this code, Navit was starting navigation directly to the coordinates without prompting anything to the user).
This allows to see on a map, to add to bookmarks, etc.

What needs to be tested:

  • QR code scanning works while navit is started and while navit is not started.
  • QR code scanning also works while navit is in a specific menu, is navigating etc.

@lains lains changed the title [WIP] Update:Android:GUI/Internal: Show contextual GUI menu when receiving geo intent Update:Android:GUI/Internal: Show contextual GUI menu when receiving geo intent Aug 4, 2022
@lains lains removed the WIP Work in progress. Do not merge as-is, but please contribute label Aug 4, 2022
@lains
Copy link
Contributor Author

lains commented Dec 4, 2022

Hi All, it looks like the feature in this PR is behaving as expected. Scanning a geo QR code while navigation is running, or when the navit application is not launched both work.
Codefactor is complaining, but files are unrelated to changes introduced in this PR.

Anyone interested in testing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
android enhancement Improving an existing feature (but there is no actual bug) internal-gui Related to the internal GUI proposal Related to a proposal submitted to the community
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants