Hi Sergey,

On 09/12/2019 21:26, Alexey Ivanov wrote:
Hi Sergey

On 04/12/2019 22:17, Sergey Bylokhov wrote:
On 12/4/19 6:06 am, Alexey Ivanov wrote:
Yes, we still need passiveDCList. A DC can be moved to the passive list by DisposeThreadGraphicsInfo function in GDIWindowSurfaceData.cpp. This is called not on the toolkit thread, so we have to defer releasing the DC in this case.

However, I agree, we can simplify releasing DCs when on the toolkit thread by skipping the passive list. Yet having two different approaches could be error prone.

I actually tried this approach. It may look a bit simpler with three functions:
ReleaseActiveDCs(HDC hDC, HWND hWnd)
ReleaseActiveDCs(HWND hWnd)
ReleasePassiveDCs()

Yet in the majority of cases, the DC is moved to passive list using MoveDCToPassiveList from SetupThreadGraphicsInfo. It's done before a new DC is gotten.

I implemented ReleaseActiveDCs so that the DCs are released bypassing the passive list. However in my testing, DCs are never released from the active list; the exception to this rule being frame destruction where all DCs for a window are released.


Ok, then let's leave the current fix as-is.


Taking into account my comments above, I believe it's better to leave the fix as is without further modifications.

I'm not sure if replacing
ReleaseDCList(passiveDCList);
with
ReleasePassiveDCs()
would make the code clearer. Probably not. With the explicit list parameter, the call ReleaseDCList(GetHWnd(), activeDCList) in WM_AWT_RELEASE_ALL_DCS seems more consistent.

Alternatively, we can add MoveDCToPassiveList(HWND) which will move all DCs for the HWND from active list to passive list. Then the code would be consistent:
MoveDCToPassiveList(HDC, HWND) or MoveDCToPassiveList(HWND)
followed by ReleasePassiveDCs()

It could work. I'll try this approach.


It does not work good. I found serious issues in either approach I've tried so far.

Thus, we're down to the original proposal:

JBS: https://bugs.openjdk.java.net/browse/JDK-8235147
Webrev: http://cr.openjdk.java.net/~aivanov/8235147/webrev.00/

--
Regards,
Alexey

Reply via email to