diff --git a/src/BambuStudio.cpp b/src/BambuStudio.cpp index 010455a9b..ea17ba519 100644 --- a/src/BambuStudio.cpp +++ b/src/BambuStudio.cpp @@ -140,8 +140,9 @@ std::map cli_errors = { typedef struct _cli_callback_mgr { int m_plate_count {0}; - int m_plate_index; + int m_plate_index {0}; int m_progress { 0 }; + int m_total_progress { 0 }; std::string m_message; int m_warning_step; bool m_exit {false}; @@ -165,9 +166,11 @@ typedef struct _cli_callback_mgr { void set_plate_info(int index, int count) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": index="< lck(m_mutex); - if (m_pipe_fd > 0) { - close(m_pipe_fd); - m_pipe_fd = -1; - } if (!m_started) { lck.unlock(); BOOST_LOG_TRIVIAL(info) << "cli_callback_mgr_t::stop not started before, return directly."; @@ -280,6 +291,10 @@ typedef struct _cli_callback_mgr { m_condition.notify_one(); // Wait until the worker thread exits. m_thread.join(); + if (m_pipe_fd > 0) { + close(m_pipe_fd); + m_pipe_fd = -1; + } BOOST_LOG_TRIVIAL(info) << "cli_callback_mgr_t::stop successfully."; } }cli_callback_mgr_t; @@ -1429,6 +1444,12 @@ int CLI::run(int argc, char **argv) //run_post_process_scripts(outfile, print->full_print_config()); BOOST_LOG_TRIVIAL(info) << "Slicing result exported to " << outfile << std::endl; part_plate->update_slice_result_valid_state(true); +#if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{100, "Slicing finished"}; + cli_status_callback(slicing_status); + } +#endif } catch (const std::exception &ex) { BOOST_LOG_TRIVIAL(info) << "found slicing or export error for partplate "<(m_print_config.option("filament_type")); const ConfigOptionStrings* filament_color = dynamic_cast(m_print_config.option("filament_colour")); @@ -1695,6 +1730,13 @@ int CLI::run(int argc, char **argv) } } +#if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{95, "Exporting 3mf"}; + cli_status_callback(slicing_status); + } +#endif + BOOST_LOG_TRIVIAL(info) << "will export 3mf to " << export_3mf_file << std::endl; if (! this->export_project(&m_models[0], export_3mf_file, plate_data_list, project_presets, thumbnails, calibration_thumbnails, plate_bboxes, &m_print_config)) { @@ -1718,6 +1760,11 @@ int CLI::run(int argc, char **argv) } #if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{100, "All done, Success"}; + cli_status_callback(slicing_status); + } + g_cli_callback_mgr.stop(); #endif