[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - 2 commits - avmedia/source external/libgltf

Zolnai Tamás tamas.zolnai at collabora.com
Wed May 28 06:41:47 PDT 2014


 avmedia/source/opengl/oglwindow.cxx             |   27 ++++++++++++++++++------
 external/libgltf/UnpackedTarball_libgltf.mk     |    1 
 external/libgltf/patches/deallocation_fix.patch |   12 ++++++++++
 3 files changed, 34 insertions(+), 6 deletions(-)

New commits:
commit 3ce0f83cec6d2ee1467523209df633c5a2487f71
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Wed May 28 15:40:06 2014 +0200

    Patching libgltf: fix wrong deallocation method
    
    Change-Id: I05c5650c1e43cf9ac4156e8d74073bf92ac0c4df

diff --git a/external/libgltf/UnpackedTarball_libgltf.mk b/external/libgltf/UnpackedTarball_libgltf.mk
index 8aba498..dfae5ec 100644
--- a/external/libgltf/UnpackedTarball_libgltf.mk
+++ b/external/libgltf/UnpackedTarball_libgltf.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,libgltf,\
 	external/libgltf/patches/include_path_glew.patch \
 	external/libgltf/patches/include_path_freetype.patch \
 	external/libgltf/patches/rgba_textures.patch \
+	external/libgltf/patches/deallocation_fix.patch \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/libgltf/patches/deallocation_fix.patch b/external/libgltf/patches/deallocation_fix.patch
new file mode 100644
index 0000000..4049e2f
--- /dev/null
+++ b/external/libgltf/patches/deallocation_fix.patch
@@ -0,0 +1,12 @@
+diff -ur libgltf.org/src/LoadScene.cpp libgltf/src/LoadScene.cpp
+--- libgltf.org/src/LoadScene.cpp	2014-05-28 15:35:48.232375923 +0200
++++ libgltf/src/LoadScene.cpp	2014-05-28 15:36:02.600375314 +0200
+@@ -144,7 +144,7 @@
+         free(gHandle->files);
+         gHandle->files = NULL;
+     }
+-    delete gHandle;
++    free(gHandle);
+     return true;
+ }
+ 
commit 968b7f807561339d0083fe0aa6e893983ca60456
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Wed May 28 15:33:39 2014 +0200

    glTF rendering: workaround for camera movements
    
    If the glTF contains camera movement in it moving camera
    by keyboard didn't work very well.
    
    Change-Id: I9300a257858d4f35c2d622654a0c2fd85eedc5ed

diff --git a/avmedia/source/opengl/oglwindow.cxx b/avmedia/source/opengl/oglwindow.cxx
index 6f39b0e..160ef6f 100644
--- a/avmedia/source/opengl/oglwindow.cxx
+++ b/avmedia/source/opengl/oglwindow.cxx
@@ -270,18 +270,33 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
                     vMup = glm::normalize(vMup);
                     vMup *= 25.0f;
 
-                    if(nCode == KEY_Q)vMoveBy += vMove*(0.001f*fModelSize);
-                    if(nCode == KEY_E)vMoveBy -= vMove*(0.001f*fModelSize);
-                    if(nCode == KEY_A)vMoveBy -= vStrafe*(0.001f*fModelSize);
-                    if(nCode == KEY_D)vMoveBy += vStrafe*(0.001f*fModelSize);
-                    if(nCode == KEY_W)vMoveBy -= vMup*(0.001f*fModelSize);
-                    if(nCode == KEY_S)vMoveBy += vMup*(0.001f*fModelSize);
+                    if(nCode == KEY_Q)vMoveBy += vMove*(0.0005f*fModelSize);
+                    if(nCode == KEY_E)vMoveBy -= vMove*(0.0005f*fModelSize);
+                    if(nCode == KEY_A)vMoveBy -= vStrafe*(0.0005f*fModelSize);
+                    if(nCode == KEY_D)vMoveBy += vStrafe*(0.0005f*fModelSize);
+                    if(nCode == KEY_W)vMoveBy -= vMup*(0.0005f*fModelSize);
+                    if(nCode == KEY_S)vMoveBy += vMup*(0.0005f*fModelSize);
                 }
                 gltf_renderer_move_camera(m_pHandle, vMoveBy.x, vMoveBy.y, vMoveBy.z, 0.0);
                 update();
             }
         }
     }
+    // TODO: Clean this mess up after libgltf gets a working camera handling
+     else if( pEvent->GetId() == VCLEVENT_WINDOW_KEYUP )
+    {
+        KeyEvent* pKeyEvt = (KeyEvent*)pEvent->GetData();
+        if(pKeyEvt)
+        {
+            const sal_uInt16 nCode = pKeyEvt->GetKeyCode().GetCode();
+            if (nCode == KEY_Q || nCode == KEY_E ||
+                nCode == KEY_A || nCode == KEY_D ||
+                nCode == KEY_W || nCode == KEY_S )
+            {
+                gltf_renderer_move_camera(m_pHandle, 0.0, 0.0, 0.0, 0.0);
+            }
+        }
+    }
     else if( pEvent->GetId() == VCLEVENT_WINDOW_MOUSEBUTTONDOWN )
     {
         MouseEvent* pMouseEvt = (MouseEvent*)pEvent->GetData();


More information about the Libreoffice-commits mailing list