# HG changeset patch # User Pantxo Diribarne # Date 1522400731 -7200 # Node ID 6bc4958b224b91b8b2eca370fd499f66d492df00 # Parent 6c1611e6830f78960f377434d24f4039c3a8d744 If getframe fails, retry twice after increasing delays (bug #53328). * ObjectProxy.cc (ObjectProxy::get_pixels): if QMetaObject::invokeMethod fails, retry twice after increasing delay. diff -r 6c1611e6830f -r 6bc4958b224b libgui/graphics/ObjectProxy.cc --- 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; + } };