Subject: Re: [E-devel] [Patch][elm_map] Change grid management
(3) Simplify grid_load()
There exists 3 state for grid items. i.e., downloaded, downloading,
none states.
grid_load() does followings:
1. if a grid item does not exist, create it.
2. update a tile (if downloaded) or queues for download (if none) or
nothing (if downloading)
SVN revision: 66153
Subject: Re: [E-devel] [Patch][elm_map] Change grid management
(2) Revoking gi->have
I restore the gi->have values. The removal of this is my mistake.
gi->have is needed because I cannot know whether this file is
downloading (just opened and not written) or downloaded state even if
image file exists.
SVN revision: 66141
Subject: Re: [E-devel] [Patch][elm_map] Change grid management
(1) Grid Management
There are no caching mechanism in current elm_map.
So, too many network resources are wasted because elm_map keeps only
two grids and already downloaded images are downloaded again and
again. (This also slows the map loading speed)
I have changed this grid management policy.
I have done followings.
1. Create all grids (all zoom levels) when elm_map_add() is called (No
memory overhead because of sparse matrix)
2. Clear all grids when map object is deleted.
3. Loads necessary grids and unloads unused grids when zoom level is
changed.
Changed grid management have one weakness that memory and tmp size can
grow bigger while map object is live.
I think it may need API such as elm_map_cache_size_set().
SVN revision: 66140
Subject: Re: [E-devel] [Patch][elm_map] Change grid management
Grid Management
There are no caching mechanism in current elm_map.
So, too many network resources are wasted because elm_map keeps only
two grids and already downloaded images are downloaded again and
again. (This also slows the map loading speed)
I have changed this grid management policy.
I have done followings.
1. Create all grids (all zoom levels) when elm_map_add() is called (No
memory overhead because of sparse matrix)
2. Clear all grids when map object is deleted.
3. Loads necessary grids and unloads unused grids when zoom level is
changed.
Changed grid management have one weakness that memory and tmp size can
grow bigger while map object is live.
I think it may need API such as elm_map_cache_size_set().
SVN revision: 66131
Sorry, I have forgotten adding comments to my patch.
OSM recommends to requesting map images distributively.
Please refere http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
I used 3 input parameters for selecting one from a, b, c or 1, 2, 3, 4
tile servers.
I attached patch with comments.
Signed-Off-By: TaeHwan Kim(ohpowel@gmail.com)
Signed-Off-By: ChunEon Park(hermet@hermet.pe.kr)
SVN revision: 65892
Subject: Re: [E-devel] [Patch][elm_map] Remove unnecessary flags
There are too may flags in elm_map. Most of them are duplicated and unnecessary.
I have removed "want", "download", "have" variables.
I use gi->job instead of "want" & "download".
I use ecore_file_exists() instead of "have" flags.
SVN revision: 65890
Hi,
There are bugs that map removes list elements when using
EINA_LIST_FOREACH or EINA_LIST_REVERSE_FOREACH.
We should use EINA_LIST_FOREACH_SAFE or EINA_LIST_REVERSE_FOREACH_SAFE
instead for above case.
Please review belows
SVN revision: 65069
Subject: [E-devel] [elm_map] ecore_file_download_full() should be used
properly
elm_map only checked that returned job is NULL.
But ecore_file_download_full() returns EINA_FALSE when error occurred.
So return value should be checked for proper usage.
Please review this simple bug fix
SVN revision: 64794
Subject: [E-devel] [elm_map] Fix up too many connections at the same
time.
Currently, elm_map requests all visible map image tile to map server
at the
same time.
If the scene is turned off while panning or zooming, it will be
aborted on
HTTP requests.
But it already sent to map server, and it already made useless HTTP
connections.
So if you pan scrolling quickly, elm_map try to download and abort too
many
HTTP
connections repeatedly.
If you have stable and high-throughput data connection, it doesn't
matter
on your side.
However map server will get high load, It is sufficient reason to block
you.
In another case, if you have poor data connection such as 3G
connection, it
has less
throughput and it causes delay of downloading. And finally, the device
is
as full as
HTTP connections even you already aborted. It makes low-performance
issue on
your device.
I wrote a patch for solving this situation.
The idea is simple.
1. I limited number of maximum HTTP request on elm_map side.
2. If maximum HTTP request is exceed, keep requests on Eina_List.
3. If each image downloading is completed, try to download recent
request.
(Because it has strong possibility for your screen)
4. At the same time, invisible request will be removed.
(It doesn't make HTTP connection yet)
I tested many times on my desktop and device.
It works for me. And elm_map's performance is improved
appreciably on 3G
connections.
SVN revision: 64685
Subject: [E-devel] [Patch] elm_map: add image loading error handling
I made a bug fix for elm_map.
When a downloaded image has an error, , elm_map removes a file and goes on
just like download succeeded .
However, it is not success, so it should be marked as FALSE for later retry.
SVN revision: 64598
From: Kim Yunhan <spbear@gmail.com>
When you test elm_map with mouse wheel, it worked abnormally because of some bug.
So I made some more patch for fixing it.
This patch file also includes a previous patch (zoom-out issue).
SVN revision: 63510
I wrote a patch that handles a bug while zooming-out in elm_map.
When I try to zoom out, some tiles are broken.
But it is hard to notice because broken frame disappears quickly.
I investigated in a few days.
And I realize that there are something wrong.
When map is zoomed out, a tile is shrunk by evas_object_resize().
But evas_map handles its texture by just its origin image size not a shrunk size.
If evas_object's width & height is shrunk, I have to handle for its texture.
SVN revision: 63509
Using #include <elementary_config.h> will fail if
elementary has never been installed.
Signed-off-by: Mike McCormack <mj.mccormack@samsung.com>
SVN revision: 61220
structure.
'canvas' and 'output' are same. So we need to deprecate one of them
later(may be evas 2.0 or so.) After I discuss this with raster, I've
got to use 'canvas' not 'output'. So I fixed elementary codes.
SVN revision: 60268
i removed all custom enum & url callback of elm_map.
(ELM_MAP_SOURCE_CUSTOM_1, ELM_MAP_SOURCE_CUSTOM_2, ..., _custom1_url_cb, _custom2_url_cb, ... etc)
instead of those, i made sources list.
changed APIs are almost internal APIs...
but some APIs were changed for intuitive usage of map source.
user can make map module instead of setting custom APIs.
another change is "elm_module -> eina_module".
the reason of this change, is that elm_module uses environment value (i.e getenv, setenv.. ELM_MODULES)
i don't want to have a environment value dependency.
SVN revision: 59184
I added some APIs for name to elm_map.c and added some test code to test_map.c
I used nominatim OSM service. (http://http://nominatim.openstreetmap.org/)
as i felt, it's response time was very good to use.
SVN revision: 58703
Mail from Sangho Park.
I added some APIs for route to elm_map.c
There are some route services provided by Open Street Map (yours, open
route service, monav...)
I just added 'yours' url callback and will add ors, monav.
And added some test code to test_map.c
SVN revision: 58474
Subject: [E-devel] [Patch] elm_map_marker_region_get
This is a patch for elm_map_marker.
I added one api to get the coordinates of the marker.
because marker->longitude and marker->latitude are private data,
app can't access the coordinates of the marker.
SVN revision: 57665
Subject: Re: [E-devel] [Patch] elm_map_user_agent_set and get
This is a patch for elm_map for setting user-agent.
- Add elm_map_user_agent_set
- Add elm_map_user_agent_get
- modify doxygen
elm_map uses OSM(OpenStreetMap), but we can add custom map provider.
If custom map provider server filters robot out (currently default
user-agent is 'curl'),
we need some APIs to set/get user-agent.
SVN revision: 57353
1. the range of marker to remove.
2. after free(marker->groups[i]), reuse the value.
Patch by Sangho Park <gouache95@gmail.com>
Reviewed by Atton Jonathan.
SVN revision: 56849
Subject: [E-devel] [Patch] elm_map downloading progress info & bug fix
I added one new signal, one new API and fixed seg fault bug.
- signal : "download" (this signal is called when map_tile is
downloaded)
- API : elm_map_utils_downloading_status_get(const Evas_Object *obj, int
*try_num, int *finish_num)
- seg fault : if user select custom map provider, seg fault occurs,
because
there is no url_cb in the custom map provider
you can check download progress using these signal & API.
the example is in "test_map.c".
SVN revision: 56039
Subject: Re: [E-devel] [Patch] elm_map pinch zoom
This is a patch for elm_map pinch zoom.
you can zoom in/out using two fingers.
- add event handler for multi touch.
(also fixed the TOUCH_HOLD_RANGE to use finger size as it should be)
SVN revision: 55920
Subject: [E-devel] elm_map patch for supporting keyboard input
Most of elementary widgets can process keyboard input, but elm_map widget
has not. This patch makes elm_map be able to process keyboard input such as
Left, Right, Up, Down, PgDn, and PgUp key. In addition, map image will be
zoomed in or out when '+' or '-' key in keypad.
Please review it and let me know if there is any problem in this patch.
Merry Christmas!
SVN revision: 55840
Subject: [E-devel] [Patch] elm_map module patch
This is a patch for elm_map module.
when app developers or companies want to use specific license map (i.e
google map), module is needed.
- add new map provider for module "ELM_MAP_SOURCE_MODULE".
- add test_map module.
- add test code for module provider.
- add my name to AUTHORS.
SVN revision: 55684
If you try to create a new widget, you must be sure that the parent
is really an evas object.
With the previous implementation it was possible to call an _add
function for an elementary widget with any non-null pointer as parent
eventually causing crashes (like with the elm_box).
SVN revision: 55521
Subject: [E-devel] [PATCH] Some modifications for adapting
elm_longpress_timeout_get().
I made a patch for adapting elm_longpress_timeout_get() function to all
winsets, using long press event.
And I checked one warning in elm_entry.c , so I modified it.
SVN revision: 55339
Although some widgets are modified in this patch there should not be any visible
change. Actually this patch is intended to fix a Gengrid issue (patch following).
In Gengrid when the items were bigger than the grid itself the scroll would not
work correctly when the alignment was other than 0.0. That happened because the
smart scroller object was assuming the pan origin to be (0,0) and doing some
miscalculations based on that.
SVN revision: 54902