summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/win/dtrans/MtaOleClipb.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/vcl/win/dtrans/MtaOleClipb.cxx b/vcl/win/dtrans/MtaOleClipb.cxx
index 3898bdc30dfb..00fbf4143386 100644
--- a/vcl/win/dtrans/MtaOleClipb.cxx
+++ b/vcl/win/dtrans/MtaOleClipb.cxx
@@ -44,6 +44,7 @@
#include <process.h>
#include <systools/win32/comtools.hxx>
+#include <systools/win32/retry_if_failed.hxx>
#include <comphelper/windowserrorstring.hxx>
@@ -465,7 +466,8 @@ bool CMtaOleClipboard::onRegisterClipViewer( LPFNC_CLIPVIEWER_CALLBACK_t pfncCli
HRESULT CMtaOleClipboard::onSetClipboard( IDataObject* pIDataObject )
{
- return OleSetClipboard( pIDataObject );
+ return sal::systools::RetryIfFailed(10, 100,
+ [pIDataObject] { return OleSetClipboard(pIDataObject); });
}
HRESULT CMtaOleClipboard::onGetClipboard( LPSTREAM* ppStream )
@@ -475,7 +477,8 @@ HRESULT CMtaOleClipboard::onGetClipboard( LPSTREAM* ppStream )
IDataObjectPtr pIDataObject;
// forward the request to the OleClipboard
- HRESULT hr = OleGetClipboard( &pIDataObject );
+ HRESULT hr
+ = sal::systools::RetryIfFailed(10, 100, [p = &pIDataObject] { return OleGetClipboard(p); });
if ( SUCCEEDED( hr ) )
{
hr = MarshalIDataObjectInStream(pIDataObject.get(), ppStream);
@@ -488,7 +491,7 @@ HRESULT CMtaOleClipboard::onGetClipboard( LPSTREAM* ppStream )
HRESULT CMtaOleClipboard::onFlushClipboard( )
{
- return OleFlushClipboard();
+ return sal::systools::RetryIfFailed(10, 100, [] { return OleFlushClipboard(); });
}
// handle clipboard update event