-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.6.1
-
None
-
Ubuntu 15.10
I'm running Canvas3D inside a QQuickWidget - I also have this patch applied:
https://codereview.qt-project.org/#/c/163864/
Basically this is the JavaScript code that makes it crash:
var loader = new THREE.JSONLoader();
// load a resource
loader.load(
// resource URL
'carmodel/car_model.js',
// Function when resource is loaded
function ( geometry, materials ) {
console.log("loaded :)")
var tmaterial = new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('carmodel/gtare.png'),
colorAmbient: [0.480000026226044, 0.480000026226044, 0.480000026226044],
colorDiffuse: [0.480000026226044, 0.480000026226044, 0.480000026226044],
colorSpecular: [0.8999999761581421, 0.8999999761581421, 0.8999999761581421]
});
car_model_mesh = new THREE.Mesh(
geometry,
tmaterial
);
car_model_mesh.receiveShadow = true;
car_model_mesh.castShadow = true;
car_model_mesh.scale.set(0.024,0.024,0.024)
car_model_mesh.position.z = -0.425
// mesh.rotation.y = -Math.PI/5;
// var material = new THREE.MeshFaceMaterial( materials );
// var object = new THREE.Mesh( geometry, material );
scene.add( car_model_mesh );
// car_model_mesh = mesh
}
);
What I've seen so far digging into the sources of QtCanvas3D is that in renderjob.cpp:
renderjob.cpp
if (!m_renderer->usingQtContext()) {
oldContext = QOpenGLContext::currentContext();
oldSurface = oldContext->surface();
m_renderer->makeCanvasContextCurrent();
}
For some reason QOpenGLContext::currentContext() return NULL and that makes the line below oldContext->surface() to crash by a Segmentation fault.
| For Gerrit Dashboard: QTBUG-54466 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V |
| 163905,3 | CanvasRenderJob: check if QOpenGLContext::currentContext() is NULL | 5.6 | qt/qtcanvas3d | Status: MERGED | +2 | 0 |