src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
Print this page
@@ -1380,11 +1380,11 @@
break;
}
case WM_AWT_RELEASEDC:
{
HDC hDC = (HDC)wParam;
- MoveDCToPassiveList(hDC);
+ MoveDCToPassiveList(hDC, GetHWnd());
ReleaseDCList(GetHWnd(), passiveDCList);
mr = mrConsume;
break;
}
case WM_AWT_RELEASE_ALL_DCS:
@@ -7172,18 +7172,18 @@
* been released elsewhere (for example, the window
* destruction process may release a DC while a rendering
* thread may also want to release a DC when it notices that
* its DC is obsolete for the current window).
*/
-DCItem *DCList::RemoveDC(HDC hDC)
+DCItem *DCList::RemoveDC(HDC hDC, HWND hWnd)
{
listLock.Enter();
DCItem **prevPtrPtr = &head;
DCItem *listPtr = head;
while (listPtr) {
DCItem *nextPtr = listPtr->next;
- if (listPtr->hDC == hDC) {
+ if (listPtr->hDC == hDC && listPtr->hWnd == hWnd) {
*prevPtrPtr = nextPtr;
break;
}
prevPtrPtr = &listPtr->next;
listPtr = nextPtr;
@@ -7233,13 +7233,13 @@
listPtr = listPtr->next;
}
listLock.Leave();
}
-void MoveDCToPassiveList(HDC hDC) {
+void MoveDCToPassiveList(HDC hDC, HWND hWnd) {
DCItem *removedDC;
- if ((removedDC = activeDCList.RemoveDC(hDC)) != NULL) {
+ if ((removedDC = activeDCList.RemoveDC(hDC, hWnd)) != NULL) {
passiveDCList.AddDCItem(removedDC);
}
}
void ReleaseDCList(HWND hwnd, DCList &list) {