<div dir="ltr">Hi,<div><br></div><div>okay this is complicated (to explain) and maybe the solution is too compilcated but this is what was possible (for me) without a major rearchitecture.</div><div><br></div><div>All the ImageRequest's that are handed to AsyncLoader return their results by calling pixmapLoaded from the creating object.</div><div><br></div><div>My machine is quite slow and I have many videos in my library so when video thumbnails are requestes from AsyncLoader (for e.g. the image merger) KPA crashes reproducibly when the requesting object is deleted before the request is processes because the request uses request->client()->pixmapLoaded() to hand the result to a non-existent requestor.</div><div><br></div><div>My solution is to</div><div>1.) add the ability to mark a request as obsolete.</div><div><a href="https://github.com/astifter/kphotoalbum-astifter-branch/commit/1ab3a1ec5536b6428ef8d47029883e46cc795894">https://github.com/astifter/kphotoalbum-astifter-branch/commit/1ab3a1ec5536b6428ef8d47029883e46cc795894</a></div><div><br></div><div>2.) use that information in to make sure requests are dropped/do not send data when the request is obsolete.</div><div><a href="https://github.com/astifter/kphotoalbum-astifter-branch/commit/1c02f7692eec1b08d79f9a9a254ef5af5b4a1bbd">https://github.com/astifter/kphotoalbum-astifter-branch/commit/1c02f7692eec1b08d79f9a9a254ef5af5b4a1bbd</a></div><div><br></div><div>3.) make sure all the objects creating ImageRequest's handle them properly:</div><div> - NULL request pointer on construct</div><div> - store pointer to request when creating it</div><div> - NULL the request pointer when pixmapLoaded is called</div><div> - when requestor is destroyed mark possibly open request as obsolete.</div><div><a href="https://github.com/astifter/kphotoalbum-astifter-branch/commit/9268038d101727b6444fed35971b6bb32bfa36c8">https://github.com/astifter/kphotoalbum-astifter-branch/commit/9268038d101727b6444fed35971b6bb32bfa36c8</a></div><div><br></div><div>It would be cleaner to handle this with a shared_ptr to client in the request but this would disrupt the code even more (I would have to make sure that all objects creating the ImageRequest are heap-allocated as well.</div><div><br></div><div>Feedback, comments?</div><div dir="ltr"><div><br></div><div>Andreas</div><div><br></div><div><br></div></div></div>