Last week wasn’t the most productive of all, since time spent on the graduation project induced some delays, but here’s what I did:
Implemented the new approach with the painting split in performPaint() very quickly. It appears to be working, but for now I am not able to test it properly. I did try to disable one of the screens, and the results were as expected (no further paints on it).
Next stage is to modify the shaders so they will do the color correction. The most robust solution is to inject a couple of lines in the shader code, just before sending it to the graphics card for compilation. But one needs to know where exactly to put those lines so the shader doesn’t end up broken. I have envisioned an algorithm to do this for GLSL 1.2, and have started working on the implementation. It should be okay, and I’m confident all cases are covered. I will do careful testing when implementing this.