mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-14 04:15:04 +00:00
6821291: assertion failure in awt_Frame.h
Reviewed-by: dcherepanov, art
This commit is contained in:
parent
0cadb2e023
commit
4fc4bb20ae
@ -381,19 +381,28 @@ LRESULT CALLBACK AwtFrame::ProxyWindowProc(HWND hwnd, UINT message,
|
||||
|
||||
void AwtFrame::CreateProxyFocusOwner()
|
||||
{
|
||||
if (AwtToolkit::IsMainThread()) {
|
||||
AwtFrame::_CreateProxyFocusOwner((void *)this);
|
||||
} else {
|
||||
AwtToolkit::GetInstance().InvokeFunction(AwtFrame::_CreateProxyFocusOwner, (void *)this);
|
||||
}
|
||||
}
|
||||
|
||||
void AwtFrame::_CreateProxyFocusOwner(void *param)
|
||||
{
|
||||
DASSERT(AwtToolkit::IsMainThread());
|
||||
DASSERT(m_proxyFocusOwner == NULL);
|
||||
DASSERT(AwtToolkit::MainThread() == ::GetCurrentThreadId());
|
||||
|
||||
m_proxyFocusOwner = ::CreateWindow(TEXT("STATIC"),
|
||||
TEXT("ProxyFocusOwner"),
|
||||
WS_CHILD,
|
||||
0, 0, 0, 0, GetHWnd(), NULL,
|
||||
AwtToolkit::GetInstance().
|
||||
GetModuleHandle(),
|
||||
NULL);
|
||||
|
||||
m_proxyDefWindowProc = ComCtl32Util::GetInstance().SubclassHWND(m_proxyFocusOwner, ProxyWindowProc);
|
||||
AwtFrame *f = (AwtFrame *)param;
|
||||
f->m_proxyFocusOwner = ::CreateWindow(TEXT("STATIC"),
|
||||
TEXT("ProxyFocusOwner"),
|
||||
WS_CHILD,
|
||||
0, 0, 0, 0, f->GetHWnd(), NULL,
|
||||
AwtToolkit::GetInstance().
|
||||
GetModuleHandle(),
|
||||
NULL);
|
||||
|
||||
f->m_proxyDefWindowProc = ComCtl32Util::GetInstance().SubclassHWND(f->m_proxyFocusOwner, ProxyWindowProc);
|
||||
}
|
||||
|
||||
void AwtFrame::DestroyProxyFocusOwner()
|
||||
|
||||
@ -117,7 +117,6 @@ public:
|
||||
INLINE BOOL IsUndecorated() { return m_isUndecorated; }
|
||||
|
||||
INLINE HWND GetProxyFocusOwner() {
|
||||
DASSERT(AwtToolkit::MainThread() == ::GetCurrentThreadId());
|
||||
if (m_proxyFocusOwner == NULL) {
|
||||
CreateProxyFocusOwner();
|
||||
}
|
||||
@ -165,6 +164,8 @@ private:
|
||||
void CreateProxyFocusOwner();
|
||||
void DestroyProxyFocusOwner();
|
||||
|
||||
/* creates proxy focus owner, called on Toolkit thread */
|
||||
static void _CreateProxyFocusOwner(void *param);
|
||||
/* destroys proxy focus owner, called on Toolkit thread */
|
||||
static void _DestroyProxyFocusOwner(void *param);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user