PyObjects start with a refcount of 1. Adding them to a PyList adds a second - which gets removes during the list's destruction. The additional ref was keeping its associated NautilusFile from ever being finalized.
Steps to reproduce problem:
- Install nautilus-python and some python MenuProvider extension.
- Create a folder with a couple of image files inside. Be sure to allow thumbs to generate.
- Enter the folder, select one or more files (so menus are generated). De-select and leave the folder (but do not close nautilus). If you were to watch for the files' finalize to run, you'd notice it does not.
- touch or otherwise modify one of the image files from a terminal
- Re-enter the folder in nautilus.
- See that loading status runs forever, modified file(s) never display. Note: even if you only modify one file, it could cause all of the files to fail to load, depending on their order during enumeration.
When no more views are displaying a file, that file should be finalized. When it's not it ends up in an undefined state, as it has no monitors flag it as needing to be updated.