Mercurial > octave
changeset 25057:6bc4958b224b stable
If getframe fails, retry twice after increasing delays (bug #53328).
* ObjectProxy.cc (ObjectProxy::get_pixels): if QMetaObject::invokeMethod fails,
retry twice after increasing delay.
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Fri, 30 Mar 2018 11:05:31 +0200 |
parents | 6c1611e6830f |
children | f776e458d2e3 |
files | libgui/graphics/ObjectProxy.cc |
diffstat | 1 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/graphics/ObjectProxy.cc Fri Mar 30 10:03:06 2018 -0700 +++ b/libgui/graphics/ObjectProxy.cc Fri Mar 30 11:05:31 2018 +0200 @@ -129,7 +129,23 @@ QMetaObject::invokeMethod (m_object, "slotGetPixels", t, Q_RETURN_ARG (uint8NDArray, retval)); - return retval; - } + // FIXME: The following may fail for obscure reasons, see bug #53328. + // In absence of a solution, we retry twice before calling error(). + if (! QMetaObject::invokeMethod (m_object, "slotGetPixels", t, + Q_RETURN_ARG (uint8NDArray, retval))) + { + QThread::msleep (100); + if (! QMetaObject::invokeMethod (m_object, "slotGetPixels", t, + Q_RETURN_ARG (uint8NDArray, retval))) + { + QThread::msleep (200); + if (! QMetaObject::invokeMethod (m_object, "slotGetPixels", t, + Q_RETURN_ARG (uint8NDArray, retval))) + error ("getframe: unable to retrieve figure pixels"); + } + } + + return retval; + } };