diff options
Diffstat (limited to 'dtrans/source/win32/clipb/MtaOleClipb.cxx')
-rw-r--r-- | dtrans/source/win32/clipb/MtaOleClipb.cxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/dtrans/source/win32/clipb/MtaOleClipb.cxx b/dtrans/source/win32/clipb/MtaOleClipb.cxx index ac3dc68083e1..2c579e38e741 100644 --- a/dtrans/source/win32/clipb/MtaOleClipb.cxx +++ b/dtrans/source/win32/clipb/MtaOleClipb.cxx @@ -108,6 +108,9 @@ namespace /* private */ break; } + + default: // WAIT_FAILED? + return false; } } } @@ -268,6 +271,10 @@ CMtaOleClipboard::~CMtaOleClipboard( ) m_bRunClipboardNotifierThread = false; SetEvent( m_hTerminateClipboardChangedNotifierEvent ); + // unblock whoever could still wait for event processing + if (m_hEvtWndDisposed) + SetEvent(m_hEvtWndDisposed); + sal_uInt32 dwResult = WaitForSingleObject( m_hClipboardChangedNotifierThread, MAX_WAIT_SHUTDOWN ); @@ -297,6 +304,9 @@ CMtaOleClipboard::~CMtaOleClipboard( ) if ( nullptr != m_hEvtThrdReady ) CloseHandle( m_hEvtThrdReady ); + if (m_hEvtWndDisposed) + CloseHandle(m_hEvtWndDisposed); + if ( m_MtaOleReqWndClassAtom ) UnregisterClassW( g_szWndClsName, nullptr ); |