diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-07-14 00:21:55 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-07-21 08:26:03 +0000 |
commit | f3785c8532e627e4d9d0e7372213cffe67fdd96f (patch) | |
tree | 7ce7195e469c2e097a87387183980dc72898182b /avmedia | |
parent | ca51926a2a0eacc5d8fc01bbbeff6293bf3f25c6 (diff) |
glTF: More rendering related error handling
If any error occurs related to glTF rendering, a question
mark is displayed at the place of the OpenGL window
(Question mark is a general concept of media objects).
Change-Id: Id7df5a47a4dd6832e640b3a7cb3c7712ebfb4408
(cherry picked from commit 58fd5a6dd6d5d599df88c9fd4ed5257577562bd9)
Reviewed-on: https://gerrit.libreoffice.org/10275
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'avmedia')
-rw-r--r-- | avmedia/source/opengl/oglframegrabber.cxx | 7 | ||||
-rw-r--r-- | avmedia/source/opengl/oglwindow.cxx | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/avmedia/source/opengl/oglframegrabber.cxx b/avmedia/source/opengl/oglframegrabber.cxx index cca8cc0f889d..2f76436bed23 100644 --- a/avmedia/source/opengl/oglframegrabber.cxx +++ b/avmedia/source/opengl/oglframegrabber.cxx @@ -38,7 +38,12 @@ uno::Reference< css::graphic::XGraphic > SAL_CALL OGLFrameGrabber::grabFrame( do { boost::scoped_array<sal_uInt8> pBuffer(new sal_uInt8[m_rHandle.viewport.width * m_rHandle.viewport.height * 4]); glTFHandle* pHandle = &m_rHandle; - gltf_renderer_get_bitmap(&pHandle, 1, (char*)pBuffer.get(), GL_BGRA); + int nRet = gltf_renderer_get_bitmap(&pHandle, 1, (char*)pBuffer.get(), GL_BGRA); + if( nRet != 0 ) + { + SAL_WARN("avmedia.opengl", "Error occured while rendering to bitmap! Error code: " << nRet); + return uno::Reference< css::graphic::XGraphic >(); + } BitmapEx aBitmap = OpenGLHelper::ConvertBGRABufferToBitmapEx(pBuffer.get(), m_rHandle.viewport.width, m_rHandle.viewport.height); return Graphic( aBitmap ).GetXGraphic(); } diff --git a/avmedia/source/opengl/oglwindow.cxx b/avmedia/source/opengl/oglwindow.cxx index 09a6333f1093..72ccbfbb108c 100644 --- a/avmedia/source/opengl/oglwindow.cxx +++ b/avmedia/source/opengl/oglwindow.cxx @@ -34,7 +34,12 @@ OGLWindow::~OGLWindow() void SAL_CALL OGLWindow::update() throw (css::uno::RuntimeException, std::exception) { m_rContext.makeCurrent(); - gltf_prepare_renderer(&m_rHandle); + int nRet = gltf_prepare_renderer(&m_rHandle); + if( nRet != 0 ) + { + SAL_WARN("avmedia.opengl", "Error occured while preparing for rendering! Error code: " << nRet); + return; + } gltf_renderer(&m_rHandle); gltf_complete_renderer(&m_rHandle); m_rContext.swapBuffers(); |