View Single Post
Posts: 1,548 | Thanked: 7,510 times | Joined on Apr 2010 @ Czech Republic
#923
Originally Posted by 白い熊 View Post
OK, I ran more experiments.
However, it seems that there is heavy processing going on, either on the modRana side, the GTK side, or, probably, the gpsd side, as I'd have the GPS point in modRana disappear for let's say 10 seconds at a time, then the position would update, the circle appear, then disappear again.

When it'd disappear, modRana would not react to screen taps, leading me to believe that there is some heavy processor load going on.

In fact a couple of times, modrana's window would go completely gray without displaying anything, and I had to kill modRana.
In Options->Debug->Redrawing you can enable Print redraw time to terminal. With this you can debug both how often the screen actually redraws and how long each redraw takes.

Originally Posted by 白い熊 View Post
This seemed to disapper after I disabled automatic rotation in the direction of the car movement, leading me to believe the processing load is too heavy for VNC access to X on Android.
Yep, rotation in its current unaccelerated form is unfortunately quite resource-expensive. Also modRana always redraws the complete viewport (with the exception of the simple manual map dragging method) which probably further slows down the VNC viewer that might be trying to only transfer areas that have changed, which won't work as the whole screen changes.

Also by default, when a new tile is loaded, the screen is redrawn - this might be an issue when moving too fast, eq. many new tiles are loaded all the time. this behavior can be disabled in Options->Debug->Tiles->Redraw screen once a new tile is loaded. Might help to reduce the number of redraws quite a bit.

There is also another trick used to reduce the are that needs to be redrawn:
Just update the area around the position indicator and redraw the whole screen only once it gets too close to the edge (TangoGPS works like this). This is not yet implemented in modRana.

Originally Posted by 白い熊 View Post
what I'm hoping for, it's the gpsd interaction somehow...
Yes, this is still a possibility - the location info reading thread wakes up every time GPSD has a position update. If it is feeding too many updates, the thread might be running too often, hogging resources.
You can debug this by enabling Show GPSD debug output in
Options->Debug->GPS and checking how often the a new fix is reported.

Originally Posted by 白い熊 View Post
If not, then messing with TightVNC remains the option, lowering the number of colors of TightVNC display, this is an option, as it can interface at 256 colors, there would probably have to be some filter in modRana to only use 256 colors when started in a specific way, that could lead to processing speed increase...
The whole GUI is drawn with Cairo - would have to check out if it can do this (probably can). Still might end up to be more resource intensive than no filter.

Originally Posted by 白い熊 View Post
However, cutting out gpsd might still be worth it, though the main hog is probably X VNC access...
Yes, but I'd rather first make sure this is what's really causing it as using GPSD simplifies quite a few things. Would bet its rather the frequent fullscreen redraws swamping the VNC viewer.


Originally Posted by 白い熊 View Post
Second, have an option in modrana to update the display only let's say every second, so that this would also decrease the data sent significantly?
Originally Posted by 白い熊 View Post
The more I think about it, the more I think it's the continuous display updates, more than anything.

Martin, would it be possible to have an option allowing you to select how often to redraw the main window, i.e. continuous, and then once in how many seconds...?
If Options->Debug->Tiles->Redraw screen once a new tile is loaded is disabled, the screen should actually update just about once a second. But it might be a good idea to add an option that forces a fixed global redraw interval.
__________________
modRana: a flexible GPS navigation system
Mieru: a flexible manga and comic book reader
Universal Components - a solution for native looking yet component set independent QML appliactions (QtQuick Controls 2 & Silica supported as backends)

Last edited by MartinK; 2011-12-19 at 16:44.
 

The Following User Says Thank You to MartinK For This Useful Post: