I'm new to the evince code but I thought I should share what I found out.
I noticed that the rendering job somehow gets cancelled and the page then just shows that it is "Loading..."
here's my stacktrace:
ev-jobs.c: ev_job_cancel
ev-pixbuf-cache.c: copy_job_to_job_info
ev-pixbuf-cache.c: ev_pixbuf_cache_get_link_mapping
ev-view.c: ev_view_get_link_at_location
ev-view.c: ev_view_handle_cursor_over_xy
ev-view.c: ev_view_motion_notify_event <- gets called when the mouse moves, here we go...
copy_job_to_job_info cancels the job because the "job_info->job" object still exists. it normally gets destroyed the moment the idle calls emit_finished (ev-jobs.c), but this hasn't happend yet.
In the ev-pixbuf-cache.c you'll find several comments like this: /* We don't need to wait for the idle to handle the callback */.
I think you do have to wait for the callback or you have to clean the job_info->job before calling copy_info_to_job. Otherwise the job gets cancelled and that's what causes this bug.
I don't have the big picture so I won't commit anything but I hope this helps resolving this annoying bug..
I'm new to the evince code but I thought I should share what I found out.
I noticed that the rendering job somehow gets cancelled and the page then just shows that it is "Loading..."
here's my stacktrace: to_job_ info cache_get_ link_mapping get_link_ at_location handle_ cursor_ over_xy motion_ notify_ event <- gets called when the mouse moves, here we go...
ev-jobs.c: ev_job_cancel
ev-pixbuf-cache.c: copy_job_
ev-pixbuf-cache.c: ev_pixbuf_
ev-view.c: ev_view_
ev-view.c: ev_view_
ev-view.c: ev_view_
copy_job_ to_job_ info cancels the job because the "job_info->job" object still exists. it normally gets destroyed the moment the idle calls emit_finished (ev-jobs.c), but this hasn't happend yet.
In the ev-pixbuf-cache.c you'll find several comments like this: /* We don't need to wait for the idle to handle the callback */.
I think you do have to wait for the callback or you have to clean the job_info->job before calling copy_info_to_job. Otherwise the job gets cancelled and that's what causes this bug.
I don't have the big picture so I won't commit anything but I hope this helps resolving this annoying bug..
Cheers, Chris