I think it's going to take a while, I'm completely lost in a sea of w, h, width, height, screen->w, screen->h, disp_width, disp_actual_width, disp_height, scale_x, scale_y, and on, and on, ...
Utterly confusing mess. GDI, SDL1, and SDL2 are all completely different in updating disp_width, disp_actual_width, and disp_height. I don't see why they should here.
That seems backwards compared to all other APIs with locking of images/textures I've used.
Agreed. But it worked. Past tense.
And the chopped part of your quote is the important part - it crashed if you didn't. Just like it is now even when you do.