Fix Solver::Summary when line search is used.

Also enable line search in bundle_adjuster.

Change-Id: Ic4343a4334b9f5a6fdeab38d4e3e1f6932bbc601
diff --git a/internal/ceres/line_search_minimizer.cc b/internal/ceres/line_search_minimizer.cc
index 684a736..92b7965 100644
--- a/internal/ceres/line_search_minimizer.cc
+++ b/internal/ceres/line_search_minimizer.cc
@@ -194,6 +194,8 @@
 
     iteration_summary = IterationSummary();
     iteration_summary.iteration = summary->iterations.back().iteration + 1;
+    iteration_summary.step_is_valid = false;
+    iteration_summary.step_is_successful = false;
 
     bool line_search_status = true;
     if (iteration_summary.iteration == 1) {
@@ -232,6 +234,8 @@
     delta = current_state.step_size * current_state.search_direction;
 
     previous_state = current_state;
+    iteration_summary.step_solver_time_in_seconds =
+        WallTimeInSeconds() - iteration_start_time;
 
     // TODO(sameeragarwal): Collect stats.
     if (!evaluator->Plus(x.data(), delta.data(), x_plus_delta.data()) ||
@@ -278,6 +282,7 @@
         + summary->preprocessor_time_in_seconds;
 
     summary->iterations.push_back(iteration_summary);
+    ++summary->num_successful_steps;
   }
 }
 
diff --git a/internal/ceres/solver_impl.cc b/internal/ceres/solver_impl.cc
index 8b8395c..1696e3a 100644
--- a/internal/ceres/solver_impl.cc
+++ b/internal/ceres/solver_impl.cc
@@ -624,10 +624,11 @@
       original_options.line_search_direction_type;
   summary->max_lbfgs_rank = original_options.max_lbfgs_rank;
   summary->line_search_type = original_options.line_search_type;
-  summary->num_parameter_blocks = problem_impl->NumParameterBlocks();
-  summary->num_parameters = problem_impl->NumParameters();
-  summary->num_residual_blocks = problem_impl->NumResidualBlocks();
-  summary->num_residuals = problem_impl->NumResiduals();
+  summary->num_parameter_blocks = original_program->NumParameterBlocks();
+  summary->num_parameters = original_program->NumParameters();
+  summary->num_residual_blocks = original_program->NumResidualBlocks();
+  summary->num_residuals = original_program->NumResiduals();
+  summary->num_effective_parameters = original_program->NumEffectiveParameters();
 
   // Empty programs are usually a user error.
   if (summary->num_parameter_blocks == 0) {
@@ -717,6 +718,8 @@
   summary->num_parameter_blocks_reduced = reduced_program->NumParameterBlocks();
   summary->num_parameters_reduced = reduced_program->NumParameters();
   summary->num_residual_blocks_reduced = reduced_program->NumResidualBlocks();
+  summary->num_effective_parameters_reduced =
+      reduced_program->NumEffectiveParameters();
   summary->num_residuals_reduced = reduced_program->NumResiduals();
 
   if (summary->num_parameter_blocks_reduced == 0) {