@@ -332,8 +332,7 @@ __global__ void BuildDenseSystem_Kernel(SolverInput input, SolverState state, So
332332}// valid image pixel
333333}
334334
335- extern " C"
336- void BuildDenseSystem (const SolverInput& input, SolverState& state, SolverParameters& parameters, CUDATimer* timer)
335+ bool BuildDenseSystem (const SolverInput& input, SolverState& state, SolverParameters& parameters, CUDATimer* timer)
337336{
338337const unsigned int N = input.numberOfImages ;
339338const int sizeJtr =6 * N;
@@ -373,7 +372,7 @@ void BuildDenseSystem(const SolverInput& input, SolverState& state, SolverParame
373372cutilSafeCall (cudaMemcpy (&numOverlapImagePairs, state.d_numDenseOverlappingImages ,sizeof (int ), cudaMemcpyDeviceToHost));
374373if (numOverlapImagePairs ==0 ) {
375374printf (" warning: no overlapping images for dense solve\n " );
376- return ;
375+ return false ;
377376}
378377const int reductionGlobal = (input.denseDepthWidth *input.denseDepthHeight + THREADS_PER_BLOCK_DENSE_DEPTH -1 ) / THREADS_PER_BLOCK_DENSE_DEPTH;
379378dim3 grid (numOverlapImagePairs, reductionGlobal);
@@ -442,6 +441,7 @@ void BuildDenseSystem(const SolverInput& input, SolverState& state, SolverParame
442441cutilCheckMsg (__FUNCTION__);
443442#endif
444443if (timer) timer->endEvent ();
444+ return true ;
445445}
446446
447447// todo more efficient?? (there are multiple per image-image...)
@@ -1136,7 +1136,7 @@ extern "C" void solveBundlingStub(SolverInput& input, SolverState& state, Solver
11361136#ifdef USE_LIE_SPACE
11371137convertLiePosesToMatricesCU (state.d_xRot , state.d_xTrans , input.numberOfImages , state.d_xTransforms , state.d_xTransformInverses );
11381138#endif
1139- if (parameters.useDense )BuildDenseSystem (input, state, parameters, timer);
1139+ if (parameters.useDense )parameters. useDense = BuildDenseSystem (input, state, parameters, timer);// don't solve dense if no overlapping frames found
11401140Initialization (input, state, parameters, timer);
11411141
11421142if (parameters.weightSparse >0 .0f ) {