Quick Ghostview Generator design explanation -------------------------------------------- libgs has a limitation that there can only be a gs instance per process. To overcome that problem there is zero (when no gs document has been opened) or one GSInterpreterCMD threads running (when on or more gs documents are open in the same okular process) GSHandler is the libgs dependant code, it could be in GSInterpreterCMD as there is the same amount of GSHandler and GSInterpreterCMD instances but i thought it made sense to separate them As there is only one GSInterpreterCMD for potentially N GSGenerator, the imageDone signal from GSInterpreterCMD also emits the request and the GSGenerator checks if it is its request that was done or from another GSGenerator.