linuxmint / xviewer

A generic Image viewer
GNU General Public License v2.0
75 stars 37 forks source link

Opened images “vanishes” when underlying file is deleted from directory. #184

Open navid-zamani opened 1 year ago

navid-zamani commented 1 year ago
 * Xviewer version: 3.2.12
 * Distribution: Linux Mint 21.1 Vera

Issue Xviewer has a hilarious bug: When you open a picture file (as in: it is loaded into RAM, uncompressed, and copied to video memory), then switch back to the file manager, and delete the file (as in: overwrite the directory entry and mark the blocks on disk as unused), it “vanishes” the loaded in-memory picture too, so you can’t see it anymore.

This is literally one of the things we laughed at in the 2000s and 90, because it was shown in movies, and that’s absolutely not how things work in real life!

Meaning somebody had to deliberately Apple it in, and break the program and the very bedrock of how computers work.

Steps to reproduce

  1. Find e.g. a JPEG file in your file system, using your file manager (e.g. Nemo) and open it with Xviewer.
  2. Use your window manager to switch back to your file manager, and “delete” the file. (Not wiping.)
  3. Switch back to Xviewer.

Observed behaviour Xviewer shows an empty window. The picture is not shown anymore.

Expected behaviour The picture is obviously still displayed, since the uncompressed RAM copy, aswell as the graphics system’s render surface in GPU memory are not affected. And since the inode is still open, it is also not freed in the file system, until Xviewer closes the handle.

Other information Important philosophical background: Any distortion of the real underlying behavior by a “simplified” “experience” is actively harmful, as it stifles the user’s ability to understand what’s going on, making him unable to be in control, and forced to stay inside that power-limiting “safe space” bubble. And then when he ever falls outside, he’s completely lost and unable to recover. Effectively limiting his abilities to the offered subset, and making him dependent. This is an effect well-known from Windows and Apple to basically “treat the user as an idiot until he damn is”. Which itself leads to dumb users in the first place (because it’s the path of least resistance). Which then leads to more UI dumbing down. And so on. A race to the bottom that has had a major harmful effect on what we can do with computers. And something that, because it’s not how Linux handles things, is a major “selling point” of actual (read: non-commercial-desktop-imitating) Linux. …