-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Hi,
I just noticed some problematic processes which needs clarifying and fix. This is: * Deletion of pictures from collections -> might be very slow with many pictures * Open a collection -> Slow with many pictures * Open of pictures in separate window (from a collection) -> Errorfull do not get the right size * Deletion of a picture from collection _in main window_ -> Do not advance to the next * Moving of a picture with overlay visible -> pollutes the picture with parts from overlay until the complete window is redraw I think the fix of the above is a good point to describe what happens. To show what I think about I did analyse the problem three: * [o] Start in img-view::real_view_window_new() * central structure !ViewWindow *vw * New toplevel window * vw->imd := new image * set profile, background and such values for vw->imd * [X] Set drag-n-drop events img-view::view_window_dnd_init() * [ ] ... and buttons (?) img-view::view_image_set_buttons() * Set events for window * If image from collection * [ ] image::image_change_from_collection() (Indirection) * [ ] image::image_change_real() * Set internal values * Stop real_time_monitor (?) * [ ] image::image_change_complete() (?) * image::image_update_util() -- Call callback function vw->imd->func_update * Set Title * Set State for vw->imd to IMAGE_STATE_IMAGE * Restart real_time_monitor (?) * [ ] image::image_prebuffer_set() -- Set read ahead * [ ] filecache::file_cache_get() -- Get file from cache if there (?) * [ ] image::image_read_ahead_set() * [ ] image::image_read_ahead_start() * [ ] image-load::image_loader_new() * [ ] image-load::image_loader_delay_area_ready() (?) * Set callbacks for error and done * [ ] image-load::image_loader_start() (for read ahead) * [ ] Important point for indirection, has to go deeper (!) * If from list (What list?) * [ ] image::image_change_fd() (Indirection) * [ ] image::image_change_real() * Set internal values * Stop real_time_monitor (?) * [ ] image::image_change_complete() (?) * image::image_update_util() -- Call callback function vw->imd->func_update * Set Title * Set State for vw->imd to IMAGE_STATE_IMAGE * Restart real_time_monitor (?) * [ ] image::image_prebuffer_set() -- Set read ahead * [ ] filecache::file_cache_get() -- Get file from cache if there (?) * [ ] image::image_read_ahead_set() * [ ] image::image_read_ahead_start() * [ ] image-load::image_loader_new() * [ ] image-load::image_loader_delay_area_ready() (?) * Set callbacks for error and done * [ ] image-load::image_loader_start() (for read ahead) * [ ] Important point for indirection, has to go deeper (!) * Single picture (From where?) * [ ] image::image_change_fd() (Indirection) * [ ] image::image_change_real() * Set internal values * Stop real_time_monitor (?) * [ ] image::image_change_complete() (?) * image::image_update_util() -- Call callback function vw->imd->func_update * Set Title * Set State for vw->imd to IMAGE_STATE_IMAGE * Restart real_time_monitor (?) * [X] image::image_zoom_get() (Indirection) * [X] pixbuf-renderer::pixbuf_renderer_zoom_get() * If above == 0.0 (As I see this cannot happens ever (?)) * [ ] image::image_get_image_size() (Indirection) * [ ] pixbuf-renderer::pixbuf_renderer_get_image_size() * Will fail to get the correct size if the image is not in cache or preloaded (!) * else * pixbuf-renderer::pixbuf_renderer_get_scaled_size() (Why direct in this case (?)) * Will fail to get the correct size if the image is not in cache or preloaded (!) * Now set size (which is most often 0:0) * Show the window * Append to the list of view windows * [ ] filedata::file_data_register_notify_func() It is not complete but it unhides some other (minor) problems. If some one can complete the picture above please do. However, to fix the problem I have to go deeper into image-loader. I wonder why the signal "size_prepared" is not connected until now. A additional problem I find when using debug output is that the read ahead image is finished before the main image is loaded. This makes the read ahead a bid absurd. Another problem I find here is that when the collection window has to do thinks (like delete many pictures) the view is very slow (only a rectangle of several pixels (100 or so) is viewed once by once). So please, if you know the logical structure of the above processes, describe them. That would help to fix the problems. My structure above is also just a RFC. I think the best place for it would be in the code as documentation (With the motivation why something is done this way and not the other). Regards Klaus - -- Klaus Ethgen http://www.ethgen.de/ pub 2048R/D1A4EDE5 2000-02-26 Klaus Ethgen <kl...@ethgen.de> Fingerprint: D7 67 71 C4 99 A6 D4 FE EA 40 30 57 3C 88 26 2B -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQEVAwUBS+cy+5+OKpjRpO3lAQoA6gf/fHLwbuI2O4RPSXZgonGnojJrRmn+AZfV z7PNN8l+a88GBvdlxlYP6Elon90qADWuxsq0U91PlW0UeuOtMsHzWSq9RDEurjaY lq/LPaaDYTT7O/dB3s39FYiRRhMozNTGNc6QB6053EdAmnuGoQ+cUgagQWYER4Bx rDRvocf6+Cq3L77QE+0+g7bIohX3GElBFj4uSezOeEvzGMLLOlAwxotfdz1Be4DG u8ysuAM5ntnXGJmbL1VqHEI45fUEO1cCKZIXPbq2uV6ziDyfFG7Z+SZnxMWtFKsR y/yG53re2K6xViCxB83I9yagOr1ZmwWte8swOmp+YMDpKv6MQe9Xsw== =y2+S -----END PGP SIGNATURE----- ------------------------------------------------------------------------------ _______________________________________________ Geeqie-devel mailing list Geeqie-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geeqie-devel