Then I would be drawing rectangles which are not ready for a redraw yet. Does UnLock release only last lock or all locks on these old DX versions?
Well, you need to store the rectangle at Lock time but only draw it at Unlock time. And I have no idea if any game ever does concurrent locks (so I have no idea how concurrent lock work).
But anyway, with the update thread, there is no guarantee to not flush on screen something that is not 'finished' (if the application locks rect A then unlocks it then relocks the same rectangle A and the update thread flushes on screen before the apps unlocks A, you will put on screen unfinished stuff).
So setting the rectangle dirty on Lock is not going to give us that much more garbage on screen than the usual stuff (and, moreover, this only is a problem on Windowed applications or on non-double buffered games (which COMI is the only example I know)).
Lionel