summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--avmedia/source/opengl/oglplayer.cxx20
-rw-r--r--external/libgltf/UnpackedTarball_libgltf.mk1
-rw-r--r--external/libgltf/patches/free_file_buffers.patch58
3 files changed, 19 insertions, 60 deletions
diff --git a/avmedia/source/opengl/oglplayer.cxx b/avmedia/source/opengl/oglplayer.cxx
index 79c78f18ecc9..4f173563d7e4 100644
--- a/avmedia/source/opengl/oglplayer.cxx
+++ b/avmedia/source/opengl/oglplayer.cxx
@@ -31,6 +31,13 @@ OGLPlayer::OGLPlayer()
OGLPlayer::~OGLPlayer()
{
+ for (size_t i = 0; i < m_pHandle->size; ++i)
+ {
+ if (m_pHandle->files[i].type != GLTF_JSON)
+ {
+ delete [] m_pHandle->files[i].buffer;
+ }
+ }
gltf_renderer_release(m_pHandle);
}
@@ -68,6 +75,8 @@ bool OGLPlayer::create( const OUString& rURL )
m_pHandle = gltf_renderer_init(&aJsonFile);
+ delete [] aJsonFile.buffer;
+
if( !m_pHandle || !m_pHandle->files )
{
SAL_WARN("avmedia.opengl", "gltf_renderer_init returned an invalid glTFHandle");
@@ -87,7 +96,14 @@ bool OGLPlayer::create( const OUString& rURL )
// Load images as bitmaps
GraphicFilter aFilter;
Graphic aGraphic;
- aFilter.ImportGraphic(aGraphic, INetURLObject(sFilesURL));
+ if( aFilter.ImportGraphic(aGraphic, INetURLObject(sFilesURL)) != GRFILTER_OK )
+ {
+ rFile.buffer = 0;
+ rFile.imagewidth = 0;
+ rFile.imageheight = 0;
+ SAL_WARN("avmedia.opengl", "Can't load texture file: " + sFilesURL);
+ return false;
+ }
BitmapEx aBitmapEx = aGraphic.GetBitmapEx();
aBitmapEx.Mirror(BMP_MIRROR_VERT);
rFile.buffer = (char*)OpenGLHelper::ConvertBitmapExToRGBABuffer(aBitmapEx);
@@ -98,6 +114,8 @@ bool OGLPlayer::create( const OUString& rURL )
{
if( !lcl_LoadFile(&rFile, sFilesURL) )
{
+ rFile.buffer = 0;
+ rFile.size = 0;
SAL_WARN("avmedia.opengl", "Can't load glTF file: " + sFilesURL);
return false;
}
diff --git a/external/libgltf/UnpackedTarball_libgltf.mk b/external/libgltf/UnpackedTarball_libgltf.mk
index 65262eac81df..ce5ad79141a7 100644
--- a/external/libgltf/UnpackedTarball_libgltf.mk
+++ b/external/libgltf/UnpackedTarball_libgltf.mk
@@ -19,7 +19,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,libgltf,\
external/libgltf/patches/include_path_glew.patch \
external/libgltf/patches/include_path_freetype.patch \
external/libgltf/patches/openmp-disable.patch \
- external/libgltf/patches/free_file_buffers.patch \
external/libgltf/patches/rgba_textures.patch \
))
diff --git a/external/libgltf/patches/free_file_buffers.patch b/external/libgltf/patches/free_file_buffers.patch
deleted file mode 100644
index 9f92da3b8a27..000000000000
--- a/external/libgltf/patches/free_file_buffers.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -ur libgltf.org/src/LoadScene.cpp libgltf/src/LoadScene.cpp
---- libgltf.org/src/LoadScene.cpp 2014-05-26 21:46:51.986986538 +0200
-+++ libgltf/src/LoadScene.cpp 2014-05-26 21:47:28.206985004 +0200
-@@ -127,7 +127,7 @@
- return gHandle;
- }
-
--bool Parser::releaseFileName()
-+bool Parser::releaseFiles()
- {
- glTFHandle* gHandle = pScene->getGltfHandle();
- for (int i = (int)gHandle->size - 1 ; i >= 0 ; i--)
-@@ -137,6 +137,7 @@
- free(gHandle->files[i].filename);
- gHandle->files[i].filename = NULL;
- }
-+ delete [] gHandle->files[i].buffer;
- }
-
- if (gHandle->files != NULL)
-diff -ur libgltf.org/src/LoadScene.h libgltf/src/LoadScene.h
---- libgltf.org/src/LoadScene.h 2014-05-26 21:46:51.986986538 +0200
-+++ libgltf/src/LoadScene.h 2014-05-26 21:47:33.170984793 +0200
-@@ -26,7 +26,7 @@
- {
- public:
- glTFHandle* getFileNameInJson(const std::string& jsonFile);
-- bool releaseFileName();
-+ bool releaseFiles();
- int parseScene(Scene* pscene);
- bool parseJsonFile();
- void setJsonInfo(const std::string& sbuffer);
-@@ -81,4 +81,4 @@
- bool is_json_in_buffer;
- };
-
--#endif
-\ No newline at end of file
-+#endif
-diff -ur libgltf.org/src/RenderScene.cpp libgltf/src/RenderScene.cpp
---- libgltf.org/src/RenderScene.cpp 2014-05-26 21:46:51.986986538 +0200
-+++ libgltf/src/RenderScene.cpp 2014-05-26 21:47:39.358984531 +0200
-@@ -1426,7 +1426,7 @@
-
- void RenderScene::releaseRender()
- {
-- mLoadJson.releaseFileName();
-+ mLoadJson.releaseFiles();
- fbo.releaseFbo();
- return;
- }
-@@ -1543,4 +1543,4 @@
- int RenderScene::isAnimPlay()
- {
- return this->mAnimationPlay ? 1 : 0;
--}
-\ No newline at end of file
-+}